Este artigo foi publicado primeiramente no Hub Salvador.

Imagine um evento com milhares de pessoas em que o bar é incapaz de servir bebidas? Caos. É o tipo de situação em que um sistema precisa estar disponível o tempo todo. É o que acontece com a ZigPay, por exemplo, startup focada na experiência de compra e consumo em eventos e casas noturnas que lançamos aqui na Cubos em 2015.

Tomamos aqui diversas medidas para ter um ambiente auto-escalável e capaz de lidar com vários tipos de falha sem causar indisponibilidade. A estrutura que montamos se mostrou capaz de permitir que a equipe possa fazer uma correção de código em produção e ter essa mudança aplicada para todos os usuários em menos de 4 minutos, sem que ninguém note, mesmo em momentos de pico.

Tradicionalmente, o software é desenvolvido como um pacote que é construído, testado e entregue para ser colocado no ar “por outra pessoa”, como um passo separado do desenvolvimento. Com a forma de trabalho “DevOps”, esse processo é diferente. O que vale aqui são automação e visibilidade em primeiro lugar.

Estágios de implantação do DevOps

Nos estágios iniciais de uma boa implantação de DevOps para uma equipe de desenvolvimento, cria-se pipelines de integração e entrega contínua. Cada alteração feita pelo time no Git é testada (via código, não com testes manuais) e é aplicada em um ambiente para validação. A partir daí, pode ser promovida para ambientes produtivos em um clique, inclusive tratando de alterações em banco de dados sem intervenção humana.

Mas isso é o básico do DevOps. O próximo item chave a se implantar é o monitoramento da aplicação. Isso significa saber em tempo real quando algo não está funcionando bem ou quando algo está se degradando e vai deixar de funcionar bem no futuro próximo, como é comum com problemas de performance.

Envolve uma estratégia de alertas precisa, mas não excessiva. Afinal, alertas em excesso comprovadamente tendem a ser ignorados. Quando uma falha acontece em produção com um cliente, isso precisa chegar no time de desenvolvimento imediatamente para ser analisado e priorizado. Não deve vir por meio de um contato do próprio cliente.

Por fim, temos o estágio onde DevOps pode mostrar o seu completo benefício. Análises de segurança e performance podem ser feitas a todo momento, de forma contínua e coletando comparativos entre cada release. Falhas e cenários caóticos são efetivamente testados em produção, sem medo.

Ferramentas autocorretivas existem, por exemplo, para ativar planos de contingência quando necessário sem intervenção humana. Desde um novo deploy em novas máquinas até o redirecionamento de tráfego para outra região da Cloud.

Todo esse processo é trabalhado com um só objetivo: reduzir risco e aumentar a agilidade dos times. Dessa forma, é possível aplicar uma nova versão em produção mais de uma vez por dia sem se preocupar com a estabilidade do sistema.

Cada projeto tem sua complexidade e desafios

Para alcançar esses resultados, é preciso acompanhar a performance da aplicação otimizar pontos críticos, garantir segurança e cumprimento da LGPD e desenvolver pipelines ágeis e precisos para que os desenvolvedores possam ser mais produtivos.

Já atendemos projetos de complexidades variadas, cada um nos trazendo diferentes desafios de escalabilidade e performance. Sempre fizemos de forma que o desenvolvedor possa desempenhar seu trabalho de forma fluida ao mesmo tempo que a aplicação em si esteja estável e segura para o usuário final.

Ter especialistas dentro da sua empresa capazes de implantar tudo o que descrevi aqui pode parecer um sonho, porém o custo benefício não é tão atrativo. Afinal, é preciso um profissional de alta especialidade para desempenhar essas funções e a dedicação exclusiva poderia gerar momentos de ociosidade. Hoje esse é um processo que pode ser feito por uma empresa parceira, mantendo sua equipe eficiente e focada no que importa: entregar seu produto para seus usuários.


Quer saber como ajudamos startups a escalar? Conheça Cubos DevOps.