devops: desenvolvedores e sysadmins cooperando na prática

Post on 16-Apr-2017

841 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Slackhttps://slack.com

Gitterwww.gitter.im

Planning

Trellowww.trello.com

Issue tracking

Bugzillahttps://www.bugzilla.org

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

Monitoring

ISO 8601

New Relichttp://newrelic.com

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

Foto

: htt

ps:/

/flic

.kr/

p/qS

BYah

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 problems and allows a team to develop cohesive software more rapidly"

Foto: https://www.flickr.com/photos/adewale_oshineye/2933030620/

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

QA: quality assurancehttp://phpqatools.org

Code Climatehttps://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: PSRhttp://www.php-fig.org

Abordagem rudimentar…

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

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

Migrations: Phinxhttps://phinx.org

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:arijunior@gmail.com

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 ]

top related