SlideShare uma empresa Scribd logo
1 de 23
.NET
Aplicações distribuídas com .NET e
Apache Kafka
RenatoGroffe
Microsoft MVP, MTAC
Gustavo Bigardi
Microsoft MVP
AGENDAAGENDA
Sistemas distribuídos
Apache Kafka
Serverless / Azure Functions
Exemplos práticos
Sistemas
distribuído
s
Não distribua!
Separar em APIs não necessariamente
quer dizer micros serviços
O que não é?
Microsserviços
• Banco de dados
compartilhado entre 2 ou
mais aplicações;
• Alta dependência de outros
serviços para comunicação;
• Não possui autonomia para
publicação sem ter que
publicar demais serviços;
• Acumula mais
responsabilidades do que seu
objetivo (lembram do S de
SOLID? Vale aqui também);
O que é?
Microsserviços
• Banco de dados dedicados e
isolados se necessário;
• Alta resiliência, podendo se
manter funcionais, ativos,
mesmo que outros serviços
esteja indisponíveis.
• Podem ser publicados a
qualquer momento, sem
dependência direta de outros
serviços;
• Enxuto e focado apenas na
responsabilidade ao qual foi
proposto, como emitir NFe,
processar pagamento, etc.;
Pontos
Positivos
Microsserviços
• Aumentam a disponibilidade e
resiliência de uma solução;
• Permite lidar melhor com grandes
quantidades de acessos e
escalabilidade por serviço, parte
do negócio da aplicação;
• Permite que processamentos mais
demorados sejam realizados em
background com resiliência;
• Melhor distribuição de recursos e
escalabilidade de times de
desenvolvimento grandes,
inclusive com tecnologias
diferentes;
Pontos
Negativos
ou Atenção
Microsserviços
• Aumentam a complexidade
da solução;
• Exige um grande nível de
maturidade nos times e
cultura de DevOps na
empresa;
• Custos melhor distribuídos,
mas não necessariamente
menores, e sim maiores;
• Exige equipes de
monitoramento, arquitetura
sólida comunicação constante
entre times;
Arquitetura
Avalie as necessidades
• Sistema Global
• Alta Disponibilidade / Missão
Crítica
• Custo Operacional
• Evolução
• Times grandes
Arquitetura
Avalie os riscos
• Manutenção
• Custo Operacional
(novamente)
• Times grandes
• Hype
• Comparação com empresas
que utilizam
Apache Kafka
• Kafka foi desenhado para
mover dados em alta
performance;
• Distribuído nativamente e por
padrão, tolerante a falhas;
• Flexível para pub/sub;
• Baixo acoplamento;
• Escalável horizontalmente;
• Usa tópicos ao invés de filas
Mensageria
Filas
Mensageria
Tópicos
Tópicos no
Kafka
• Um tópico é basicamente um
stream que atua como banco
de dados;
• Possui armazenamento
persistente;
• Pode ter 1 ou mais partições,
para organizar melhor os
consumidores e uso de
recursos;
• A quantidade de partições é
definida ao criar um tópico;
• Consumidores são registrados
em grupos. Um mesmo grupo
tem mensagens únicas,
enquanto grupos diferentes
recebem a mesma mensagem
(broadcast)
Visão geral
Azure Functions
• Arquitetura serverless
• Desenvolvimento
multiplataforma (Windows,
Linux e Mac) e orientado a
eventos
• Utilização de
Triggers/Gatilhos, com
suporte à mensageria,
chamadas HTTP e outros
tipos de eventos
• Implementação
descomplicada
Visão geral
Azure Functions
• Baixo Custo
• Atualmente na versão 3.x
• Suporte a várias plataformas
de desenvolvimento
Plataformas
Desenvolvimento
Exemplos práticos
(a.k.a. Demos)
https://github.com/renatogroffe/TDCPortoAlegre-
2020
Obrigado!!!

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com Docker
 
Arquitetura de microsserviços
Arquitetura  de  microsserviçosArquitetura  de  microsserviços
Arquitetura de microsserviços
 
Adotando o Wordpress
Adotando o WordpressAdotando o Wordpress
Adotando o Wordpress
 
