<style> .reveal { font-size: 30px; } </style> # Tipos de comunicações entre Sistemas Distribuídos ### Discussão dos trade-offs entre microservices *** ## Daniela Akagui --- ## O Que? ## Porque? ## Como? --- ## Acoplamento entre sistemas distribuídos - Alteração que afeta outras aplicações - Acoplamento estático : os, frameworks, libraries - Acoplamento dinâmico : comunicação entre serviços --- ## O que são trade-offs? 1. Resiliência 2. Confiabilidade 3. Escalabilidade 4. Segurança 5. Disponibilidade 6. Complexidade 7. Nível de Acoplamento 8. Etc.. --- ## Sync vs Async 1. Non blocking vs blocking --- ## Sync vs Async <img src="https://i.imgur.com/eK73rZN.jpg" alt="drawing" style="width:600px;"/> --- ## Sync vs Async <img src="https://i.imgur.com/fOp5QIq.jpg" alt="drawing" style="width:700px;"/> --- ## Sync trade-offs - **Prós** - Fácil de criar operações transacionais - Fácil de implementar - **Cons** - Dependência nas chamadas - Limita sistemas distribuídos --- ## Async trade-offs - **Prós** - Sistemas altamente desacoplados - Mais opções para melhorar performance - **Cons** - Dífícil de implementar - Error handling - BASE (Basic Availability, Soft state, and Eventual consistency) e não ACID (Atomicity, Consistency, Isolation, Durability) --- ## Atomic vs Eventual consistecy <img src="https://i.imgur.com/BTNH3ct.jpg" alt="drawing" style="width:700px;"/> --- ## Orchestration vs Choreography <img src="https://i.imgur.com/iv6MuMa.jpg" alt="drawing" style="width:700px;"/> --- ## Orchestration vs Choreography <img src="https://i.imgur.com/P5GzAyx.jpg" alt="drawing" style="width:700px;"/> --- ## Pontos de acoplamento <img src="https://i.imgur.com/8osSFJj.png" alt="drawing" style="width:600px;"/> --- ## Exemplo de análise de trade-offs <img src="https://i.imgur.com/a5NzMqn.png" alt="drawing" style="width:700px;"/> --- ## Considerações 1. Rest pode ser async? 2. O pior cenário é ter um sistema async, atômico e orquestrado 3. O melhor jeito de implementar eventual consistency é com event based sync 4. Contrato também é acoplamento dinâmico ([fitness function](https://docs.pact.io/)) 5. Versionamento também é acoplamento (versionless) 6. Data replication também pode ser acoplamento (config data) 7. Se o fluxo é muito complexo prefira orquestração --- ## Referência Communication Styles for Distributed Architectures and Microservices by Neal Ford
{"metaMigratedAt":"2023-06-16T09:49:10.617Z","metaMigratedFrom":"YAML","title":"Tipos de comunicações entre Sistemas Distribuídos","breaks":false,"slideOptions":"{\"allottedMinutes\":5}","contributors":"[{\"id\":\"7c56ba17-5ea0-471b-b709-d1f854c43730\",\"add\":5772,\"del\":3250}]"}
    146 views