SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
T D C F l o r i a n ó p o l i s
MAIS E MAIS BUILDS
SIMULTÂNEAS NO SNAP CI
SNAP CI
2
SNAP CI
3
Github
commit
SNAP CI
4
Github
commit
SNAP CI
5
Github
commit
www
API
SNAP CI
6
Github
commit
www
Lento e custoso!
SNAP CI
7
Github
commit
www
Lento!
SNAP CI
8
Github
commit
www
???
SNAP CI
9
Github
commit
www
https://blog.snap-ci.com/blog/2015/09/09/snap-container-security/
SNAP CI
10
Github
commit
www
SNAP CI
Github
commit
www
SNAP CI
Github
commit
www
SNAP CI
Github
commit
www
SNAP CI
Github
commit
www
SNAP CI
Github
commit
www
SNAP CI
Github
commit
BuildHost
www
SNAP CI
Github
commit
BuildHost
www
SNAP CI
Github
commit
BuildHost
www
SNAP CI
Github
commit
BuildHost
www
SNAP CI
Github
commit
BuildHost
www
SNAP CI
21
Github
commit
www
www BuildHost
ARQUITETURA
“Architecture is the stuff that's hard to
change later”
- Martin Fowler
ARQUITETURA EVOLUTIVA
“An evolutionary architecture designs for
incremental change in an architecture
as a first principle”
- Neal Ford & Rebecca Parsons
- Definição ainda em progresso -
https://www.thoughtworks.com/radar/techniques/evolutionary-architecture
CARACTERÍSTICAS DE ARQUITETURA EVOLUTIVA
• Suporte a modularidade
• Mudanças não quebram o sistema
• Organizada em torno do domínio de negócio
• Inspirado em DDD (Domain Driven Design)
• Permite experimentação
• Através da troca de componentes
• Entregas Canário, Testes A/B
• Desenvolvimento guiado por hipóteses
PRINCÍPIOS DE ARQUITETURA EVOLUTIVA
• Trazer a dor para mais perto
• “Se doer, faça mais vezes”
• Praticar automação
• Last Responsible Moment
• Decisões feitas somente quando necessário
• Funções Fitness
• Radar com características importantes do sistema
https://www.thoughtworks.com/insights/blog/microservices-evolutionary-architecture
• Requisições?
• Rodar builds?
FITNESS FUNCTION
SNAP CI
27
Github
commit
www
www BuildHost
SNAP CI
28
Github
commit
www
BuildHost
SNAP CI
29
Github
commit
www
BuildHost
SNAP CI
30
Github
commit
www
BuildHost BuildHostBuildHost
??
SNAP CI
31
Github
commit
www
BuildHost
• Mantenha simples
• Reconheça um possível
impedimento
• Monitore!
• Sobreviveu + de 1 ano :)
SNAP CI
32
Github
commit
www
BuildHost BuildHostBuildHost
FITNESS FUNCTION
SNAP CI
Github
commit
www
BuildHostO que acontece quando
fazemos deploy?
SNAP CI
Github
www
BuildHO que acontece quando
fazemos deploy?
•Esperar todos os builds
terminarem
•Colocar a aplicação em
modo de manutenção
•Implantar e esperar por
migrações
IMPLANTAÇÕES BLUE/GREEN
IMPLANTAÇÃO BLUE/GREEN NO SNAP
www
BuildHost
GREEN
www
BuildHost
BLUE
IMPLANTAÇÃO BLUE/GREEN NO SNAP
www
BuildHost
GREEN
www
BuildHost
BLUE
FITNESS FUNCTION
ALGUM TEMPO DEPOIS
40
BUILDS ESPERANDO
www
BuildHost
GREEN
www
BuildHost
BLUE
???
Solução de contorno
NSFW
www
BuildHost
GREEN
www
BuildHost
BLUE
???
BUILDS ESPERANDO
Lembra que temos
duas stacks?
BUILDS ESPERANDO
www
BuildHost
GREEN
www
BuildHost
BLUE
BUILDS ESPERANDO
www
BuildHost
GREEN
www
BuildHost
BLUE
BUILDS ESPERANDO
www
BuildHost
GREEN
www
BuildHost
BLUE
Lembrando,
solução temporária
SNAP CI
46
Github
commit
www
BuildHost
• Mantenha simples
• Reconheça um possível
impedimento
• Monitore!
• Sobreviveu + de 1 ano :)
RUMO A N
BUILDHOSTS!
47
RUMO A N BUILDHOSTS!
Nem tanto,
vamos começar com 2?
RUMO A N BUILDHOSTS!
Fazer algo genérico tende a ser mais
difícil do que começar com um mínimo
RUMO AO SEGUNDO BUILDHOST!
Habilidade de criar ambientes do
zero
www
BuildHost
www
BuildHost BuildHost
snap-ci.com tdc-floripa.snap-ci.com
RUMO AO SEGUNDO BUILDHOST!
Feature toggle
www
BuildHost BuildHost
snap-ci.com
LA GRANDE FINALE
ou não...
52
LA GRANDE FINALE!
Depois de alterações aqui e acolá,
finalmente atingimos a habilidade de
escalar para N BuildHosts
LA GRANDE FINALE!
vlws, flws?
LA GRANDE FINALE!
nope…
• Cache
LA GRANDE FINALE!
www
BuildHost
GREEN
www
BuildHost
BLUE
Cadê meu
cache?!
•Conexões com banco de dados
LA GRANDE FINALE!
BuildHostBuildHost BuildHost
www
•Conexões com banco de dados
LA GRANDE FINALE!
BuildHostBuildHost BuildHost
www
DATABASE
LA GRANDE FINALE!
Back to work!
LA GRANDE FINALE!
• Arquitetura Evolutiva
• Bring the pain forward
• Last responsible moment
• Automação do provisionamento da infraestrutura
• Implantações Blue/Green
• Decisões mais conscientes, certas ou erradas
• Feature Toggles
LA GRANDE FINALE!
“Architecture isn't an equation but
rather a snapshot of an ongoing
process”
- Neal Ford
Perguntas?
OBRIGADO!
Henrique Rezende, @henriquerrezend
@snap_ci | https://snap-ci.com
Andrei Tognolo, @andreitognolo

