continuous deplo yment flexível com assembly lines for …...sobre mim eric guimarães formação...

Post on 20-May-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Continuous DeploymentContinuous Deploymentflexível com Assemblyflexível com AssemblyLines for DevOpsLines for DevOps

#QConSP

A pipeline de pipelines

IntroduçãoIntrodução

AgendaAgenda

1. A Evolução das Pipelines2. Assembly Lines for DevOps3. Demonstração

Acompanhe estaAcompanhe estaapresentaçãoapresentação

https://slides.com/eguimaraess/qconsp

Sobre MimSobre MimEric GuimarãesFormação em Banco deDadosLinux há 13 anosInfraestrutura há 9 anosNa Indra há 6 anosDevOps há 3 anos

Vamos começar...Vamos começar...

O Que SãoO Que São Assembly Lines?Assembly Lines?

DefiniçãoDefiniçãoLinha de montagem

“ Pode ser entendida como uma forma de

produção em série; ocorre quando um

estabelecimento industrial com o auxílio de

máquinas transformam as matérias-primas e

produtos semi-acabados em produtos

acabados destinados ao consumo. (Wikipédia)

Em DevOps...Em DevOps...

DevOps Assembly LinesAssembly Lines for DevOps

“ Pipeline de Pipelines

A Evolução dasA Evolução dasPipelinesPipelines

Senta que lá vem história...

Indústria AutomobilísticaIndústria Automobilística

IndústriaIndústria

ManualPartly AutomatedAssembly Lines

PipelinesPipelines

Sem CICI/CD com etapas manuaisAssembly Lines for DevOps

CI SimplesCI Simples

Build - Test - Push

Exemplo (Gitlab CI)Exemplo (Gitlab CI)---stages: - CI ci: stage: CI image: docker:1.11 services: - docker:dind script: # Build - docker build -t registry.gitlab.com/fewbits/pipeline-samples . # Test - docker run --rm registry.gitlab.com/fewbits/pipeline-samples npm test # Push - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY - docker push registry.gitlab.com/fewbits/pipeline-samples

123456789

1011121314151617

CI com EstágiosCI com Estágios

TestBuild Push

Exemplo (Gitlab CI)Exemplo (Gitlab CI)---image: docker:1.11 stages: - Build - Test - Push docker:build: stage: Build services: - docker:dind script: - docker build -t registry.gitlab.com/fewbits/pipeline-samples:temp . - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY - docker push registry.gitlab.com/fewbits/pipeline-samples:temp npm:test: stage: Test services: - docker:dind script: - docker run --rm registry.gitlab.com/fewbits/pipeline-samples:temp npm te docker:push:

stage: Push

123456789

1011121314151617181920212223242526

CI com Estágios ParalelosCI com Estágios Paralelos

Test

Build Push

Exemplo (Gitlab CI)Exemplo (Gitlab CI)---image: docker:1.11 stages: - Build - Test - Push Docker Build: stage: Build services: - docker:dind script: - docker build -t registry.gitlab.com/fewbits/pipeline-samples:temp . - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY - docker push registry.gitlab.com/fewbits/pipeline-samples:temp Image 1: stage: Test services: - docker:dind script: - docker run --rm registry.gitlab.com/fewbits/pipeline-samples:temp npm te Image 2:

stage: Test

123456789

1011121314151617181920212223242526

CD com DecisãoCD com Decisão

TestBuild

Push Deploy

Something else

Exemplo (Gitlab CI)Exemplo (Gitlab CI)---stages: - Build - Test - Escalate - Push - Deploy Docker Build: stage: Build image: docker:1.11 services: - docker:dind script: - docker build -t registry.gitlab.com/fewbits/pipeline-samples:temp . - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY - docker push registry.gitlab.com/fewbits/pipeline-samples:temp Test: stage: Test image: docker:1.11 script: - echo "Flipping a coin - If 0 => OK / If 1 => Error" - coin=`shuf -n1 -i0-1` - echo "Coin is => $coin"

- exit $coin

123456789

1011121314151617181920212223242526

CenáriosCenáriosComplexosComplexos

ProblemasProblemas

ProblemasProblemasA equipe de Operações altera um

script de IaC e quer reconstruir os

ambientes

ProblemasProblemasA equipe de Operações altera um

script de IaC e quer reconstruir os

ambientes

A equipe de Testes, sabendo

disso, quer um novo deploy para

testar o ambiente

ProblemasProblemasA equipe de Operações altera um

script de IaC e quer reconstruir os

ambientes

A equipe de Testes, sabendo

disso, quer um novo deploy para

testar o ambiente

