« HE:labs
HE:labs

Conheça a stack da HE:labs, Parte 1

Postado por Sylvestre Mergulhão em 08/08/2014

Na HE:labs nós trabalhamos com aplicativos web e integrações. Algumas pessoas me perguntam quais são as tecnologias e serviços que utilizamos. Vou listar algumas dessas ferramentas da parte backend, também citando os principais motivos de as utilizarmos. Num artigo posterior publicaremos a nossa stack front-end.

Framework web: Rails

Nós utilizamos muito Ruby on Rails. Quando fundei a HE:labs em 2010 haviam poucas empresas no Brasil que trabalhavam majoritariamente com Ruby on Rails. Eu já era fascinado pelo framework há muitos anos, tendo trabalhado por algum tempo com ele para empresas do Brasil e do exterior. Não havia nenhum interesse em voltar a trabalhar com ambientes de desenvolvimento burocráticos e engessados. Então ficou definido que, pelo menos por um bom tempo (que ainda não acabou), essa seria nossa plataforma principal.

Foi muito bom esse foco, nos trouxe especialização na plataforma e hoje somos capazes de implementar coisas extremamente complexas em muito pouco tempo. Nos deu a capacidade de possuir um time coeso onde todos tem um grande domínio do framework e também da linguagem, que é o Ruby.

Isso não quer dizer que não possamos utilizar outras tecnologias, mas com restrições. Se um cliente quer desenvolver uma plataforma inteira exclusivamente em PHP ou Java, por exemplo, não pegamos o trabalho. Mas temos a flexibilidade de conhecer o suficiente dessas e outras linguagens para fazer integrações necessárias entre softwares que as utilizem e as plataformas em Ruby on Rails. Já fizemos esses tipos de integrações utilizando Java, PHP, Python e até coisas em linguagens bem mais exóticas.

Também já trabalhamos em aplicativos com Node.js, o que mostrou que ele pode ter um futuro promissor, mas ainda imaturo para as coisas que precisamos fazer.

Mesmo em outras linguagens, fora do mundo Ruby, ainda desconheço um framework tão avançado, maduro e completo quanto o Ruby on Rails que possa se tornar um novo divisor de águas no médio prazo para aplicações web complexas. Então, por enquanto, o Ruby on Rails vai continuar fazendo parte da nossa stack principal.

Banco de dados: PostgreSQL

Há alguns anos atrás o MySQL reinava como banco de dados open source principal do universo. Em muitas empresas ainda é assim, mas sua adoção vem caindo consideravelmente desde a aquisição pela Oracle. Mesmo antes dessa aquisição, optamos por ficar com o PostgreSQL por inúmeros motivos, dentre eles: o fato de ser um banco de dados de altíssimo nível, suportado por uma comunidade open source muito comprometida, alto desempenho, com funcionalidades que de outra forma só estariam disponíveis em bancos proprietários. Em resumo: um banco de dados de verdade para aplicações sérias.

Nesse meio tempo, o Heroku (explicado abaixo) adotou o PostgreSQL como banco de dados do seu serviço de hosting, o que para nós foi uma mão na roda.

Conforme o tempo passou o PostgreSQL foi se tornando ainda mais completo e bem suportado, o que mostrou um grande acerto na nossa aposta de termos o adotado.

Em diversos projetos já utilizamos MongoDB, mas em nenhum deles ficamos convencidos de que foi realmente a melhor opção. Sempre funcionou, mas nunca demonstrou nada que o PostgreSQL também não pudesse resolver perfeitamente. Em suas últimas versões o PostgreSQL adicionou funcionalidades características de bancos NoSQL e também de fornecimento de dados utilizando JSON. O que parece desbancar por completo a utilização do MongoDB no curto prazo.

Além dos citados, também já tivemos que fazer integrações, importações e outras coisas do gênero em bancos de dados como Firebird, MS SQL e outras esquisitices.

Hospedagem: Heroku

Hospedagem é um problema desde que a internet existe. Em tempos remotos da era da internet, com a queda de um serviço, as vezes era necessário alguém se deslocar fisicamente até um local para simplesmente apertar um botão. Felizmente esse tempo já passou pra mim há muitos anos. Com os serviços em cloud popularizados pela Amazon AWS ficou muito fácil e barato manter uma infraestrutura com alta disponibilidade e alta escalabilidade com administração 100% remota.

Mas, apesar de ser 100% remoto, isso não exclui a necessidade de existir essa administração. Softwares precisam ser atualizados. Patches de segurança precisam ser aplicados. Logs precisam ser monitorados. Serviços que param de funcionar precisam ser reiniciados. A manutenção existe e precisa ter alguém tomando conta dessa infraestrutura.

O Heroku, que começou como um editor online para aplicativos Ruby on Rails, faz um pivot em sua proposta de valor e passa a endereçar o problema da administração da infraestrutura de aplicativos web. No começo suportando apenas Ruby on Rails, mas hoje com suporte a dezenas de plataformas.

Para a HE:labs, que quer sempre entregar o máximo valor para o cliente no menor custo possível é o casamento perfeito. Nos permite focar no que somos os melhores que é fazer aplicativos web incríveis, muito rapidamente. E assim podemos deixar toda a administração e monitoramento da infraestrutura dos aplicativos com o Heroku. Eles tem feito isso de forma sensacional, melhor a cada dia. Já experimentamos outras plataformas como serviço, PAAS no termo em inglês, mas todas estão a anos-luz de distância.

Mesmo assim, alguns clientes optam por terem sua própria infraestrutura. Uns por simples opção, outros por questões legais, o que dá para entender nos dois casos.

Ainda hoje me perguntam: "Você não tem sala de servidores na sua empresa?". Eu digo: "Não, pra que?". E depois tenho que rir!

Controle de versão: GitHub

Quando se está desenvolvendo software é necessário que o código fonte do projeto esteja armazenado em algum lugar. Esse lugar precisa estar acessível para todos os envolvidos no projeto. Mais importante do que simplesmente guardar os arquivos, esse lugar precisa permitir verificar que mudanças foram feitas no software, quando foram feitas, por qual motivo, etc. No meio acadêmico da engenharia da computação isso de chama gerência de configuração.

Nós utilizamos o GitHub, que na nossa visão é o que dispõe das melhores funcionalidades para trabalhar em softwares que estão com desenvolvimento ativo. O GitHub utiliza o controlador de versão Git como backend.

Outros

Há outros softwares que também estão presentes com frequência nas aplicações que desenvolvemos.

Se precisamos salvar dados específicos para fazermos consultas rápidas chave/valor ou sistemas de cache é comum utilizarmos Memcached ou Redis.

Quando precisamos fazer uma busca inteligente em uma grande massa de dados utilizamos o Elasticsearch, sendo o Hadoop também uma ótima opção para massas de dados gigantes.

Para disparar e-mail usamos o sensacional SendGrid, que nunca, na vida, me retornou uma mensagem de erro! Esses caras são brabos.

Também utilizamos o DNSimple, que deixa extremamente fácil configurar o DNS de todos os seus domínios.

Compartilhe também o que você utiliza e recomenda. Um abraço!

Compartilhe

Sabia que nosso blog agora está no Medium? Confira Aqui!