Lo que se necesita para crear una aplicación de chat o mensajería en tiempo real

Todos esperamos que las experiencias en línea sucedan en tiempo real. Los mensajes deben llegar al instante, los tableros deben brindar métricas comerciales a medida que ocurren y los puntajes deportivos en vivo deben transmitirse a los fanáticos de todo el mundo en un abrir y cerrar de ojos.

Esta expectativa es aún mayor para el chat, que ahora está integrado en todo, desde plataformas de comercio electrónico hasta juegos en línea . Pero crear un chat en tiempo real requiere un trabajo pesado, especialmente si está comenzando desde cero. Hay características para elegir, protocolos de comunicación para hacer malabares y decisiones de infraestructura que pueden hacer o deshacer su sistema de chat.

Para ayudarlo a comenzar a ejecutar, este artículo brinda una descripción general de lo que se necesita para crear una aplicación de chat en vivo: las funciones que necesita, la mejor manera de crearlas, los desafíos que puede esperar y todo lo que necesita saber sobre cómo ofrecer una aplicación confiable. , mensajería escalable en tiempo real.

Los cimientos de una aplicación de chat o mensajería exitosa

Comencemos por echar un vistazo más de cerca a lo que cada aplicación de chat ganadora tiene en común.

  • Entrega de datos de baja latencia: la promesa de tiempo real significa que los usuarios deben recibir mensajes en sus dispositivos sin demora. Esto se basa en una combinación de factores, incluido un alto rendimiento, un protocolo de mensajería eficiente y de baja latencia (como WebSockets ) y la proximidad geográfica entre usuarios y servidores.
  • Garantías de entrega de mensajes: el chat se basa en que los mensajes se entreguen al cliente correcto, en el orden correcto, en el momento correcto. Garantizar la integridad de los datos es difícil, pero fundamental para evitar mensajes perdidos, desordenados o duplicados.
  • Escalabilidad: tener una infraestructura altamente disponible y resistente permite que una aplicación de chat crezca a la par de su base de usuarios. El patrón de mensajería Pub/Sub es una buena base para una aplicación de chat, ya que desvincula la lógica de comunicación de la lógica comercial, lo que facilita la escalabilidad de su sistema.
  • Elasticidad: una aplicación de chat que falla cuando obtiene más usuarios de los esperados nunca seguirá siendo competitiva. Para que una aplicación de chat tenga éxito a largo plazo, debe ser capaz de reaccionar ante cambios repentinos y escalar de manera elástica para manejar una cantidad alta, impredecible y fluctuante de usuarios simultáneos.
  • Confiabilidad: el chat debe estar siempre disponible, incluso si algo sale mal. La redundancia incorporada garantiza la continuidad del servicio incluso ante fallas, ya sea a nivel regional (instancias y centros de datos) o a nivel global (problemas de red, interrupciones o incluso ataques DDoS).
  • Características para una experiencia de chat más rica: el chat debe ser divertido además de funcional. El estándar es enviar y recibir mensajes, pero el listón ahora es más alto ya que las aplicaciones de chat como WhatsApp, Messenger y Slack popularizaron funciones como reacciones emoji, recibos de lectura y GIF para mejorar la experiencia de chat.

Qué características de la aplicación de chat construir

La idea de crear una aplicación de chat es simple, pero como Slack y WhatsApp establecen el estándar para la mensajería en tiempo real, no basta con configurar una interfaz de usuario elegante que permita a los usuarios enviar y recibir mensajes.

Con eso en mente, estas son las funciones que necesita para una experiencia de chat completa que no empujará a los usuarios a un competidor mejor equipado.

Funciones básicas de chat: lo que su aplicación de chat no puede prescindir

  • Autenticación y autorización: administre el acceso para los participantes del chat. Esto puede ser a través de su cuenta de redes sociales utilizando un inicio de sesión de un tercero, o simplemente su correo electrónico y número de teléfono. También debe considerar la administración de permisos para diferentes roles, como permitir que los administradores solo moderen un chat grupal.
  • Acceso a contactos: Ofrezca a los usuarios una forma sencilla de importar sus contactos. También es buena idea mostrar qué contactos ya están registrados en la aplicación y dar la opción de enviar una invitación a los que no lo están.
  • Mensajería: permita a los usuarios unirse a un chat para enviar y recibir mensajes en tiempo real. La mensajería Pub/Sub es ideal para las aplicaciones de chat, ya que admite la mensajería 1:1 y 1:muchos, lo que es útil para chat grupal , salas de chat o canales.
  • Almacenamiento de mensajes: mensajes persistentes para que los usuarios puedan recuperar conversaciones antiguas. Puede elegir entre diferentes opciones de almacenamiento y diferentes políticas de retención de datos, según los detalles de su caso de uso.