A equipe de Segurança criou uma

nova imagem base para a

empresa, e agora todos têm que

utilizá-la

ProblemasProblemasA equipe de Operações altera um

script de IaC e quer reconstruir os

ambientes

A equipe de Testes, sabendo

disso, quer um novo deploy para

testar o ambiente

A equipe de Segurança criou uma

nova imagem base para a

empresa, e agora todos têm que

utilizá-la

DúvidasDúvidasTudo no mesmo repositório?

Mesma pipeline?

Quantas pipelines?

Quem faz o quê?

Como as equipes interagem?

Como ter a visão do "todo" e não

ficar perdido?

Percebendo os problemas...Percebendo os problemas...

Tentando resolver...Tentando resolver...

Assembly LinesAssembly Lines for DevOpsfor DevOps

CaracterísticasCaracterísticas

CaracterísticasCaracterísticas

Workflow (pipeline de pipelines)

CaracterísticasCaracterísticas

Workflow (pipeline de pipelines)Conecta diferentes Ilhas de Automação

CaracterísticasCaracterísticas

Workflow (pipeline de pipelines)Conecta diferentes Ilhas de AutomaçãoCada parte da Assembly Line pode ser mantida poruma equipe

CaracterísticasCaracterísticas

Workflow (pipeline de pipelines)Conecta diferentes Ilhas de AutomaçãoCada parte da Assembly Line pode ser mantida poruma equipeOs objetos compartilham informações e estado

CaracterísticasCaracterísticas

Workflow (pipeline de pipelines)Conecta diferentes Ilhas de AutomaçãoCada parte da Assembly Line pode ser mantida poruma equipeOs objetos compartilham informações e estadoOrientado a eventos

CaracterísticasCaracterísticas

Workflow (pipeline de pipelines)Conecta diferentes Ilhas de AutomaçãoCada parte da Assembly Line pode ser mantida poruma equipeOs objetos compartilham informações e estadoOrientado a eventosVisualização unificada

CaracterísticasCaracterísticas

Workflow (pipeline de pipelines)Conecta diferentes Ilhas de AutomaçãoCada parte da Assembly Line pode ser mantida poruma equipeOs objetos compartilham informações e estadoOrientado a eventosVisualização unificadaTudo "As Code"

CaracterísticasCaracterísticas

Workflow (pipeline de pipelines)Conecta diferentes Ilhas de AutomaçãoCada parte da Assembly Line pode ser mantida poruma equipeOs objetos compartilham informações e estadoOrientado a eventosVisualização unificadaTudo "As Code"Filosofia Unix

CaracterísticasCaracterísticas

Workflow (pipeline de pipelines)Conecta diferentes Ilhas de AutomaçãoCada parte da Assembly Line pode ser mantida poruma equipeOs objetos compartilham informações e estadoOrientado a eventosVisualização unificadaTudo "As Code"Filosofia UnixPipelines para todos

PipelinesPipelines

Ponto-a-pontoTem 1 dono

Assembly LinesAssembly Lines

WorkflowMúltiplos donos

ObjetivoObjetivoBuild Staging Production

Continuous Delivery

Continuous Integration

Continuous Deployment

ObjetivoObjetivo

O quê: Continuous Deployment

Build Staging Production

Continuous Delivery

Continuous Integration

Continuous Deployment

ObjetivoObjetivo

O quê: Continuous Deployment

Como: Unindo e orquestrando diferentes Ilhas de Automação

Build Staging Production

Continuous Delivery

Continuous Integration

Continuous Deployment

ResourcesResources JobsJobs

ResourcesResourcesCredenciaisIntegraçõesRepositóriosClustersImagensParâmetrosEtc...

JobsJobs

ResourcesResourcesCredenciaisIntegraçõesRepositóriosClustersImagensParâmetrosEtc...

JobsJobsCriar servidorFazer buildAtualizar DNSDeletar arquivosFazer testesAtualizar pacotesEtc...

ExemploExemplo

Adoçar

Cortar Limões

Espremer Limões

Limonada!

ExemploExemplo

1. O job Adoçar precisa dos resources

Suco do Limão e Açúcar, e entrega

Limonada  

Adoçar

Cortar Limões

Espremer Limões

Suco do Limão

Açúcar

Limonada

Limonada!

ExemploExemplo

1. O job Adoçar precisa dos resources

Suco do Limão e Açúcar, e entrega

Limonada  

2. O job Cortar Limões precisa do

resource Limão, e entrega Limão

Cortado  

Adoçar

Cortar Limões

Espremer Limões

Suco do Limão

Açúcar

Limão

Limonada

