Trilha Arquitetura net Marco Oliveira Carlos Lemes Tratando













































- Slides: 45
Trilha – Arquitetura. net Marco Oliveira | Carlos Lemes Tratando fluxos complexos e transações distribuídas em microsserviços com padrao Saga em. net core Globalcode – Open 4 education
Agenda Fundamentos CQRS Microserviços Topicos e Filas Saga Patterns relacionados Case Ferramentas Globalcode – Open 4 education
Marco Oliveira Arquiteto Soluções 15 anos experiência em software Certificações Microsoft (. net, sqlserver) Globalcode – Open 4 education
Carlos Lemes Arquiteto Soluções 15 anos experiência em software Globalcode – Open 4 education
itaú: some figures 4, 940 branches and CSBs in Brazil and abroad 48, 476 We are operating in 19 US$88. 8 bi countries, 9 of which are in in market cap December 31, 2018 Latin America. ATMs in Brazil and abroad 49. 7 million clients in the Retail Bank in November 2018 100, 335 employees in Brazil and abroad We seek to be recognized as “Latin American Bank”. Globalcode – Open 4 education
market cap USA and Canada: 7 th position Latin America: 1 st position Europe: 2 rd position Asia e Oceania: 7 th position Globalcode – Open 4 education
Arquitetura Monolítica: UI Usuários Financeiro RH Contratos Pedidos . . . A C I D - Atomicity - Consistency - Isolation - Durability RDBMS Globalcode – Open 4 education
Arquitetura Monolítica: UI horizontal scalability RDBMS vertical scalability Globalcode – Open 4 education
Arquitetura Monolítica: UI horizontal scalability Master/Slave Write on single Master Read on Slaves Scales reads (Replicas read-only) Sharding Globalcode – Open 4 education
Sistemas Distribuídos: Alta disponibilidade Capacidade de escalabilidade Tempo de resposta Tolerância a falhas Resiliência Transparência Segurança Globalcode – Open 4 education
CQRS: Presentation layer Application layer Domain layer Infrastructure layer Data access + DTO Infrastructure layer Commands Queries NService. Bus Mass. Transit Rebus Mediat. R Globalcode – Open 4 education
Teorema Cap Teorema de Brewer sempre recebe uma resposta sem garantia de ser mais recente recebe a escrita mais recente ou um erro Só 2! Sem parar de funcionar, mas com risco de perda de mensagens Globalcode – Open 4 education
DDD definir as fronteiras do software separação da responsabilidade linguagem ubíqua negócio melhor compreendido menor acoplado e maior coeso Globalcode – Open 4 education
Event Sourcing Globalcode – Open 4 education
Tópico x Fila point to point publish-subscribe (pub sub) request-reply A B C Producer Consumer Queue Consumer A B C Producer Topic A B C Subscriber A C Globalcode – Open 4 education
Apache Kafka Timeline 2010, Linkedin, integração massiva de dados, Jay Kreps 2011, open-source 2012, absolvido pela Apache Foundation 2014, criação da Confluent (foco em Kafka) Vantagens Sistema de Registro Ordenamento Centralização Escalabilidade Pull over Push Performance Globalcode – Open 4 education
Apache Kafka Tópicos Registros Globalcode – Open 4 education
Apache Kafka Partições, Broker Globalcode – Open 4 education
Apache Kafka Grupos de Consumo Globalcode – Open 4 education
Apache Kafka Offsets Globalcode – Open 4 education
Apache Kafka Outras opções Azure Event Hub Globalcode – Open 4 education
Apache Kafka Case Uber (u. Replicator) https: //eng. uber. com/ureplicator/ Globalcode – Open 4 education
Idempotência A idempotência é a propriedade que algumas operações têm de poderem ser aplicadas várias vezes sem que o valor do resultado se altere após a aplicação inicial. (Wikipedia) Métodos HTTP (GET, POST, PUT, DELETE) Problemas com chamadas duplicadas, timeout, erros Boas práticas Globalcode – Open 4 education
Saga Pattern Long Running Process Paper Héctor García-Molina Transação = Integridade + consistência dos dados Coreografia (Choreography) e Orquestração (Orchestration) https: //www. cs. cornell. edu/andru/cs 711/2002 fa/reading/sagas. pdf Globalcode – Open 4 education
Saga Pattern Long Running Process Coreografia (Choreography) Orquestração (Orchestration) Globalcode – Open 4 education
Saga Pattern Long Running Process Coreografia (Choreography) Globalcode – Open 4 education
Saga Pattern Process Manager • Máquina de estado • Armazena os dados • Voltado para gerenciamento de processos Saga Pattern • Não é máquina de estado • Não armazena os dados • Voltado para compensação por falhas Event. Flow Axon Framework Memento. FX Eventuate. io Camunda Zeebe Globalcode – Open 4 education
Saga Pattern Qual abordagem é melhor? Melhor: Evite transacões distribuídas Se necessário: Process manager/Saga Algo simples: Event Choreography Globalcode – Open 4 education
Time to Live (TTL) Mecanismo que limita o tempo de vida de um dado em um sistema de computadores Exemplo Kafka Broker Config: log. retention. ms log. retention. minutes log. retention. hours Exemplo Kafka Topic Config: . /bin/kafka-topics. sh --zookeeper localhost: 2181 --alter --topic my-topic -config retention. ms=1680000 Pode ser implementado como um contador ou timestamp anexado a uma informação. Uma vez que esse tempo seja ultrapassado a informação deve ser descartada. Globalcode – Open 4 education
Monitoração Monitore as menores partes, e use de agregação para ter uma visão mais abrangente do todo através de um repositório centralizado de logs balanceador Serviço Servidor Monitore CPU, RAM, Disco e etc. . . do servidor. Monitore tempo de resposta, taxa de erros e etc. . . do serviço e também seus logs e suas próprias métricas. Serviço Servidor Monitore os mesmos itens, porém agora agregaremos a visão de todos servidores, assim como o próprio balanceador. Globalcode – Open 4 education
Monitoração Monitore as menores partes, e use de agregação para ter uma visão mais abrangente do todo através de um repositório centralizado de logs balanceador Serviço Servidor Front end Serviço Login Utilize de um identificador de transação para realizar a correlação dos processamentos distribuídos. Serviço Login Globalcode – Open 4 education
Tolerância a Falhas – Dead Letter Falha de Entrega Mensagem Transmissor Canal Receptor Mensagem Morta Canal Mensagem morta Globalcode – Open 4 education
Tolerância a Falhas - Retry Retentativas Mensagem Transmissor Falha ao processar Canal Receptor Mensagem Morta Canal Mensagem inválida Globalcode – Open 4 education
Transactional Messaging Order Service update Database Problema Como garantir atomicidade entre o database e a publicação da mensagem/evento? publish message/event Message Broker Observação 2 PC não é uma opção Globalcode – Open 4 education
Transactional Messaging Transactional Outbox https: //microservices. io/patterns/data/transactional-outbox. html Globalcode – Open 4 education
Transactional Messaging Transaction log tailing https: //microservices. io/patterns/data/transaction-log-tailing. html Globalcode – Open 4 education
Transactional Messaging Listen to Yourself Globalcode – Open 4 education
CDC – Change Data Capture Globalcode – Open 4 education
CDC – Change Data Capture Debezium Open source project that provides a low latency data streaming platform for change data capture (CDC). Active community, led by Red Hat Provides source connectors for popular databases. Integrated with Apache Kafka using AMQ Streams. https: //debezium. io/ Globalcode – Open 4 education
Primeira fase, emissão de recebíveis e convivência com legado Cash Management System Canal Micro Gateway Contrato Cliente Cobrança Cmd Boleto Tópico Boleto ACL Tópico Contrato ACL Tópico Preferências ACL Tópico ACL Recebimento Process Boleto Tópico Apontamentos Mainframe Piloto Tópico Config. Cliente ACL Emissor Legado Gateway Corporativo Globalcode – Open 4 education
Demo Order. Request. Created. Event Order Api Pending Order Service Flight. Request. Failed. Event Flight. Request. Succeed. Event Hotel Flight Payment Service Hotel. Request. Failed. Event Hotel. Request. Succeed. Event Payment. Request. Failed. Event Payment. Request. Succeed. Event Order. Request. Failed. Event Order. Request. Succeed. Event Kafka Globalcode – Open 4 education
Demo Globalcode – Open 4 education
Livros Globalcode – Open 4 education
Dúvidas? Globalcode – Open 4 education