¿Qué tecnología se usa en WhatsApp?

Fuente: La arquitectura de WhatsApp que Facebook compró por $ 19 mil millones – Alta escalabilidad

Aquí está la explicación general del enlace.

  • El servidor de WhatsApp se implementa casi por completo en Erlang.
  • Los sistemas de servidor que realizan el enrutamiento de mensajes de fondo se realizan en Erlang.
  • Un gran logro es que la cantidad de usuarios activos se gestiona con una huella de servidor realmente pequeña. El consenso del equipo es que se debe en gran parte a Erlang.
  • Es interesante notar que el chat de Facebook se escribió en Erlang en 2009, pero se alejaron porque era difícil encontrar programadores calificados.
  • El servidor de WhatsApp ha comenzado desde ejabberd
  • Ejabberd es un famoso servidor Jabber de código abierto escrito en Erlang.
  • Originalmente elegido porque es abierto, tuvo excelentes críticas de los desarrolladores, facilidad de inicio y la promesa de la idoneidad a largo plazo de Erlang para un gran sistema de comunicación.
  • Los siguientes años se dedicaron a reescribir y modificar bastantes partes de ejabberd, incluido el cambio de XMPP a un protocolo desarrollado internamente, la reestructuración de la base del código y el rediseño de algunos componentes centrales, y realizar muchas modificaciones importantes en Erlang VM para optimizar el rendimiento del servidor .
  • Para manejar 50 mil millones de mensajes al día, el enfoque está en hacer un sistema confiable que funcione. La monetización es algo para ver más adelante, está muy lejos en el futuro.
  • Un indicador principal del estado del sistema es la longitud de la cola de mensajes. La longitud de la cola de mensajes de todos los procesos en un nodo se supervisa constantemente y se envía una alerta si se acumulan más allá de un umbral preestablecido. Si uno o más procesos se atrasa, se alerta, lo que da un puntero al siguiente cuello de botella para atacar.
  • Los mensajes multimedia se envían cargando la imagen, el audio o el video para enviarlos a un servidor HTTP y luego enviando un enlace al contenido junto con su miniatura codificada Base64 (si corresponde).
  • Algunos códigos generalmente se envían todos los días. A menudo, es varias veces al día, aunque en general se evitan las horas pico de tráfico. Erlang ayuda a ser agresivo para obtener soluciones y características en la producción. La carga en caliente significa que las actualizaciones se pueden enviar sin reinicios ni cambios de tráfico. Los errores generalmente se pueden deshacer muy rápidamente, nuevamente cargando en caliente. Los sistemas tienden a estar mucho más flojos, lo que hace que sea muy fácil implementar los cambios de forma incremental.
  • ¿Qué protocolo se usa en la aplicación Whatsapp? Enchufe SSL a los grupos de servidores de WhatsApp. Todos los mensajes se ponen en cola en el servidor hasta que el cliente se vuelve a conectar para recuperar los mensajes. La recuperación exitosa de un mensaje se devuelve al servidor de WhatsApp que reenvía este estado al remitente original (que verá eso como un icono de “marca de verificación” al lado del mensaje). Los mensajes se borran de la memoria del servidor tan pronto como el cliente ha aceptado el mensaje
  • ¿Cómo funciona internamente el proceso de registro en Whatsapp? WhatsApp solía crear un nombre de usuario / contraseña basado en el número IMEI del teléfono. Esto fue cambiado recientemente. WhatsApp ahora utiliza una solicitud general de la aplicación para enviar un PIN único de 5 dígitos. Luego, WhatsApp enviará un SMS al número de teléfono indicado (esto significa que el cliente de WhatsApp ya no necesita ejecutarse en el mismo teléfono). Según el número de pin, la aplicación solicita una clave única de WhatsApp. Esta clave se utiliza como “contraseña” para todas las llamadas futuras. (esta clave “permanente” se almacena en el dispositivo). Esto también significa que registrar un nuevo dispositivo invalidará la clave en el dispositivo anterior.

El frontend, el backend y el hardware utilizado por WhatsApp se enumeran a continuación en este enlace Lista de verificación técnica para considerar de Whatsapp:

Erlang : el lenguaje de programación utilizado para escribir el sistema de aplicación de chat en tiempo real

FreeBSD : sistema operativo de computadora avanzado cuidadosamente seleccionado para todo, desde computadoras de escritorio hasta dispositivos pequeños.

