DevOps para ambiente de produção garante autoscalling e traz mudança cultural

Sobre a IMS

A IMS, filial da Sony Pictures Television Networks, é a companhia líder em comunicação e mercado digital que cria alianças com negócios de rápido desenvolvimento que buscam ampliar seus mercados. Dessa forma, ajuda marcas anunciantes a alcançarem novos níveis de atração e crescerem por meio de um ecossistema exclusivo de alianças comerciais. Além disso, possui soluções criativas e de conteúdo, serviços de administração e investimento em meios digitais.

O desafio

Conhecido como One, a IMS criou um sistema para controlar a venda e o retorno de espaços publicitários em diversos sites e mídias digitais. Com 3 aplicações, 16 micro serviços e sites, as equipes de desenvolvimento encontravam problemas em escalabilidade e deploy das aplicações, também dificuldades com o banco de dados que apresentava problemas de lentidão e demandas frequentes por aumento de capacidade.

Assim, os desenvolvedores não possuíam um ambiente padronizado de desenvolvimento e, constantemente, as aplicações não funcionavam em QA ou Produção devido à ausência de bibliotecas que estavam presentes nos computadores dos desenvolvedores e que não eram declaradas nos pacotes de deploy a produção e QA.

A Solução

Após o entendimento do desafio da IMS, a NubeliU Logicalis foi escolhida como parceira de tecnologia para implementação de uma estrutura que atendesse os requisitos da empresa. Para isso, foi desenvolvido uma solução baseada nos seguintes componentes:

• AWS Elastic Beanstalk como ambiente dos sistemas;
• AWS RDS;
• AWS Elasticache para controle de sessão de usuários;
• Gitlab para repositório remoto de código;
• Gitlab-CI para controle do pipeline DevOps;
• Logentries para armazenamento e consulta de logs;
• Docker.

Como primeira etapa, foram desenvolvidas as definições no Terraform para a criação da infraestrutura de VPC e subnets, divididas em duas grandes VPCs distintas que não possuíam comunicação uma com a outra para os ambientes de QA e Produção.

Na segunda etapa, foi criado os Dockerfile para cada uma das aplicações, otimizados para garantir um deploy rápido, uma vez que a imagem do container é criada dentro de cada instância EC2 lançada pelo Elastic Beanstalk.

Em seguida, foram criadas as aplicações e ambientes do AWS Elastic Beanstalk e suas definições e customizações, armazenadas junto com o código da aplicação e impondo os processos de CI/CD no Gitlab-CI. Além disso, foram criadas várias imagens customizadas, dado que havia falta de padronização do framework de desenvolvimento e aumento significativo no tempo de deploy da aplicação, para serem as bases de cada um dos componentes, podendo assim apresentar uma imagem contendo as ferramentas de linha de comando da AWS, utilizadas durante o processo de integração contínua.

Cada ambiente do AWS Elastic Beanstalk possuí seu próprio ELB, que permite acessos HTTP e HTTPS externos. Os acessos HTTP são redirecionados a HTTPS por customizações do NginX distribuído nas instâncias Amazon Linux do Elastic Beanstalk. Os certificados digitais para HTTPS, são controlados pelo ACM e validados por DNS. O DNS do cliente não se encontra no Route53.

Alguns sistemas possuem seus websites totalmente armazenados no S3 e distribuídos pelo Cloudfront. Os websites estáticos são construídos também pelo processo de CI/CD e enviados ao S3. As VPCs e subnets, AWS RDS para a configuração, operação e escalabilidade dos bancos da dados na nuvem. AWS Elasticache e Security Groups são gerenciados por declarações no Terraform. Como serviço de suporte, os ambientes são avaliados mensalmente e, caso necessário, suas versões são atualizadas.

Além disso, para definir um ambiente de desenvolvimento baseado em Docker, a NubeliU Logicalis trabalhou em conjunto aos desenvolvedores para definir a ferramenta docker-compose e a melhor utilização do sistema de versionamento de código, Gitlab, seguindo as boas práticas do processo conhecido como Gitflow.
Como serviço de suporte, os ambientes são avaliados mensalmente pela Logicalis, pelo sistema MaaS, e, caso necessário, suas versões são atualizadas. Dessa forma, a criação de novos ambientes e verificação de erros em deploys e na aplicação é responsabilidade da Logicalis, além de dar suporte aos desenvolvedores da IMS a seguirem melhores práticas de mercado para o gerenciamento de workflow do código.

Diagrama

Os benefícios


Com a solução proposta, o autoscalling, do AWS Elastic Beanstalk, permitiu que as aplicações da IMS suportassem a carga sazonal de acessos devido a eventos como Black Friday, que impulsionam as compras online, sem necessidade de se preparar uma infraestrutura ociosa para isso. Com a utilização do RDS a questão de escalabilidade foi resolvida, trazendo automação para o dimensionamento da capacidade do banco de dados de acordo com sua utilização. Também é possível replicar o banco de dados, criptografando dados críticos do ambiente de Q&A.

Assim, tendo em vista a adoção de serviços em nuvem da AWS, o time da Logicalis proporcionou ao cliente ambientes altamente disponíveis, seguros, confiáveis, uma vez que as melhores práticas do AWS IAM foram adotadas.

Além disso, houve uma mudança cultural no processo de versionamento de código e na forma como os desenvolvedores preparam as aplicações. Assim, o uso do mesmo ambiente de containers durante a fase de desenvolvimento evita que bibliotecas pré-existentes nos computadores dos desenvolvedores sejam esquecidas de serem referenciadas nas configurações de deploy. Houve também uma facilidade de deploy em um ambiente de QA, permitindo que testes automatizados sejam executados, garantindo um deploy em produção livre de erros. O projeto implementado pelo time da Logicalis proporcinou uma redução do custo estimado pelo cliente inicialmente, atingindo os propósitos iniciais.