DevOps

Basis Tecnologia da Informação S.A. - 2019

Agenda

  • História e Apresentação

  • DevOps e Entrega Contínua

  • Técnicas

  • Ferramentas

  • Especializações: GitOps e DevSecOps

História

  • Com o uso crescente do ágil necessidade de entregar mais rapidamente

  • Em desenvolvimentos clássicos a implantação pode demorar mais que o desenvolvimento…​

DevOps - Definições

  • DevOps é

    • Metodologia

    • Cultura

    • Práticas

    • Movimento

  • DevOps não é um produto

DevOps - Definições

  • Developers + Operators (+ Profissionais de Segurança)

  • Minimizar o desafio de entregar rapidamente

  • Unificação da Cadeia de Produção

DevOps - Mais que Dev e Ops!

  • Gerentes de Projetos

    • Assegurar a colaboração entre as áreas

  • Arquitetos

    • Criar uma arquitetura com baixo acoplamento

    • Colaborar com os desenvolvedores e usuários para definir as melhores ferramentas e tecnologias

  • DBA

    • Permitir as migrações de banco de maneira automática e transparente

DevOps - Fundações

  • Gestão de Configuração abrangente

  • Integração contínua

  • Testes contínuos

DevOps

Defende:

  • Integração contínua

  • Entrega contínua

  • Práticas Lean

  • Cultura colaborativa

DevOps - Citações

Ágil feito corretamente

DevOps não é um mercado, mas uma filosofia centrada em ferramentas que suporta a cadeia de valor da entrega contínua

Técnicas

Integração Contínua

  • Construir o código fonte o tempo todo

  • Integrar as mudanças com frequência

  • Achar os problemas o mais cedo possível

  • Deixar a construção reproduzível

Entrega Contínua

Entregar em produção:

  • O mais rapidamente possível

  • Da maneira mais segura

  • Automação de todo o processo de entrega

Entrega Contínua - Princípios

  • Construir orientado a qualidade

  • Trabalhar com pequenos incrementos

  • Computadores são bons para executar tarefas repetitivas, pessoas para resolver problemas

  • Sempre ir atrás da Melhoria contínua

  • Todo mundo na equipe é responsável

Pipelines de Implantação

  • Manifestação automatizada do processo de entrega

  • Colaboração entre as áreas envolvidas no pipeline

  • Automação do Processo = Retorno rápido

Configuration as Code

  • Gerenciar os recursos de configuração junto com o código fonte

  • A configuração é versionada também

  • Os passos de construção (pipelines) fazem parte do código fonte

Configuration as Code - Exemplos

  • Jenkinsfile

  • Scripts Liquibase

  • Dockerfile

  • Helm Charts

Versionamento de Banco de dados

  • O código fonte e o banco de dados devem estar compatíveis

  • Não deve ter dúvidas sobre quais scripts executar

  • Automação da cadeia completa

Infrastructure as Code

  • Gerenciamento e disponibilização da infraestrutura com código

  • Não efetuar mais configuração da infra manualmente

  • Permite:

    • Disponibilizar ambiente mais rapidamente

    • Ter um backup em caso de falha

Infrastructure as Code - Exemplos

  • Chef

  • Puppet

  • Ansible

  • Terraform

  • Cloud Formation (Amazon)

  • Deployment Manager (Google)

Ferramentas

Docker

  • Projeto open-source

  • Anunciado em 15/03/2013 por Solomon Hykes

  • Em 2015 a empresa vale 1 bilhão de dólares

  • Vários projetos baseados no Docker

Vantagens

  • Compartilhamento dos recursos da máquina

  • Recursos isolados

  • Controle de versão e reuso

  • Empacotamento das dependências

  • Implantação rápida

Kubernetes

  • Plataforma de gerenciamento de Containers

  • Agilidade para implantar e escalar Containers

  • API e ferramentas CLI

  • Disponível nos maiores provedores de Cloud

Kubernetes

  • Permite definir o estado desejado de uma aplicação

  • Toda a configuração é código (YAML)

Jenkins - História

  • Projeto iniciado em 2004 com o Nome Hudson por Kohsuke Kawaguchi

  • Primeira Release em 2005

  • 2007: Início da popularidade

  • 2011: Mudança de nome para Jenkins

  • 2014: Jenkins Produto Principal de Cloudbees

Jenkins - Situação atual

  • Mais de 1.600 Plugins (https://plugins.jenkins.io/)

  • Mais de 260.000 instâncias instaladas

  • Sistema de Integração/Entrega Contínua mais utilizado

  • Desde a sáida da Versão 2.0 em 2016 176 versões foram publicadas

  • Novos projetos: Jenkins-X, Config as Code, Evergreen..

GitOps

  • Git é a fonte de verdade

  • Verificar estado atual contra estado desejado

  • Utilizar o fluxo do Git como gancho para automação

DevSecOps

  • A equipe de segurança deve fazer parte integral do time do projeto

  • Pensar na segurança das aplicações e da infraestrutura desde do início

  • Inspeção contínua e automatizada

  • Automatizar as barreiras de segurança para não atrasar o fluxo DevOps

Obrigado

perguntas

Perguntas?