Continuous Delivery vs Continuous Deployment

Continuous Delivery e Continuous deployment – São termos frequentemente usados em DevOps e causam bastante confusão por serem bem parecidos 🙂

Neste artigo vamos entender suas características e como se complementam!

Continuous Delivery

Continuous Delivery é uma prática que automatiza o ciclo de vida do desenvolvimento de software, permitido que uma nova versão ou funcionalidade esteja pronta para ser implantada em produção a qualquer momento. Entregar software com qualidade e de forma continua exige que processos manuais e tarefas repetitivas sejam automatizados. Além tornar o processo mais ágil a automação reduz possíveis erros humanos.

Pipeline com Continuous Delivery
Pipeline usando Continuous Delivery

Na figura acima quase todo o processo é automatizado, exceto o deploy em produção. Isso acontece porque em algumas empresas existe o CAB (change approval board). Este time é responsável por aprovar ou não um novo deploy em produção, e é justamente aqui onde começamos falar sobre Continuous Deployment.

Continuous Deployment

Continuous Deployment significa que qualquer alteração feita em seu software, seja ela corretiva, evolutiva ou melhoria, será integrada, testada, compilada e se passar por todos os testes unitários e de integração, será implantada diretamente em produção sem intervenção humana!

Essa abordagem depende extremamente da qualidade dos testes automatizados pois serão estes que irão dizer se o software pode ou não entrar em produção.

Pipeline usando Continuous Deployment
Pipeline usando Continuous Deployment

Continuous Delivery e Deployment na vida real

Seu cliente reportou que os usuários do e-commerce estão recebendo uma mensagem de erro aleatória que afeta diretamente o processo de compras no portal, este problema precisa ser corrigido o mais rápido possível pois estamos em Black Friday!

O time de desenvolvimento recebe este feedback e para simular o erro precisa fazer o deploy em um ambiente interno similar ao de produção, isso precisa acontecer rápido!

É acionado um deploy com base na release de produção, os testes automatizados são executados com sucesso e a aplicação é implantada no ambiente interno sem intervenção humana. Isso é o que chamamos de Continuous Delivery!

Em seguida, o erro é rapidamente identificado, corrigido e um novo deploy automático é acionado, mas agora em produção. Sim! Acabamos de fazer um Continuous Deployment!

Continuous Deployment é o resultado natural de um Continuous Delivery bem feito!

Conclusão

A diferença entre Continuous Delivery e Continuous Deployment está na forma como entregamos nosso software em produção. Na primeira abordagem o deploy é feito de forma manual dependendo de uma aprovação, já na segunda abordagem o deploy é feito diretamente em produção, de forma continua e sem intervenção humana.

É importante dizer que em ambos os casos é mandatório um alto nível de automação e 100% do código coberto por testes automatizados.

Até o próximo post! 

Faça parte da minha rede: www.linkedin.com/in/eduardofrancellino

Como instalar o Docker no MacOS – 2021

Docker é uma tecnologia que permite rodar aplicações de forma muito rápida, utilizando pouquíssimo recurso computacional (CPU, Memória e Disco).

No catálogo de images Docker você vai encontrar uma grande variedade de aplicativos prontinhos, de banco de dados até gerenciados de conteúdo como o WordPress.

Neste artigo você vai aprender como instalar o docker e rodar um servidor HTTP Nginx em seu macOS!

Passo 1 – Download do instalador

Baixe a versão compatível com o processador do seu Mac:

Para descobrir qual o chip instalado em seu Mac é bem fácil: Navegue até o menu Apple () no canto da tela, selecione “Sobre Este Mac”. Você verá o processador usado, exemplo: 2,3 GHz Dual-Core Intel Core i5.

Como ver o processador no Mac

 Passo 2 – Instalando e rodando o Docker

  1. Clique duas vezes em Docker.dmg e em seguida mova o Docker.app para o diretório Aplicações



  2. Abra o Finder (Option + Command + Space), navegue até o diretório Applications e clique duas vezes em Docker.App:


  3. O ícone (whale menu) vai aparece em sua barra de status, clique nele e navegue até About Docker para ver se você está com a última versão.



  4. Parabéns, o Docker está rodando em sua máquina!

Passo 3 – Testando a instalação

Para validar sua instalação vamos rodar um servidor HTTP usando o docker!

  1. Abra um terminal e execute o seguinte comando:

    docker run –name http-server -d -p 8080:80 nginx:latest

  2. Abra seu browser e navegue no endereço: http://localhost:8080

