2. ● Malha de Serviços
● O que é?
● Funcionalidades
● Containers
● O que são?
● Infraestrutura para Containers
● Vantagens
● Orquestração de Containers
● O que é?
● Funcionalidades
● Apps Monolíticos
● O que são?
● O problema
● O App em Doze-Fatores
● Metodologia Doze-Fatores
● Os Doze Fatores
● Microsserviços
● O que são?
● Arquitetura de Microsserviços
● Vantagens
● Comunicação
● Dificuldades
● Escalabilidade Horizontal
● O que é?
Agenda
4. Aplicações desenvolvidas utilizando a arquitetura monolítica, do qual se
consiste em projetar uma aplicação verticalmente para ser executada em um
único processo;
O que são?
6. O problema
Por ser vertical, é uma aplicação complexa de ser mantida, dados os fatores:
● Um único executável;
● Limita-se às funcionalidades da
linguagem;
● A cada mudança envolve criar
uma nova versão de toda a
aplicação;
● Não há como escalonar uma
parte da aplicação;
● O código fonte é grande e
intimidador;
● Todas as partes são
dependentes umas às outras;
8. Metodologia Doze-Fatores
A Twelve-Factor App é uma metodologia voltada a construção de aplicações
Software como Serviço(SaaS), do qual tenham as qualidades de:
● Usar formatos declarativos para automatizar a configuração inicial;
● Ter um contrato claro com o sistema operacional que o suporta;
● Minimizar a divergência entre desenvolvimento e produção;
● Poder escalar sem significativas mudanças;
9. Os 12 Fatores
Um app em doze-fatores deve ser projetado e mantido dessa maneira:
9. Descartável com inicialização mínima, desligamento normal e tolerância
ao término abrupto do processo;
10. Projetado para desenvolvimento e implantação contínua, com diferença
mínima entre o app de desenvolvimento e o de produção;
11. Tratar os logs como fluxos de eventos;
12. Scripts de administração únicos mantidos com o aplicativo, para garantir
a execução no mesmo ambiente;
1. Armazenado em uma única base de código, rastreado em um sistema de
controle de versão: uma base de código, várias implementações;
2. Ter suas dependências externas explicitamente declaradas e isoladas;
3. Possuir configuração específica de implementação armazenada em
variáveis de ambiente e não no código fonte;
4. Tratar os serviços de recursos(backing) como recursos anexados ou
substituíveis;
5. Construído em estágios distintos(construção, liberação, execução) com
separação estrita entre eles(sem efeitos indiretos ou ciclos)
6. Executado como um ou mais processos sem estado, que não
compartilham nada e assumem que a memória do processo é transitória;
7. É independente e provê um endpoint no host e porta definida;
8. Gerenciado e escalonado por instâncias de processos;
11. O que são?
São um estilo de arquitetura de app que divide um app em componentes, no
qual cada componente é um app miniatura completo que é focado em produzir
uma tarefa única de negócio;
12. Arquitetura de Microsserviços
O foco da arquitetura de micro serviço é de completamente separar os
componentes de uma aplicação um do outro, para que assim, eles possam ser
mantidos, escalonados e muito mais, separadamente;
14. Vantagens
Tem-se por vantagens:
● Desenvolvido independentemente;
● Desenvolvido por uma única equipe pequena;
● Desenvolvido em horário próprio;
● Escala e falha independentemente;
● Cada qual com sua linguagem;
● Gerencia seus próprios dados;
15. Comunicação
A comunicação entre microsserviços deve ser linguagem neutro; O padrão
atualmente é REST, para assíncrona é Kafka.
16. Dificuldades
Podem ser encontradas dificuldades com microsserviços, tais como:
● Como posso encontrar o serviço que eu preciso?
● Como eu posso escalonar meus serviços?
● Como eu posso testar minhas novas versões dos serviços?
● Como eu posso testar contra falhas?
18. O que é?
É o incremento da capacidade computacional alcançada ao conectar múltiplas
entidades de hardwares ou software para que assim, elas possam trabalhar
como uma única unidade lógica.
21. O que é?
Service Mesh é um conjunto de funcionalidades voltadas a controlar como
diferentes componentes de um aplicação se comunicam entre si, visando
sanar as dificuldades encontradas ao utilizar microsserviços.
22. ● Quebradores de circuito: é usado para prevenir demora de respostas de
uma determinada dependência de serviço, causada por falha ou latência ;
● Anteparas: é usado para evitar que atrasos de uma determinada chamada
de serviço causem problemas mais amplos em todo o aplicativo;
Funcionalidades
As funcionalidades são:
● Registro de Serviço: é usado para manter o rastro da localização e saúde
dos serviços;
● Descobrimento de Serviço: usa a lista do Registro de Serviço de serviços e
instâncias disponíveis, para redirecionar requisições recebidas a instância
apropriada;
● Teste de falha: voltado a simular a falha ou indisponibilidade de um ou
mais serviços do app;
24. O que são?
São isolamentos similares à Máquinas Virtuais(VM), exceto que são providos
pelo OS e funcionam a nível de processo.
Cada container é um processo ou grupo de processos que rodam em
isolamento, o isolamento é dado através de funcionalidade do Linux chamada
namespace.
25. Infraestrutura para Containers
A composição de um container(no caso do Docker) é dada através da aplicação que
ele irá rodar e as bibliotecas necessárias para seu funcionamento.
26. Vantagens
● Por não precisar incluir um OS, os containers são mais leves e consomem
menos recursos;
● Por terem suas bibliotecas junto na imagem, são flexíveis e podem ser
executados em qualquer ambiente;
● São rápidos;
● Melhor uso da infraestrutura;
● Pode-se ter mais containers do que VMs em um host;
28. Dificuldades
Não somente de containers, mas de um todo que espera-se alcançar:
● Escalonamento e programação automatizados;
● Descoberta de serviços;
● Zero tempo de inatividade por implantação;
● Alta disponibilidade e tolerância a falhas;
● Implantações avançadas;
30. O que é?
Container Orchestration é um conjunto de funcionalidades voltadas a controlar
o ciclo de vida dos containers.
Plataformas para tal: Kubernetes, Docker Swarm, ...
31. Funcionalidades
Tem se por funcionalidades:
● Gerenciamento de cluster: gerenciamento de carga, implantação de
containers;
● Programação: melhor utilização dos recursos entre os nós;
● Descoberta de serviços: API Gateways, proxys, LAN virtual entre
containers;
● Gerenciamento de saúde: verifica o estado do container, seus recursos;
● Declaração do estado desejado: gerencia o estado dos containers com
base em um estado desejado definido pelo usuário;
● Reconciliação ativa: auto configuração entre containers;
32. Obrigado!
Contato:
GitHub, GitLab, LinkedIn,
Soundcloud, Twitter :
JGabrielGruber
jose.gruber@aluno.unc.br
Referências:
Docker Essentials: A Developer Introduction -
https://courses.cognitiveclass.ai/courses/course
-v1:IBMDeveloperSkillsNetwork+CO0101EN+v1/
Container & Kubernetes Essentials with IBM
Cloud -
https://courses.cognitiveclass.ai/courses/course
-v1:CognitiveClass+CO0201EN+v1/c
Getting started with Microservices with Istio and
IBM Cloud Kubernetes Service -
https://courses.cognitiveclass.ai/courses/course
-v1:CognitiveClass+CO0301EN+v1/