devops: desenvolvedores e sysadmins cooperando na prática

68
DevOps: desenvolvedores e sysadmins cooperando na prática Ari Stopassola Junior

Upload: ari-stopassola-junior

Post on 16-Apr-2017

841 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: DevOps: desenvolvedores e sysadmins cooperando na prática

DevOps: desenvolvedores e

sysadmins cooperando na prática

Ari Stopassola Junior

Page 2: DevOps: desenvolvedores e sysadmins cooperando na prática

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

Page 3: DevOps: desenvolvedores e sysadmins cooperando na prática

SlideShare

Page 4: DevOps: desenvolvedores e sysadmins cooperando na prática
Page 5: DevOps: desenvolvedores e sysadmins cooperando na prática

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

Page 6: DevOps: desenvolvedores e sysadmins cooperando na prática

"A harmonia do mundo depende da retificação dos nomes."

Confúcio551-479 a.C.

Page 7: DevOps: desenvolvedores e sysadmins cooperando na prática

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

Page 8: DevOps: desenvolvedores e sysadmins cooperando na prática

DesenvolvedorX

Administrador de Sistemas

http://www.hbo.com/silicon-valley

Page 9: DevOps: desenvolvedores e sysadmins cooperando na prática

"Na minha

máquina funciona

!"

Page 10: DevOps: desenvolvedores e sysadmins cooperando na prática

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.

Page 11: DevOps: desenvolvedores e sysadmins cooperando na prática

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

Page 12: DevOps: desenvolvedores e sysadmins cooperando na prática

Fonte: http://www.gohorseprocess.com.br

Page 13: DevOps: desenvolvedores e sysadmins cooperando na prática

Full-stack developer

Fonte: https://flic.kr/p/4RyRRW

Page 14: DevOps: desenvolvedores e sysadmins cooperando na prática

Imagem inspirada no curso "DevOps: The Big Picture" da PluralSight por Richard Seroter:http://www.pluralsight.com/courses/devops-big-picture

Page 15: DevOps: desenvolvedores e sysadmins cooperando na prática

Collaboration

Page 16: DevOps: desenvolvedores e sysadmins cooperando na prática

Slackhttps://slack.com

Page 17: DevOps: desenvolvedores e sysadmins cooperando na prática

Gitterwww.gitter.im

Page 18: DevOps: desenvolvedores e sysadmins cooperando na prática

Planning

Page 19: DevOps: desenvolvedores e sysadmins cooperando na prática

Trellowww.trello.com

Page 20: DevOps: desenvolvedores e sysadmins cooperando na prática

Issue tracking

Page 21: DevOps: desenvolvedores e sysadmins cooperando na prática

Bugzillahttps://www.bugzilla.org

Page 22: DevOps: desenvolvedores e sysadmins cooperando na prática

Jirahttps://www.atlassian.com/software/jira

Page 23: DevOps: desenvolvedores e sysadmins cooperando na prática

Monitoring

Page 24: DevOps: desenvolvedores e sysadmins cooperando na prática

ISO 8601

Page 25: DevOps: desenvolvedores e sysadmins cooperando na prática

New Relichttp://newrelic.com

Page 27: DevOps: desenvolvedores e sysadmins cooperando na prática

Configuration Management

Page 28: DevOps: desenvolvedores e sysadmins cooperando na prática

Petx

Cattle

Foto: https://steakbuenosaires.files.wordpress.com/2014/02/herding-sheep.jpg

Page 29: DevOps: desenvolvedores e sysadmins cooperando na prática

Pet10.0.0.11 "Poseidon"

poseidon.empresa.com.brCompaq Proliant ML330

Foto

: http

s://

flic.

kr/p

/bF4

xXY

Page 30: DevOps: desenvolvedores e sysadmins cooperando na prática

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/

Page 31: DevOps: desenvolvedores e sysadmins cooperando na prática

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

Page 32: DevOps: desenvolvedores e sysadmins cooperando na prática

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

Page 33: DevOps: desenvolvedores e sysadmins cooperando na prática

Controle de versão

Page 34: DevOps: desenvolvedores e sysadmins cooperando na prática

GNU/Linux Distro Timeline

http://futurist.se/gldt/

Page 35: DevOps: desenvolvedores e sysadmins cooperando na prática

