SlideShare une entreprise Scribd logo
1  sur  68
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úcio
551-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:https://www.linkedin.com/in/patrickdebois
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
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
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/products/system-center-2012-r2/
• Kibana
https://www.elastic.co/products/kibana
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.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/
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
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
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
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
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 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/
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 Ocean, AWS, Linode, Azure, Rackspace, Open Stack
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
• 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
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-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
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
Fonte:http://theimitationgamemovie.com
Setup
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
Obrigado!
[ tem brinde ]

Contenu connexe

Tendances

Tendances (20)

JavaME
JavaMEJavaME
JavaME
 
Webinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidorWebinar Melhores práticas e lições aprendidas com aplicações sem servidor
Webinar Melhores práticas e lições aprendidas com aplicações sem servidor
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
 
Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android Nooclix
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWS
 
Webinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big DataWebinar: Como obter valor comercial com Big Data
Webinar: Como obter valor comercial com Big Data
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
Segurança de ponta a ponta na AWS
Segurança de ponta a ponta na AWSSegurança de ponta a ponta na AWS
Segurança de ponta a ponta na AWS
 
Webinar: Serviço de Distribuição de Conteúdo da AWS
Webinar: Serviço de Distribuição de Conteúdo da AWS Webinar: Serviço de Distribuição de Conteúdo da AWS
Webinar: Serviço de Distribuição de Conteúdo da AWS
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWSAWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
 
O que uma enterprise deveria fazer nos primeiros 90 dias
O que uma enterprise deveria fazer nos primeiros 90 diasO que uma enterprise deveria fazer nos primeiros 90 dias
O que uma enterprise deveria fazer nos primeiros 90 dias
 
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com BeanstalkAWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
3. apresentacao rp tec com 2018 gustavo bernardes
3. apresentacao rp tec com 2018 gustavo bernardes3. apresentacao rp tec com 2018 gustavo bernardes
3. apresentacao rp tec com 2018 gustavo bernardes
 
Bibliotecas de interface rica no jsf 2
Bibliotecas de interface rica no jsf 2Bibliotecas de interface rica no jsf 2
Bibliotecas de interface rica no jsf 2
 
Aumentando a produtividade e Automatizando Processos com Jira
Aumentando a produtividade e Automatizando Processos com JiraAumentando a produtividade e Automatizando Processos com Jira
Aumentando a produtividade e Automatizando Processos com Jira
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 

Similaire à DevOps: desenvolvedores e sysadmins cooperando na prática

Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
Rangel Javier
 
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviços
Bruno Ghisi
 

