Entendendo a CI hospedada na nuvem

A computação em nuvem teve um enorme impacto no desenvolvimento de software. Aplicações e serviços nativos da nuvem, projetados para aproveitar a infraestrutura escalável e hospedada na nuvem, são cada vez mais comuns.

A CI hospedada na nuvem amplia os benefícios da infraestrutura hospedada na nuvem para o processo de criação, teste e implementação do software.

Se você é novo na CI/CD ou já tem uma configuração local, esta página te ajudará a entender como a CI/CD hospedada na nuvem pode trazer benefícios.

Explicação da CI na nuvem

A integração, entrega e implantação contínuas tornam o lançamento de software para seus usuários mais rápido e confiável. Cada vez que você faz uma alteração na sua base de código, a CI/CD submete seu software a uma série de etapas automatizadas para verificar se ele funciona conforme o esperado. Esse sistema reduz o tempo entre o desenvolvimento e o lançamento e minimiza o número de bugs na produção, além de oferecer uma série de outros benefícios.

Embora a mudança de um processo manual para a CI/CD automatizada economize tempo e esforço, ela também exige mais da sua infraestrutura. Em vez de implantar uma nova versão do seu produto em ambientes de teste e preparação a cada poucas semanas ou meses, a CI/CD significa que você está testando o código mais recente várias vezes por dia ou mais.

Quanto mais pessoas trabalharem na mesma base de código e contribuírem com alterações, maior será a frequência com que o código será submetido a esse processo automatizado de criação, teste e implantação. Se você estiver hospedando seu processo de CI/CD em seus próprios servidores, o número de servidores disponíveis logo se tornará o fator limitante. Durante períodos de alta demanda, como quando as equipes estão trabalhando em uma correção crítica ou finalizando recursos para um lançamento, você pode descobrir que sua infraestrutura interna de CI/CD se torna um gargalo.

Nesses cenários, hospedar seu processo de CI/CD na nuvem pode ajudar. A CI na nuvem pode envolver a configuração de seus pipelines para serem executados em uma infraestrutura hospedada na nuvem ou o uso de um serviço de CI/CD baseado na nuvem totalmente gerenciado.

Ambas as opções permitem que você aproveite a escalabilidade da computação na nuvem. Em vez de tentar encontrar um equilíbrio entre ter capacidade suficiente em períodos de alta demanda e o custo de servidores ociosos, você pode dimensionar seu farm de compilações conforme necessário.

Os benefícios da CI hospedada na nuvem

Hospedar a CI/CD na nuvem expande seus recursos sob demanda e pode tornar seus processos mais robustos, reduzir custos de manutenção e facilitar o desenvolvimento nativo da nuvem.

Simplifique seu fluxo de trabalho com a infraestrutura como código (IaC)

Com a infraestrutura hospedada na nuvem, a configuração de ambientes com scripts é a norma. Ao colocar a configuração da infraestrutura no código, você garante que cada ambiente de compilação e teste seja o mesmo. Esse processo também possibilita colocar mais infraestrutura online quando você precisar dela.

Assim como o software em desenvolvimento, a própria infraestrutura pode ser submetida a um pipeline de CI/CD para garantir que funcione conforme o esperado. Essa etapa permite que as alterações sejam revertidas facilmente.

Aproveite ao máximo a conteinerização

Se você está desenvolvendo um aplicativo nativo da nuvem, há uma boa chance de estar usando contêineres. Com contêineres, as dependências do ambiente e os detalhes de configuração são empacotados com o software em um único artefato, que pode ser implantado em qualquer máquina com o runtime do contêiner.

Ferramentas de orquestração de contêineres, como o Kubernetes, foram desenvolvidas para facilitar o trabalho com um grande número de contêineres. Eles automatizam tarefas como implementações, gerenciamento e dimensionamento.

O uso de contêineres em um fluxo de trabalho de CI/CD torna mais simples a implantação da compilação mais recente em diferentes estágios do pipeline. O artefato de compilação é uma imagem de contêiner que pode ser implantada de forma consistente em cada ambiente de teste antes de ser liberada para a produção.

Com a CI/CD na nuvem, os contêineres fazem uso eficiente dos recursos de computação e permitem que você aproveite as ferramentas de automação. É possível aumentar a capacidade quando a demanda é alta, mas economizar nos custos eliminando os contêineres e liberando a infraestrutura subjacente quando a demanda é menor.

Livre-se do incômodo da manutenção do servidor

Mover seu processo de CI/CD para a nuvem significa que seu farm de compilações está hospedado em máquinas virtuais. Se você precisar de mais capacidade, basta configurá-la: a aquisição, a instalação e o gerenciamento do hardware físico não são mais coisas com as quais você precisa lidar.

Esse descarregamento libera a sua equipe para se concentrar na otimização dos processos de pipeline e em mantê-los seguros. Como o custo é um fator de tempo e de capacidade de processamento, vale a pena reservar um tempo para paralelizar as tarefas sempre que possível - você obterá resultados para seus desenvolvedores mais rapidamente do que se menos máquinas forem usadas durante um período mais longo.

Mantenha seu caminho de lançamento aberto e pronto

Um processo de CI/CD é um ativo essencial para qualquer equipe de desenvolvimento de software. É o mecanismo para liberar atualizações de software para seus usuários. Hospedar esse processo na nuvem reduz a probabilidade de o caminho para a liberação ficar indisponível devido a uma interrupção inesperada. Embora esse nível de resiliência possa parecer um luxo em um dia normal, ele rapidamente se torna um requisito quando um bug crítico é descoberto e uma correção urgente precisa ser implementada.