Apresentação sobre Zabbix na iDEZ 2012
Apresentação sobre Zabbix na iDEZ 2012Apresentação sobre Zabbix na iDEZ 2012
Apresentação sobre Zabbix na iDEZ 2012
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
TCC 1 - Um método para o desenvolvimento de software baseado em microserviços
TCC 1 - Um método para o desenvolvimento de software baseado em microserviçosTCC 1 - Um método para o desenvolvimento de software baseado em microserviços
TCC 1 - Um método para o desenvolvimento de software baseado em microserviços
 
Microsserviços com Serverles e Azure Functions
Microsserviços com Serverles e Azure FunctionsMicrosserviços com Serverles e Azure Functions
Microsserviços com Serverles e Azure Functions
 
Explicando DevOps
Explicando DevOpsExplicando DevOps
Explicando DevOps
 
Dapper - Developers-SP - Junho/2017
Dapper - Developers-SP - Junho/2017Dapper - Developers-SP - Junho/2017
Dapper - Developers-SP - Junho/2017
 
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
De zero a cem em cloud computing  transformando idéias em aplicações em pouco...De zero a cem em cloud computing  transformando idéias em aplicações em pouco...
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
 
GABC 2018 - Hands-On: DevOps, CI e CD
GABC 2018 - Hands-On: DevOps, CI e CDGABC 2018 - Hands-On: DevOps, CI e CD
GABC 2018 - Hands-On: DevOps, CI e CD
 
Segurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheirasSegurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheiras
 
Slide Live Conhecendo o Kubernetes
Slide Live Conhecendo o KubernetesSlide Live Conhecendo o Kubernetes
Slide Live Conhecendo o Kubernetes
 
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% ...
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?
 
Iac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deploymentsIac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deployments
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 
4 passos para a Transformação Digital
4 passos para a Transformação Digital4 passos para a Transformação Digital
4 passos para a Transformação Digital
 

Semelhante a Aplicações Distribuídas com .NET e Apache Kafka

Saa s software como serviço (slides)
Saa s   software como serviço (slides)Saa s   software como serviço (slides)
Saa s software como serviço (slides)
Daniela Nunes
 
Como escolher o modelo ideal de TFS para sua empresa
Como escolher o modelo ideal de TFS para sua empresaComo escolher o modelo ideal de TFS para sua empresa
Como escolher o modelo ideal de TFS para sua empresa
CDS
 

Semelhante a Aplicações Distribuídas com .NET e Apache Kafka (20)

Architecture performance using micro services
Architecture performance using micro servicesArchitecture performance using micro services
Architecture performance using micro services
 
Preparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicosPreparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicos
 
Projetando aplicações para a nuvem
Projetando aplicações para a nuvemProjetando aplicações para a nuvem
Projetando aplicações para a nuvem
 
Windows Azure: PaaS e IaaS
Windows Azure: PaaS e IaaSWindows Azure: PaaS e IaaS
Windows Azure: PaaS e IaaS
 
Saa s software como serviço (slides)
Saa s   software como serviço (slides)Saa s   software como serviço (slides)
Saa s software como serviço (slides)
 
Inove simplificando a infraestrutura com Kafka
Inove simplificando a infraestrutura com KafkaInove simplificando a infraestrutura com Kafka
Inove simplificando a infraestrutura com Kafka
 
Fundamentos em Containers
Fundamentos em ContainersFundamentos em Containers
Fundamentos em Containers
 
Conhecendo o AWS Elastic Beanstalk
Conhecendo o AWS Elastic BeanstalkConhecendo o AWS Elastic Beanstalk
Conhecendo o AWS Elastic Beanstalk
 
Flisol 2015
Flisol 2015 Flisol 2015
Flisol 2015
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linux
 
O desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicosO desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicos
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservices
 
Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.
 
Azure Fundamentals (Intensivão Azure)
Azure Fundamentals (Intensivão Azure)Azure Fundamentals (Intensivão Azure)
Azure Fundamentals (Intensivão Azure)
 
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços MóveisQConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
 
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços MóveisQConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
 
Devops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL ServerDevops: Gestão e publicação de Dados no SQL Server
Devops: Gestão e publicação de Dados no SQL Server
 
