CULTURA DEVOPS
@leocomelli
Leonardo Comelli@leocomelli
porque estamos aqui?
software vs sistema
o mais importante é…
entregar valor para o cliente!
mas isso precisa ser feito com:
rapidez | segurança | confiabilidade
nada é perfeito,
as coisas podem falhar...
qual o segredo?
falhar rápido!
como falhar rápido?
desenvolvimento ágil | entrega contínua | análise da operação
dev ops
esse fluxo envolve os dois times
porque toda essa distância?
existe um conflito de interesse
alterar
é o papel do dev
estabilizar
é o papel de ops
dev
não publicam software consistente
ops
são resistentes a mudanças
dev
processo ágil
ops
processo estático
dev
“na minha máquina funciona…"
ops
“não é o servidor, é o seu código…"
é necessário unir os times
feito! isso é devops!
não!
dev ops
devops não é juntar os times
devops não é o time de ops
desenvolver um sistema para substituir os demais
devops não é o time de ops
criar um ambiente de uma maneira simples
devops não é o time de ops
saber o que o time de dev quer
devops não é o time de dev
saber utilizar uma ferramenta de aprovisionamento
devops não é o time de dev
criar um script para publicar uma nova versão
devops não é o time de dev
saber o que o time de ops quer
devops não é apenas
ferramentas, automação, acessos e time
os princípios são maiores que as práticas
devops é
comunicação, entendimento, integração e relacionamento
devops é cultura!
devops é uma cultura de colaboração entre
desenvolvedores e operações
[in]felizmente devops não é uma opção
precisamos de tudo muito rápido
alterações, publicações, identificação de problemas, correções
lembre-se, falhar é normal
o segredo é falhar rápido!
o que pode nos auxiliar a falhar rápido?
ferramentas e automatizações
pipeline!
um exemplo
executar testes

integração
executar testes

unitários
obter dados do

versionador
compilar código

fonte
publicar em
homologação
empacotar
gerar
documentação
publicar em
produção
executar testes
de aceitação
publicação
deploy com bug zero?
publicação
blue/green deployment
https://blog.snap-ci.com/blog/2015/06/22/continuous-deployment-strategies
publicação
canary deployment
https://blog.snap-ci.com/blog/2015/06/22/continuous-deployment-strategies
o trabalho não acaba após o deploy
operation analytics
monitoramento
ferramentas
alguns exemplos
sistema de controle de versão
svn, tfs, git, etc
$	
  git	
  init	
  
$	
  touch	
  README.md	
  
$	
  git	
  add	
  .	
  
$	
  git	
  commit	
  -­‐m	
  “Criado	
  arquivo	
  readme”	
  
$	
  git	
  remote	
  add	
  origin	
  https://github.com/user/
repo.git	
  
$	
  git	
  push	
  -­‐u	
  origin	
  master
infra como código
ansible, chef, puppet, etc
-­‐-­‐-­‐	
  
-­‐	
  name:	
  create	
  user	
  group	
  
	
  	
  sudo:	
  yes	
  
	
  	
  group:	
  
	
  	
  	
  	
  name:	
  "hpe_apps"	
  
	
  	
  	
  	
  state:	
  present	
  
-­‐	
  name:	
  add	
  server	
  user	
  
	
  	
  sudo:	
  yes	
  
	
  	
  user:	
  
	
  	
  	
  	
  name:	
  "comelli"	
  
	
  	
  	
  	
  password:	
  secret	
  
	
  	
  	
  	
  system:	
  yes	
  
	
  	
  	
  	
  group:	
  "hpe_apps"	
  
	
  	
  	
  	
  state:	
  present
virtualização
docker, vagrant, vmware
#	
  Pull	
  base	
  image.	
  
FROM	
  ubuntu	
  
#	
  Install	
  Ruby.	
  
RUN	
  	
  
	
  	
  apt-­‐get	
  update	
  &&	
  	
  
	
  	
  apt-­‐get	
  install	
  -­‐y	
  ruby	
  ruby-­‐dev	
  ruby-­‐bundler	
  &&	
  	
  
	
  	
  rm	
  -­‐rf	
  /var/lib/apt/lists/*	
  
#	
  Define	
  working	
  directory.	
  
WORKDIR	
  /data	
  
#	
  Define	
  default	
  command.	
  
CMD	
  ["bash"]	
  
orquestração de container
mesos, kubernetes, swarm, etc
integração contínua
travis, jenkins, go, etc
entrega e deploy contínuo
travis, jenkins, go, etc
entrega contínua != deploy contínuo
operation analytics
logstash, elasticsearch e kibana
esta pronto para o devops?
Obrigado!
http://slideshare.net/leocomelli
Bônus!
git, docker, jenkins, travis ou kibana?

IFSP 2015 - Cultura DevOps