Funciones de chat mejoradas: lleve su aplicación más allá de lo básico

  • Editar/eliminar mensajes: Ofrezca a los usuarios la opción de editar o cancelar el envío de un mensaje publicado. Esto significa pensar en las estructuras de datos más adecuadas para la capacidad de búsqueda y asegurarse de que la carga útil del mensaje se actualice y almacene correctamente.
  • Texto complejo: Interpreta el texto que desencadena una acción específica. Por ejemplo, las URL deben poder hacer clic o mostrar una miniatura de medios. Un nombre etiquetado con @ debe resaltarse y enviar automáticamente una notificación al usuario etiquetado.
  • Uso compartido de archivos: agregue soporte para diferentes formatos de archivo para que los usuarios puedan enviar fotos, videos y audio para animar la conversación. Los protocolos comunes para esto incluyen WebRTC , WebSockets e IRC.
  • Llamadas de audio/video: utilice protocolos como WebRTC para habilitar las videollamadas dentro de su aplicación de chat, o integre API de terceros que manejen todo por usted.
  • Notificaciones automáticas: envíe notificaciones a los dispositivos de los usuarios para que estén al tanto de los nuevos mensajes, incluso si no están usando activamente la aplicación.

Funciones de interfaz de usuario y experiencia de usuario de chat enriquecidas: actualización de la experiencia de chat

  • Recibos de lectura: actualice su interfaz de usuario para mostrar a los usuarios cuándo un mensaje se ha enviado, entregado y leído correctamente. También puede mostrar si un mensaje ha sido editado.
  • Indicadores de presencia: brinda visibilidad de lo que otros en la conversación están haciendo en tiempo real, como cuándo están en línea o la última vez que estuvieron activos en la aplicación.
  • Reacciones de mensajes: Ofrezca la alternativa para aquellos que tienen prisa (o no tienen una buena respuesta) de agregar un emoji a un mensaje publicado, como un corazón o un pulgar hacia arriba.
  • Actualizaciones de la aplicación: muestre qué ha cambiado desde la última vez que el usuario estuvo activo en la aplicación, como cuántos mensajes sin leer tiene o cuántas veces ha sido mencionado en un hilo.

Tiempo y costos para construir una aplicación de chat

El cronograma y el presupuesto necesarios para una aplicación de chat en vivo dependen de variables como las funciones que planea crear, la cantidad de fondos, el tamaño de su equipo, los costos de escala e infraestructura, y también el mantenimiento y las mejoras posteriores al lanzamiento.

La mayoría de los equipos de ingeniería pueden eliminar un MVP (Producto Mínimo Viable) en alrededor de 3 a 5 meses, con costos que van desde $ 30,000 a $ 50,000 para una sola plataforma (como Android). Pero eso suponiendo que la mayoría de las cosas salgan según lo planeado, y la oferta será bastante básica.

Según AppInventive, construir una aplicación de chat como WhatsApp puede costar hasta $250,000. Y ese es solo el costo inicial para construir y administrar el sistema: no se sabe cuánto gastará con el tiempo con el escalado continuo, el mantenimiento y las mejoras futuras.

Asumir esto internamente es costoso y desafiante, razón por la cual muchas organizaciones han optado por un proveedor de plataforma como servicio (PaaS). En nuestra encuesta de más de 500 líderes de ingeniería en el Reino Unido y EE. UU ., descubrimos que:

  • El 93% de los proyectos requerían al menos 4 ingenieros internos para construir una infraestructura de mensajería en tiempo real.
  • 10,2 meses-persona fue el promedio para completar el proyecto internamente.
  • El 46% dijo que la escalada de los costos del proyecto es un desafío importante durante el desarrollo.
  • El 50 % de las plataformas en tiempo real autoconstruidas requerían entre $100.000 y $200.000 al año en mantenimiento. La realidad es que crear experiencias en tiempo real es difícil y la línea de tiempo puede ser impredecible. Además, no todas las organizaciones tienen el tiempo, el dinero o la experiencia para construir internamente una infraestructura en tiempo real. Incluso Adobe pensó que sería más fácil comprar Figma por $ 20 mil millones que construir una colaboración multijugador en tiempo real en sus productos.

Consideraciones de la pila tecnológica: protocolos y productos para mensajes de chat en tiempo real

Hay algunas decisiones importantes que tomar al crear una aplicación de chat. Tienes que pensar en el lenguaje de programación adecuado para cada plataforma, qué protocolos usar, qué construir y qué deberías comprar en su lugar.

Dicho esto, hay múltiples tecnologías para elegir al diseñar su aplicación de chat.

Protocolos de la aplicación de chat

XMPP: el Protocolo de presencia y mensajería extensible (XMPP) es un protocolo de mensajería en tiempo real de código abierto que utiliza XML para la transferencia de datos a través de TCP. Es el protocolo elegido por WhatsApp y Grindr, debido a su:

  • Alta extensibilidad
  • Arquitectura descentralizada
  • Seguridad multicapa integrada
  • Amplia compatibilidad de complementos

En el lado negativo, su naturaleza descentralizada significa que XMPP tiene que autorizar y autenticar continuamente el servidor y el cliente, lo que reduce la velocidad de transmisión. Tampoco está realmente optimizado para transferir datos binarios, por lo que puede ser limitante para las aplicaciones que necesitan manejar diferentes tipos de datos.

WebSocket: es un protocolo de comunicación para aplicaciones en tiempo real que requiere mensajería bidireccional (conocida como «dúplex completo») a través de una única conexión TCP. Trello, Slack y Discord se construyen con WebSockets, gracias a su:

  • Naturaleza impulsada por eventos
  • Flexibilidad al implementar extensiones y protocolos en la parte superior
  • Capacidad de intercambio de datos de baja latencia
  • Compatibilidad con datos binarios y de cadena (texto)

Sin embargo, escalar WebSockets puede ser un desafío , ya que debe encargarse del equilibrio de carga, la estrategia de respaldo y la administración de la conexión (junto con muchos otros aspectos).

WebRTC: Web Real-Time Communication (WebRTC) es un marco que agrega capacidades de comunicación en tiempo real a su aplicación, lo que permite enviar voz, video y datos genéricos entre pares. Este protocolo de código abierto es utilizado por plataformas de mensajería populares como Zoom, Facebook Messenger y Google Meet para:

  • Audio y video de alta calidad
  • Conexiones encriptadas
  • Compatibilidad multiplataforma
  • Fuertes garantías de seguridad

Aunque este protocolo está lejos de ser apto para principiantes y puede ser muy costoso ejecutarlo a escala, ya que requiere un uso intensivo de la CPU.

MQTT: Message Queuing Telemetry Transport (MQTT) es un protocolo de comunicación ligero de máquina a máquina diseñado para entornos de bajo ancho de banda. Su bajo uso de red y su tamaño de paquete pequeño lo hacen ideal para dispositivos con CPU, memoria y duración de la batería limitadas. También es elogiado por su:

  • Modelo pub/sub escalable
  • Capacidad para trabajar bien con dispositivos móviles y redes restringidas
  • Garantías confiables de entrega de mensajes

Sin embargo, carece de encriptación de seguridad y no es compatible con la transmisión de video, por lo que definitivamente no es el protocolo para las aplicaciones de chat de propósito general.

SUGERENCIA: si su chat involucra redes con poca conectividad, MQTT es una buena opción.

Infraestructura de la aplicación de chat: opciones disponibles

Una bifurcación común en el camino es decidir si construir la infraestructura de chat usted mismo o usar una PaaS que haga la mayor parte del trabajo por usted. Profundicemos en ambos.

OPCIÓN 1: CONSTRUIR LA INFRAESTRUCTURA DE CHAT TÚ MISMO

Los WebSockets se utilizan ampliamente como una tecnología clave para permitir la comunicación bidireccional en tiempo real para las aplicaciones de chat. Tiene la opción de crear su propio protocolo personalizado sobre WebSockets sin formato, o puede usar una biblioteca WebSocket de código abierto para crear su aplicación de chat.

Por ejemplo, Socket.io es una biblioteca popular de WebSocket que a menudo se usa para desarrollar aplicaciones de chat por su capacidad de transmitir eventos a múltiples clientes, opciones de respaldo y reconexiones automáticas. Las desventajas de Socket.io son que es difícil de escalar, tiene características de seguridad nativas limitadas, está diseñado para funcionar en una sola región y no garantiza el orden de los mensajes.

