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

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.
  • 3.
  • 4.
  • 6.
    Separar em APIsnão necessariamente quer dizer micros serviços
  • 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 adisponibilidade 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 • Aumentama 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 • Kafkafoi 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
  • 15.
  • 16.
  • 17.
    Tópicos no Kafka • Umtó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
  • 20.
  • 21.
  • 22.
  • 23.