Reduzindo custos e melhorando sua infraestrutura com Cloud66
Tags: cloud66, rails, vue, devops
Published: 2023-08-08 14:04:33

Na essência de toda startup de tecnologia bem-sucedida, nós, os fundadores, precisamos encontrar alternativas para manter nossos negócios de pé, sendo viáveis, escaláveis e, mais importante do que nunca, financeiramente rentáveis.

**A [**abler**](https://abler.com.br) nunca caiu na armadilha do excesso de dinheiro de investidores**. Desde o primeiro dia, trabalhamos incansavelmente para alcançar mais com menos, buscando eficiência operacional, dado que não dispúnhamos dos recursos financeiros de outros players.

**Um dos nossos principais valores e um pilar central de nossa cultura é o "Crescimento sustentável"**.

Tenho certeza de que os fundadores e até mesmo alguns desenvolvedores que lerem este texto vão se identificar com os desafios que apresentarei a seguir. Continuem lendo!

**O contexto**:

A [**abler**](https://abler.com.br) é uma empresa brasileira que desenvolveu uma suíte de soluções SaaS para o mercado de Recursos Humanos (RH), mais especificamente, na vertical de Recrutamento e Seleção. Nossos clientes são auxiliados por meio de um software que facilita a publicação de vagas nos principais portais do Brasil, a busca por candidatos, avaliação de habilidades técnicas e comportamentais, entrevistas e contratações. Não realizamos os processos, apenas fornecemos as ferramentas para que a própria empresa o faça.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zo3ec484reb1rh68vqvv.png)


Desde o início da jornada, estabelecemos parcerias com várias plataformas de nuvem pública. Começamos com a AWS, aproveitando créditos do AWS Activate (USD 25K), e posteriormente migramos para o Google Cloud, utilizando créditos do Google for Startups (USD 50K). Em seguida, adotamos o Azure com créditos do Microsoft Founders Hub (USD 150K). Ao todo, obtivemos mais de USD 225K em créditos nos cinco anos de existência.

**Nesse ponto, gostaria de aproveitar para expressar publicamente nossa gratidão pela ajuda contínua desses parceiros**. Eles foram e continuam sendo essenciais em nossa trajetória. Sem eles, teríamos despendido milhares de dólares em servidores e serviços de tecnologia. Essa economia permitiu investir em nossa equipe, estrutura, marketing, vendas e, primordialmente, no aprimoramento do nosso produto.

**Os primeiros desafios**:

A cada nova concessão de créditos e a necessidade de migrar para outra plataforma de nuvem, nos deparamos com um desafio recorrente: **migrar nossa arquitetura tecnológica da maneira mais simples possível, evitando nos prender a fornecedores específicos e assegurando a estabilidade de nossos serviços sem prejudicar nossos clientes**.

Uma startup por natureza é marcada por incertezas constantes. Fazemos ajustes, melhorias, pivôs e, se necessário, nos adaptamos a novos parceiros.

Naquela época, em uma conversa com o Guizão, ([**Guilherme Santos**](https://www.linkedin.com/in/guilherme-lages-santos/), nosso antigo sócio e CTO), pensamos: "Precisamos utilizar ferramentas que garantam uma infraestrutura escalável para nossas ambições, permitindo migrações fáceis entre diferentes nuvens e que também seja eficaz e confiável para nossos clientes."

Desde o início, adotamos a seguinte pilha de tecnologia em nossos produtos:

- Um monólito em Ruby on Rails no backend;
- PostgreSQL como banco de dados relacional;
- ElasticSearch como banco de dados não relacional e serviço de busca;
- Redis Cluster + Sentinel para nossas filas do Sidekiq e armazenamento em cache;
- Vue.js com Nuxt no frontend (que foi introduzido recentemente após desmembrarmos nosso monólito em uma API que serve nossos front-ends).

Para gerenciar nossa infraestrutura, escolhemos o Kubernetes, que busca garantir a disponibilidade de nossos serviços 24/7/365. Começamos a usá-lo em 2018 e mantemos essa escolha até hoje, proporcionando aos nossos clientes um serviço de qualidade superior e confiabilidade excepcional.

É importante notar que a [**abler**](https://abler.com.br) atualmente atende a mais de **5,8 milhões de usuários em nosso produto** (crescendo aproximadamente 200 mil novos usuários por mês). Registramos mais de **9 milhões de acessos mensais**, publicamos cerca de **10 mil novas vagas por mês**, contamos com **350 empresas clientes** que já fizeram mais de **120 mil contratações** em nossa solução.

Para lidar com essa grande quantidade de acessos e usuários, nossa infraestrutura precisa garantir um tempo de atividade de, pelo menos, 99,7% para nossos clientes e candidatos.

**Os próximos desafios:**

Após a saída do Guizão, assumi um novo desafio interno: liderar a equipe de tecnologia da [**abler**](https://abler.com.br).

Antes de embarcar na jornada empreendedora, minha carreira sempre esteve ligada à tecnologia, especialmente em infraestrutura, serviços e segurança da informação. Nunca fui um desenvolvedor, muito menos um "bom dev", mas me considero autodidata e determinado o suficiente para abraçar esse novo desafio.

À medida que a empresa se solidifica, o uso de nossos produtos cresce e o número de desenvolvedores na equipe aumenta, percebemos a necessidade de aprimorar a maneira como gerenciamos nossos serviços, já que nossa equipe tinha conhecimento básico em Kubernetes.

Até mesmo eu, com experiência em infraestrutura por tanto tempo (ou DevOps, como tem sido chamado nos últimos tempos), acredito que o Kubernetes é um tanto complexo para uma empresa do nosso porte.

Enquanto ter uma equipe composta por pessoas de DevOps ao lado de desenvolvedores facilita muitas coisas, essa não é nossa realidade. Trazer um especialista em DevOps não está em nossos planos para os próximos meses.

Acredito que as coisas poderiam ser mais simples, permitindo que nossos desenvolvedores se concentrem em entregar um produto de qualidade superior, sem se preocupar tanto com a infraestrutura.

**O começo de uma paixão:**

Após assumir a equipe, comecei a me aprofundar no assunto e aprender sobre o Kubernetes a partir do zero. No começo, confesso que não sabia praticamente nada sobre essa ferramenta. Porém, fiquei fascinado. Ela é uma solução poderosa para alguém acostumado a configurar tudo manualmente.

Entretanto, à medida que mergulhei nos detalhes, percebi que estava usando um canhão para matar uma formiga. A forma como utilizávamos as versões Kubernetes das nuvens (começamos com o Azure AKS e já havíamos experimentado o Google GKE) estava se mostrando bastante confusa para a equipe. Isso os obrigaria a interromper o desenvolvimento de funcionalidades para os clientes a fim de aprender o sistema do zero, assim como eu estava fazendo.

Percebi que essa não era uma opção viável. Com nossa estratégia de negócios, não faria sentido sobrecarregar a equipe com preocupações de infraestrutura neste momento, pois isso não contribuiria para os desafios que temos pela frente em relação aos produtos da [**abler**](https://abler.com.br).

Por isso, parti em busca de uma solução que oferecesse as mesmas funcionalidades do Kubernetes, mas que não nos amarrasse a um único fornecedor. Em outras palavras, uma solução que nos permitisse ter controle sobre os servidores por trás de um orquestrador de contêineres.

Testei o Docker Swarm, o Nomad da Hashicorp, o OpenShift, o Rancher e o Apache Mesos. Todos eles me agradaram, porém, mesmo assim, percebi que nossa equipe teria que passar por uma curva de aprendizado significativa.

Foi quando encontrei uma solução chamada ["**Cloud66**"](https://cloud66.com). E digo isso sinceramente, foi amor à primeira vista.

**Aonde estamos atualmente:**

O [**Cloud66**](https://cloud66.com) é uma solução abrangente que engloba diversas funcionalidades, mas vou focar naquilo que mais impactou a [**abler**](https://abler.com.br): a migração dos serviços do Azure AKS para um Kubernetes auto-gerenciado, tornando o trabalho diário dos desenvolvedores mais fluido e simplificando a manutenção de toda a infraestrutura.

O principal benefício do [**Cloud66**](https://cloud66.com) é que eles oferecem "tudo o que você precisa para executar seu código em qualquer nuvem."


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t3kgja3h41orytvlc639.png)


E realmente, eles oferecem tudo o que precisamos. Estamos utilizando a ferramenta "Maestro" do Cloud66, que é essencialmente um Kubernetes com uma interface gráfica incrível, contendo todos os recursos necessários para executar nossos serviços de maneira fácil e eficiente, sem ficar atrelado a uma nuvem específica. Essa abordagem nos permite implementar o Kubernetes em QUALQUER provedor de nuvem de nossa escolha, com um esforço mínimo em termos de gestão e manutenção.

Em todas as minhas decisões, peso os prós e contras. No entanto, como todo empreendedor, estou disposto a correr alguns riscos. E, para mim, os benefícios do Cloud66 superaram amplamente as desvantagens.

Dado que este texto não se destina a ser um guia passo a passo, mas sim uma visão geral, irei fornecer uma descrição simplificada de como usar o Cloud66 como um gerenciador de Kubernetes:

1. Você cria suas máquinas virtuais no provedor de nuvem de sua escolha (eles têm integração nativa com AWS, Azure, Digital Ocean, Hetzner, Linode, OVH, Packet, Vultr, Latitude.sh). No entanto, você também pode usar um script próprio em qualquer VM/VPS com Ubuntu, e eles cuidarão da administração desse servidor.
 
2. Uma vez configuradas suas máquinas/provedor de nuvem, você pode criar um cluster Kubernetes com quantos nós desejar, especificando quantos e quais nós serão "Masters" ou "Workers" (O Cloud66 cobra com base no número de servidores que você tem, portanto, fique atento a isso. No entanto, acredito que o custo seja justificável em comparação com a contratação de um profissional de DevOps).

3. Após criar seu cluster, você começa a configurar suas aplicações, utilizando imagens Docker ou repositórios Git (inclusive, eles oferecem uma ferramenta de CI/CD para fazer os builds, permitindo que você não precise se preocupar com nada);

4. Concluída a configuração necessária para criar e construir sua aplicação, você expõe as portas de seus serviços, configura a persistência de dados (caso necessário), ajusta o domínio, o tráfego e o SSL, e pronto! Seu serviço estará online =)

Vale destacar que, embora haja nuances em cada um desses passos, essa é a abordagem geral para criar e disponibilizar sua aplicação.

Vejo o Cloud66 como uma ferramenta muito semelhante a outras Plataformas como Serviço (PaaS) que já testei, como o Fly.io e o Heroku.

No entanto, há uma vantagem que considero imensa: **a capacidade de executar suas aplicações de forma fácil no provedor de nuvem de sua escolha. Você não fica restrito a uma nuvem específica, desfrutando da flexibilidade de usar outros servidores e serviços.** 

Ou seja, se sua empresa ganhar créditos em outra Cloud Provider, é mais fácil para migrar utilizando apenas o Cloud66. Mas isso é assunto para um outro post mais detalhado.

Além disso, o Cloud66 oferece serviços de banco de dados, cache e servidores de arquivos autogerenciados (Postgres, Mysql, Mongodb, Elasticsearch, Redis, GlusterFS etc.), todos com backup automatizado e manutenção simplificada. Dependendo do tamanho de sua equipe e da complexidade de suas aplicações, você provavelmente não precisará de um especialista em DevOps em sua equipe.

**Principais resultados após a migração para o Cloud66:**

Embora estejamos apenas começando a usar esta ferramenta, já podemos compartilhar alguns resultados positivos:

- Conseguimos garantir um **uptime de 99,9%** para nossas aplicações;
- **Reduzimos nossos custos em mais de ~R$ 25.000 por ano** em consultorias pontuais de infraestrutura;
- Eliminamos a necessidade de contratar um profissional de DevOps **(economizando cerca de ~R$ 150.000/ano)** e investiremos essa economia em nosso produto;
- **Reduzimos nossos custos em mais de ~R$ 5.000 por ano** com Docker Hub, ferramentas de CI/CD e monitoramento de pods Kubernetes;
- **Diminuímos nosso gasto total com infraestrutura em 40%**, já que agora podemos migrar para qualquer provedor que desejarmos, e **acreditamos que podemos reduzir ainda mais 20% ao migrar para servidores bare metal em vez de VPS**, melhorando a qualidade dos serviços.

Além disso, estamos prestes a migrar nossos serviços de banco de dados PostgreSQL da Azure para o Cloud66, o que reduzirá em 50% nossos custos com banco de dados.

Além de tudo isso, os desenvolvedores de nossa equipe estão felizes em saber que agora podem se concentrar no "núcleo" de seu trabalho, ou seja, em entregar cada vez mais valor aos nossos clientes, sem a preocupação constante com a infraestrutura.

Essa mudança marca um novo capítulo na jornada da [**abler**](https://abler.com.br), permitindo que alcancemos nossas metas de forma mais eficaz e eficiente possível. Estamos animados para ver onde essa nova abordagem nos levará e ansiosos para compartilhar mais lições aprendidas ao longo do caminho.

Agradeço por acompanhar esta visão geral e espero que essas experiências possam ser úteis para outras startups em busca de soluções flexíveis e eficazes para seus desafios de infraestrutura. Continuaremos a perseguir nosso objetivo de crescimento sustentável e excelência na entrega de soluções para o mercado de RH.

**Ressalva**: Esta é uma história verídica e um texto escrito por mim, [**Alisson Souza**](https://www.linkedin.com/in/alissonsouza/), que é Cofundador, CEO & CTO interino da [**abler**](https://abler.com.br), mas que foi revisado e melhorado pelo ChatGPT. =)