# Overview An architecture approach where a large application is divided into smaller services by area of functionality. The services interact with one another when they require functionality or data from another service. # Key Considerations ## Characteristics of a Microservice - Small - Small enough to "fit in your head" - Independently deployable - Hide implementation details - An update to service A does not cause an update to service B - Modeled around business concepts - Decentralized - Highly observable - Autonomous ## Strengths - Allows for easier application updates and deployment, because each service can be worked on independently ## Weaknesses - If all microservices need to be run together for work, then the microservice may work more as a distributed monolith # Implementation Details # Useful Links # Related Topics ## Reference #### Working Notes #### Sources #### Topics to Cover - [[Asynchronous]] vs. [[Synchronous]] - Design Patterns - Database Per Service Pattern - API Gateway Pattern - [[API Gateway]] - CQRS - [[Saga Pattern]] - BFF Pattern - Event Sourcing Pattern - Sidecar Pattern - Circuit Breaker Pattern #### Related Topics - [[Service-oriented Architecture (SOA)]]