A arquitetura do tsuru PaaS
Guilherme Garnier
- apps rodando em VMs
- deploys agendados a cada 2 semanas
- a responsabilidade do deploy não é do time
- ciclo de feedback lento
2012
- 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 :)
Premissas
- 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 VM

tsuru 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
Arquitetura
Conceitos 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

$ 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
Autoscale
- 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
Globo.com
- 1.400+ apps
- 3.400+ units
- 140 deploys por dia
Comunidade

Comunidade

Quer contribuir?
