Tsuru é um PaaS open source extensível que suporta diversas linguagens. Com ele, é possível gerenciar e deployar milhares de aplicações de forma simples e rápida. Nesta palestra, vou apresentar a arquitetura do Tsuru, os principais componentes, como ele gerencia as aplicações, os mecanismos para resiliência diante de falhas e recursos como escalabilidade automática de aplicações.
3. 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
4. 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 :)
9. 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
11. 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
14. 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
15. $ 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
29. 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