Aplicações Distribuídas com .NET | TDC Recife Online 2020
Aplicações Distribuídas com .NET | TDC Recife Online 2020Aplicações Distribuídas com .NET | TDC Recife Online 2020
Aplicações Distribuídas com .NET | TDC Recife Online 2020
 
Como escolher o modelo ideal de TFS para sua empresa
Como escolher o modelo ideal de TFS para sua empresaComo escolher o modelo ideal de TFS para sua empresa
Como escolher o modelo ideal de TFS para sua empresa
 

Mais de Gustavo Bellini Bigardi

Mais de Gustavo Bellini Bigardi (20)

Canal DotNet - Design Patterns - Mediator
Canal DotNet - Design Patterns - MediatorCanal DotNet - Design Patterns - Mediator
Canal DotNet - Design Patterns - Mediator
 
Azure Labs - Publicando APIs no Azure
Azure Labs - Publicando APIs no AzureAzure Labs - Publicando APIs no Azure
Azure Labs - Publicando APIs no Azure
 
MVP Week 2020 - Aplicações Modernas com Blazor WASM
MVP Week 2020 - Aplicações Modernas com Blazor WASMMVP Week 2020 - Aplicações Modernas com Blazor WASM
MVP Week 2020 - Aplicações Modernas com Blazor WASM
 
Codificando Night Week - Blazor, tornando o fullstack C# possível!
Codificando Night Week - Blazor, tornando o fullstack C# possível!Codificando Night Week - Blazor, tornando o fullstack C# possível!
Codificando Night Week - Blazor, tornando o fullstack C# possível!
 
Ignite The Tour 2019 - Sao Paulo - Blazor, AI & Blockchain
Ignite The Tour 2019 - Sao Paulo - Blazor, AI & BlockchainIgnite The Tour 2019 - Sao Paulo - Blazor, AI & Blockchain
Ignite The Tour 2019 - Sao Paulo - Blazor, AI & Blockchain
 
DevPira2019 - Blazor
DevPira2019 - BlazorDevPira2019 - Blazor
DevPira2019 - Blazor
 
Dev week2019 blazor
Dev week2019 blazorDev week2019 blazor
Dev week2019 blazor
 
Microsservicos serverles combinacao perfeita
Microsservicos serverles combinacao perfeitaMicrosservicos serverles combinacao perfeita
Microsservicos serverles combinacao perfeita
 
Microsservicos com node js + azure functions + azure service bus
Microsservicos com node js + azure functions + azure service busMicrosservicos com node js + azure functions + azure service bus
Microsservicos com node js + azure functions + azure service bus
 
Blazor and azure functions for serverless websites
Blazor and azure functions for serverless websitesBlazor and azure functions for serverless websites
Blazor and azure functions for serverless websites
 
Implementando rapidamente web apps com blazor e serverless
Implementando rapidamente web apps com blazor e serverlessImplementando rapidamente web apps com blazor e serverless
Implementando rapidamente web apps com blazor e serverless
 
Distribuindo seu app Blazor no Azure com Storage + CDN
Distribuindo seu app Blazor no Azure com Storage + CDNDistribuindo seu app Blazor no Azure com Storage + CDN
Distribuindo seu app Blazor no Azure com Storage + CDN
 
Esqueca o ETL! Estraindo métricas com CosmosDB e Serverless
Esqueca o ETL! Estraindo métricas com CosmosDB e ServerlessEsqueca o ETL! Estraindo métricas com CosmosDB e Serverless
Esqueca o ETL! Estraindo métricas com CosmosDB e Serverless
 
Blazor, web assembly e o futuro do browser
Blazor, web assembly e o futuro do browserBlazor, web assembly e o futuro do browser
Blazor, web assembly e o futuro do browser
 
Serverless com azure functions e node js
Serverless com azure functions e node jsServerless com azure functions e node js
Serverless com azure functions e node js
 
Fullstack C# com Blazor
Fullstack C# com BlazorFullstack C# com Blazor
Fullstack C# com Blazor
 
CapiConf Online - Utilizando reconhecimento facial para segurança em aplicações
CapiConf Online - Utilizando reconhecimento facial para segurança em aplicaçõesCapiConf Online - Utilizando reconhecimento facial para segurança em aplicações
CapiConf Online - Utilizando reconhecimento facial para segurança em aplicações
 
