Infraestrutura tranquila e favorável

Lucas Teixeira
Blanq Tecnologia
Published in
4 min readMar 6, 2016

O último dia 01 de março foi marcado pelo lançamento do Moskit CRM novo produto da Blanq Tecnologia, empresa de tecnologia fundada por mim e dois amigos 5 anos atrás.

Minha responsabilidade como CTO da empresa, é planejar tecnicamente como as nossas idéias irão se transformar no produto final, e tão imporante quanto isso, definir um modelo de infraestrura sustentável para que o produto permaneca funcionando.

Abaixo, alguns pontos interessantes que foram fundamentais para que pudessemos alcançar um ambiente de infraestrutura maduro e sustentável.

Elimine o desnecessário

Pense que todo ponto de sua infraestrutura deverá ser gerido por você com atenção, portanto, opte sempre pelo mais simples e que dê menos trabalho.

Um exemplo disso são nossos servidores que recebem as requisições da aplicação. Optamos por desenvolver uma aplicação onde pudessemos usar o S3 para “hospedar” o nosso sistema, visto que ele é composto apenas por HTMLs estáticos, arquivos JS e arquivos CSS. Este é um exemplo onde tiramos da nossa cabeça o overhead de monitoria deste ponto da infraestrutura.

Outro exemplo, é a interação de nossa equipe com o sistema, que decidimos por fazê-la totalmente via Slack usando o Hubot e assim, evitamos mais servidores com o clássico “sistema administrativo” para gerir informações dos clientes e usuários. Evitando servidores, eliminamos custo, eliminamos monitorias, e eliminamos dor de cabeça.

Busque sempre eliminar o que você consiga de sua infra.

Entenda qual é, e faça apenas o seu negócio

Esta é uma parte difícil, entender o que é o seu negócio para que você possa focar nele. Busque soluções de mercado que possam ser integradas em seu produto e evite tentar criar soluções in house para partes do seu sistema.

O Moskit CRM é um CRM genérico e configurável para qualquer mercado, portanto, fazer um CRM é o nosso negócio. Temos que enriquecer automaticamente os contatos cadastrados em nossa base, poderíamos buscar N maneiras de se fazer isso, mas não é o nosso negócio, portanto, recorremos ao FullContact para fazer isto por nós.

Também precisamos ter um mecanismo de busca extremamente rápido e assertivo, isso é fundamental para o uso do sistema pelo nosso cliente, porém não é nosso negócio, não é aí que temos que gastar nosso tempo, correto? Buscamos soluções de mercado para isso, e acabamos por usar o Algolia para fazer isto por nós.

Lembre-se, a padaria vende o leite, mas não tem as vacas que o produzem.

Ainda consigo listar vários outros serviços que usamos: Firebase, Mailgun, Codeship, Heroku, Bitbucket, Cloud9, MailChimp e muitos outros ainda.

Cada um deles desempenha em nossa infraestrutura algum ponto muito importante, onde preferimos pagar por um serviço terceiro especializado em seu nicho a desenvolver soluções próprias que demandariam muito mais tempo e dor de cabeça.

Escale horizontalmente em primeiro lugar

Obviamente, quanto menos gastarmos com infraestrutura, maior é nossa margem em cima do faturamento. Entra aí uma grande responsabilidade que é fazer as escolhas certas para que o sistema não seja impactado, mas também que você não seja overcharged sem necessidade.

Nossos servidores de API que o front consome rodam todos em instâncias EC2 do tipo micro (t2.micro) devido a simplicidade e velocidade dos requests. Hoje a necessidade de uso de memória e rede das máquinas nos deixa confortável para manter desta maneira.

Mas existe aquela hora que temos que escalar, e sempre nos perguntamos se devemos escalar horizontalmente ou verticamente nossa infraestrutura. Eu recomendo que você escale seus sistemas sempre horizontalmente quando possível. Portanto, preferimos ter várias máquinas desta capacidade, todas atrás de um balanceador de carga (ELB) ao invés de poucas máquinas maiores.

Escalando horizontalmente você mantém a simplicidade de cada servidor de sua infra, além de diminuir consideravelmente uma possibilidade de outage desta camada, uma vez que a cada novo servidor adicionado, dilui-se mais os pontos possíveis de falha.

Escalar horizontalmente é sempre a melhor escolha.

Obviamente quando temos um problema não de concorrência, mas de capacidade de processamento, você terá de escalar verticalmente, mas recomendo que o faça apenas nestes casos.

Tenha tudo sempre sob controle

Monitore seu ambiente, sempre monitore seu ambiente. De todas as formas possíveis, monitore seu ambiente.

Como já comentei que usamos Slack, acabamos por jogar os alarmes que recebemos do CloudWatch para um canal especifico onde nossos DevOps estão sempre ligados.

Busque a tranquilidade

Resumindo, montar um ambiente de alta disponibilidade não precis ser um problema. Tenha em mente desde o começo que o ambiente que você desenhar e construir, é o mesmo que você terá que gerir e garantir, ou em outras palavras…

O monstro que você parir, é o monstro que você terá que alimentar

Portanto, a concepção de um ambiente é como a vida, busque sempre a simplicidade e a tranquilidade.

--

--

Lucas Teixeira
Blanq Tecnologia

Moskit CRM and Simbo CRM Co-Founder. Tech addicted, java programmer, grails lover, hog member and nfl fan.