Agora você pode rodar aplicações prontinhas de forma muito fácil em seu macOS! Até o próximo post! 

Faça parte da minha rede: www.linkedin.com/in/eduardofrancellino

Multicloud, a computação em nuvem com vários sabores!

Multicloud, a computação em nuvem com vários sabores!

A computação em nuvem possibilita entregar inovação de forma muito mais rápida devido à capacidade em fornecer infraestrutura de forma ágil, escalável e gerenciada. Cada provedor de nuvem possui seu portfólio, sua tecnologia e seus parceiros, recursos prontos para serem utilizados na construção de uma aplicação de negócio. Entretanto, usar tecnologia de um único fornecedor pode criar o que chamamos de “vendor lock-in”. Como fazer para uma tecnologia ou fornecedor não se tornar um limitador para o negócio de uma empresa?

Neste artigo vou apresentar os benefícios da abordagem Multicloud, por onde começar, os principais desafios e como endereçá-los.

O que é Multicloud?

Um ambiente Multicloud é aquele onde uma empresa utiliza vários provedores de nuvem para resolver um problema de negócio. Por exemplo: O provedor de nuvem A é muito bom em Inteligência Artificial, mas o provedor de nuvem B tem uma oferta NoSQL em SaaS muito madura, enquanto o provedor de nuvem C tem um custo-benefício bem melhor para um determinado serviço. Neste exemplo estou usando a melhor tecnologia e serviço disponível em cada provedor para atender os requisitos técnicos e de negócio da minha aplicação, isso é Multicloud!

Por onde começar?

O primeiro passo está na forma como desenvolvemos nossas aplicações e mais importante do que uma arquitetura moderna, cloud native, o uso padrões abertos e tecnologias open source permitem que sua aplicação seja “portável” para qualquer provedor de nuvem ou serviço que esteja em conformidade a este modelo.

Alguns serviços em nuvem como o IBM IKS Services já estão em conformidade com as diretrizes da Cloud Native Computing Foundation (CNCF), isto significa que este serviço passou por uma série de testes e revisões e suas aplicações, serviços e configurações, podem ser “deployadas” em outro provedor de nuvem CNCF compliant com pouco ou nenhum ajuste – CNCF é uma organização sem fins lucrativos que define as diretrizes para que um projeto seja caracterizado como open source e vendor-neutral.

Trabalhar com vários sabores de nuvem também exige um certo nível de conhecimento operacional de cada fornecedor, isso acontece porque o processo de criação de uma infraestrutura muda de nuvem para nuvem. Para minimizar a dependência de profissionais “multi nuvem” é essencial o uso de infraestrutura como código (IaC).

Automatizar a criação de ambientes e o deploy de aplicações reduz a quantidade de tarefas repetitivas e possíveis erros humanos. Também é muito comum nesta abordagem criar um catálogo com arquiteturas de referência e permitir que os times criem sua infraestrutura, este caso de uso pode ser aplicado em qualquer nuvem, privada ou pública.

Infraestrutura criada! E agora?

Usar uma plataforma para a Gestão Centralizada de Ambientes Multicloud é outra capacidade que não podemos abrir mão! Para um Administrador / SRE / Cloud Admin é importante ter acesso rápido à informação sem precisar acessar o painel da nuvem A, B ou C. Essa plataforma deve prover um painel com acesso rápido aos recursos gerenciados em cada nuvem, sua disponibilidade, tendências de custo, principais eventos, últimos incidentes, além de permitir gerenciar o ciclo de vida de aplicações, serviços, plataforma e infraestrutura, dentro ou fora de casa (nuvem privada ou pública):

No alt text provided for this image

Multicloud é uma tendência?

Sim! Mesmo com os desafios a abordagem Multicloud vem crescendo dia a dia nas empresas, reduzindo barreiras tecnológicas, financeiras e acelerando o processo de inovação e transformação digital. É bem provável que você ou sua empresa já trabalhe com mais de um provedor de nuvem e criar uma fundação baseada em alguns conceitos vistos aqui irá ajudá-lo a escalar todo potencial dessa abordagem. Além da transformação tecnológica também existe a transformação cultural, mas como toda nova abordagem pode ser adotada de forma gradual e sempre com o foco na entrega de valor.

Até o próximo post!

Faça parte da minha rede: www.linkedin.com/in/eduardofrancellino