Meetup - FC Nuvem - Serviços Cognitivos
Meetup - FC Nuvem - Serviços CognitivosMeetup - FC Nuvem - Serviços Cognitivos
Meetup - FC Nuvem - Serviços Cognitivos
 
7Masters - PWA - Publishing using Universal Windows Apps
7Masters - PWA - Publishing using Universal Windows Apps7Masters - PWA - Publishing using Universal Windows Apps
7Masters - PWA - Publishing using Universal Windows Apps
 
Azure Conference 2018 - Face Service para gestão de qualidade em Callcenters
Azure Conference 2018 - Face Service para gestão de qualidade em CallcentersAzure Conference 2018 - Face Service para gestão de qualidade em Callcenters
Azure Conference 2018 - Face Service para gestão de qualidade em Callcenters
 

Aplicações Distribuídas com .NET e Apache Kafka

  • 1. .NET Aplicações distribuídas com .NET e Apache Kafka RenatoGroffe Microsoft MVP, MTAC Gustavo Bigardi Microsoft MVP
  • 2. AGENDAAGENDA Sistemas distribuídos Apache Kafka Serverless / Azure Functions Exemplos práticos
  • 5.
  • 6. Separar em APIs não necessariamente quer dizer micros serviços
  • 7.
  • 8. O que não é? Microsserviços • Banco de dados compartilhado entre 2 ou mais aplicações; • Alta dependência de outros serviços para comunicação; • Não possui autonomia para publicação sem ter que publicar demais serviços; • Acumula mais responsabilidades do que seu objetivo (lembram do S de SOLID? Vale aqui também);
  • 9. O que é? Microsserviços • Banco de dados dedicados e isolados se necessário; • Alta resiliência, podendo se manter funcionais, ativos, mesmo que outros serviços esteja indisponíveis. • Podem ser publicados a qualquer momento, sem dependência direta de outros serviços; • Enxuto e focado apenas na responsabilidade ao qual foi proposto, como emitir NFe, processar pagamento, etc.;
  • 10. Pontos Positivos Microsserviços • Aumentam a disponibilidade e resiliência de uma solução; • Permite lidar melhor com grandes quantidades de acessos e escalabilidade por serviço, parte do negócio da aplicação; • Permite que processamentos mais demorados sejam realizados em background com resiliência; • Melhor distribuição de recursos e escalabilidade de times de desenvolvimento grandes, inclusive com tecnologias diferentes;
  • 11. Pontos Negativos ou Atenção Microsserviços • Aumentam a complexidade da solução; • Exige um grande nível de maturidade nos times e cultura de DevOps na empresa; • Custos melhor distribuídos, mas não necessariamente menores, e sim maiores; • Exige equipes de monitoramento, arquitetura sólida comunicação constante entre times;
  • 12. Arquitetura Avalie as necessidades • Sistema Global • Alta Disponibilidade / Missão Crítica • Custo Operacional • Evolução • Times grandes
  • 13. Arquitetura Avalie os riscos • Manutenção • Custo Operacional (novamente) • Times grandes • Hype • Comparação com empresas que utilizam
  • 14. Apache Kafka • Kafka foi desenhado para mover dados em alta performance; • Distribuído nativamente e por padrão, tolerante a falhas; • Flexível para pub/sub; • Baixo acoplamento; • Escalável horizontalmente; • Usa tópicos ao invés de filas
  • 17. Tópicos no Kafka • Um tópico é basicamente um stream que atua como banco de dados; • Possui armazenamento persistente; • Pode ter 1 ou mais partições, para organizar melhor os consumidores e uso de recursos; • A quantidade de partições é definida ao criar um tópico; • Consumidores são registrados em grupos. Um mesmo grupo tem mensagens únicas, enquanto grupos diferentes recebem a mesma mensagem (broadcast)
  • 18. Visão geral Azure Functions • Arquitetura serverless • Desenvolvimento multiplataforma (Windows, Linux e Mac) e orientado a eventos • Utilização de Triggers/Gatilhos, com suporte à mensageria, chamadas HTTP e outros tipos de eventos • Implementação descomplicada
  • 19. Visão geral Azure Functions • Baixo Custo • Atualmente na versão 3.x • Suporte a várias plataformas de desenvolvimento