Um processo de CI/CD hospedado na nuvem também pode facilitar a adoção de uma estratégia de implementação azul/verde, graças à escalabilidade dos recursos da nuvem. Com uma abordagem azul/verde, você pode desviar rapidamente o tráfego para a versão anterior se surgir um problema na produção. Esse processo significa que você pode manter seu serviço enquanto trabalha em uma correção.

Considerações para hospedagem de CI em nuvem

Embora a CI/CD na nuvem possa oferecer benefícios significativos em termos de custo, escalabilidade e confiabilidade da infraestrutura, há algumas possíveis desvantagens e armadilhas a serem consideradas.

Arquitetura de sistemas

Se o seu produto for arquitetado com base em contêineres, a CI/CD hospedada na nuvem significa que você pode usar isso para agilizar a implementação em seus ambientes de teste. No entanto, se você estiver trabalhando com uma arquitetura monolítica, o empacotamento do software em contêineres pode ser um desafio.

É claro que contêineres não são essenciais para hospedagem na nuvem. Você ainda pode usar máquinas virtuais na infraestrutura de um provedor de nuvem para executar compilações e fornecer ambientes de pré-produção consistentes para testes. Dito isso, VMs consomem mais recursos do que contêineres, e os ambientes devem ser configurados separadamente.

Conhecimento e habilidades

Se você ainda não tem experiência em infraestrutura como código (IaC), os membros da sua equipe precisarão de tempo para melhorar suas habilidades ou você precisará considerar a possibilidade de trazer esse conhecimento.

No entanto, a experiência de trabalho com tecnologias de nuvem é uma habilidade desejável. Dar às suas equipes a oportunidade de desenvolver essas habilidades e usar a tecnologia mais recente pode beneficiar a retenção e a contratação de pessoal.

Custo

Na nuvem, tempo é dinheiro - você não quer pagar para que os recursos de computação fiquem ociosos. Para que a hospedagem na nuvem seja econômica, você precisa usá-la de maneira eficiente. Isso significa aproveitar ferramentas que monitoram o uso e liberar instâncias ociosas depois de um período de tempo de inatividade, ou implementar essa lógica você mesmo. A última opção pode exigir habilidades que sua organização ainda não possui, então vale a pena investigar e comparar as alternativas.

Segurança

A segurança sempre foi uma preocupação quando se trata de hospedar dados e serviços na nuvem. Para algumas empresas, a simples ideia de ter um software crítico localizado num sistema de propriedade de terceiros é impraticável. No entanto, muitas organizações agora usam nuvens públicas para hospedar seus serviços em tempo real e pipelines de implantação, desde repositórios de controle de origem até servidores de CI e ambientes de teste.

A identificação de possíveis vetores de ataque, a criação de proteções em seu processo de CI/CD e a implementação do controle de acesso são essenciais para reduzir os riscos apresentados por usuários mal-intencionados.

Abordagens híbridas

Embora a infraestrutura como código (IaC), os contêineres e a orquestração de contêineres estejam enraizados na tecnologia de nuvem, eles também podem ser integrados às configurações de CI/CD usando nuvens privadas ou um híbrido de infraestrutura on-premises e hospedada na nuvem.

Por exemplo, você pode optar por usar a infraestrutura hospedada na nuvem para uma parte do seu processo, como a execução de testes de desempenho, e manter o restante no local.

Essa abordagem híbrida oferece várias vantagens:

  • Se a sua organização estiver planejando fazer a transição para a infraestrutura hospedada na nuvem no futuro, a adoção de ferramentas nativas da nuvem permitirá que você desenvolva conhecimento antecipadamente e facilite a transição.
  • Com o IaC, a atualização de ambientes entre as execuções de teste é muito mais rápida, pois você só precisa executar um script.
  • Codificar a criação dos ambientes também oferece consistência, para que você possa garantir a paridade entre a configuração dos ambientes de produção e de pré-produção, independente de visar a segurança, o desempenho ou testes da interface do usuário, ou ainda sandboxes para equipes de suporte e vendas.
  • Ao manter os arquivos de configuração da infraestrutura no controle de origem, a equipe tem uma trilha de auditoria de quais alterações foram introduzidas e quando, o que pode simplificar a depuração de problemas no ambiente.

Como o TeamCity pode ajudar

Com o TeamCity, você pode escolher exatamente quanto do seu processo de CI/CD deseja executar na nuvem.

O TeamCity On-Premises oferece a flexibilidade de hospedar seu servidor de CI e seus agentes de compilação on-premises ou na nuvem. Se você quiser hospedar todas as suas tarefas de compilação, teste e implantação na nuvem ou expandir seu farm de compilações automaticamente quando a demanda aumentar, as integrações nativas do TeamCity com os principais provedores de nuvem fornecem toda a funcionalidade de que você pode precisar.

O TeamCity Cloud oferece um servidor de CI gerenciado, para que você possa se concentrar em simplificar seu processo de criação, teste e implantação sem precisar manter nenhuma infraestrutura. A opção de usar agentes de compilação hospedados pela JetBrains e suas próprias máquinas de compilação hospedadas na nuvem ou no local lhe dá a liberdade de criar um farm de compilações adequado para você.

O TeamCity Pipelines foi projetado para tornar a CI/CD ainda mais eficiente com uma abordagem flexível e nativa da nuvem. Você pode criar, gerenciar e otimizar facilmente seus pipelines usando um editor visual de arrastar e soltar ou YAML, o que for mais adequado ao seu fluxo de trabalho. Com suporte para agentes hospedados na nuvem e auto-hospedados, o TeamCity Pipelines permite que você dimensione conforme necessário, garantindo que seus processos de compilação, teste e implantação sejam os mais perfeitos e automatizados possíveis.