Note to bush up system design basics#5 - Divide and conquer (application layer):
TL, Read Later. better check this again when have more SD examples and case studies.
Microservice benefits:
1.Development teams can choose different language frameworks and databases that are most appropriate.
2.Small services can evolve and plan more aggressively for the sake of hyper-growth.
3.Not monolithically scaling up/out, but focus on the most important bottlenecks.
4.From a product perspective it's possible to have both AP/CP services in the same product (to meet different requirements, check youtube's scaling tips).
5.Iterate at will with less risk, DevOps pipelines, also easier to do UI A/B testing.
https://www.ibm.com/cloud/learn/microserviceshttps://cloudncode.blog/2016/07/22/msa-getting-started/https://www.nginx.com/blog/building-microservices-using-an-api-gateway/
Note to bush up system design basics#5 - Divide and conquer (application layer):
TL, Read Later. better check this again when have more SD examples and case studies.
Microservice benefits: 1.Development teams can choose different language frameworks and databases that are most appropriate. 2.Small services can evolve and plan more aggressively for the sake of hyper-growth. 3.Not monolithically scaling up/out, but focus on the most important bottlenecks. 4.From a product perspective it's possible to have both AP/CP services in the same product (to meet different requirements, check youtube's scaling tips). 5.Iterate at will with less risk, DevOps pipelines, also easier to do UI A/B testing. https://www.ibm.com/cloud/learn/microservices https://cloudncode.blog/2016/07/22/msa-getting-started/ https://www.nginx.com/blog/building-microservices-using-an-api-gateway/
Service Discovery, becomes a must while dividing: 1.ELB, Kubernetes and Marathon handle service instance registration and de-registration. 2.Zookeeper, Consul, Etcd are CP systems (in terms of CAP theorem): a.Zookeeper, a centralized leader will be unavailable for registering new services. b.Consul, de-centralized approach. https://www.consul.io/intro/vs/zookeeper 3.Eruka, uber hyperbahn(dead) are AP (eventual consistent) systems. https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/ https://workmarket.tech/choosing-a-service-discovery-system-1979ee55c728
Inter process communication: a.Asynchronous, Message-Based Communication b.Synchronous, Request/Response IPC (REST/Thrift) c.Deep dive the IPC message format (Schema evolution, and how to achieve backward compatibility): https://www.nginx.com/blog/building-microservices-inter-process-communication/ https://netflixtechblog.com/fault-tolerance-in-a-high-volume-distributed-system-91ab4faae74a https://martin.kleppmann.com/2012/12/05/schema-evolution-in-avro-protocol-buffers-thrift.html
How to handle partial failures: https://microservices.io/patterns/reliability/circuit-breaker.html https://netflixtechblog.com/fault-tolerance-in-a-high-volume-distributed-system-91ab4faae74a
┆Issue is synchronized with this Trello card by Unito ┆Attachments: https://www.ibm.com/cloud/learn/microservices | https://cloudncode.blog/2016/07/22/msa-getting-started/ | https://www.nginx.com/blog/building-microservices-using-an-api-gateway/