O blog da AWS

Agilizando a entrega de soluções através da implantação de processos de CI/CD na AWS

Por Filipe Almeida, Analista de Soluções em Nuvem da MyTec

 

Introdução e contexto

Na MyTec, Parceiro de Consultoria de nível Advanced, com a SDP de Amazon EC2 for Microsoft Windows, temos sempre a ambição de entregar soluções que facilitem as rotinas e os processo diários de nossos clientes. E foi isso justamente o que aconteceu em um deles, a Rock Content, com a implantação de processo de integração e entrega contínua.

A Rock Content é uma empresa líder global em marketing de conteúdo e recentemente adquiriu a IClips, empresa mineira focada na gestão de agencias de publicidade, e a ScribbleLive, canadense do mesmo setor, focada na entrega de produtos de conteúdo bastante similares ao que a própria Rock Content já entregava no Brasil e na América Latina. A Scribble possui um portfolio de clientes como RedBull, Cisco, FedEx, Dell, Reuters, Deloitte e American Express. Esses passos dados nos últimos meses possibilitarão que a Rock Content atenda marcas globais, apoiando-as no objetivo de expandir as suas estratégias para vários países e idiomas.

Toda essa expansão de negócios precisava ser acompanhada também por uma evolução tecnológica. Esse crescimento tecnológico deveria ser capaz de entregar soluções, que fossem sustentáveis no longo prazo, que acompanhassem os passos da empresa e proporcionassem com que eles usassem essas tecnologias para agilizar os processos de entrega de seus produtos.

No contexto de DevOps, entramos com o objetivo de cumprir essa missão. Implantar essa cultura, junto a outros Stakeholders e tech-leads da própria empresa que entraram no projeto, com o objetivo de ganharem agilidade na entrega de soluções, dentro de um custo que também fosse harmonioso com os seus planos.

Os desafios técnicos

Padronização

A primeira onda de mudanças esteve relacionada com a padronização da utilização dos serviços da AWS e das ferramentas de tecnologia utilizadas. Múltiplas ferramentas de CI, por exemplo, eram utilizadas por diferentes desenvolvedores. A mudança tinha que vir rapidamente, porém, sem causar um alto impacto no dia a dia e nas entregas em andamento dos desenvolvedores. Nossa primeira tarefa foi compreender o que cada uma dessas ferramentas entregava para quem as utilizava e porque tinham certa preferência pela ferramenta da sua escolha.

Solução

Levando em conta todas as funcionalidades necessárias para as cargas de trabalho na RockContent, conseguimos padronizar a utilização da ferramenta de CI usando o AWS CodeCommit. Como a nossa intenção e também dos tech-leads do projeto era manter toda a infraestrutura na AWS, a escolha por essa ferramenta fez ainda mais sentido.

Novas implementações

A segunda onda de mudanças foi relacionada a implementação de novas ferramentas da AWS que, de fato, iriam agilizar a entrega dos produtos da Rock Content pelo time de Dev. Todos os pipelines foram configurados em cima do próprio AWS CodePipeline, passando pelo AWS CodeBuild e utilizando como repositório de imagens de contêineres o próprio ECR.

A Rock não contava com elasticidade, escalabilidade nem alta disponibilidade em suas aplicações. A utilização do AWS Fargate proporcionou com que as aplicações se tornassem escaláveis e altamente disponíveis. Isso foi  um avanço considerável, principalmente devido à criticidade dessas aplicações e o alto impacto delas nos clientes finais que as utilizam.

O Resultado

Possuir um pipeline definido dentro da própria AWS também proporcionou uma entrega bem agilizada, reduzindo o deploy de aplicações e suas funcionalidades de algumas horas para alguns minutos.

A padronização das ferramentas e das arquiteturas dentro da AWS também possibilitou com que a gestão dos projetos fosse facilitada, reduzindo o tempo para controle dos ambientes, que anteriormente eram heterogêneos em termos de plataforma e ferramentas e, reduzindo também a possibilidade de ocorrência de erros nessa gestão. O monitoramento da saúde e a coleção de logs dessas ferramentas também foi bastante facilitado com a centralização dos pipelines na AWS.

 

Segue um desenho padrão de como ficou a arquitetura do cliente na AWS: