# Microsservices Patterns

## Padrões na vida real

Microsserviços não são apenas um estilo arquitetural, mas um **conjunto de problemas recorrentes**.\
Os *Microservices Patterns* surgem justamente da prática: soluções testadas para desafios reais de sistemas distribuídos.

Eles ajudam a evitar decisões improvisadas e reduzem o risco de reinventar soluções frágeis.

***

## Padrões para microsserviços

Padrões de microsserviços documentam **formas comprovadas de estruturar, comunicar, escalar e operar serviços distribuídos**.

Eles abordam temas como:

* decomposição de serviços
* comunicação entre serviços
* consistência de dados
* deploy e escalabilidade
* resiliência e tolerância a falhas
* organização de times

***

## Linguagem de padrões

Padrões não são receitas isoladas.\
Eles formam uma **linguagem**, permitindo discutir arquitetura com precisão e maturidade.

Cada padrão é descrito de forma consistente.

***

## Estrutura de um padrão

#### **Contexto**

Situação onde o problema ocorre.\
Define o cenário técnico e organizacional em que o padrão faz sentido.

#### **Problema**

O desafio recorrente que precisa ser resolvido.\
Normalmente surge de requisitos conflitantes em sistemas distribuídos.

#### **Solução**

Estratégia arquitetural recomendada.\
Equilibra trade-offs conhecidos e aceita que não existe solução perfeita.

#### **Forças para adoção**

Restrições, pressões e objetivos que influenciam a escolha do padrão.\
Incluem fatores técnicos, operacionais e organizacionais.

#### **Padrões relacionados**

Outros padrões que costumam ser usados juntos ou como alternativa.\
Mostram como a arquitetura evolui ao longo do tempo.

***

## Conclusão

Padrões de microsserviços não eliminam complexidade.\
Eles **tornam a complexidade explícita, controlável e discutível**.

Arquitetura madura não é ausência de problemas, é **uso consciente de padrões para lidar com eles**.

***

## Referências

Livro: Microservices Patterns: With examples in Java by Chris Richardson

<figure><img src="https://2751774268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxndCEXu1WY8Bo9gAhe4i%2Fuploads%2Fq8Ccp1kU1vj9sfzVjm1b%2Fimage.png?alt=media&#x26;token=02c1606a-07b5-4f1a-b518-5e4bc853ab49" alt=""><figcaption></figcaption></figure>

{% embed url="<https://microservices.io/patterns>" %}

<figure><img src="https://2751774268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxndCEXu1WY8Bo9gAhe4i%2Fuploads%2FXOeeYBMKgN3a0C8i1ceR%2Fimage.png?alt=media&#x26;token=c8acfd7f-4683-4168-8acb-e15db4e2e1aa" alt=""><figcaption></figcaption></figure>

Livro: Enterprise Integration Patterns: Designing, Building and Deployind Messaging Solutions by Gregor Hohpe, Bobby Woolf

<figure><img src="https://2751774268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxndCEXu1WY8Bo9gAhe4i%2Fuploads%2F5H0h144MM05McfartbiP%2Fimage.png?alt=media&#x26;token=e3b1022e-1473-470b-8ca1-bedf8b36b0ec" alt=""><figcaption></figcaption></figure>

{% embed url="<https://enterpriseintegrationpatterns.com/patterns/messaging/>" %}

<figure><img src="https://2751774268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxndCEXu1WY8Bo9gAhe4i%2Fuploads%2Ff7WiTq7bK88zRoB2lU51%2Fimage.png?alt=media&#x26;token=0c77a657-0d0d-47a9-a541-8749f640d055" alt=""><figcaption></figcaption></figure>

Livro: Patterns of Distributed Systems (Addison-Wesley Signature Series (Fowler)) by Unmesh Joshi

<figure><img src="https://2751774268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxndCEXu1WY8Bo9gAhe4i%2Fuploads%2FMWNHzKRsegg7o3oQYDlG%2Fimage.png?alt=media&#x26;token=59853fe7-8555-46c3-aeec-bbcb6debb6fa" alt=""><figcaption></figcaption></figure>

{% embed url="<https://martinfowler.com/articles/patterns-of-distributed-systems/>" %}

<figure><img src="https://2751774268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxndCEXu1WY8Bo9gAhe4i%2Fuploads%2FCOJR3Z6pwUFnA3tcptH3%2Fimage.png?alt=media&#x26;token=58dd0c7b-7df7-4ef4-87a4-9921fd872dd4" alt=""><figcaption></figcaption></figure>

{% embed url="<https://learn.microsoft.com/en-us/azure/architecture/patterns/>" %}

<figure><img src="https://2751774268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxndCEXu1WY8Bo9gAhe4i%2Fuploads%2FtmIFmnYMrNFA5csqk6zm%2Fimage.png?alt=media&#x26;token=1495bbaa-4182-45ba-8297-3863bd5c28d5" alt=""><figcaption></figcaption></figure>

{% embed url="<https://aws.amazon.com/pt/prescriptive-guidance/>" %}

<figure><img src="https://2751774268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxndCEXu1WY8Bo9gAhe4i%2Fuploads%2FV63R6uLSTsxp4gl6cLgX%2Fimage.png?alt=media&#x26;token=72e71176-c461-481d-9d43-5f8a76150503" alt=""><figcaption></figcaption></figure>

{% embed url="<https://solace.com/event-driven-architecture-patterns/>" %}

<figure><img src="https://2751774268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxndCEXu1WY8Bo9gAhe4i%2Fuploads%2Fe19ZePnazuU5jXk2QXFH%2Fimage.png?alt=media&#x26;token=ab8b699f-3a79-44d0-9a37-ed6af89441fd" alt=""><figcaption></figcaption></figure>

{% embed url="<https://developer.confluent.io/patterns/>" %}

<figure><img src="https://2751774268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxndCEXu1WY8Bo9gAhe4i%2Fuploads%2F7LPijdA1IhbHE01T1W7q%2Fimage.png?alt=media&#x26;token=a38fae39-ed1e-4dc5-afa9-29e5306594fc" alt=""><figcaption></figcaption></figure>

## Exercícios

Agora que você teve uma introdução aos padrões de microsserviços, seu próximo passo é se familiarizar com os principais catálogos de padrões usados no mercado.

O objetivo deste exercício não é você entender tudo em detalhes, mas sim navegar pelos catálogos e perceber como os padrões estão organizados, quais problemas eles resolvem e como são documentados.

1. Acesse os principais catálogos de padrões citados na aula anterior.
2. Escolha 2 ou 3 padrões que te chamaram a atenção. Não precisa entender tudo agora! Apenas anote o nome do padrão e qual problema ele tenta resolver (conforme descrito no catálogo).
3. Reflita sobre esta pergunta: Algum desses padrões parece útil ou interessante para você? Por quê?

Se quiser ir além, você pode tentar identificar padrões que já viu na prática, seja no trabalho ou em estudos anteriores. Mas, se não souber responder agora, não tem problema! O importante é apenas se familiarizar com os catálogos.
