[comment]: # (mdslides presentation.md --include media) [comment]: # (The list of themes is at https://revealjs.com/themes/) [comment]: # (The list of code themes is at https://highlightjs.org/) [comment]: # (markdown: { smartypants: true }) Microservices23 # Microservices - Scoping a Microservice By Alon Itach
Microservices are built around **business capabilities**
Each service is owned by a long-lived, small (typically 5-9 people), loosely coupled, autonomous, and cross-functional team.  The team can freely develop, test, deploy and scale its services. They primarily interact with other teams in order to negotiate APIs.
How to scop a microservice?
## Domain Driven Design (DDD) Let's take the online travel agencies domain as an example - e.g. booking.com As you try to model such a larger domain, it gets progressively harder to build a single unified model.
## Domain Driven Design (DDD) Different groups of people will use subtly different vocabularies in different parts of a large organization.
## Domain Driven Design (DDD) The precision of modeling rapidly runs into this, often leading to a lot of confusion.
## Domain Driven Design (DDD) DDD is about designing software based on models of the underlying domain 
## Domain Driven Design (DDD) DDD deals with large models by dividing them into different **Bounded Contexts** and being explicit about their **interrelationships**. 
## Domain Driven Design (DDD) Developers and domain experts are building together a rigorous, common language between them, called the **Ubiquitous Language** of the domain.  The domain terminology is embedded into the software systems. The ubiquitous language acts as the conceptual foundation for the design of the software itself - how it's broken down into objects or functions.
## Advantages of DDD - Developers have a rich understanding of the processes and rules of a domain. - Enables each team to be autonomous and work with minimal coordination with other teams. - Good communication between developers and domain experts.
## Drawbacks of DDD - Teams are not necessarily aligned with end user features - Implementing features that span contexts is more complicated and requires teams to collaborate
# Thanks References: - https://microservices.io/patterns/decomposition/service-per-team.html - https://martinfowler.com/bliki/DomainDrivenDesign.html - https://martinfowler.com/bliki/BoundedContext.html - https://martinfowler.com/bliki/UbiquitousLanguage.html