Fundamentos em Containers
José Gabriel Gruber - jose.gruber@aluno.unc.br
● 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
Apps Monolíticos
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?
O que são?
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;
O app em 12 Fatores
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;
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;
Microsserviços
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;
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;
Arquitetura de Microsserviços
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;
Comunicação
A comunicação entre microsserviços deve ser linguagem neutro; O padrão
atualmente é REST, para assíncrona é Kafka.
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?
Escalabilidade Horizontal
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.
O que é?
Malha de Serviços
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.
● 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;
Containers
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.
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.
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;
Vantagens
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;
Orquestração de Containers
O que é?
Container Orchestration é um conjunto de funcionalidades voltadas a controlar
o ciclo de vida dos containers.
Plataformas para tal: Kubernetes, Docker Swarm, ...
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;
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/

Fundamentos em Containers

  • 1.
    Fundamentos em Containers JoséGabriel Gruber - jose.gruber@aluno.unc.br
  • 2.
    ● Malha deServiç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
  • 3.
  • 4.
    Aplicações desenvolvidas utilizandoa arquitetura monolítica, do qual se consiste em projetar uma aplicação verticalmente para ser executada em um único processo; O que são?
  • 5.
  • 6.
    O problema Por servertical, é 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;
  • 7.
    O app em12 Fatores
  • 8.
    Metodologia Doze-Fatores A Twelve-FactorApp é 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 Umapp 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;
  • 10.
  • 11.
    O que são? Sãoum 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 Ofoco 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;
  • 13.
  • 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 entremicrosserviços deve ser linguagem neutro; O padrão atualmente é REST, para assíncrona é Kafka.
  • 16.
    Dificuldades Podem ser encontradasdificuldades 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?
  • 17.
  • 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.
  • 19.
  • 20.
  • 21.
    O que é? ServiceMesh é 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 decircuito: é 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;
  • 23.
  • 24.
    O que são? Sãoisolamentos 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 Acomposiçã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ãoprecisar 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;
  • 27.
  • 28.
    Dificuldades Não somente decontainers, 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;
  • 29.
  • 30.
    O que é? ContainerOrchestration é um conjunto de funcionalidades voltadas a controlar o ciclo de vida dos containers. Plataformas para tal: Kubernetes, Docker Swarm, ...
  • 31.
    Funcionalidades Tem se porfuncionalidades: ● 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/