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