Based on Business Capabilities: Services are divided and organized around business capabilities.
Products not projects: A product should belong to the team that handles it.
Essential messaging frameworks: Rely on functional messaging frameworks: Eliminate centralized service buses by embracing the concept of decentralization.
Decentralized Governance: The development teams are accountable for all aspects of the software they produce.
Decentralized data management: Microservices allow each service to manage its data separately.
Automated infrastructure: These systems are complete and can be deployed independently.
Design for failure: Increase the tolerance for failure of services by focusing on continuous monitoring of the applications.