SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
A arquitetura do tsuru PaaSA arquitetura do tsuru PaaS
Guilherme GarnierGuilherme Garnier
Estamos
contratando!
https://blog.guilhermegarnier.com
@gpgarnier
https://talentos.globo.com
Globo.com até 2011Globo.com até 2011
apps rodando em VMs
deploys agendados a cada 2 semanas
a responsabilidade do deploy não é do time
ciclo de feedback lento
20122012
objetivo: reduzir o tempo para colocar uma app em produção
soluções encontradas não atendiam
decisão por criar uma plataforma: nasce o tsuru :)
PremissasPremissas
open source :)
extensível
escalável
simples de usar
suporte a diversas linguagens
alta disponibilidade
baseado no juju (canonical)
uma VM para cada unidade de processamento
deploy em minutos
deploys modificam as VMs existentes
2013
baseado em linux containers
provê isolamento entre os containers
containers efêmeros
boot muito rápido
Container vs VMContainer vs VM
tsuru rewritetsuru rewrite
baseado em Docker
12 factor: boas práticas de desenvolvimento
controle de versão
dependências explícitas
configurações separadas do código
ArquiteturaArquitetura
Conceitos básicosConceitos básicos
app: aplicação que será executada em units
unit: unidade de processamento que executa o código de uma app
nó: máquina rodando Docker, responsável por executar units
pool: conjuntos de nós, isola recursos por grupo/área/projeto
PlataformasPlataformas
imagens padrão para cada linguagem suportada
Python, Go, Ruby, NodeJS, Java, etc
seguem as boas práticas de cada linguagem
https://github.com/tsuru/platforms
$ tsuru platform-list
- elixir
- go
- java
- nodejs
- php
- python
- ruby
- static
$ tsuru app-create myapp python
App "myapp" has been created!
$ tsuru app-deploy -a myapp app.py Procfile requirements.txt
DeployDeploy
Deploys com erroDeploys com erro
SchedulerScheduler
units de uma mesma app são distribuídas em diferentes nós/zonas,
para aumentar a resiliência
https://github.com/tsuru/docker-cluster
Healing de unitsHealing de units
Healing de nósHealing de nós
Logs e métricasLogs e métricas
big sibling (bs)
coleta logs, métricas e informações de status das units
https://github.com/tsuru/bs
AutoscaleAutoscale
regras para criar/remover units dinamicamente
exemplo:
CPU > 70% -> adicionar 2 units
CPU < 30% -> remover 1 unit
mínimo de units -> 3
máximo de units -> 10
DashboardDashboard
https://github.com/tsuru/tsuru-dashboard
Cenário atualCenário atual
Globo.comGlobo.com
1.400+ apps
3.400+ units
140 deploys por dia
ComunidadeComunidade
ComunidadeComunidade
Quer contribuir?Quer contribuir?
https://tsuru.io
https://docs.tsuru.io
https://github.com/tsuru
Obrigado!Obrigado!
Slides:
https://blog.guilhermegarnier.com
@gpgarnier
https://blog.guilhermegarnier.com/talk-tsuru/

Mais conteúdo relacionado

Semelhante a A arquitetura do tsuru PaaS

Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaHumberto Streb
 
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Globalcode
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDextra Sistemas / Etec Itu
 
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-122Bruno Souza
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no NubankLetticia Nicoli
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiMayara Fernandes
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftGraziella Bonizi
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson F. de A. Mafra
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)Renato Groff
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015Renato Groff
 

Semelhante a A arquitetura do tsuru PaaS (20)

Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entrega
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
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
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no Nubank
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
DevOps: Entregando software e serviços rapidamente
DevOps: Entregando software e serviços rapidamenteDevOps: Entregando software e serviços rapidamente
DevOps: Entregando software e serviços rapidamente
 
Android juliana-mono
Android juliana-monoAndroid juliana-mono
Android juliana-mono
 
DevOps
DevOpsDevOps
DevOps
 
Fundamentos em Containers
Fundamentos em ContainersFundamentos em Containers
Fundamentos em Containers
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
12 Factor Apps
12 Factor Apps12 Factor Apps
12 Factor Apps
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
 
Jenkins workshop
Jenkins workshopJenkins workshop
Jenkins workshop
 
Desenvolvimento Ágil
Desenvolvimento ÁgilDesenvolvimento Ágil
Desenvolvimento Ágil
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015
 
02 04 2012__15_10_03resp_exercicios_sistema_operacional
02 04 2012__15_10_03resp_exercicios_sistema_operacional02 04 2012__15_10_03resp_exercicios_sistema_operacional
02 04 2012__15_10_03resp_exercicios_sistema_operacional
 

A arquitetura do tsuru PaaS