Mais conteúdo relacionado

Mais procurados

Nway-Project, Git, github & opensource
Nway-Project, Git, github & opensourceNway-Project, Git, github & opensource
Nway-Project, Git, github & opensourceHudson Mendes
 
Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Hélio Medeiros
 
Os desafios de desenvolver o demo do skeleton jigsaw com html5
Os desafios de desenvolver o demo do skeleton jigsaw com html5Os desafios de desenvolver o demo do skeleton jigsaw com html5
Os desafios de desenvolver o demo do skeleton jigsaw com html5tdc-globalcode
 
Aprenda a se motivar para prosperidade
Aprenda a se motivar para prosperidadeAprenda a se motivar para prosperidade
Aprenda a se motivar para prosperidadeDeborapaz6
 
Github - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoGithub - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoHélio Medeiros
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDevHélio Medeiros
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com GitVagner Santana
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com GitEvaldo Junior
 
Containers em Escala com Kubernetes e OpenShift 3
Containers em Escala com Kubernetes e OpenShift 3Containers em Escala com Kubernetes e OpenShift 3
Containers em Escala com Kubernetes e OpenShift 3Fabiano Franz
 
Como participar de projetos Open Source no Github?
Como participar de projetos Open Source no Github?Como participar de projetos Open Source no Github?
Como participar de projetos Open Source no Github?Guilherme Farias
 
Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012Rogerio Prado de Jesus
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao gitDiogo Gomes
 

Mais procurados (19)

Nway-Project, Git, github & opensource
Nway-Project, Git, github & opensourceNway-Project, Git, github & opensource
Nway-Project, Git, github & opensource
 
#4 - Git - Stash
#4 - Git - Stash#4 - Git - Stash
#4 - Git - Stash
 
Git
GitGit
Git
 
Git ...ftw!
Git ...ftw!  Git ...ftw!
Git ...ftw!
 
Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.
 
Os desafios de desenvolver o demo do skeleton jigsaw com html5
Os desafios de desenvolver o demo do skeleton jigsaw com html5Os desafios de desenvolver o demo do skeleton jigsaw com html5
Os desafios de desenvolver o demo do skeleton jigsaw com html5
 
Aprenda a se motivar para prosperidade
Aprenda a se motivar para prosperidadeAprenda a se motivar para prosperidade
Aprenda a se motivar para prosperidade
 
Github - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoGithub - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimento
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Git Overview: Grupo RBS
Git Overview: Grupo RBSGit Overview: Grupo RBS
Git Overview: Grupo RBS
 
Containers em Escala com Kubernetes e OpenShift 3
Containers em Escala com Kubernetes e OpenShift 3Containers em Escala com Kubernetes e OpenShift 3
Containers em Escala com Kubernetes e OpenShift 3
 
Git
GitGit
Git
 
Como participar de projetos Open Source no Github?
Como participar de projetos Open Source no Github?Como participar de projetos Open Source no Github?
Como participar de projetos Open Source no Github?
 
Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012
 
Git & Delphi
Git & DelphiGit & Delphi
Git & Delphi
 
Git do Zero - Campus Party #12
Git do Zero - Campus Party #12Git do Zero - Campus Party #12
Git do Zero - Campus Party #12
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 

Destaque

DevOps Days India 2013: Build Radiator on Raspberry Pi
DevOps Days India 2013: Build Radiator on Raspberry PiDevOps Days India 2013: Build Radiator on Raspberry Pi
DevOps Days India 2013: Build Radiator on Raspberry PiAkshay Karle
 
