Ambiente DevOps na cloud

Como montar um ambiente devops na cloud

Olá surinauta! Bem vindo a mais um post. Hoje vamos falar sobre como montar um ambiente DevOps na cloud e quais serviços utilizar.

Caso ainda não saiba das vantagens da cloud ou esteja em dúvida sobre qual provedor contratar, veja nosso post sobre qual provedor de cloud computing escolher. Veja como a Surittec pode te ajudar com serviços DevOps em https://surittec.com.br/devops.html.

O que é DevOps?

A palavra DevOps é uma junção de outras duas: desenvolvimento (Dev) e operação (Ops) de software. Com isso, não temos uma metodologia ou um framework de trabalho. Mas sim uma cultura organizacional onde o desenvolvimento para uma melhor execução do software é o foco de todo trabalho.

Primeiramente, todos os envolvidos devem estar comprometidos e se sentindo responsáveis pelo produto como um todo, e não partes dele. Características como código coletivo, responsabilidade, busca pela melhora, otimização, artefatos enxutos e objetividade são fundamentais.

DevOps não se qualifica pela adoção de uma ferramenta ou implementação de uma boa prática. Contudo, são algumas dessas adoções que fazem com que o processo possa fluir e entregar os objetivos esperados.

Vamos ver a seguir o que é importante para essa cultura na organização.

Boas práticas

Veja algumas das boas práticas a serem adotada quando se tem uma cultura DevOps:

  • Desenvolvimento Ágil – metodologias ágeis com desenvolvimento iterativo e incremental do software, entregando mais funcionalidades e em menos tempo;
  • Testes – testes unitários, de integração e de sistema identificam problemas mais cedo e reduzem os problemas de bugs na implementação;
  • Infraestrutura como Código – infraestrutura em scripts com todos requisitos necessários para a aplicação, padronizando e uniformizando o ambiente;
  • Integração/Entrega Contínua – repositórios de códigos para integrar os incrementos desenvolvidos, passando o resultado por uma série de validações e disponibilizando o código para ser implantado em qualquer ambiente;
  • Ambientes Isolados – ambientes de desenvolvimento, teste, homologação e produção totalmente isolados, impedindo que códigos não autorizados atuem em locais restritos;
  • Automações – tudo que é repetitivo deve ser automatizado, economizando tempo e liberando recursos que podem ser destinados a outras áreas;
  • Gestão de Incidentes – insumos para aprender com os erros sempre, apresentando uma melhoria nos produtos entregues aos seus usuários;
  • Monitoramento e Métricas – técnicas de coleta e análise de dados em tempo real, fornecendo uma maneira de reagir muito mais rápido a comportamentos indesejados.

O quadro abaixo, da Indmax, mostra uma forma interessante de como integrar algumas dessas boas práticas.

DevOps process

DevOps process

Ambiente devops na cloud

Como dito anteriormente, DevOps não se restringe ao uso de ferramentas. Pelo contrário, muitas práticas no dia-a-dia devem ser adotadas e a cultura adaptada para que se atinja um ambiente DevOps. Mas isso não quer dizer que ferramentas não ajudem nesse processo.

Para isso, vamos ver algumas partes do ciclo de vida do software que podem ser auxiliadas pelo uso de ferramentas na cloud.

Repositório de código

Atualmente existem vários plataformas provedoras de repositórios de código. GitHub, Bitbucket, GitLab e outros são algumas das principais plataformas de Git. Mas por que Git?

Porque o Git possui uma estrutura que recebe muito bem os processos de integração – CI – e entrega – CD – contínua. Todas essas plataformas são fáceis de serem integradas a processos CI e CD. Além disso, o modelo de arquitetura descentralizada do versionamento de código pelo Git é algo poderoso, leve e flexível para equipes de todos os tamanhos.

Os maiores provedores de cloud possuem serviços próprios para o versionamento de código por Git: AWS CodeCommit ou Cloud Source Repo.

Integração contínua

O processo de integração contínua envolve uma análise constante do código. Nesse sentido, os códigos versionados e promovidos ambientes específicos devem ser compiláveis e executáveis.

Mas de nada adianta ter um código compilável e executável apresentando vários bugs e drenando a experiência dos usuários. Consequentemente, deve-se construir testes que sejam automatizáveis e possam garantir o comportamento esperado do software.

A integração contínua pode ser implementada: diretamente em ferramentas de Git, em serviços do provedor cloud (AWS CodePipeline ou AWS CodeBuild) ou em softwares desenhados para isso (Jenkins, GitLab CI, TeamCity, Travis CI ou Bamboo).

Entrega contínua

A entrega contínua é um processo que estende e complementa o de integração contínua. Com isso, podemos tomar o ponto final da integração, o pacote compilado, testado e pronto para ser implantado, e implanta-lo.

Essa implantação deve ser feita de maneira automatizada, mas não necessariamente será disparada automaticamente. Isso depende do processo interno da empresa. Esse passo final será realizado em um ambiente pré acordado com o usuário, podendo ser até o de produção.

Normalmente, essa atividade é feita com auxílio de scripts ligados ao ambiente e servidor de aplicação do software. Atualizações de ambiente e do esquema do banco de dados podem ser necessárias nesse momento.

Alguns serviços cloud para isso são: AWS CodeDeploy e App Service.

Deploy

Um os princípios do DevOps é a continuidade do serviço. Nesse sentido, é importante que as versões sejam liberadas para os clientes, minimizando os impactos em sua usabilidade.

Algumas estratégias utilizadas para realizar o deploy são:

  • Aplicações sem alta disponibilidade (única instância com o software):
    • Único alvo: sem reversão do deploy, implantação gera downtime e sem aumento de custo;
  • Aplicações com alta disponibilidade (múltiplas instâncias com o software):
    • Todos de uma vez: sem reversão do deploy, implantação gera downtime e sem aumento de custo;
    • Mínimo em serviço: deploy pode ser revertido, implantação não gera downtime e sem aumento de custo. Mantém o mínimo de serviço necessário para manter a experiência do usuário;
    • Gradual: deploy pode ser revertido, implantação não gera downtime e sem aumento de custo. Implanta em um ritmo constante até atingir todo ambiente;
    • Blue/Green: deploy pode ser revertido, implantação não gera downtime e gera aumento de custo. Cria um novo ambiente e chaveia o direcionamento quando estiver funcional. Pode ser testado em paralelo.

Dessa maneira, suas equipes devem analisar o custo benefícios de cada uma e utilizar as ferramentas da maneira certa. Alguns serviços que facilitam a criação de ambientes para deploy em cloud são: Heroku, Elastic Beanstalk, App Engine e Cloud Services.

Métricas

Por último, toda aplicação disponibilizada deve ser monitorada e medida. Para que esses dados possam alimentar o processo de melhoria contínua, as aplicações devem ter métricas de infraestrutura e de usabilidade coletadas e analisadas.

Alguns serviços para coleta de métricas de infraestrutura são: CloudWatch, Stackdrive e Azure Monitor. Já para o nível de usabilidade do software, pode-se utilizar ferramentas como: ELKMixpanel, Hotjar e Inspectlet.

 

Gostou dessas dicas sobre como montar um ambiente devops na cloud? Tem outras dúvidas sobre o assunto? Deixe um comentário!

Para saber mais sobre nossos serviços, acesse: atmosfero.com ou surittec.com.br.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *