SlideShare una empresa de Scribd logo
1 de 45
Projeto Estaleiro - O
caminho para o uso de
Kubernetes no Governo
Federal
XaaS e a fábrica de salsichas
● XaaS - Qualquer coisa como serviço
● IaaS - Entra especificação, sai máquina
● PaaS - Entra código, sai app server rodando
● Por trás de qualquer coisa as a Service, existe um motor de
orquestração decidindo onde, quando e como o serviço será
provisionado
Alguns conceitos
Container é apenas um
processo em execução no
Sistema Operacional
Containers
Container é apenas uma aplicação
rodando em um servidor e expondo
seus serviços em uma porta
qualquer
Containers
SERPRO e a fábrica de aviões
● +- 5 mil Servidores
● Mainframes
● Muitos e muitos serviços críticos
● Muitas e muitas tecnologias
● Muitas questões: Agilidade em entrega, performance das
aplicações, segurança, diversas configurações necessárias
SERPRO e a fábrica de aviões
● Durante o dia: Troca de um dos motores
○ Avião desbalanceado!! Problema em vôo !!
● Desenvolvimento: O avião está com problemas!!!
○ Troca aquela peça lá e vê se resolve.
● Comandante do vôo: Emergência declarada. Checklist XPTO
para pouso de emergência!!
SERPRO e a fábrica de aviões
Nós construímos o barco
que leva o seu container
Projeto Estaleiro
Projeto Estaleiro
● Docker - Engine para execução de containers
○ Um orquestrador, que recebe especificação e cria
mecanismos de isolamento de processos no servidor
● Kubernetes
○ Um orquestrador de containers :)
○ E outras coisas a mais ;)
Nosso Foco
Projeto Estaleiro
● Integrações com o mundo tradicional
○ Bancos proprietários, Mainframe, SFTP…
● Aplicações antigas no novo mundo
○ Armazenamento local de arquivos
○ Aplicações com persistência de sessão - Ex.: JSF
○ Aplicações em linguagens não suportadas - Ex.: .NET
E os problemas do mundo real ?
● Boas práticas de desenvolvimento para aplicações cloud native.
● Aplicável aos desenvolvedores de soluções para o novo mundo.
● Aplicável aos engenheiros de operação dessas aplicações
● Aplicável também à infraestrutura desses serviços
○ CoreOS - Cloudinit, log driver remoto, etc
12 Factors
● Códigos no GIT
● Do GIT a publicação só ocorre via CI
● Gitlab tem um plugin de publicação no Kubernetes
● Para o Projeto Estaleiro - API própria, com CLI própria usada
nos Runners
● github.com/estaleiro/12factors
Factor 1 - Code Base
Factor 1 - Code Base
● PaaS - Para cada plataforma, existe a possibilidade de
declaração de dependências
● Imagem final construída à partir de dependências + a aplicação
em si - Source to Image
● Não fazemos a compilação da aplicação, logo aplicações Java
devem utilizar Maven, Gradle, etc.
Factor 2 - Dependências
● Mesma imagem, diferentes configurações
● Para cada ambiente, integrações diferentes (mas a mesma
imagem)
● Kubernetes: Objeto de deployment
○ Especificar a imagem, usar as configurações definidas em
variáveis de ambiente
Factor 3 - Configurações
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: app-katz-dev
spec:
replicas: 1
template:
metadata:
labels:
app: app-katz-dev
spec:
containers:
- name: app-katz
image: rpkatz/app-katz
ports:
- containerPort: 8080
env:
- name: MENSAGEM
value: "Olá! Esse é o ambiente de desenvolvimento"
Factor 3 - Configurações
Factor 3 - Configurações
Demonstração
● Toda integração deve estar declarada
● Como forçar?
Factor 4 - Attached Resources / Serviços de apoio
● Toda integração deve estar declarada
● Como forçar?
○ Regras de firewall na saída
○ Calico - Stack de rede para o Kubernetes
○ Necessário declarar integrações como anotação, para que
as regras sejam abertas!
● Documentação de integrações:
Factor 4 - Attached Resources / Serviços de apoio
● Existe um container base para cada plataforma
● O processo de publicação cria um novo container com a
imagem base (jboss, php, python) + dependências + aplicação
compilada (Factor 2)
● Nova imagem: projeto/aplicacao:versao
● Essa versão pode (e deve) ser usada em todo o ciclo de vida do
ambiente
Factor 5 - Build, Release, Run
● Se você armazena estado, como sua aplicação será escalável?
● Ahm, mas eu preciso de afinidade de sessão...
Factor 6 - Processos stateless
● Se você armazena estado, como sua aplicação será escalável?
● Ahm, mas eu preciso de afinidade de sessão…
● Mas eu preciso MUITO de afinidade de sessão…
● https://github.com/kubernetes/ingress/pull/258
● Mas...por sua conta e risco, veja o problema a seguir...
Factor 6 - Processos stateless
Factor 6 - Processos stateless
Demonstração
● Além do PR no Ingress, outras abordagens para tratar esse
fator:
○ Redis como plataforma, para controle de sessão (inclusive
para .NET Core!)
○ Evitar usar abordagens que dependem de sessão (apps com
JSF)
Factor 6 - Processos stateless
● A aplicação tem sua própria porta e não depende de um
serviço/plataforma externa para isso.
● Cada aplicação / deployment isolada, com sua própria porta
● Bom: Apps Java com Jetty, Apps Go com seu HTTP Server,
.NET Core com sua porta, Apps J2EE com Wildfly Swarm
● Não tão bom... Usar Wildfly completo, Apache + PHP, etc
● Para esse, ainda não temos uma solução em uso :(
Factor 7 - Port Binding
● App de demonstração dessa palestra:
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", logRequest(http.DefaultServeMux))
}
● Código completo em http://github.com/Estaleiro/12factors
Factor 7 - Port Binding
● A aplicação deve estar preparada para concorrência e
elasticidade
● Kubernetes permite o crescimento horizontal, conforme uso de
CPU, e as aplicações devem estar preparadas para isso!
○ Horizontal Pod Autoscaling (HPA)
Factor 8 - Concorrência e Elasticidade
Factor 8 - Concorrência e elasticidade
● Container morreu? Cria de novo!
○ Morre rápido, sobe rápido
● SRE Book (Google) - Manter 100% de disponibilidade é MUITO
CARO! - É mais barato manter a disponibilidade de 99.999% e
assumir que as coisas podem (e vão!) falhar.
● Deployment Health Check
● Ex.: Aplicação (em produção) morre 400x por semana e tem 0
incidentes!
Factor 9 - Descartabilidade
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: app-katz-dev
spec:
replicas: 1
template:
spec:
containers:
- name: app-katz
image: rpkatz/app-katz
livenessProbe:
httpGet:
path: /factor9
port: 8080
initialDelaySeconds: 3
periodSeconds: 3
ports:
- containerPort: 80
Factor 9 - Descartabilidade
Factor 9 - Descartabilidade
Demonstração
● “No meu ambiente funciona!”
● Solução: O cluster K8S é o mesmo, de Dev a Prod
● Mesma build, diferentes diretivas
○ Pode rodar na sua estação se quiser!
Factor 10 - Paridade Dev/Prod
● Graylog!!!
● Em toda engine Docker, subimos ela com o Gelf Log Driver
● Graylog extrai e trata campos, gera alertas baseados em
comportamento
● Tratamento de erros: Aplicação deve fazer
● Erros e stack traces == Inferno
○ Solução: Sentry
Factor 11 - Logs e fluxos de evento
● Mesma base de código, container diferente para isso
● Pode ser por exemplo um ‘Short running’ Container que suba,
execute as tarefas administrativas e finalize, mas com a mesma
base de código.
● Ex.: Carga de um banco de dados
● Kubernetes Jobs para isso
○ Ou ainda um kubectl exec em algum container, e algum
comando especial (não é o ideal!)
Factor 12 - Processos Administrativos
● OS DOIS!!!
● Flexibilidade - Demandas não aderentes ao 12 Factor tem valor,
geram conhecimento (e código!) e devem ser tratadas
● Ex.: Discussão de evolução de plataformas de produção do
Wildfly para aplicações auto contidas (Factor 7)
● Risco x Valor - Containers não são (e nem tem como ser)
solução para tudo, mas não devemos desistir tão facilmente.
Você quer ter razão ou ser feliz??
● https://12factor.net/pt_br/
● https://github.com/gomex/docker-para-desenvolvedores
● https://docs.gitlab.com/ce/user/project/integrations/kubernetes.ht
ml
● Kubernetes Docs
Referências
Dúvidas?
Agradecemos pela atenção.
Ricardo Pchevuzinske Katz
ricardo.katz@serpro.gov.br
@katzsp
github.com/Estaleiro

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetes
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
 
