DevOps: desenvolvedores e sysadmins cooperando na prática
-
Upload
ari-stopassola-junior -
Category
Technology
-
view
844 -
download
1
Transcript of DevOps: desenvolvedores e sysadmins cooperando na prática
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 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
SlideShare
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
"A harmonia do mundo depende da retificação dos nomes."
Confúcio551-479 a.C.
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
: htt
ps:/
/ww
w.li
nked
in.c
om/in
/pat
rickd
eboi
s
DesenvolvedorX
Administrador de Sistemas
http://www.hbo.com/silicon-valley
"Na minha
máquina funciona
!"
em.pa.ti.aAção de se colocar no lugar de outra pessoa, buscando agir ou pensar da forma como ela pensaria ou agiria nas mesmas circunstâncias.
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
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/devops-big-picture
Collaboration
Gitterwww.gitter.im
Planning
Trellowww.trello.com
Issue tracking
Jirahttps://www.atlassian.com/software/jira
Monitoring
ISO 8601
• LogStashhttps://www.elastic.co/products/logstash
• Microsoft System Centerhttp://www.microsoft.com/en-us/server-cloud/products/system-center-2012-r2/
• Kibanahttps://www.elastic.co/products/kibana
Configuration Management
Petx
Cattle
Foto: https://steakbuenosaires.files.wordpress.com/2014/02/herding-sheep.jpg
Pet10.0.0.11 "Poseidon"
poseidon.empresa.com.brCompaq Proliant ML330
Foto
: http
s://
flic.
kr/p
/bF4
xXY
Cattleec2-54-91-213-25.compute-1.amazonaws.comec2-54-91-213-26.compute-1.amazonaws.comec2-54-91-213-27.compute-1.amazonaws.comec2-54-91-213-28.compute-1.amazonaws.comec2-54-91-213-29.compute-1.amazonaws.com Fo
to: h
ttps
://p
rezi.
com
/nftl
dtcq
niju
/rec
urso
s-bi
olog
icos/
Infrastructure as codePuppet, Chef e Ansible
package "ntpd" do action :installend
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 endend
Provisionamento• SaltStack
www.saltstack.com• Phansible (focado em PHP)
www.phansible.com • PuPHPet
https://puphpet.com • Windows PowerShell Desired State
Configurationhttps://technet.microsoft.com/en-us/library/dn249912.aspx
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 Visual SourceSafe• Git• Mercurial• Bazaar
Modelo descentralizado
Repositório central
Hospedado• GitHub• BitBucket• Atlassian
Stash
Servidor próprio
• Gitosis• Gitorious• GitLab• GitBlit
Hooks
Fonte: https://enterprise.github.com/features
P.J. Hyett Tom Preston-Werner Chris Wanstrath
Environment
Vagrantwww.vagrantup.com
Dockerwww.docker.com
Foto: https://flic.kr/p/9Wwj79
Continuous Integration
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 problems and allows a team to develop cohesive software more rapidly"
Foto: https://www.flickr.com/photos/adewale_oshineye/2933030620/
Travis CIwww.travis-ci.org .travis.yml
Jenkinswww.jenkins-ci.org
Font
e: h
ttps:
//ci
.ope
nshi
ft.re
dhat
.com
/jenk
ins/
java -jar jenkins.war
Quem precisa de SaaS?
IaaSPaaSSaaS
OpenShift, Heroku, Google App Engine (Google Cloud), AppFog, Pagoda Box, Fortrabbit, Laravel Forge
Digital Ocean, AWS, Linode, Azure, Rackspace, Open Stack
Deployment
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
Abordagem rudimentar…
Zero Downtime Deployment(implantação atômica)
Fonte: https://leanpub.com/deploying-php-applications
Quem nunca…
Foto
: http
s://
flic.
kr/p
/6m
NHc
j
Simples, previsível e reversível
//Carrega o Gulp e seus plug-insvar 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ódigogulp.task('lint', function() { return gulp.src('src/js/*.js') .pipe(jshint()) .pipe(jshint.reporter('default'));});//Compila o Sassgulp.task('sass', function() { return gulp.src('scss/*.scss') .pipe(sass()) .pipe(gulp.dest('css'));});//Concatena e minifica o JavaScriptgulp.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 Taskgulp.task('default', ['lint', 'sass', 'scripts']);
Grunt e Gulp
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
• 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
Font
e: h
ttp:/
/the
imita
tiong
amem
ovie
.com
Setup
E-mail:[email protected]
Twitter: @stopassolaSkype: stopassolaLinkedIn:
http://pt.linkedin.com/in/stopassola
Facebook:http://www.facebook.com/arijunior
Sites:http://www.perito.inf.brhttp://www.certificamp.com http://www.rumoacertificacaophp.com
Contatos
Obrigado![ tem brinde ]