Trilha Arquitetura net Marco Oliveira Carlos Lemes Tratando

  • Slides: 45
Download presentation
 Trilha – Arquitetura. net Marco Oliveira | Carlos Lemes Tratando fluxos complexos e

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

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,

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

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,

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:

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

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 RDBMS vertical scalability Globalcode – Open 4 education

 Arquitetura Monolítica: UI horizontal scalability Master/Slave Write on single Master Read on Slaves

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

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

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

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

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

Event Sourcing Globalcode – Open 4 education

 Tópico x Fila point to point publish-subscribe (pub sub) request-reply A B C

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

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 Tópicos Registros Globalcode – Open 4 education

 Apache Kafka Partições, Broker Globalcode – Open 4 education

Apache Kafka Partições, Broker Globalcode – Open 4 education

 Apache Kafka Grupos de Consumo Globalcode – Open 4 education

Apache Kafka Grupos de Consumo Globalcode – Open 4 education

 Apache Kafka Offsets 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 Outras opções Azure Event Hub Globalcode – Open 4 education

 Apache Kafka Case Uber (u. Replicator) https: //eng. uber. com/ureplicator/ Globalcode – Open

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

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

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

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 Long Running Process Coreografia (Choreography) Globalcode – Open 4 education

 Saga Pattern Process Manager • Máquina de estado • Armazena os dados •

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

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

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

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

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

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

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

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 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

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

Transactional Messaging Listen to Yourself Globalcode – Open 4 education

 CDC – Change Data Capture Globalcode – Open 4 education

CDC – Change Data Capture Globalcode – Open 4 education

 CDC – Change Data Capture Debezium Open source project that provides a low

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

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.

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

Demo Globalcode – Open 4 education

 Livros Globalcode – Open 4 education

Livros Globalcode – Open 4 education

 Dúvidas? Globalcode – Open 4 education

Dúvidas? Globalcode – Open 4 education