Friday, February 28, 2014

WhatsApp Architecture

Welcome to the architecture of the decade, WhatsApp :) in terms money got from Facebook :)

WhatsApp Messenger is a cross-platform mobile messaging app which allows you to exchange messages without having to pay for SMS.

WhatsApp is disruptive SMS technology on your phone (via the internet).

What is underlying architecture?

It was not LAMP ( Linux, Apache, MySQL, and PHP front end) thought?.

We have discussed LAMP in facebook and Zynga architecture.

LYCE/LYME architecture

LYME and LYCE are solution stacks composed entirely of free and open-source software to build high-availability heavy duty dynamic web pages. The stacks are composed of:

  (The above is from Wikipedia, and self-explanatory)


  • Dual Westmere Hex-core (24 logical CPUs)
  • 100GB RAM, SSD
  • Dual NIC (user-facing, back-end/distribution)
  • FreeBSD 8.3
  • OTP R14B03
(from Rick Reed, software developer's slide pack of WhatsApp)

Key functionality

Instant Messaging: is a type of online chat which offers real-time text transmission over the Internet.












Enter Ejabberd 

Ejabbered is XMPP server which provide quite good features of open source, Whatsapp uses some modified version of this, facebook messaging also uses a modified version of this. Some more chat applications like Samsung's ChatOn, Nimbuzz messenger all use ejabberd based ones.

XMPP is "Extensible Messaging and Presence Protocol"   is a communications protocol for message-oriented middleware based on XML. 

XMPP is a relatively simple protocol that occurs over TCP sockets using XML messages

Simple XMPP architecture is as follows:
 Diagram of a more complex XMPP architecture, with XMPP gateways connecting to SMS and SMTP clients and servers

Ejabbered architecture is as follows:

Enter Erlang Factory

Erlang logo.png
The Erlang Factories are a grounded, hand-on-the-wire point of inspiration where you meet the people who make and use Erlang. They are about the people, not just the language. - Dave Smith (Author of Rebar) solutions

Erlang factory uses the modified Ejabbered technology. 

This is very high-level architecture, will publish more on this architecture.
Hope you like it, please feel free to comment :)

No comments: