Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DevOps: desenvolvedores e sysadmins cooperando na prática

966 views

Published on

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.

Published in: Technology
  • Be the first to comment

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 ]

×