Tenga en cuenta que, ya sea que cree su propio protocolo o use una biblioteca de código abierto, debe alojar, escalar y administrar la infraestructura usted mismo. Esto nos lleva a la siguiente opción de bricolaje, que consiste en unir diferentes servicios basados ​​en la nube que alojarán los servidores por usted. Aun así, aún necesita configurar y optimizar cómo deben interactuar y operar los diferentes servicios que conectan su aplicación de chat.

En general, el enfoque de bricolaje es ciertamente factible, pero la mayoría son implementaciones básicas que dejan mucho para que lo descubras por tu cuenta. Pueden resultar desafiantes si tiene una necesidad particular de escalar o tiene una fuerza laboral limitada para hacerlo.

OPCIÓN 2: APROVECHAR UNA PAAS PARA SU INFRAESTRUCTURA DE MENSAJERÍA DE CHAT EN TIEMPO REAL

Si está buscando ofrecer una aplicación de chat lista para producción sin la complejidad de construir todo usted mismo, una PaaS es su mejor ruta.

Por ejemplo, podría contratar una plataforma de desarrollo de aplicaciones como Firebase , propiedad de Google , para crear, probar, lanzar y monitorear aplicaciones web y de chat móvil. Sin embargo, puede ser limitante a la hora de escalar y crear funciones más allá de un simple MVP. Sin mencionar el bloqueo del proveedor, ya que lo restringe al ecosistema de Google.

Otra opción es elegir un PaaS flexible, como Ably , que es un WebSocket PaaS sin servidor que ayuda a los desarrolladores a crear experiencias escalables en tiempo real, como el chat, sin la molestia de administrar la infraestructura subyacente.

El argumento a favor del uso de una PaaS se vuelve más sólido cuanto más profundiza en los desafíos de crear y mantener una aplicación de chat en tiempo real. Nuestra encuesta de más de 500 líderes de ingeniería sobre el estado de la infraestructura en tiempo real reveló que:

  • El 60 % cambió a PaaS para mejorar la experiencia de usuario en vivo con una infraestructura estable
  • El 56% clasificó la reducción de riesgos como la segunda razón más convincente para cambiar a PaaS
  • El 55 % dijo que la tercera razón fundamental para pasarse a PaaS era redistribuir a los ingenieros en el trabajo principal del producto.
  • El 65% de las soluciones de bricolaje tuvieron una interrupción o un tiempo de inactividad significativo en los últimos 12 a 18 meses.

La conclusión es: si desea llevar su aplicación de chat al mercado antes y hacerla crecer rápidamente, es mejor que use una PaaS que se encargue del trabajo pesado y pueda garantizar un rendimiento predecible a escala.

Los desafíos de construir una aplicación de chat en tiempo real

Una cosa es trazar un mapa de lo que debe crear para su aplicación de chat, pero diseñar un sistema de chat confiable es un juego de pelota completamente diferente. El tiempo que pasa luchando contra el código, eliminando problemas y haciendo malabarismos con los protocolos puede acumularse rápidamente, y el tiempo es dinero.

Para ayudarlo a prepararse mejor, aquí hay una descripción general de los desafíos más comunes.

Actuación

No se trata solo de minimizar los requisitos de latencia y ancho de banda para enviar datos de un extremo a otro, sino también de minimizar la variación en ellos. Demasiada variación puede hacer que los mensajes sean impredecibles y crear una experiencia de usuario exasperante. También puede dificultar la creación y el escalado de funciones, ya que no sabría con certeza si funcionarán como se espera en diversas condiciones de funcionamiento.

Aquí es donde una PaaS resulta útil. Sabría qué latencia media y rendimiento de rendimiento esperar, así como los límites operativos específicos para diseñar y crear nuevas funciones.

SUGERENCIA: Las aplicaciones de mensajería en tiempo real, especialmente aquellas con sesiones interactivas como llamadas de voz o videollamadas, se experimentan mejor con latencias inferiores a 100 ms.

Fiabilidad

Garantizar la confiabilidad requiere una arquitectura estable y tolerante a fallas que tenga redundancia integrada a nivel regional (ya veces global). Pero mantener una infraestructura distribuida confiable tiene un alto costo operativo y hay una larga lista de capacidades (como la replicación global y las protecciones contra fallas automáticas) que deben desarrollarse.