Foreman como provisionador
Foreman como provisionadorForeman como provisionador
Foreman como provisionador
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
 
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
 
Kubecon EU 2019 Remarks
Kubecon EU 2019 RemarksKubecon EU 2019 Remarks
Kubecon EU 2019 Remarks
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Subvertendo o codigo PHP com SVN - ENSOL
Subvertendo o codigo PHP com SVN - ENSOLSubvertendo o codigo PHP com SVN - ENSOL
Subvertendo o codigo PHP com SVN - ENSOL
 
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresasDockerizando aplicações em uma fintech  o bom, o mau e o feio as surpresas
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
 
DevOps na prática - Savanna Denega
DevOps na prática - Savanna DenegaDevOps na prática - Savanna Denega
DevOps na prática - Savanna Denega
 
Programando interfaces reativas com Xamarin e Reactive UI
Programando interfaces reativas com Xamarin e Reactive UIProgramando interfaces reativas com Xamarin e Reactive UI
Programando interfaces reativas com Xamarin e Reactive UI
 
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
Docker para Desenvolvedores .NET - .NET SP - Novembro-2018
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
 
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
Construindo aplicações Web escaláveis com Docker e o Microsoft Azure - Azure ...
 
TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unha
 
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
 
Cansei de trabalho manual, quero automatizar tudo!
Cansei de trabalho manual, quero automatizar tudo!Cansei de trabalho manual, quero automatizar tudo!
Cansei de trabalho manual, quero automatizar tudo!
 
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
#noOps?? Transcendendo o DevOps pelo caminho de tijolos (não muito) amarelos
 
Guday netflix oss
Guday netflix ossGuday netflix oss
Guday netflix oss
 
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
 

Similar a TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team at - Projeto Estaleiro - O caminho para o uso de Kubernetes no Governo Federal

Similar a TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team at - Projeto Estaleiro - O caminho para o uso de Kubernetes no Governo Federal (20)

12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com Docker
 
Putting a-heat-with-thermostat
Putting a-heat-with-thermostatPutting a-heat-with-thermostat
Putting a-heat-with-thermostat
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openruko
 
Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...
Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...
Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...
 
TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?TDC2018SP | Trilha Serveless - Pra que SERVErless?
TDC2018SP | Trilha Serveless - Pra que SERVErless?
 
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...
TDC2018FLN | Trilha Arquitetura - Elixir Umbrella - Aplicacoes desacopladas s...
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHP
 
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
TDC2016SP - Versionando sua infraestrutura: Como e porque fazer, baseado em c...
 
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
 
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com Appium
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Estaleiro o uso de kubernetes no serpro
Estaleiro   o uso de kubernetes no serproEstaleiro   o uso de kubernetes no serpro
Estaleiro o uso de kubernetes no serpro
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
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
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimento
 

Más de tdc-globalcode

Más de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Último

PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
NarlaAquino
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
Aula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptxAula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptx
andrenespoli3
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
TailsonSantos1
 

Último (20)

Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
Aula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptxAula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptx
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 

TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team at - Projeto Estaleiro - O caminho para o uso de Kubernetes no Governo Federal

  • 1. Projeto Estaleiro - O caminho para o uso de Kubernetes no Governo Federal
  • 2. XaaS e a fábrica de salsichas
  • 3. ● XaaS - Qualquer coisa como serviço ● IaaS - Entra especificação, sai máquina ● PaaS - Entra código, sai app server rodando ● Por trás de qualquer coisa as a Service, existe um motor de orquestração decidindo onde, quando e como o serviço será provisionado Alguns conceitos
  • 4. Container é apenas um processo em execução no Sistema Operacional Containers
  • 5.
  • 6. Container é apenas uma aplicação rodando em um servidor e expondo seus serviços em uma porta qualquer Containers
  • 7.
  • 8. SERPRO e a fábrica de aviões
  • 9. ● +- 5 mil Servidores ● Mainframes ● Muitos e muitos serviços críticos ● Muitas e muitas tecnologias ● Muitas questões: Agilidade em entrega, performance das aplicações, segurança, diversas configurações necessárias SERPRO e a fábrica de aviões
  • 10. ● Durante o dia: Troca de um dos motores ○ Avião desbalanceado!! Problema em vôo !! ● Desenvolvimento: O avião está com problemas!!! ○ Troca aquela peça lá e vê se resolve. ● Comandante do vôo: Emergência declarada. Checklist XPTO para pouso de emergência!! SERPRO e a fábrica de aviões
  • 11.
  • 12. Nós construímos o barco que leva o seu container Projeto Estaleiro
  • 14. ● Docker - Engine para execução de containers ○ Um orquestrador, que recebe especificação e cria mecanismos de isolamento de processos no servidor ● Kubernetes ○ Um orquestrador de containers :) ○ E outras coisas a mais ;) Nosso Foco
  • 16. ● Integrações com o mundo tradicional ○ Bancos proprietários, Mainframe, SFTP… ● Aplicações antigas no novo mundo ○ Armazenamento local de arquivos ○ Aplicações com persistência de sessão - Ex.: JSF ○ Aplicações em linguagens não suportadas - Ex.: .NET E os problemas do mundo real ?
  • 17. ● Boas práticas de desenvolvimento para aplicações cloud native. ● Aplicável aos desenvolvedores de soluções para o novo mundo. ● Aplicável aos engenheiros de operação dessas aplicações ● Aplicável também à infraestrutura desses serviços ○ CoreOS - Cloudinit, log driver remoto, etc 12 Factors
  • 18. ● Códigos no GIT ● Do GIT a publicação só ocorre via CI ● Gitlab tem um plugin de publicação no Kubernetes ● Para o Projeto Estaleiro - API própria, com CLI própria usada nos Runners ● github.com/estaleiro/12factors Factor 1 - Code Base
  • 19. Factor 1 - Code Base
  • 20. ● PaaS - Para cada plataforma, existe a possibilidade de declaração de dependências ● Imagem final construída à partir de dependências + a aplicação em si - Source to Image ● Não fazemos a compilação da aplicação, logo aplicações Java devem utilizar Maven, Gradle, etc. Factor 2 - Dependências
  • 21. ● Mesma imagem, diferentes configurações ● Para cada ambiente, integrações diferentes (mas a mesma imagem) ● Kubernetes: Objeto de deployment ○ Especificar a imagem, usar as configurações definidas em variáveis de ambiente Factor 3 - Configurações
  • 22. apiVersion: extensions/v1beta1 kind: Deployment metadata: name: app-katz-dev spec: replicas: 1 template: metadata: labels: app: app-katz-dev spec: containers: - name: app-katz image: rpkatz/app-katz ports: - containerPort: 8080 env: - name: MENSAGEM value: "Olá! Esse é o ambiente de desenvolvimento" Factor 3 - Configurações
  • 23. Factor 3 - Configurações Demonstração
  • 24. ● Toda integração deve estar declarada ● Como forçar? Factor 4 - Attached Resources / Serviços de apoio
  • 25.
  • 26. ● Toda integração deve estar declarada ● Como forçar? ○ Regras de firewall na saída ○ Calico - Stack de rede para o Kubernetes ○ Necessário declarar integrações como anotação, para que as regras sejam abertas! ● Documentação de integrações: Factor 4 - Attached Resources / Serviços de apoio
  • 27. ● Existe um container base para cada plataforma ● O processo de publicação cria um novo container com a imagem base (jboss, php, python) + dependências + aplicação compilada (Factor 2) ● Nova imagem: projeto/aplicacao:versao ● Essa versão pode (e deve) ser usada em todo o ciclo de vida do ambiente Factor 5 - Build, Release, Run
  • 28. ● Se você armazena estado, como sua aplicação será escalável? ● Ahm, mas eu preciso de afinidade de sessão... Factor 6 - Processos stateless
  • 29.
  • 30. ● Se você armazena estado, como sua aplicação será escalável? ● Ahm, mas eu preciso de afinidade de sessão… ● Mas eu preciso MUITO de afinidade de sessão… ● https://github.com/kubernetes/ingress/pull/258 ● Mas...por sua conta e risco, veja o problema a seguir... Factor 6 - Processos stateless
  • 31. Factor 6 - Processos stateless Demonstração
  • 32. ● Além do PR no Ingress, outras abordagens para tratar esse fator: ○ Redis como plataforma, para controle de sessão (inclusive para .NET Core!) ○ Evitar usar abordagens que dependem de sessão (apps com JSF) Factor 6 - Processos stateless
  • 33. ● A aplicação tem sua própria porta e não depende de um serviço/plataforma externa para isso. ● Cada aplicação / deployment isolada, com sua própria porta ● Bom: Apps Java com Jetty, Apps Go com seu HTTP Server, .NET Core com sua porta, Apps J2EE com Wildfly Swarm ● Não tão bom... Usar Wildfly completo, Apache + PHP, etc ● Para esse, ainda não temos uma solução em uso :( Factor 7 - Port Binding
  • 34. ● App de demonstração dessa palestra: func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", logRequest(http.DefaultServeMux)) } ● Código completo em http://github.com/Estaleiro/12factors Factor 7 - Port Binding
  • 35. ● A aplicação deve estar preparada para concorrência e elasticidade ● Kubernetes permite o crescimento horizontal, conforme uso de CPU, e as aplicações devem estar preparadas para isso! ○ Horizontal Pod Autoscaling (HPA) Factor 8 - Concorrência e Elasticidade
  • 36. Factor 8 - Concorrência e elasticidade
  • 37. ● Container morreu? Cria de novo! ○ Morre rápido, sobe rápido ● SRE Book (Google) - Manter 100% de disponibilidade é MUITO CARO! - É mais barato manter a disponibilidade de 99.999% e assumir que as coisas podem (e vão!) falhar. ● Deployment Health Check ● Ex.: Aplicação (em produção) morre 400x por semana e tem 0 incidentes! Factor 9 - Descartabilidade
  • 38. apiVersion: extensions/v1beta1 kind: Deployment metadata: name: app-katz-dev spec: replicas: 1 template: spec: containers: - name: app-katz image: rpkatz/app-katz livenessProbe: httpGet: path: /factor9 port: 8080 initialDelaySeconds: 3 periodSeconds: 3 ports: - containerPort: 80 Factor 9 - Descartabilidade
  • 39. Factor 9 - Descartabilidade Demonstração
  • 40. ● “No meu ambiente funciona!” ● Solução: O cluster K8S é o mesmo, de Dev a Prod ● Mesma build, diferentes diretivas ○ Pode rodar na sua estação se quiser! Factor 10 - Paridade Dev/Prod
  • 41. ● Graylog!!! ● Em toda engine Docker, subimos ela com o Gelf Log Driver ● Graylog extrai e trata campos, gera alertas baseados em comportamento ● Tratamento de erros: Aplicação deve fazer ● Erros e stack traces == Inferno ○ Solução: Sentry Factor 11 - Logs e fluxos de evento
  • 42. ● Mesma base de código, container diferente para isso ● Pode ser por exemplo um ‘Short running’ Container que suba, execute as tarefas administrativas e finalize, mas com a mesma base de código. ● Ex.: Carga de um banco de dados ● Kubernetes Jobs para isso ○ Ou ainda um kubectl exec em algum container, e algum comando especial (não é o ideal!) Factor 12 - Processos Administrativos
  • 43. ● OS DOIS!!! ● Flexibilidade - Demandas não aderentes ao 12 Factor tem valor, geram conhecimento (e código!) e devem ser tratadas ● Ex.: Discussão de evolução de plataformas de produção do Wildfly para aplicações auto contidas (Factor 7) ● Risco x Valor - Containers não são (e nem tem como ser) solução para tudo, mas não devemos desistir tão facilmente. Você quer ter razão ou ser feliz??
  • 44. ● https://12factor.net/pt_br/ ● https://github.com/gomex/docker-para-desenvolvedores ● https://docs.gitlab.com/ce/user/project/integrations/kubernetes.ht ml ● Kubernetes Docs Referências
  • 45. Dúvidas? Agradecemos pela atenção. Ricardo Pchevuzinske Katz ricardo.katz@serpro.gov.br @katzsp github.com/Estaleiro

Notas del editor

  1. Estaleiro: PaaS, STaaS, DBaaS, MaaS, etc