Understand the service-based design of a microservice architecture and the reasons why microservices are used. Cover the impacts that microservices have on the deployment, maintenance, and testing of applications. Get to know the difference between an API-driven and event-driven architecture along with the evolution from a monolithic to a microservices architecture. Finally, implement applications with multiple services and design their APIs.
Examples
Exercises
Context
When a company develops a successful product, it often hires more people to further grow the product. This means that, over time, more and more engineers become involved in the development process of an application. Here, we can see the growth of Airbnb's engineering team:
How to Tame Your Service APIs: Evolving Airbnb’s Architecture
To maintain productivity, this growing team needs to be continuously reorganized. For example, Spotify uses an organizational structure consisting of tribes, guilds, chapters, and squads to manage work and divide responsibilities.
https://blog.crisp.se/wp-content/uploads/2012/11/SpotifyScaling.pdf
Conway's Law states that the structure of a software system will reflect the communication structure of the organization that built it. Therefore, as the team grows and reorganizes, the software architecture must also adapt to reflect these changes.
An n-tiered architecture divides an application into layers to improve separation of responsibilities and the management of dependencies. Each layer has a specific responsibility, and a higher layer can use services in a lower layer but not vice versa.