Controle de versão• Concurrent Version System – CVS• Subversion• BitKeeper (características

híbridas)• Microsoft Visual SourceSafe• Git• Mercurial• Bazaar

Modelo descentralizado

Page 36: DevOps: desenvolvedores e sysadmins cooperando na prática

Repositório central

Hospedado• GitHub• BitBucket• Atlassian

Stash

Servidor próprio

• Gitosis• Gitorious• GitLab• GitBlit

Page 37: DevOps: desenvolvedores e sysadmins cooperando na prática

Hooks

Page 38: DevOps: desenvolvedores e sysadmins cooperando na prática

Fonte: https://enterprise.github.com/features

Page 39: DevOps: desenvolvedores e sysadmins cooperando na prática

P.J. Hyett Tom Preston-Werner Chris Wanstrath

Page 40: DevOps: desenvolvedores e sysadmins cooperando na prática

Environment

Page 41: DevOps: desenvolvedores e sysadmins cooperando na prática

Vagrantwww.vagrantup.com

Page 42: DevOps: desenvolvedores e sysadmins cooperando na prática

Dockerwww.docker.com

Foto: https://flic.kr/p/9Wwj79

Page 43: DevOps: desenvolvedores e sysadmins cooperando na prática

Foto

: htt

ps:/

/flic

.kr/

p/qS

BYah

Orquestração

Page 44: DevOps: desenvolvedores e sysadmins cooperando na prática

Continuous Integration

Page 45: DevOps: desenvolvedores e sysadmins cooperando na prática

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/

Page 47: DevOps: desenvolvedores e sysadmins cooperando na prática

Jenkinswww.jenkins-ci.org

Font

e: h

ttps:

//ci

.ope

nshi

ft.re

dhat

.com

/jenk

ins/

Page 48: DevOps: desenvolvedores e sysadmins cooperando na prática

java -jar jenkins.war

Quem precisa de SaaS?

Page 49: DevOps: desenvolvedores e sysadmins cooperando na prática

IaaSPaaSSaaS

OpenShift, Heroku, Google App Engine (Google Cloud), AppFog, Pagoda Box, Fortrabbit, Laravel Forge

Digital Ocean, AWS, Linode, Azure, Rackspace, Open Stack

Page 50: DevOps: desenvolvedores e sysadmins cooperando na prática

QA: quality assurancehttp://phpqatools.org

Page 51: DevOps: desenvolvedores e sysadmins cooperando na prática

Code Climatehttps://codeclimate.com

Page 52: DevOps: desenvolvedores e sysadmins cooperando na prática

Deployment

Page 53: DevOps: desenvolvedores e sysadmins cooperando na prática

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

Page 54: DevOps: desenvolvedores e sysadmins cooperando na prática

Padronização de código: PSRhttp://www.php-fig.org

Page 55: DevOps: desenvolvedores e sysadmins cooperando na prática

Abordagem rudimentar…

Page 56: DevOps: desenvolvedores e sysadmins cooperando na prática
Page 57: DevOps: desenvolvedores e sysadmins cooperando na prática

Zero Downtime Deployment(implantação atômica)

Fonte: https://leanpub.com/deploying-php-applications

Page 58: DevOps: desenvolvedores e sysadmins cooperando na prática

Migrations: Phinxhttps://phinx.org

Page 59: DevOps: desenvolvedores e sysadmins cooperando na prática

Quem nunca…

Page 60: DevOps: desenvolvedores e sysadmins cooperando na prática

Foto

: http

s://

flic.

kr/p

/6m

NHc

j

Simples, previsível e reversível

Page 61: DevOps: desenvolvedores e sysadmins cooperando na prática

//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

Page 62: DevOps: desenvolvedores e sysadmins cooperando na prática

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

Page 63: DevOps: desenvolvedores e sysadmins cooperando na prática

• 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

Page 64: DevOps: desenvolvedores e sysadmins cooperando na prática

Font

e: h

ttp:/

/the

imita

tiong

amem

ovie

.com

Setup

Page 65: DevOps: desenvolvedores e sysadmins cooperando na prática
Page 66: DevOps: desenvolvedores e sysadmins cooperando na prática
Page 68: DevOps: desenvolvedores e sysadmins cooperando na prática

Obrigado![ tem brinde ]