Uma olhada rápida na stack do hey.com

Há duas semanas atrás, a empresa Basecamp, lançou seu próprio serviço de e-mail que tem como objetivo desafiar as funcionalidades dos principais e-mails online, chamado Hey (e que reside no atrativo e-mail hey.com). O lançamento foi anunciado no dia 15 de junho, pelo o CEO e co-founder da empresa, Jason Fried, através de um tweet:


A plataforma, que foi inicialmente disponibilizada através de convites, gerou excitação em entusiastas de tecnologia, por trazer uma diferente abordagem ao tão comum serviço de e-mail: já na entrada, nos deparamos com a “Imbox” (com M mesmo, de IMportante), caixa de entrada que utiliza inteligência artificial para separar e-mail autorizados, newsletters e até um “paper-trail” onde recibos e comprovantes serão armazenados.

Um ponto interessante a ser notado por tecnologistas: hey.com está longe de ser um MVP como temos visto em outras startups. A ferramenta foi desenvolvida por dois anos até seu lançamento, e seu versão inicial já oferece ferramentas avançadas como habilidade de mesclar threads de e-mail, notificações para contatos específicos, etc. Além disso, o serviço não é gratuito: oferece uma versão trial por 14 dias, e após disso, é cobrada uma taxa única de $99 por ano.

Porém, o ponto que mais intrigou durante a semana foi tentar entender a stack e a infraestrutura por trás do hey.com. Por ter sido lançado pela Basecamp, conhecida pela qualidade de software e desenvolvimento ágil, certamente ali havia algo interessante.

Numa respostas ao tweet de Jason Fried, o CTO David Hainemeier fez uma piada com tecnologias em hype, deixando óbvio que hey.com usa uma stack simples, e obviamente com Ruby on Rails:


Infelizmente, hey.com não é código livre, então eu tive que investigar um pouco pra ter uma idéia melhor das tecnologias utilizadas.

Aviso importante: como o código do hey.com não é livre, e não foi feito nenhum anúncio oficial, as afirmações que eu faço aqui são todas baseadas em informações de redes sociais e na análise superficial que fiz do html do plataforma.

Aplicação web

Como podíamos imaginar, hey.com é uma aplicação web Ruby on Rails renderizada no servidor, sem utilizar nenhum framework front-end no lado do cliente (como React, Vue). Ao inspecionar o código, de cara esbarramos com turbolinks, uma biblioteca para navegação de páginas sem a necessidade de recarregar todo o HTML, e que proporciona uma navegação bastante rápida:

20200630 web
Turbolinks in hey.com code

Eu não vou me aprofundar muito na aplicação Ruby on Rails do hey.com aqui, mas se você tiver interesse, o Matouš Borák fez um artigo bastante aprofundado aqui.

Infraestrutura

No que diz respeito à infra-estrutura da aplicação, David Hainemeier explicou que escolheram Kubernetes para orquestrar os contâiners da aplicação. Questionado sobre a real necessidade da ferramenta, DHH argumenta que para ferramentas como o Hey, em que não se sabe se 10 ou 1 milhão de usuários se cadastrarão na plataforma, um orquestrador como Kubernetes é extremamente necessário:


Ainda sobre instraestruture, Blake Stoddard, Senior System Administrator no Basecamp, escreveu neste artigo de 20 de abril de 2020, que para gerenciar seus clusters, utilizam o EKS da Amazon, para automatizar a execução do Kubernetes.

Fluxo de desenvolvimento

Inspirado no sistema “branch-lab” do GitHub, o time de desenvolvimento do hey.com utiliza um sistema que imediatamente provisiona qualquer branch em um endpoint específico para aquele branch e que estará imediatamente disponível para testar as alterações feitas.

Assim que novos branches como novas features forem criados, a integração contínua através de ferramenta BuildKite é iniciada e um novo ambiente é provisionado em alguns segundos.

Os detalhes completos do fluxo de desenvolvimento do time do hey.com podem ser encontrados neste artigo do Blake Stoddard, Senior System Administrator no Basecamp.

Bonus insight: o domínio hey.com

Neste artigo, o CEO Jason Fried explica como conseguiu comprar o domínio hey.com. Apesar de não informar o valor final da transação, ele mostra como, depois de 18 meses e mais de 60 e-mails trocados, se deu a negociação. E também, como é complicado conseguir um bom domínio hoje em dia.

Você arriscaria um palpite sobre qual foi o lance final?

Espero que este artigo tenha lhe trazido alguma inspiração sobre como criar um produto moderno e escalável como o hey.com!

Um abraço, e até a próxima!