0% acharam este documento útil (0 voto)
18 visualizações46 páginas

Modulo II Entreega Contínua

O documento aborda práticas e ferramentas de DevOps, destacando o processo de entrega e implantação de software, incluindo planejamento, codificação, construção e operação. Enfatiza a importância de empacotamento, aprovação, configuração de ambientes e boas práticas como implantação idempotente e separação entre release e implantação. Também discute arquiteturas de microserviços, suas vantagens e desvantagens, e técnicas para garantir resiliência e baixo risco na implantação.

Enviado por

gabrielhpm
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
18 visualizações46 páginas

Modulo II Entreega Contínua

O documento aborda práticas e ferramentas de DevOps, destacando o processo de entrega e implantação de software, incluindo planejamento, codificação, construção e operação. Enfatiza a importância de empacotamento, aprovação, configuração de ambientes e boas práticas como implantação idempotente e separação entre release e implantação. Também discute arquiteturas de microserviços, suas vantagens e desvantagens, e técnicas para garantir resiliência e baixo risco na implantação.

Enviado por

gabrielhpm
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 46

Engenharia de

DevOps
Fernando Augusto Medeiros Silva
Pipeline de
Entrega/Implantação
Quando começa a implantação

• Planejamento: Desenvolvimento Ágil, Kanban, Scrum


• Codificação: TDD, BDD, Controle de Versão
• Construção: Integração Contínua
• Implantação: Entrega Contínua
• Operação: Gestão de infraestrutura, incidentes,
Configuração, acesso...
• Feedback: Telemetria
Requisitos

• Release: Software liberado para ambiente tipo


produção
• Entregue da mesma forma em todos os ambientes:
UAT, PROD,...
• Teste de fumaça nas implantações
• Garantir a consistência entre todos os ambientes
O que precisamos para Entregar?
• Empacotar
• Aprovação
• Preparar ambiente
• Codificar • Copiar
• Compilar • Configurar
• Release • Lançar
• Entregar • Testes
O que precisamos para
Implantar?
• Empacotar
• Aprovação
• Preparar ambiente
• Codificar • Copiar software para o ambiente
• Compilar • Configurar
• Release • Lançar
• Implantar • Testes De Fumaça
• Migrar Banco de Dados
• Testes
• Remover versão anterior
Empacotar

• Reunir todos os artefatos necessários para execução


• Gestão de dependências
• Controlar versão do pacote para controle
• Armazenar o pacote
• Fazer verificação de Segurança
Empacotar

• Maven, Gradle
• Nexus, Jfrog Artifact
• Python setupTools
• Nexus, Artifact
• Docker (Funciona na minha máquina)
• Registry. Docker Hub, ECR, GCR,...
• Yarn
Empacotar

• Scan de vulnerabilidades
• Assinatura de pacotes
• Gestão de acesso
Aprovação Manual

• Sistema de Tickets
• Merge Request
• Manual Actions na pipeline
Preparação Ambiente
Preparação do Ambiente
Instalar Software

• Copiar arquivos para os sistemas do ambiente


• Backup dos arquivos anteriores
Configurar

• Integrar as configurações para início do software


• Arquivos de configuração
• Variáveis de ambiente
• Parâmetros de linha de comando
Instalação in-place
• Preparar ambiente
• Instalar/atualizar dependências
• Copiar software
• Configurar
• Reiniciar Serviços
• Testes De Fumaça
• Prova de vida /health
Ferramentas Ambiente/Config

• Chef
• Puppet
• Ansible
• SystemManager (Windows)
• CodeDeploy
Boas Praticas de Implantação

• Implantação idempotente (múltiplas aplicações não alteram


o resultado ex *1 *0)
• Torne a infraestrutura imutável
• Faça a implantação self-service
• Permita o Roll Back
• Entregue um DashBoard
• Separe o release da implantação
• Arquitete para baixo risco
Implantação idempotente

• Torne sua implantação idempotente


• Use ferramenta de controle de versão
como Ansible e Puppet
• Use um orquestrador de containers
Técnica - empacotar mais partes
do ambiente

• App e middleware
• Maquinas completas (Imagens ec2/instancias GCP)
• Imagens de containers
Uso de imagens de máquinas
• Instalação de dependências automática
• Integrar as camadas de forma separada
• Atualização pode ser possível
• Configuração automática
• Testes no pacote inteiro
• Infraestrutura imutável
• Não armazenar dados localmente
• Não faça configurações manuais
• A máquina torna-se descartável
Imagens de máquinas

• Ansible
• Packer
• AWS EC2 Image Builder
Uso de Containers

• Integração de todos as camadas de uma só vez


• Configuração separada da imagem
• Implantação em múltiplos hardwares
• Infraestrutura imutável
• Estado da arte
Ferramentas

• Builders
• Docker build
• Kaniko
• Orquestradores
• Kubernetes
• ECS
Implantação self-service

• Implantação com 1 botão


• Permita rollback com 1 botão
• Acompanhamento da implantação com dashboard
• Registro de histórico de implantação
• Lembre-se dos testes de fumaça
Separe o Release da implantação

• Release é a liberação para uso por parte dos usuários


• Implantação é a instalação e execução do software
em determinado ambiente
• Desacoplamento por ambiente
• Desacoplamento por aplicativo
Separação por ambiente
Ferramentas de separação por
ambiente
• BlueGreen: AWS CodeDeploy, KF (GCP cloudFoundry).
Pode ser necessário construir a sua
• Canary Deploy: AWS tem um padrão utilizando vários
componentes

• Para todos os casos existe Kubernetes


Fonte: amazon.com
Implantações por ambiente com
Kubernetes
• BlueGreen: Deploy nativo
• Canary-Deploy: argo-rollouts, flagger
Fonte: argoproject.org
Separação por aplicativo -
Feature Flags
• Técnica de habilitar ou desabilitar funcionalidade
• Permite lançamento no escuro e granulares
• Permitem Desativar Partes do sistema em
momentos críticos
• Permitem Testes A/B
• Permite segmentação de funcionalidade por
classes
Ferramentas
• LaunchDarkly: Foco em empresas de grande porte com
necessidades complexas de feature flags.
• Optimizely: Melhor para equipes de marketing e produto focadas
em experimentação e personalização.
• Unleash: : Flexibilidade de hospedagem, podendo ser usado
tanto como serviço hospedado quanto self-hosted
• ConfigCat: Ideal para PMEs por sua simplicidade e custo-
efetividade.
Arquitetar para Baixo Risco
Resiliência arquitetural
• Circuit breaker
• BulkHead
• RateLimit
• Arquitetura de microserviços
Circuit Breaker

• Degradação controlada
• Protege o ambiente principalmente MS
• Ajuda na contenção do blast radius
• Ferramentas
• Hystrix
• Resilience4J
• Istio
Rate Limit

• Aplicações compartilhadas
• Acordo de nível de serviço
• Normalmente implementado nos api-gateways
• Kong
• Traefik
• iStio (requer instalação e configuração a parte)
Arquétipos arquitetônicos

O termo "Arquitetura de Microsserviços" surgiu nos últimos


anos para descrever uma maneira particular de projetar
aplicações de software como conjuntos de serviços
independentemente implantáveis.
Martin Fowler
Fonte: microservices.io
Vantagens

• Times pequenos
• Ciclos separados de desenvolvimento
• Ciclos separados de operação
• Ciclos de testes separados
• Escalabilidade independente
• Permite uso de múltiplas tecnologias
• Melhor uso de tecnologias como Docker/Kubernetes
DesVantagens
• Ciclos separados de desenvolvimento
• Ciclos separados de operação
• Ciclos de testes separados
• Permite uso de múltiplas tecnologias
• Complexidade (literalmente)
• Telemetria Distribuída
• Rede
• Rede!
DesVantagens
• Ciclos separados de desenvolvimento
• Ciclos separados de operação
• Ciclos de testes separados
• Permite uso de múltiplas tecnologias
• Complexidade (literalmente)
• Telemetria Distribuída
• Rede
• Rede!
DesVantagens
• A rede é confiável
• A latência é zero
• A largura de banda é infinita
• A rede é segura
• A topologia não muda
• Há um administrador
• O custo de transporte é zero
• A rede é homogênea
Fonte: microservices.io

Você também pode gostar