---
# System prepended metadata

title: DDD Quickly - Last part

---

# DDD Quickly - Last part

## Preserving Model Integrity 


### Bounded Context
![](https://i.imgur.com/oXN7bGg.png)


### Continuous Integration


### Context Map

![](https://i.imgur.com/Oc3NyLU.png)


### Shared Kernel


### Customer-Supplier
- Customer role e supplier role ao dividir, por exemplo, o banco de dados entre dois times. É necessário comprometimento.

### Conformist


### Anticorruption Layer
- Entre o modelo do cliente e o externo. Usa linguagem diferente para os diferentes modelos, não contaminando um ao outro. Pode conter mais de um Service.

### Separate Ways
- Várias aplicações menores que têm pouco ou nada em comum da perspectiva da modelagem. Modelados separadamente, podem usar da tecnologia que for preferencial. Possui contextos interligados.

### Open Host Service
- Tradutor entre o sistema cliente e o sistema externo a ser integrado. O sistema externo deve providenciar Services por protocolo para todos os outros sistemas, de forma a possuir uma única tradução.

### Distillation
- Quando o modelo ainda é grande, mesmo após refatorações, entra em cena o processo de destilação. A ideia é definir um Core Domain que representa a essência do domínio, separando conceitos essenciais de conceitos genéricos. Importante que seja muito bem desenvolvido. Requer muito refinamento e refatoramento, e outros elementos do modelo devem ser repensados em volta do Core Domain.
  Subdomains Genéricos: criados a partir do processo de destilação. formas de implementá-lo:

  - Solução pronta para uso: já foi feita por alguém, talvez seja preciso lidar com alguns bugs;
  - Terceirização: implementado por outro time, provavelmente de outra empresa. Deve ser integrado apenas;
  - Modelo existente: implementar um modelo já existente;
  - Implementação interna: possui alto nível de integração, mas requer tempo e recursos.

---

### Keep in mind some of the pitfalls of domain modeling:
  1) Stay hands-on. Modelers need to code.
  2) Focus on concrete scenarios. Abstract thinking has to be anchored in concrete cases.
  3) Don't try to apply DDD to everything. Draw a context map and decide on where you will make a push for DDD and where you will not. And then don't worry about it outside those boundaries.
  4) Experiment a lot and expect to make lots of mistakes. Modeling is a creative process.