Guiñada : un servidor web basado en Erlang que también puede ejecutarse como un servidor web independiente

Lighttpd : otro servidor web que es altamente seguro, rápido, flexible y que cumple con los estándares del servidor web.

PHP : lenguaje de script de código abierto de uso general que mejor se adapta al desarrollo web.

XMPP : XMPP es la columna vertebral que permite enviar mensajes en tiempo real, indicadores de presencia en línea, funciones de enrutamiento XML y mucho más.

Necesito que primero leas alguna información técnica,

¿Cuál es la aplicación es la aplicación de chat. Los llamamos mensajería instantánea. Esto significa que la mensajería entre el remitente y la recepción debe realizarse en tiempo real, a diferencia del correo electrónico (sin conexión).

Por lo tanto, primero debe comprender el desafío aquí para comprender cómo funcionan las aplicaciones de chat. Si almacena algo en la base de datos, luego lo pasa de nuevo a otro usuario, se desconecta (no en tiempo real). Si pasa algún mensaje y se almacena y también pasa al mismo usuario, se convierte en IM (mensajería instantánea).

Ahora en desarrollo, hay diferentes PROTOCOLOS que ayudan a lograr cosas.

Para correos electrónicos: SMTP, POP3, etc.

Para chatear es: XMPP (Protocolo de presencia y mensajería extensible)

Es un protocolo basado en otro formato llamado XML (como html, no exactamente, pero para darle una idea). Usando el protocolo XMPP, XML como medio de comunicación y configurando esto en un servidor, que lo aloja y ayuda a pasar toda la comunicación y también configurar la lógica en este servidor (Básicamente codificación). Por lo tanto, hay muchos servidores creados con el protocolo XMPP como eJabber.

Curiosamente, WhatsApp está relacionado con “Yowsup”, una biblioteca de Python. Python es un lenguaje de programación en el que se construyen Quora, YouTube, etc. Puede encontrar esta biblioteca de Yowsup en tgalal / yowsup.

Así que ahora vamos a reunir toda la información anterior.

Un usuario A tiene internet y una aplicación cliente (cuál es la aplicación) instalada en dicho teléfono Android), un usuario B tiene internet y tiene la misma aplicación cliente (Whatsapp) instalada en su iPhone. (Así que, básicamente, plataforma cruzada).

A escribe el mensaje “Hola” a B. El mensaje se pasa a través de los servicios web al servidor XMPP. El servidor XMPP tiene una lista de todos los usuarios de WhatsApp, basándose en un número de teléfono único, detectará B y el servidor XMPP enviará el mensaje “Hola”. a B con servicio web. B recibirá este mensaje en iPhone. En el medio habrá codificación realizada con reglas de negocio en el servidor, el nivel de base de datos y también en las aplicaciones del cliente. A continuación se muestra una arquitectura simple de lo mismo.

Aviso de redireccionamiento

Técnico. WhatsApp utiliza una versión personalizada del protocolo de presencia y mensajería extensible estándar abierto ( XMPP ). Luego de la instalación, crea una cuenta de usuario usando el número de teléfono de uno como nombre de usuario (Jabber ID: [número de teléfono] @ s.whatsapp.net)

Como se destacó, Erlang es un lenguaje de programación que tiene sus orígenes con Ericsson, un conocido proveedor de telecomunicaciones. Erlang estaba destinado a ser el idioma para impulsar el nuevo conjunto de equipos de telecomunicaciones para 3G.

Erlang proporciona un excelente entorno para construir el tipo de aplicaciones discretas distribuidas, escalables y de alto rendimiento que a menudo se utilizan para admitir aplicaciones modernas de red y basadas en la web.

Por la razón anterior, WhatsApp funciona con el código Erlang.

Referencia:

Lenguaje de programación Erlang

Inside Erlang – el creador Joe Armstrong cuenta su historia

WhatsApp utiliza una versión personalizada del protocolo de mensajería y presencia extensible estándar abierto (XMPP) tras la instalación. El protocolo de mensajería y presencia extensible (XMPP) es un perfil de aplicación del lenguaje de marcado extensible (XML) para transmitir datos XML casi en tiempo real entre dos o más entidades conscientes de la red. El formato de dirección para las entidades XMPP se desarrolló originalmente en la Comunidad Jabber Open Source en 1999. Funciona entre servidores y facilita la operación casi en tiempo real. El Protocolo puede eventualmente permitir a los usuarios de Internet enviar mensajes instantáneos a cualquier otra persona en Internet, independientemente de las diferencias en los sistemas operativos y los navegadores.

