Um novo desafio: DevOps

Lucas Just Meller
Aurum Tech
Published in
4 min readSep 27, 2018

--

INTRODUÇÃO

Em janeiro de 2018 recebi um convite um tanto quanto inesperado na Aurum: iniciar uma equipe de DevOps. Faço parte do time Aurum desde 2011 quando iniciei como estagiário e me tornei programador, e de todos os desafios propostos e encarados, esse foi e está sendo o mais interessante e estimulante. Neste post vou contar um pouco sobre os desafios, os objetivos alcançados e o que planejamos para o futuro.

O CENÁRIO

Cerca de 25 microserviços, 500 mil processos jurídicos sendo monitorados em busca de novas atualizações, 6,5 milhões de andamentos salvos no mês de janeiro de 2018. Essa arquitetura era orquestrada pelo Kubernetes em um cluster na AWS, não possuindo nenhuma ferramenta de deploy contínuo. Além disso, não era possível visualizar e acompanhar os recursos de máquina utilizados por cada microserviço.

Outro fator importante que contribuiu para a alocação de um profissional dedicado nessa função de DevOps, foi para realizar a migração do cluster da AWS para a Google. Entre os motivos da migração estavam a redução de custos e a unificação do provedor de infraestrutura em nuvem, visto que outros produtos da Aurum já utilizavam esta plataforma. Além disso, a plataforma da Google ainda oferece o Stackdriver sem custos adicionais, já integrando ao cluster uma ferramenta de monitoramento, relatório de erros e logs.

MÃOS À OBRA

Afim de entender as necessidades de cada microserviço, realizamos vários testes utilizando o Minikube, ferramenta que possibilita a criação de um cluster Kubernetes na máquina local. O Minikube também foi essencial no processo de aprendizagem de várias tecnologias, como o próprio Kubernetes e Docker, facilitando também na criação e ajustes dos templates com o Helm.

Com a implantação do novo cluster na Google Cloud Plataform, e com a monitoria de recursos de CPU e memória adicionados ao Stackdriver, foi possível obter uma redução de custos de 30%. A maioria dos serviços puderam ter seus recursos alocados reduzidos, assim como o número de réplicas dos mesmos. Com o novo cluster funcionando, começamos a trabalhar com o intuito de facilitar o deploy dos microserviços para a equipe de desenvolvedores.

A ferramenta escolhida para realizar o deploy contínuo foi o Drone. Por ser uma ferramenta de código aberto, diversos plugins estão disponíveis, entre eles um plugin que possibilita a criação e armazenamento das imagens Docker no Google Container Registry. Todo o fluxo é configurado em um arquivo .drone.yaml, que fica dentro do repositório de cada serviço. Além disso é possível realizar a rotina de testes e informar via Slack o sucesso ou falha de cada fluxo. Com isso, os desenvolvedores podem abstrair o deploy de suas rotinas. Em média quinze deploys são realizados diariamente apenas pela equipe de robôs da Aurum.

BENCHMARKING

Uma ação muito importante foi a realização de visitas em outras empresas que já possuiam equipes mais desenvolvidas de DevOps. Fomos muito bem recebidos na Resultados Digitais e Involves, ambas as equipes nos apresentaram suas tecnologias, sucessos e também as dores que ainda enfrentam. O bate papo que tivemos foi de extrema importância para validarmos as tecnologias utilizadas, fluxo de trabalho e também debater sobre a disseminação da cultura DevOps entre os times.

MOMENTO ATUAL

No mês de setembro de 2018 alcançamos a marca de 1 milhão de processos monitorados e 14,3 milhões de andamentos salvos só no mês de agosto do mesmo ano. Apesar do aumento significativo de demanda os custos não sofreram grandes mudanças, muito disso pelo fato da constante melhora e refatoração por parte dos desenvolvedores na performance dos microserviços. Deve-se adicionar também o monitoramento dos recursos utilizados e também a identificação de erros via Stackdriver Error Reporting.

Evoluímos também na parte cultural, os desenvolvedores atualmente possuem mais informações de desempenho dos serviços que desenvolvem, e conseguem realizar correções e melhorias mais rapidamente. A cada semana que passa, a colaboração entre as equipes aumenta, não apenas os problemas são apresentados, mas também ideias e propostas de melhorias.

TRABALHOS FUTUROS

Seguimos com o objetivo de deixar para os desenvolvedores apenas a parte do planejamento e desenvolvimento. Por isso, no quarter que se iniciou nesta semana, devemos começar a nutrir nossos dashboards no Grafana com métricas cada vez mais úteis providas pelo Prometheus. Iremos aumentar também a cobertura de métricas baseadas na funcionalidade de cada microserviço, as quais serão úteis para identificação imediata de problemas. Combinado a isso, planejamos criar um gerenciamento de alertas, para que os envolvidos possam agir o mais rápido possível com foco direto no problema.

Deixo meu agradecimento pela confiança passada para mim por parte de toda a equipe de tecnologia, que continua diariamente me fornecendo todo o suporte necessário.

--

--