Similaire à DevOps: desenvolvedores e sysadmins cooperando na prática (20)

Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaAzure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de SoftwareDextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
[DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps![DevOps Summit Brasil] Procura-se: DevOps!
[DevOps Summit Brasil] Procura-se: DevOps!
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScript
 
Keynote nuvem estaleiro_ics
Keynote nuvem estaleiro_icsKeynote nuvem estaleiro_ics
Keynote nuvem estaleiro_ics
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 
Primeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JSPrimeiros passos com o framework Sencha Ext JS
Primeiros passos com o framework Sencha Ext JS
 
Site estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdfSite estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdf
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
 
TDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps JavaTDC2016SP - Trilha DevOps Java
TDC2016SP - Trilha DevOps Java
 
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviços
 
Construindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppConstruindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor App
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 

Plus de Ari Stopassola Junior

Plus de Ari Stopassola Junior (11)

Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
 
PHP Community Spirit
PHP Community SpiritPHP Community Spirit
PHP Community Spirit
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Rumo à Certificação PHP
Rumo à Certificação PHPRumo à Certificação PHP
Rumo à Certificação PHP
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
Ti na Stopassola Advocacia
Ti na Stopassola AdvocaciaTi na Stopassola Advocacia
Ti na Stopassola Advocacia
 
Workshop Magento
Workshop MagentoWorkshop Magento
Workshop Magento
 
Typo3 - instalação e template
Typo3 - instalação e templateTypo3 - instalação e template
Typo3 - instalação e template
 
Missao Portugal
Missao PortugalMissao Portugal
Missao Portugal
 
Treinamento PHP: Strings & Patterns
Treinamento PHP: Strings & PatternsTreinamento PHP: Strings & Patterns
Treinamento PHP: Strings & Patterns
 

DevOps: desenvolvedores e sysadmins cooperando na prática

Notes de l'éditeur

  1. Administradores leia-se: administradores de sistema, administradores de rede, sysadmin, infraestrutura, segurança e outros.
  2. Workers (mecanismo de filas como ActiveMQ), Querys SQL x MapReduce. Recomenda-se autenticar via par de chaves, ao invés de login/senha. Karma Level. Arquitetura de cloud: IaaS x Paas - Exexmplos de IaaS: Digital Ocean, AWS, Linode, Azure, Rackspace e Open Stack - Exemplos de PaaS: OpenShift, Heroku, Google App Engine (Google Cloud), AppFog, Pagoda Box, Fortrabbit, Laravel Forge
  3. Estereótipos: Cena do seriado Silicon Valley da HBO numa das eternas brigas do Dinesh (desenvolvedor) e Gilfoyle (administrador de sistemas).
  4. Não é minha máquina, é o seu código! Não é meu código, é o seu servidor.
  5. Palestra "Empathy Gives You Superpowers" por Matt Stauffer [ Laracon EU 2015 ] https://www.youtube.com/watch?v=fMFjO2szDnk
  6. Dê acesso aos desenvolvedores. Atualmente estão surgindo cargos de DevOps, que antes não existia. Perde-se o medo de errar.
  7. Qual administrador daqui já abriu código para averiguar o que estava acontecento? Certamente poucos… Há tempos existe demanda para desenvolvedores full stack, então muitos já estão familiarizados com SO, plataforma, banco, servidor de aplicação e linguagem (pilha completa). Voltando a serem mais generalistas com equipes multifuncionais. LAMP stack está dando lugar ao NGINX, MongoDB e outras versões de PHP (HHVM e Hack).
  8. Geralmente criam-se canais # onde cada canal é um projeto. Cada commit pode aparecer na interface do Slack e com um clique é possível enxergar as mudanças, ver se (por acaso) alguém mexeu no mesmo código que você está trabalhando etc. O Laravel integra de forma nativa os warnings e todo o tipo de erro gerado. A RedHat usa IRC.
  9. Totalmente integrado ao GitHub. Gitter tem um setup mais fácil.
  10. Compartilhar a visão
  11. Visibilidade, transparência, o que está acontecendo agora, quem está trabalhando e onde, compartilhar código, rastrear tarefas, gerenciar o backlog (Scrum). O MSProject perdeu mercado em função da sua complexidade e pela falta de integração com os repositórios. Cada pessoa tem um perfil: alguns preferem papel e artefatos "físicos". https://trello.com/atomicopenshift No Trello é possível "votar" para aprovar ou mensurar alguma demanda.
  12. Da 37signals (dos autores do Ruby On Rails), que agora tornaram-se Basecamp. O ambiente de HomeOffce foi muito beneficiado com esse tipo de software, pois é possível ter um acompanhamento global remotamente.
  13. Resposta rápida, triagem de solicitações, prioridades. Mais pertinente no contexto onde há necessidade de feedback ao cliente, onde ele possa acompanhar o desenvolvimento das demandas. BugZilla, Trac, Mantis e o próprio issues do GitHub.
  14. https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=MODIFIED&bug_status=ON_DEV&classification=Red%20Hat&list_id=3982480&order=bug_severity%2Cpriority%2Cassigned_to%20DESC%2Cbug_id%20DESC&product=OpenShift%20Origin&query_format=advanced&short_desc=\[fork\]&short_desc_type=notregexp&version=3.x É possível parametrizar de modo que o ticket só seja fechado pelo time de QA. Permite também upload privado, em caso de dados sigilosos que necessitem serem enviados para o desenvolvedor.
  15. One time now (da Axosoft), porém mais focado em Scrum. Ele não permitia dois responsável por uma tarefa (princípio fundamental do Pair programming – XP). Target Process, Mantis, Bugzilla
  16. Alarmes, verificação periódica da saúde das máquinas, tempo de resposta, obtém as exceções – quando o aplicativo já está online.
  17. https://pt.wikipedia.org/wiki/ISO_8601
  18. Coletar, extrair, parsing, explorar logs Analisa UM log é fácil. Analisar milhares é muito complicado. ISO 8601.
  19. Nagios também tem esse propósito, embora seja mais "old school". GitHub Status também é um indício interessante, embora menos preciso e com um certo delay. ZendServer tem uma solução muito robusta para trabalhar com PHP. New relic, além de monitoramento, é considerado uma ferramenta bastante poderosa como Analytics.
  20. Manter o estado consistente
  21. Animal de estimação x rebanho
  22. Preparar um servidor pode levar dois dias de trabalho, ou mais. E se forem 200 servidores? Chef salva tempo e a sanidade mental. Preparar a Stack para servir a aplicação. Chef e Puppet são os precursores. Quando a aplicação cresce demais, é necessário apelar para Chef e Puppet. Puppet, Chef, PuPHPet e Ansible/Phansible Possuem mecanismos de failover, lidam com problemas que possam ocorrer na instalação DECLARATIVA
  23. Provisionamento é uma arte. SaltStack tem programa de certificação Puppet promove conferências em todo o mundo (também tem certificação). Powershell DSC permite mexer no registro do Windows e muitas outras tarefas. Salt e Ansible são mais focados nos desenvolvedores. Salt utiliza YAML, enquanto que Ansible usa SSH (não requer instalação de recursos na máquina client) Phansible é uma solução mais voltada para o desenvolvimento (não em produção). Homestead do Laravel.
  24. Rastrear mudanças
  25. Era pré-Git os administradores eram os "inimigos".
  26. Gitosis e Gitorious pode-se baixar e instalar num servidor local. Através de um servidor, é possível ter maior controle sobre os dados. Existe também o Garrit e outros...
  27. Hook é no sentido de interceptar. Existem hooks no lado do cliente e outros no servidor. touch .git/hooks/pre-commit chmod +x .git/hooks/pre-commit É agnóstico do ponto de vista de linguagem.
  28. Mashup
  29. Tudo isso foi possível com o advento do GitHub (SaaS), lembrando que Git é apenas o versionamento – enquanto que o GitHub é a plataforma social de código. Cada pull request dispara Hooks (ganchos) para outros aplicativos, fazendo com que o processo seja automático. Através de Single SignOn (OAuth2) é possível se habilitar em qualquer outro serviço
  30. Replicar toda a stack do servidor de aplicação
  31. Espelhamento de ambientes. Qual a imagem usar, que script Chef executar, habilitar rede, pastas compartilhadas. Com uma linha é possível testar em diferentes versões de sistema operacional e combinações de configuração. Usa Hyper-V (Microsoft), VirtualBox (Oracle), KVM, VMWare etc. Orientado a ambientes de desenvolvimento, pois utilizam uma camada de vitualização – prejudicando a performance. Criar um ambiente que possa ser reproduzido, quando se precisa de algo que fuja do LAMP, compatibilidade cross-platform, time trabalhando em diferentes SO. Provisionamento: setup automatizado, quanto tempo para subir uma máquina, maximizar dev/prod parity, isolamento de ambientes,
  32. Docker não usa virtualização. Ele sobe uma instância do kernel, monta um filesystem criptografado, isola num processo – formando um "container", que pode ser facilmente portado em uma cloud como OpenShift, AWS, DigitalOcean etc. Muito mais performático que o Vagrant. A montagem da configuração da máquina de produção é feita uma única vez e depois é distribuída entre os desenvolvedores. Usa a técnica de kernel namespaces. Em https://hub.docker.com é possível baixar uma imagem Docker (definição) e executando-a transforma-se em "container". Vantagens são segurança, velocidade e granularidade. Ex.: docker pull nome | docker run nome O Docker ganhou destaque (com relação ao LXC), pois utiliza os "Docker file". Lembre-se que ele não guarda estados, portanto é necessário montar um volume externo para persistir algum dado.
  33. Kubernetes, Mesos e Docker Swarm
  34. Social development onde você pode praticar Pair programming com outro desenvolvedor remoto. Enxerga as mudanças no código em tempo real.
  35. Integração Contínua é teste! Jenkins, Travis, GitLab CI, Bamboo, Liquibase, TeamCity e Code Climate.
  36. Antecipar gargalos e problemas ANTES de colocar em produção. Progresso incremental. É possível realizar o commit e evitar o disparo do CI. Ex.: git commit –m "mensagem [CI SKIP]" http://docs.travis-ci.com/user/languages/php/
  37. E o SaaS (Software as a Service)?
  38. Garantia de qualidade
  39. Inspeção
  40. Ele confronta o código com uma série de ferramentas de QA: http://phpqatools.org Sumariza a saida das principais ferramentas de qualidade. Roda uma série de análises. Métricas. Faz revisão do código, atribui badges (selos) onde a nota 4 é a máxima,
  41. Automatização de forma simples, previsível e reversível. Compacta, transfere, descompacta, executa as migrations etc. É mais fácil realizar um Hot Deploy (atômico) em PHP, comparado ao Java – pois os binários do Java estão em memória, enquanto que os bytecodes PHP são gerados em tempo de execução. Booking fazem várias entregas DIÁRIAS (releases). GlassFish e Jboss possuem mecanismos de hotdeploy incorporados no servidor de aplicação. Na nuvem, é possível fazer a implantação horizontal: sobe um servidor com a versão nova do software e desce um com a versão antiga, e vai fazendo o shift gradativamente. Capistrano, Deployer, Magallanes, Rocketeer, Juju, Envoyer e Phing (manual)
  42. Habilitar SSL (Certificação digital) nos servidores, gerar documentação, Stress test: Apache Bench e Seige ECMAScript 5 é mais compatível.
  43. Proposed Standards Recommendation
  44. Phing é baseado no Apache Ant.
  45. Workflow bastante utilizado
  46. Integração contínua x Entrega contínua
  47. Siga esse mantra Simples: procure concentrar o processo de implantação e dispará-lo em apenas UM comando. Previsível : saber o que está acontecendo. Se houver efeitos colaterais, mantenha a versão corrente. Reversível: UM comando e o sistema volta ao que era.
  48. Implementados em Node.js Usa o gerenciador de pacotes NPM. Grunt e Gulp são mais focados em FrontEnd. Extraído de: https://travismaynard.com/writing/getting-started-with-gulp 1) Instale o Node.js https://nodejs.org 2) Crie um diretório, entre nele e execute: npm init [ preencha as perguntas que ele for perguntando ] 3) sudo npm install --global gulp [ para habilitar o utilitário gulp por linha de comando ] 4) npm install --save-dev gulp 5) instale os complementos npm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename --save-dev 5) Crie o arquivo gulpfile.js e coloque: var gulp = require('gulp'); gulp.task('default', function() { // place code for your default task here }); 6) Execute: gulp
  49. CloudFormation usa o conceito de template (em JSON) onde é possível especificar os requisitos desejados (ou até mesmo usar um templete pré-pronto), então ele será criado na cloud. Definir número de instâncias etc. Capistrano, Deployer, Magallanes, Rocketeer e Juju. Envoyer vende a possibilidade de "Zero Downtime", caso contrário execute php artisan down (para suspender o serviço temporariamente).
  50. Por força bruta é possível quebrar uma senha.
  51. Ou "vendor lock-in" geralmente afeta o sysadmin (infraestrutura) Google Cloud restringe demais a migração para outra plataforma.
  52. Testes de aceitação (Codeception) são mais proveitosos para times pequenos. Emulam a navegação no site/sistema, experimentando o funcionamento como um todo.
  53. entregar adesivos!
  54. Brinde