Needs to define interface between every single microservice.
System could work well even if single service doesn't work.
Why microservice?
Keep the system scalability, makes maintenance be easier.
More efficient on development, every single service can be owned by different team.
Keep service flexibility, can choose the most suitable solution for each microservice.
Use case sharing
What problem did we meet?
Hard to maintain: Monolithic Apps are often pretty huge, needs to test everything even we just modify one single function.
Hard to scale: All services are in the same code base, we can only scale all services even through just needs to scale one of them, and has high risk with every single scaling.
etc .....
How did we start it?
Defined the boundary for every services
Thought about what kind of scales our services need