Microservices architecture is a style that structures an application as a collection of services. This breaks all processes into its own service, where each service has its own container with its own data storage, does not share data. The inverse is monolith architecture which builds all capabilities into a single executable and process. This is a server-side system based on a single application to develop and manage.
Microservices implements smart endpoints uses no complex middle-ware the brain lay in the application and the network just help to route information.
Some characteristics of microservices architecture are:
- Componentization via services
- Organized around business capabilities
- Decentralized data management
- Designed for failure
Advantages of using microservices are:
- A team can choose an any language for the service
- Less risk in change
- Partial Development
- Independent Scaling
|Whole Development||Partial Development|
|No availability when other services failed||Some availability when other services fail|
What is a chaos monkey?
A chaos monkey is a tool that randomly stops services in the infrastructure during the data, while services are being monitored. Since Failure will happen in any disturbed services having a chaos monkey will force developers to anticipate how that failure would happen and how it will be handled. Since failure will happen in any distributed system telling a chaos monkey into an infrastructure will make people more aware of the fact that things will break by forcing it to happen, then monitoring and recovery can handle the event. This effects how to code is designed and written to become more robust. This is chaos engineering which is the discipline of experimenting on a software system in production in order to build confidence in the system’s capability to withstand turbulent and unexpected conditions.
Netflix’s chaos monkey repository on GitHub
What is Conway’s Law?
Conway’s law states that an “organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.” This is based on the reasoning that for a software module to function, multiple authors must communicate frequently with each other. Thus, the software interface structure of a system will reflect the social boundaries of the organization that produced it. In microservices, there is a lot of variation on how big the size of each team and the number of services to support should be.
IBM Cloud. (2019, Febuary 26). What are Microservices? Retrieved from Youtube: https://www.youtube.com/watch?v=CdBtNQZH8a4
Richardson, C. (n.d.). Retrieved from microservices.io: https://microservices.io
Thoughtworks. (2015, January 31). Martin Fowler – Microservices. Retrieved from Youtube: https://www.youtube.com/watch?v=2yko4TbC8cI
ThoughtWorks. (n.d.). Martin Fowler. Retrieved from http://www.thoughtworks.com: https://www.thoughtworks.com/profiles/martin-fowler
Wikipedia. (2020, February ). Conway’s law. Retrieved from Wikipedia: https://en.wikipedia.org/wiki/Conway%27s_law