O que algumas startups usam, em desenvolvimento? – WhatsApp

Sempre fui interessado em saber quais ferramentas (linguagens, frameworks, banco de dados) as grandes empresas usam, e principalmente, como escalam suas aplicações. Nesta primeira parte, vou abordar o WhatsApp (hoje uma empresa do grupo Facebook), que está presente em qualquer smartphone. Como eles conseguem? A resposta curta: Erlang.

Sim, eles utilizam massivamente a linguagem de programação Erlang, desenvolvida pela Ericsson, e que se tornou open-source em 1998. A descrição da linguagem, segundo seu próprio site, é a seguinte:

Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang’s runtime system has built-in support for concurrency, distribution and fault tolerance.

O nome da linguagem, Erlang, pode ser referente tanto ao matemático e engenheiro dinamarquês Agner Krarup Erlang, quanto a abreviação “Ericsson Language“.

Em 2014, na Erlang Factory, uma conferência sobre a linguagem, Rick Reed, um dos responsáveis pela arquitetura da empresa, fez uma palestra sobre o uso da linguagem. Abaixo, reproduzo alguns números que ele cita, lembrando que são de março de 2014. Hoje, esses números devem ser ainda maiores.

  • 465 milhões de usuários mensais.
  • Mais de 19 bilhões de mensagens (por dia).
  • 600 milhões de imagens, 200 milhões de áudios e 100 milhões de vídeos (não especificou qual o período).
  • Pico de 147 milhões de conexões simultâneas.
  • Pico de 342 mil mensagens por segundo.

São números expressivos. E para manter o serviço funcionando, eles usam Erlang como linguagem, e FreeBSD como sistema operacional, conforme estes dois posts do blog oficial: [1] e [2].

Aqui também tem slides sobre os números da empresa: http://www.pixelstech.net/article/1371369804-Use-of-Erlang-in-WhatsApp

http://www.erlang-factory.com/upload/presentations/558/efsf2012-whatsapp-scaling.pdf

E aqui, uma entrevista com outro desenvolvedor do WhatsApp, Eugene Fooksman: https://pdincau.wordpress.com/2013/03/27/an-interview-with-eugene-fooksman-erlang/

Destaque para esta parte de uma resposta, sobre o porquê de usar Erlang:

Of course I’m not even talking about the real high-level advantages of Erlang as a perfect platform for concurrent programming and handling multi-user environment, like communication servers. Parallelism, transparency of remote vs local processes, and set of very well defined behaviors (which are essentially implementations of fundamental server concepts and patterns like generic sever, event manager, state machine etc.) – all of this makes writing server systems quite easy and elegant.

 

E por fim, no HighScalability, um site que pessoalmente gosto muito, outros números: http://highscalability.com/blog/2014/2/26/the-whatsapp-architecture-facebook-bought-for-19-billion.html

E por fim 2, Fábio Akita escreveu este post sobre Elixir, uma linguagem que utiliza a VM do Erlang, mas com “sintaxe agradável com traços de Ruby”: http://www.akitaonrails.com/2015/06/02/primeiros-passos-elixir-1-0-phoenix-framework-0-13#.VZBgYXUViko