Un enfoque común es pagar por una PaaS que cubra todas sus bases, a menos que tenga el tiempo y los recursos para construir un sistema tolerante a fallas.

Escalabilidad

La arquitectura de su aplicación de chat para la escala requiere más esfuerzo por adelantado, ya que necesita dedicar más tiempo al diseño antes de construir. También debe asegurarse de tener los fondos para alojar, ejecutar y mantener su aplicación a medida que crece.

Asociarse con un PaaS de buena reputación puede proporcionar una infraestructura altamente elástica para que su aplicación nunca se quede sin capacidad y su equipo no apague incendios operativos a las 3 a.m.

Desarrollo multiplataforma

Ya no es suficiente desarrollar su aplicación de chat para un solo dispositivo. Ahora tiene que ser accesible a través de varias plataformas y sistemas operativos. Por supuesto, el tiempo de desarrollo y los desafíos técnicos se multiplican con cada plataforma adicional, ya que deberá navegar por diferentes SDK y lenguajes de programación.

Afortunadamente, hay proveedores que ofrecen SDK dirigidos a múltiples plataformas, de modo que los equipos puedan desarrollar utilizando los lenguajes y las herramientas que ya conocen.

Seguridad y cumplimiento

La seguridad es lo más importante para la mayoría de los usuarios hoy en día, y se espera que la mensajería en particular sea privada y segura. Además, lo más probable es que deba cumplir con los requisitos de cumplimiento (GDPR, SOC2) y cualquier marco específico de la industria, como HIPAA para proteger la privacidad del paciente.

Como mínimo, debe cifrar los datos en tránsito y en reposo, e implementar una autenticación robusta, así como un sistema de permisos.

Capacidades para construir un chat enriquecido

Hay mucho más para chatear una vez que haya desarrollado los conceptos básicos. También debe pensar en canales, emojis, recibos de lectura, comunicar la presencia del usuario (en línea, fuera de línea, escribir) y más. La presencia es una característica particularmente difícil de manejar a escala .

Estas son muchas partes móviles para desarrollar y mantener internamente, por lo que es una buena idea integrar las API que ya ofrecen estas funciones adicionales para permitir que su equipo se concentre en las capacidades principales de chat.

Simplificando el desarrollo de su aplicación de mensajería de chat con Ably

Dados los desafíos potenciales involucrados en la construcción de una infraestructura de aplicaciones de mensajería en tiempo real confiable, es comprensible por qué empresas como Hubspot eligen descargar el esfuerzo de infraestructura en tiempo real a un PaaS como Ably .

Ably proporciona una infraestructura altamente confiable y escalable globalmente para mensajería en tiempo real entregada a través de API basadas en WebSocket. Además, Ably ofrece un conjunto de capacidades flexibles para crear funciones de chat enriquecidas : presencia de usuarios, interacciones de mensajes, historial y rebobinado, notificaciones automáticas, autenticación de usuarios y reconexiones automáticas con continuidad.

No hay una infraestructura compleja para aprovisionar, administrar o escalar. Y proporcionamos garantías y SLA en rendimiento, integridad de datos, confiabilidad y disponibilidad. Con Ably, puedes contar con:

  • Rendimiento predecible: una red perimetral global de baja latencia y alto rendimiento, con latencias medias de <65 ms.
  • Pedido y entrega garantizados: los mensajes se entregan en orden y exactamente una vez, incluso después de las desconexiones.
  • Infraestructura tolerante a fallas: redundancia a nivel regional y global con SLA de tiempo de actividad del 99,999 %.
  • Alta escalabilidad y disponibilidad: construido y probado en batalla para manejar millones de conexiones simultáneas a escala sin esfuerzo.
  • Costos y tiempos de compilación optimizados: las implementaciones suelen ver un costo 21 veces menor y más de $ 1 millón ahorrados en el primer año.

Hable encaja perfectamente en el corazón de su arquitectura, entre su frontend y backend, y proporciona integraciones administradas con otros protocolos y servicios de terceros.

Con las complejidades de la infraestructura en tiempo real atendidas, y la libertad de adaptar y crear capacidades para satisfacer sus necesidades, puede ofrecer una aplicación de chat en vivo 3 veces más rápido sin escatimar en funciones. Eso le permite concentrarse en su código y hacer que los grandes jugadores actuales en el mercado de aplicaciones de chat corran por su dinero.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *