Microservices¶
Why Microservices?¶
- Exclusive Sovereignty / Realm
- Structural Modularity
- Constructional Reusability
- Unpredictable Scalability
- Short Time to Market
- Structural Modularity
- ideal Technology
Maxims¶
- Domain Driven
- Service Autonomy
- Culture of Automation
Principles¶
- Continuous Everything (CI,CD)
- Service Statelessness
- Independently Deployable
- Operation and Functional Resilience
- Highly Observable
- Orchestrating platform (z.B. Kubernetes)
Characteristics of a Microservice Architecture¶
Microservice is a new independent architectural term rather than a variant of SOA. It is quite different from SOA.
-
Organized around Business Capabilities
re-emphasizes the importance of Conway's Law: a team with a certain structure, scale, and capabilities will produce products with corresponding structure, scale, and capabilities. -
Decentralized Governance
a development team should have the right to choose the most suitable technology different from common if it is really necessary. -
Componentization via Services
emphasize building components through "services" rather than "libraries" because libraries are statically linked to the program at compile time and provide functions through local calls, while services are out-of-process components that provide functions through remote calls. -
Products not Projects
don't think software development is just to complete a functionality, accomplish a scoped task, but think software is product with sustainable improvement, delivering business values consistently throughout its lifecycle. -
Decentralized Data Management
Each service manages its own data, reducing dependencies and enabling scalability. -
Smart Endpoints and Dumb Pipes
Communication between services should be lightweight, with complexity handled at the application layer, keeping the infrastructure simple. -
Design for Failure
For production environments, facilities such as "circuit breakers" are not optional, but essential. -
Evolutionary Design
Services will be upgraded, and also be deprecated and removed. -
Infrastructure Automation
Automation is integral to managing the complex and dynamic infrastructure required for microservices.