XMPP a veces se llama el protocolo Jabber, pero este es un nombre técnico incorrecto. Jabber, una aplicación de mensajería instantánea similar a ICQ (I Seek You) y otras, se basa en XMPP, pero hay muchas aplicaciones además de Jabber que son compatibles con XMPP. El grupo de trabajo IEEE XMPP, un consorcio de ingenieros y programadores, está adaptando XMPP para su uso como tecnología del Grupo de trabajo de ingeniería de Internet (IETF). Además, el Consorcio de interoperabilidad de mensajería y presencia (MPIC) está considerando XMPP como una tecnología de interoperabilidad importante. Eventualmente, se espera que XMPP admita aplicaciones de mensajería instantánea con autenticación, control de acceso, una gran medida de privacidad, cifrado salto por salto, cifrado de extremo a extremo y compatibilidad con otros protocolos.

En Siftery, estamos rastreando más de 24 productos utilizados en Whatsapp . Nuestro equipo recopila los datos y, cuando es posible, los proveedores y empleados de Whatsapp los verifican.

Los productos utilizados para construir Whatsapp incluyen: Ampersand.js, Erlang, HTML5, PHP, Twilio, Gupshup, DigiCert, DuoSecurity, Dyn DNS, Modernizir, comentarios de Facebook y Adobe Typekit.

Además, los productos utilizados internamente:

  • Atención al cliente : Zendesk
  • Comercialización : Clickatell
  • Analytics : Google Analytics
  • Productividad : G Suite, Microsoft Office 365, Proofpoint

Para obtener una lista completa del software utilizado por Whatsapp, consulte la pila tecnológica de Whatsapp en Siftery.

WhatsApp está escrito en lenguaje Erlang . Erlang es un lenguaje de programación y un sistema de tiempo de ejecución de uso general, concurrentes y recolectados de basura.

WhatsApp utiliza una versión personalizada del protocolo de presencia y mensajería extensible estándar abierto (XMPP). Tras la instalación, crea una cuenta de usuario utilizando el número de teléfono como nombre de usuario.

Referencia

Arquitectura de Whatsapp

Servidor – Ejabbered

Idioma – ERLANG

Protocolo – XMPP

Base de datos – Mnesia y MySQL

Sistema operativo – FreeBSD

Servidor de almacenamiento de archivos multimedia – YAWS

Para obtener más detalles sobre los tecnicismos de Whatsapp, sugiero que este blog pueda ayudarlo.

Funcionalidad de Whatsapp y crear una aplicación de clonación de Whatsapp

Whatsapp es una aplicación de chat que utiliza XMPP (Protocolo extensible de mensajería y presencia) – https://en.wikipedia.org/wiki/ XMPP

  • Front End: desarrollo nativo para todas las plataformas
  • Backend – Ejabbberd ( https: // www . Ejabberd .im /), pero totalmente personalizado
  • Almacenamiento: almacenamiento móvil local (SQLite) con cifrado
  • Servidores push para enviar notificaciones push

Whatsapp se implementa en el extremo del servidor a través del protocolo XMPP. Exactamente se hace en XMPP lite, que es un motor de chat de código abierto bien establecido.

Consulte XMPP | XMPP Main y mgp25 / Chat-API

Las aplicaciones se desarrollan como nativas para cada dispositivo por separado.

Servidor:
XMPP para transferencia de mensajes (XMPP).
Erlang en el servidor de mensajería.
HTTP para imágenes y video.

Frente:
Android, Blackberry, ios, aplicaciones

Un lenguaje de programación llamado Erlang desarrollado originalmente por Ericson en los primeros días móviles. Lea atentamente el artículo a continuación para obtener más claridad

http://www.wired.com/2015/09/wha…

Puede conocer cualquier sitio web sobre las tecnologías con las que construyeron utilizando BuiltWith – Web Technology Profiler

Como dicen todos, Erlang es el lenguaje de programación utilizado para desarrollar esta aplicación.
Gracias por A2A

En Android, el código está en Java según mi conocimiento.