Designing microservices around your data design
At MadStreetDen, We are building multiple products for the retail industry on top of a single platform of microservices which process data, build machine learning models and scale with traffic. We are also constantly adding new products to our product suite which solve interesting new usecases. As the systems continuously evolved, we realized the set of services which powers the underlying platform should be modular, easily maintainable and multi-functional. While designing these microservices, there were several questions/learnings along the way on the choice of microservices.
What are the essential microservices?
How do they connect and communicate with each other?
How do we manage the growth of the number of services?
Should I write a new microservice for this functionality or add this as a feature to existing microservice?
Being a machine learning company large amounts of data is at the core of our products.
Focusing our microservice design on top of the data design reduced overhead and helped us build our products faster.
In this talk, we will go through the architecture design workflow by which we designed our platform architecture.
- Datastores overview
- Usecases Definition
- Image Classification
- Product Recommendations
- Architecture and workflow of each usecase
- Merge the workflows into single architecture
- Core Platform Architecture v0.1
- Design Considerations
- Grouping Microservices
- Latency & throughput
- Geographic availability
- Deployment strategy
- Logging & Monitoring
- Microservice Registry & Interservice Communication
- Design Principles
- Config change for single service
- Config change between microservices
- Core platform architecture v0.2
- Learnings from design
- Questions ?
I am Jambunathan, Director of Engineering at MadStreetDen. For the past 2 years, we have been working on scaling our machine learning platform on AWS which supports the multiple products at https://vue.ai.