DevOps: desenvolvedores e
sysadmins cooperando na
prática
Ari Stopassola Junior
Bacharel em Informática com ênfase em Análise de
Sistemas pela Unisinos, cursou mestrado em Engenharia
Informática e de Co...
SlideShare
Realidade
• Estruturada x Orientada à Objetos
• Relacional x NoSQL
• Waterfall x Agile
• FTP x git push
• Equipes remotas
...
"A harmonia do mundo depende da
retificação dos nomes."
Confúcio
551-479 a.C.
Introdução
• Termo "DevOps" foi cunhado em
2009 por Patrick Debois
• Movimento que enfatiza a comunicação
entre desenvolve...
Desenvolvedor
X
Administrador de Sistemas
http://www.hbo.com/silicon-valley
"Na
minha
máquina
funciona!"
em.pa.ti.a
Ação de se colocar no
lugar de outra pessoa,
buscando agir ou pensar
da forma como ela
pensaria ou agiria nas
m...
Cultura
• Interesses da companhia são
superiores aos EGOs de
sysadmins e desenvolvedores
• DevOps são práticas
• Através d...
Fonte: http://www.gohorseprocess.com.br
Full-stack developer
Fonte: https://flic.kr/p/4RyRRW
Imagem inspirada no curso "DevOps: The Big Picture" da PluralSight por Richard Seroter:
http://www.pluralsight.com/courses...
Collaboration
Slack
https://slack.com
Gitter
www.gitter.im
Planning
Trello
www.trello.com
Issue tracking
Bugzilla
https://www.bugzilla.org
Jira
https://www.atlassian.com/software/jira
Monitoring
ISO 8601
New Relic
http://newrelic.com
• LogStash
https://www.elastic.co/products/logstash
• Microsoft System Center
http://www.microsoft.com/en-us/server-
cloud...
Configuration Management
Pet
x
Cattle
Foto: https://steakbuenosaires.files.wordpress.com/2014/02/herding-sheep.jpg
Pet
10.0.0.11 "Poseidon"
poseidon.empresa.com.br
Compaq Proliant ML330
Foto:https://flic.kr/p/bF4xXY
Cattle
ec2-54-91-213-25.compute-1.amazonaws.com
ec2-54-91-213-26.compute-1.amazonaws.com
ec2-54-91-213-27.compute-1.amazon...
Infrastructure as code
Puppet, Chef e Ansible
package "ntpd" do
action :install
end
template "/etc/ntpd.conf" do
source "n...
Provisionamento
• SaltStack
www.saltstack.com
• Phansible (focado em PHP)
www.phansible.com
• PuPHPet
https://puphpet.com
...
Controle de versão
GNU/Linux Distro Timeline
http://futurist.se/gldt/
Controle de versão
• Concurrent Version System –
CVS
• Subversion
• BitKeeper (características
híbridas)
• Microsoft Visua...
Repositório central
Hospedado
• GitHub
• BitBucket
• Atlassian
Stash
Servidor próprio
• Gitosis
• Gitorious
• GitLab
• Git...
Hooks
Fonte: https://enterprise.github.com/features
P.J. Hyett Tom Preston-Werner Chris Wanstrath
Environment
Vagrant
www.vagrantup.com
Docker
www.docker.com
Foto: https://flic.kr/p/9Wwj79
Foto:https://flic.kr/p/qSBYah
Orquestração
Continuous Integration
By Martin Fowler
"Continuous Integration is a software
development practice where members of a
team integrate their work f...
Travis CI
www.travis-ci.org
.travis.yml
Jenkins
www.jenkins-ci.org
Fonte:https://ci.openshift.redhat.com/jenkins/
java -jar jenkins.war
Quem precisa de SaaS?
IaaS
PaaS
SaaS
OpenShift, Heroku, Google App Engine (Google Cloud), AppFog, Pagoda Box,
Fortrabbit, Laravel Forge
Digital ...
QA: quality assurance
http://phpqatools.org
Code Climate
https://codeclimate.com
Deployment
O que seria um build no PHP?
• Submeter aos testes (unitário, comportamento e
integração)
• Executar as migrations
• Conca...
Padronização de código: PSR
http://www.php-fig.org
Abordagem rudimentar…
Zero Downtime Deployment
(implantação atômica)
Fonte: https://leanpub.com/deploying-php-applications
Migrations: Phinx
https://phinx.org
Quem nunca…
Foto:https://flic.kr/p/6mNHcj
Simples, previsível e
//Carrega o Gulp e seus plug-ins
var gulp = require('gulp');
var jshint = require('gulp-jshint');
var sass = require('gulp...
Lock-in
• Banco de dados específico daquela
hospedagem
• Mecanismo de filas exclusivo
• Replica em diferentes data-centers...
• DevOps é habilidade
• Trata-se de gestão de
configuração
• Outsourced é
impraticável
• Focado em sistemas
modernos
• Dev...
Fonte:http://theimitationgamemovie.com
Setup
E-mail:
arijunior@gmail.com
Twitter: @stopassola
Skype: stopassola
LinkedIn:
http://pt.linkedin.com/in/stopassola
Facebook...
Obrigado!
[ tem brinde ]
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na prática
Próximos SlideShares
Carregando em…5
×

DevOps: desenvolvedores e sysadmins cooperando na prática

882 visualizações

Publicada em

Por muito tempo desenvolvedores e administradores de infraestrutura tentam fazer integrações para que a implantação (deployment) seja mais efetiva, com menos sofrimento ao portar do ambiente de desenvolvimento para homologação/produção.
Essa apresentação introduz ao movimento DevOps, que aproxima desenvolvedores e administradores de sistema (sysadmin), para que trabalhem em maior sinergia.
A proposta é ilustrar os pilares da cultura DevOps, bem como os softwares que a permeia, focada em ferramentas e práticas reais, com exemplos do ecossistema PHP.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

DevOps: desenvolvedores e sysadmins cooperando na prática

  1. 1. DevOps: desenvolvedores e sysadmins cooperando na prática Ari Stopassola Junior
  2. 2. Bacharel em Informática com ênfase em Análise de Sistemas pela Unisinos, cursou mestrado em Engenharia Informática e de Computadores pelo Instituto Superior Técnico da Universidade Técnica de Lisboa (Portugal), perito judicial ad hoc especializado em TI (mantenedor do site PERITO.inf.br), Zend Certified Engineer (PHP 5.3), Zend Certified PHP Engineer (PHP 5.5) e Zend Framework 2 Certified Architect (ZFCA) #ZEND004019, Certified ScrumMaster pela Scrum Alliance #203613, Microsoft Certified Professional (MCP), idealizador do projeto Certificamp, consultor web e PHP evangelist. Ari Stopassola Junior
  3. 3. SlideShare
  4. 4. Realidade • Estruturada x Orientada à Objetos • Relacional x NoSQL • Waterfall x Agile • FTP x git push • Equipes remotas • Virtualização • Curriculum Vitae x GitHub | Stack Overflow • Cloud
  5. 5. "A harmonia do mundo depende da retificação dos nomes." Confúcio 551-479 a.C.
  6. 6. Introdução • Termo "DevOps" foi cunhado em 2009 por Patrick Debois • Movimento que enfatiza a comunicação entre desenvolvedores e administradores de sistema • Desenvolvedores adicionam novos recursos enquanto que Administradores mantém o sistema estável, seguro e performático • Diminiur riscos de implantação através da cultura + ferramental Foto:https://www.linkedin.com/in/patrickdebois
  7. 7. Desenvolvedor X Administrador de Sistemas http://www.hbo.com/silicon-valley
  8. 8. "Na minha máquina funciona!"
  9. 9. em.pa.ti.a Ação de se colocar no lugar de outra pessoa, buscando agir ou pensar da forma como ela pensaria ou agiria nas mesmas circunstâncias.
  10. 10. Cultura • Interesses da companhia são superiores aos EGOs de sysadmins e desenvolvedores • DevOps são práticas • Através da automação, tem-se como resultado a melhoria contínua • Postura amistosa: respeito, jamais esconda o problema, evite dizer não, confiança, seja transparente, evite fingerpointing. Foto: http://cshr.cmb.ac.lk/?page_id=1678
  11. 11. Fonte: http://www.gohorseprocess.com.br
  12. 12. Full-stack developer Fonte: https://flic.kr/p/4RyRRW
  13. 13. Imagem inspirada no curso "DevOps: The Big Picture" da PluralSight por Richard Seroter: http://www.pluralsight.com/courses/devops-big-picture
  14. 14. Collaboration
  15. 15. Slack https://slack.com
  16. 16. Gitter www.gitter.im
  17. 17. Planning
  18. 18. Trello www.trello.com
  19. 19. Issue tracking
  20. 20. Bugzilla https://www.bugzilla.org
  21. 21. Jira https://www.atlassian.com/software/jira
  22. 22. Monitoring
  23. 23. ISO 8601
  24. 24. New Relic http://newrelic.com
  25. 25. • LogStash https://www.elastic.co/products/logstash • Microsoft System Center http://www.microsoft.com/en-us/server- cloud/products/system-center-2012-r2/ • Kibana https://www.elastic.co/products/kibana
  26. 26. Configuration Management
  27. 27. Pet x Cattle Foto: https://steakbuenosaires.files.wordpress.com/2014/02/herding-sheep.jpg
  28. 28. Pet 10.0.0.11 "Poseidon" poseidon.empresa.com.br Compaq Proliant ML330 Foto:https://flic.kr/p/bF4xXY
  29. 29. Cattle ec2-54-91-213-25.compute-1.amazonaws.com ec2-54-91-213-26.compute-1.amazonaws.com ec2-54-91-213-27.compute-1.amazonaws.com ec2-54-91-213-28.compute-1.amazonaws.com ec2-54-91-213-29.compute-1.amazonaws.com Foto:https://prezi.com/nftldtcqniju/recursos-biologicos/
  30. 30. Infrastructure as code Puppet, Chef e Ansible package "ntpd" do action :install end template "/etc/ntpd.conf" do source "ntpd.conf.erb" owner "0755" notifies :restart, "service[ntpd]" end service "ntpd" do action [:start, :enable] end ["site1", "site2", "site3"].each do |dir| directory "/srv/vhosts/#{dir}" do mode 0775 owner "root" group "root" action :create recursive true end end
  31. 31. Provisionamento • SaltStack www.saltstack.com • Phansible (focado em PHP) www.phansible.com • PuPHPet https://puphpet.com • Windows PowerShell Desired State Configuration https://technet.microsoft.com/en- us/library/dn249912.aspx
  32. 32. Controle de versão
  33. 33. GNU/Linux Distro Timeline http://futurist.se/gldt/
  34. 34. Controle de versão • Concurrent Version System – CVS • Subversion • BitKeeper (características híbridas) • Microsoft Visual SourceSafe • Git • Mercurial Modelo descentralizado
  35. 35. Repositório central Hospedado • GitHub • BitBucket • Atlassian Stash Servidor próprio • Gitosis • Gitorious • GitLab • GitBlit
  36. 36. Hooks
  37. 37. Fonte: https://enterprise.github.com/features
  38. 38. P.J. Hyett Tom Preston-Werner Chris Wanstrath
  39. 39. Environment
  40. 40. Vagrant www.vagrantup.com
  41. 41. Docker www.docker.com Foto: https://flic.kr/p/9Wwj79
  42. 42. Foto:https://flic.kr/p/qSBYah Orquestração
  43. 43. Continuous Integration
  44. 44. By Martin Fowler "Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration Foto: https://www.flickr.com/photos/adewale_oshineye/2933030620/
  45. 45. Travis CI www.travis-ci.org .travis.yml
  46. 46. Jenkins www.jenkins-ci.org Fonte:https://ci.openshift.redhat.com/jenkins/
  47. 47. java -jar jenkins.war Quem precisa de SaaS?
  48. 48. IaaS PaaS SaaS OpenShift, Heroku, Google App Engine (Google Cloud), AppFog, Pagoda Box, Fortrabbit, Laravel Forge Digital Ocean, AWS, Linode, Azure, Rackspace, Open Stack
  49. 49. QA: quality assurance http://phpqatools.org
  50. 50. Code Climate https://codeclimate.com
  51. 51. Deployment
  52. 52. O que seria um build no PHP? • Submeter aos testes (unitário, comportamento e integração) • Executar as migrations • Concatenar e minificar arquivos JavaScript e CSS • Comprimir imagens • Compilar Sass e LESS • Atribuir permissões em arquivos/pastas • Produzir arquivos estáticos, como HTMLs • Agendamentos na CRON • php.ini local x php.ini do servidor x php.ini do CLI • Transformar código de ECMA6 para ECMA5
  53. 53. Padronização de código: PSR http://www.php-fig.org
  54. 54. Abordagem rudimentar…
  55. 55. Zero Downtime Deployment (implantação atômica) Fonte: https://leanpub.com/deploying-php-applications
  56. 56. Migrations: Phinx https://phinx.org
  57. 57. Quem nunca…
  58. 58. Foto:https://flic.kr/p/6mNHcj Simples, previsível e
  59. 59. //Carrega o Gulp e seus plug-ins var gulp = require('gulp'); var jshint = require('gulp-jshint'); var sass = require('gulp-sass'); var concat = require('gulp-concat'); var uglify = require('gulp-uglify'); var rename = require('gulp-rename'); //Analisa o código gulp.task('lint', function() { return gulp.src('src/js/*.js') .pipe(jshint()) .pipe(jshint.reporter('default')); }); //Compila o Sass gulp.task('sass', function() { return gulp.src('scss/*.scss') .pipe(sass()) .pipe(gulp.dest('css')); }); //Concatena e minifica o JavaScript gulp.task('scripts', function() { return gulp.src('src/js/*.js') .pipe(concat('src/js/all.js')) .pipe(gulp.dest('dist')) .pipe(rename('src/js/all.min.js')) .pipe(uglify()) .pipe(gulp.dest('dist')); }); // Default Task gulp.task('default', ['lint', 'sass', 'scripts']); Grunt e Gulp
  60. 60. Lock-in • Banco de dados específico daquela hospedagem • Mecanismo de filas exclusivo • Replica em diferentes data-centers (worldwide) e troca automática de DNS • S3 criptografado, gera token para acesso ao documento que usa UMA vez e expira Foto: https://flic.kr/p/bAUx5j
  61. 61. • DevOps é habilidade • Trata-se de gestão de configuração • Outsourced é impraticável • Focado em sistemas modernos • DevOps é ideologia • Trata-se de comunicação • Outsourced é totalmente viável • Para qualquer tipo de sistema
  62. 62. Fonte:http://theimitationgamemovie.com Setup
  63. 63. E-mail: arijunior@gmail.com Twitter: @stopassola Skype: stopassola LinkedIn: http://pt.linkedin.com/in/stopassola Facebook: http://www.facebook.com/arijunior Sites: http://www.perito.inf.br http://www.certificamp.com http://www.rumoacertificacaophp.com Contatos
  64. 64. Obrigado! [ tem brinde ]

×