SlideShare uma empresa Scribd logo
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/

Mais conteúdo relacionado

Mais procurados

The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openruko
Éverton Ribeiro
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
Marcos Pessoa
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Renato Groffe
 
Gradle spring-hateoas-Lombok
Gradle spring-hateoas-LombokGradle spring-hateoas-Lombok
Gradle spring-hateoas-Lombok
DanielChristofolli
 
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisPlano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Marcos Pessoa
 
Introdução Ao Spring Com Spring Boot
Introdução Ao Spring Com Spring BootIntrodução Ao Spring Com Spring Boot
Introdução Ao Spring Com Spring Boot
Alexandre Rodrigues
 
Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013
SpinEngenharia
 
Slide Live Conhecendo o Kubernetes
Slide Live Conhecendo o KubernetesSlide Live Conhecendo o Kubernetes
Slide Live Conhecendo o Kubernetes
Elton Fonseca
 
Workshop - Business Process Management
Workshop - Business Process ManagementWorkshop - Business Process Management
Workshop - Business Process Management
Thiago Pereira
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Renato Groffe
 
Apresentação controle de versão
Apresentação controle de versãoApresentação controle de versão
Apresentação controle de versão
Universidade Federal Rural do Semi Arido
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de Versão
Jonathas Silva
 
Ecossistema symfony
Ecossistema symfonyEcossistema symfony
Ecossistema symfony
Elton Fonseca
 
Introdução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBIntrodução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESB
Edgar Silva
 
Gradle
GradleGradle
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Emmanuel Neri
 
Enterprise php
Enterprise phpEnterprise php
Enterprise php
Guilherme Blanco
 
MiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIEMiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIE
Cloves da Rocha
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVC
Benicio Ávila
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5
Waldyr Felix
 

Mais procurados (20)

The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openruko
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
 
Gradle spring-hateoas-Lombok
Gradle spring-hateoas-LombokGradle spring-hateoas-Lombok
Gradle spring-hateoas-Lombok
 
Plano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiaisPlano do projeto de software SIGEM - Sistema de gestão de materiais
Plano do projeto de software SIGEM - Sistema de gestão de materiais
 
Introdução Ao Spring Com Spring Boot
Introdução Ao Spring Com Spring BootIntrodução Ao Spring Com Spring Boot
Introdução Ao Spring Com Spring Boot
 
Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013Apresentação da Spin no SIMPASE 2013
Apresentação da Spin no SIMPASE 2013
 
Slide Live Conhecendo o Kubernetes
Slide Live Conhecendo o KubernetesSlide Live Conhecendo o Kubernetes
Slide Live Conhecendo o Kubernetes
 
Workshop - Business Process Management
Workshop - Business Process ManagementWorkshop - Business Process Management
Workshop - Business Process Management
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
 
Apresentação controle de versão
Apresentação controle de versãoApresentação controle de versão
Apresentação controle de versão
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de Versão
 
Ecossistema symfony
Ecossistema symfonyEcossistema symfony
Ecossistema symfony
 
Introdução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESBIntrodução aos Conceitos do WSO2 ESB
Introdução aos Conceitos do WSO2 ESB
 
Gradle
GradleGradle
Gradle
 
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
Microservices: Mais que uma arquitetura de software, uma filosofia de desenvo...
 
Enterprise php
Enterprise phpEnterprise php
Enterprise php
 
MiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIEMiniCurso de Git e Github - UNIFG PIE
MiniCurso de Git e Github - UNIFG PIE
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVC
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5
 

Semelhante a Fundamentos em Containers

Orquestração de containers com Rancher
Orquestração de containers com RancherOrquestração de containers com Rancher
Orquestração de containers com Rancher
Alex Ishida
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
Fernando Ike
 
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
tdc-globalcode
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018
Graziella Bonizi
 
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
Cristofer Sousa
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
Ryan Padilha
 
Aula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosdsAula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosds
Portal_do_Estudante_SD
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Thiago Sinésio
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!
Evandro Couto
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
Carlos Gonzaga
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
Paulo Carvalho
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Renato Groff
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud Netflix
Natanael Fonseca
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
Rafael Salerno de Oliveira
 
Microservices
MicroservicesMicroservices
Microservices
Rafael Sousa
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
Rosicleia Frasson
 
Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
João Carlos Ottobboni
 
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.
Marcel Cattaneo
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
Bruno Souza
 
Quasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralQuasar Framework - Uma visão Geral
Quasar Framework - Uma visão Geral
Patrick Monteiro
 

Semelhante a Fundamentos em Containers (20)

Orquestração de containers com Rancher
Orquestração de containers com RancherOrquestração de containers com Rancher
Orquestração de containers com Rancher
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018
 
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
Plataformas Monolíticas, redescobrindo o Desktop e sendo Ágil para Web.
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Aula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosdsAula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosds
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud Netflix
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 
Microservices
MicroservicesMicroservices
Microservices
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
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.
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Quasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralQuasar Framework - Uma visão Geral
Quasar Framework - Uma visão Geral
 

Fundamentos em Containers

  • 1. Fundamentos em Containers José Gabriel Gruber - jose.gruber@aluno.unc.br
  • 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;
  • 7. O app em 12 Fatores
  • 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/