Using CI for continuous delivery Part 4
Using CI for continuous delivery Part 4Using CI for continuous delivery Part 4
Using CI for continuous delivery Part 4Vishal Biyani
 
Using CI for continuous delivery Part 1
Using CI for continuous delivery Part 1Using CI for continuous delivery Part 1
Using CI for continuous delivery Part 1Vishal Biyani
 
Using CI for continuous delivery Part 2
Using CI for continuous delivery Part 2Using CI for continuous delivery Part 2
Using CI for continuous delivery Part 2Vishal Biyani
 
Using CI for continuous delivery Part 3
Using CI for continuous delivery Part 3Using CI for continuous delivery Part 3
Using CI for continuous delivery Part 3Vishal Biyani
 
Continuous Deployment Strategies
Continuous Deployment StrategiesContinuous Deployment Strategies
Continuous Deployment StrategiesThoughtworks
 

Destaque (6)

DevOps Days India 2013: Build Radiator on Raspberry Pi
DevOps Days India 2013: Build Radiator on Raspberry PiDevOps Days India 2013: Build Radiator on Raspberry Pi
DevOps Days India 2013: Build Radiator on Raspberry Pi
 
Using CI for continuous delivery Part 4
Using CI for continuous delivery Part 4Using CI for continuous delivery Part 4
Using CI for continuous delivery Part 4
 
Using CI for continuous delivery Part 1
Using CI for continuous delivery Part 1Using CI for continuous delivery Part 1
Using CI for continuous delivery Part 1
 
Using CI for continuous delivery Part 2
Using CI for continuous delivery Part 2Using CI for continuous delivery Part 2
Using CI for continuous delivery Part 2
 
Using CI for continuous delivery Part 3
Using CI for continuous delivery Part 3Using CI for continuous delivery Part 3
Using CI for continuous delivery Part 3
 
Continuous Deployment Strategies
Continuous Deployment StrategiesContinuous Deployment Strategies
Continuous Deployment Strategies
 

Semelhante a Mais e mais builds simultâneas no Snap CI

Continuous Delivery com ArgoCD
Continuous Delivery com ArgoCDContinuous Delivery com ArgoCD
Continuous Delivery com ArgoCDRodrigo Souza
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerGiovanni Kenji Shiroma
 
CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018Jonh Wendell
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containerstdc-globalcode
 
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...Edison Costa
 
PHP Conference - CI/CD com Bitbucket e deployer
PHP Conference - CI/CD com Bitbucket e deployerPHP Conference - CI/CD com Bitbucket e deployer
PHP Conference - CI/CD com Bitbucket e deployerDaniel Satiro
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftGetup Cloud
 
Git that like a boss: UFRGS
Git that like a boss: UFRGSGit that like a boss: UFRGS
Git that like a boss: UFRGSEvandro Eisinger
 
GitHub Boas Práticas
GitHub Boas PráticasGitHub Boas Práticas
GitHub Boas PráticasCDS
 
Git para quem gosta de git
Git para quem gosta de gitGit para quem gosta de git
Git para quem gosta de gitEduardo Bohrer
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Jonathan Prates
 
Kubecon EU 2019 Remarks
Kubecon EU 2019 RemarksKubecon EU 2019 Remarks
Kubecon EU 2019 RemarksRicardo Katz
 
Controle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareControle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareGilmar Pupo
 

Semelhante a Mais e mais builds simultâneas no Snap CI (20)

TDC 2018
TDC 2018TDC 2018
TDC 2018
 
Introducao git fisl
Introducao git fislIntroducao git fisl
Introducao git fisl
 
Sailing Delivery
Sailing DeliverySailing Delivery
Sailing Delivery
 
Continuous Delivery com ArgoCD
Continuous Delivery com ArgoCDContinuous Delivery com ArgoCD
Continuous Delivery com ArgoCD
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
 
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
 
PHP Conference - CI/CD com Bitbucket e deployer
PHP Conference - CI/CD com Bitbucket e deployerPHP Conference - CI/CD com Bitbucket e deployer
PHP Conference - CI/CD com Bitbucket e deployer
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShift
 
Controle de versão com Git
Controle de versão com GitControle de versão com Git
Controle de versão com Git
 
Go git - Presentation @Navita
Go git - Presentation @NavitaGo git - Presentation @Navita
Go git - Presentation @Navita
 
Git that like a boss: UFRGS
Git that like a boss: UFRGSGit that like a boss: UFRGS
Git that like a boss: UFRGS
 
GitHub Boas Práticas
GitHub Boas PráticasGitHub Boas Práticas
GitHub Boas Práticas
 
Git para quem gosta de git
Git para quem gosta de gitGit para quem gosta de git
Git para quem gosta de git
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
 
Kubecon EU 2019 Remarks
Kubecon EU 2019 RemarksKubecon EU 2019 Remarks
Kubecon EU 2019 Remarks
 
Controle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareControle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de software
 

Mais e mais builds simultâneas no Snap CI