Limão Cortado

Limonada!

ExemploExemplo

1. O job Adoçar precisa dos resources

Suco do Limão e Açúcar, e entrega

Limonada  

2. O job Cortar Limões precisa do

resource Limão, e entrega Limão

Cortado  

3. O job Espremer Limões precisa dos

resources Limão Cortado e

Espremedor, e entrega Suco do

Limão

Adoçar

Cortar Limões

Espremer Limões

Suco do Limão

Açúcar

Limão

Limonada

Limão Cortado

Limão cortado

Espremedor

Suco do Limão

Limonada!

ExemploExemploO workflow (Assembly Line) é definido dinamicamente, de acordo com as necessidades de

cada objeto (resources e jobs).

AdoçarCortar Limões Espremer Limões

Açúcar

Limão LimonadaLimão Cortado

Espremedor

Suco do Limão

“ Os Resources e os Jobs podem estar espalhados entrediversos repositórios diferentes.

Funcionalidades NecessáriasFuncionalidades Necessárias

Funcionalidades NecessáriasFuncionalidades Necessárias

Integração entre ferramentasGatilhos automáticos ou manuaisRoles e permissõesFunções de auditoriaWorkflow as Code

Funcionalidades NecessáriasFuncionalidades Necessárias

Integração entre ferramentasGatilhos automáticos ou manuaisRoles e permissõesFunções de auditoriaWorkflow as CodeHabilidade de compartilhar estado e informaçõesentre pipelinesMétricas e visibilidade das Assembly Lines

DemonstraçãoDemonstração

CenárioCenário

ProjetosProjetos RepositóriosRepositóriosEquipesEquipes

CenárioCenário

ProjetosProjetos RepositóriosRepositóriosEquipesEquipes

Website

Web App

CenárioCenário

ProjetosProjetos RepositóriosRepositórios

Dev

Ops

Test

Sec

EquipesEquipes

Website

Web App

CenárioCenário

ProjetosProjetos RepositóriosRepositórios

Dev

Ops

Test

Sec

EquipesEquipes

Website

Web App

qconsp-dev-site

qconsp-dev-app

qconsp-test

qconsp-sec

qconsp-ops

FerramentasFerramentas

DemoDemoTime!Time!

RoteiroRoteiro

RoteiroRoteiro

1. Os Projetos

RoteiroRoteiro

1. Os Projetos2. Alterar Site

RoteiroRoteiro

1. Os Projetos2. Alterar Site3. Jobs e Resources

RoteiroRoteiro

1. Os Projetos2. Alterar Site3. Jobs e Resources4. Segurança!

RoteiroRoteiro

1. Os Projetos2. Alterar Site3. Jobs e Resources4. Segurança!5. Dependências

RoteiroRoteiro

1. Os Projetos2. Alterar Site3. Jobs e Resources4. Segurança!5. Dependências6. shippable.yml

RoteiroRoteiro

1. Os Projetos2. Alterar Site3. Jobs e Resources4. Segurança!5. Dependências6. shippable.yml7. Segurança!²

ConsideraçõesConsiderações

ConsideraçõesConsideraçõesSer organizado é importante

ConsideraçõesConsideraçõesSer organizado é importanteEste é o resultado de um estudo

ConsideraçõesConsideraçõesSer organizado é importanteEste é o resultado de um estudoSoluções OpenSource

ConsideraçõesConsideraçõesSer organizado é importanteEste é o resultado de um estudoSoluções OpenSourceAceitamos Feedbacks

ReferênciasReferências

Esta ApresentaçãoEsta Apresentação

ContatosContatos

DevOps Diagram GeneratorDevOps Diagram Generator

https://slides.com/eguimaraess/qconsp

eguimaraess@indracompany.com

linkedin.com/in/lowbit

https://xebialabs.com/devops-diagram-generator

RepositóriosRepositórios

https://gitlab.com/fewbits/pipeline-samples (diferentes branches)

Pipelines

Assembly Line

https://github.com/fewbits/qconsp-dev-sitehttps://github.com/fewbits/qconsp-dev-apphttps://github.com/fewbits/qconsp-testhttps://github.com/fewbits/qconsp-sechttps://github.com/fewbits/qconsp-ops

ArtigosArtigos

https://devops.com/differentiating-ci-pipelines-devops-assembly-lines/

https://www.shippable.com/devops-assembly-lines.html

https://github.com/vfarcic/vfarcic.github.io/blob/master/articles/devops-

assembly-line.md

https://hackernoon.com/8-devops-trends-to-be-aware-of-in-2019-

b4232ac8f351

Obrigado!Obrigado!

top related