Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
tsuru para quem sabe tsuru
Search
Andrews Medina
September 08, 2016
Technology
0
67
tsuru para quem sabe tsuru
apresentação feita sobre tsuru para quem já tem experiência com tsuru
Andrews Medina
September 08, 2016
Tweet
Share
More Decks by Andrews Medina
See All by Andrews Medina
Organizando dados juŕidicos em grafos
andrewsmedina
0
87
Clean Code - princípios e práticas para um código sustentável
andrewsmedina
0
540
Pytfalls
andrewsmedina
1
180
globo.com s2 python
andrewsmedina
5
360
tsuru and docker
andrewsmedina
6
3.5k
pypy - o interpretador mais rapido do velho oeste
andrewsmedina
0
350
fazendo deploys de forma simples e divertida com tsuru
andrewsmedina
3
130
let's go
andrewsmedina
2
300
TDD for Dummies
andrewsmedina
3
360
Other Decks in Technology
See All in Technology
AIを活用した柔軟かつ効率的な社内リソース検索への取り組み
cygames
0
190
DroidKaigi 2024 たすけて!ViewModel
mhidaka
5
960
タイミーのレコメンドにおける ABテストの運用
ozeshun
1
200
「家族アルバム みてね」における運用管理・ オブザーバビリティの全貌 / Overview of Operation Management and Observability in FamilyAlbum
isaoshimizu
4
160
実務における脅威モデリングを考えよう
nikinusu
0
680
AI活用したくてもできなかった不動産SaaSの今とこれから
nealle
0
340
事前準備が肝!AI活用のための業務改革
layerx
PRO
1
390
Segment Anything Model 2
tenten0727
3
720
とあるOSSを継続可能にするための取り組みについて / OSS Refactoring Process
bun913
1
210
LINEヤフーのフロントエンド組織・体制の紹介
lycorp_recruit_jp
1
1.2k
Cloud Run と GitHub Template Repository による軽量なアプリケーションプラットフォーム/ #nikkei_tech_talk
nikkei_engineer_recruiting
0
110
ネットワークだけ隔離されたコンテナ作成デモ / Kichijoji.pm36
tenforward
1
240
Featured
See All Featured
What's new in Ruby 2.0
geeforr
340
31k
Speed Design
sergeychernyshev
22
430
No one is an island. Learnings from fostering a developers community.
thoeni
18
2.9k
What's in a price? How to price your products and services
michaelherold
242
11k
Fashionably flexible responsive web design (full day workshop)
malarkey
401
65k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
103
48k
Writing Fast Ruby
sferik
623
60k
We Have a Design System, Now What?
morganepeng
48
7.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
230
130k
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Transcript
tsuru para quem sabe tsuru
whoami
Objetivo Diminuir o tempo que uma aplicação entra em produção
Premissas • Boas práticas • Simplicidade • Extensibilidade • Escalabilidade
• Multilinguagem • Open source • No vendor lock-in
Premissas
tsuru na globo.com • 767 apps • 1,760 units •
~300 deploys por dia
tsuru na globo.com • globoplay.globo.com • cartolafc.globo.com • ...
Deploy
Deploy docker node tsuru api router
Deploy • Envio do código (push/app-deploy/tsuru-dashboard) • Build (instalação de
dependências, criação imagem, etc) • Start (adiciona units, verifica healthcheck, adiciona rotas) • Remove units antigas
E se algo falhar no processo de deploy? •
Deploy • Envio do código (push/app-deploy/tsuru-dashboard) • Build (instalação de
dependências, criação imagem, etc) • Start (adiciona units, verifica healthcheck, adiciona rotas) • Remove units antigas
E se algo falhar no processo de deploy? • o
deploy é interrompido automaticamente • A aplicação continua no estado em que estava antes do deploy
Deploy • Envio do código (push/app-deploy/tsuru-dashboard) • Build (instalação de
dependências, criação imagem, etc) • Start (adiciona units, verifica healthcheck, adiciona rotas) • Remove units antigas
Deploy • https://docs.tsuru.io/master/using/tsuru.yaml.html#healthcheck
Deploy healthcheck: path: /healthcheck method: GET status: 200 match: .*OKAY.*
allowed_failures: 0 use_in_router: false
Algo errado em produção?
Algo errado em produção? $ tsuru app-deploy-rollback
Algo errado em produção? $ tsuru app-deploy-rollback
Algo errado em produção? $ tsuru app-deploy-rollback
Instabilidades na aplicação?
Acessando uma app docker node router request
Instabilidades na aplicação? healthcheck: path: /healthcheck method: GET status: 200
match: .*OKAY.* allowed_failures: 0 use_in_router: true
Unit = Container Node = VM (com Docker)
Container Scheduling • Lib em Go para clusterização de nós
de Docker • https://github.com/tsuru/docker-cluster • Managed vs Unmanaged Nodes
Container Scheduling • Distribuição de containers • Disponibilidade • Otimização
de recursos
Container Scheduling App1 - 8 units
Container Scheduling App1 - 8 units
Container Scheduling App1 - 8 units App2 - 1 unit
Container Scheduling App1 - 8 units App2 - 1 unit
Managed nodes • Nodes criados com integração com IaaS (aws
/ Cloudstack)
Node auto scaling • Detecta sobrecarga de recursos (units/memoria)
Unit auto scaling • Serviço externo • Baseado em métricas
• Regras definidas pelo usuário
Healing • Managed nodes • Detecta que um nó caiu
e substitui
Healing
Healing
Healing
Healing
• Multi provisioner • Integração com Docker Swarm e Kubernetes
• Suporte a units com file system persistente Futuro
Perguntas?