En los últimos dos años, se ha observado un rápido aumento de las aplicaciones en tiempo real que ayudan a grupos de personas a reunirse virtualmente con una latencia prácticamente nula. Las expectativas de los usuarios también han aumentado. Tus usuarios esperan que las funciones de vídeo y audio en tiempo real funcionen sin problemas. Nos dimos cuenta de que los desarrolladores que crean aplicaciones en tiempo real quieren pasar menos tiempo desarrollando y manteniendo nfraestructura de bajo nivel. Los desarrolladores también nos hicieron saber que quieren dedicar más tiempo a crear funciones que realmente hagan su idea especial.
Así que hoy anunciamos un nuevo producto que permite a los desarrolladores crear aplicaciones de audio y vídeo en tiempo real. Cloudflare Calls expone un conjunto de API que te permite desarrollar:
Aplicaciones de videoconferencia con una interfaz de usuario personalizada.
Conversaciones interactivas en las que los moderadores pueden invitar a determinados miembros del público "en directo" como ponentes.
Aplicaciones de entrenamiento en grupo que priorizan la privacidad y en las que solo el monitor puede ver a los participantes, y estos al monitor.
Charlas informales en remoto en las que una o varias personas pueden mantener una videollamada con una audiencia de más de 10 000 personas en tiempo real (con un retraso de < 100 m/s).
El protocolo que hace posible todo esto es WebRTC, y Cloudflare Calls es el producto que elimina la complejidad convirtiendo la red de Cloudflare en un "súper par", lo que te permite crear experiencias en tiempo real fiables y seguras.
¿Qué es WebRTC?
WebRTC es un protocolo punto a punto que permite que los dispositivos de dos o más usuarios hablen entre sí directamente y sin salir del navegador. En una implementación nativa, la arquitectura punto a punto suele funcionar bien para llamadas 1:1 con solo dos participantes. Sin embargo, a medida que se añaden más participantes, es habitual que experimenten problemas de fiabilidad, como bloqueo de vídeo y desincronización de los participantes. ¿Por qué? Porque a medida que aumenta el número de participantes, también aumenta la sobrecarga de coordinación entre los dispositivos de los usuarios. Cada participante tiene que enviar datos multimedia a cada uno de los otros participantes, lo que eleva exponencialmente el consumo de datos de cada equipo.
Las unidades de reenvío selectivo (SFU) resuelven este problema. Una SFU es un sistema que conecta a los usuarios entre sí en aplicaciones en tiempo real, gestionando y enrutando de forma inteligente los datos de vídeo y audio entre los participantes. Las aplicaciones que utilizan una SFU reducen la capacidad de datos requerida de cada usuario porque no necesita enviar datos a todos los demás. Las SFU son elementos necesarios de las aplicaciones en tiempo real cuando las aplicaciones necesitan determinar quién está hablando en ese momento o cuando quieren enviar vídeo con resolución adecuada cuando se utiliza la transmisión simultánea WebRTC.
Más allá de las SFU
La naturaleza centralizada de las SFU es también su punto débil. Un servidor WebRTC centralizado necesita una región, lo que significa que será lento en la mayor parte del mundo para la mayoría de los usuarios, mientras que será rápido solo para unas determinadas regiones.
Si hubiera una sola oficina de correos que recibiera y enviara todo el correo del mundo, la mayoría de las personas recibirían tarde el correo. Las SFU reciben la información que cada usuario envía y la reenvían al destino adecuado, igual que una oficina postal. El uso de las SFU está muy generalizado porque hay pocas alternativas listas para usar que sean fiables, configurables y asequibles a escala.
Normalmente, las SFU se desarrollan internamente en nubes públicas. Consumen mucho ancho de banda al recibir y enviar datos multimedia de alta resolución a muchos dispositivos. Además, conllevan un importante esfuerzo de desarrollo que requiere que tu equipo configure manualmente las regiones y la escalabilidad.
Nos dimos cuenta de que limitarse a ofrecer SFU como servicio no resolvería el problema de la eficiencia del coste y el ancho de banda.
El mayor servidor WebRTC del mundo
Cuando estás en una videollamada de cinco personas con una implementación clásica de WebRTC, los dispositivos de cada persona hablan directamente entre sí. En la jerga de WebRTC, cada uno de los cinco participantes se denomina par. La fiabilidad de la llamada de cinco personas solo será lo buena que sea la fiabilidad de la persona (o par) con la conexión a Internet más deficiente.
Desarrollamos Calls con una premisa sencilla: "¿Y si Cloudflare pudiera actuar como un par de WebRTC?". Calls es un "súper par" o un "servidor gigante que abarca todo el mundo" que permite desarrollar aplicaciones más allá de las limitaciones del par del mínimo común denominador o de una SFU centralizada. Los desarrolladores pueden centrarse en la capacidad de su aplicación en lugar de intentar compensar las deficiencias del par más débil en una topología p2p.
Calls no utiliza la topología tradicional de SFU en la que cada participante se conecta a un servidor centralizado en una única ubicación. En su lugar, cada participante se conecta a su centro de datos local de Cloudflare. Cuando otro participante quiere recuperar esos datos multimedia, se encuentra el centro de datos que aloja ese flujo de datos multimedia original y las pistas se reenvían entre los centros de datos de forma automática. Si dos participantes están físicamente cerca, sus datos multimedia no recorren todo el mundo hasta una región centralizada, sino que utilizan el mismo centro de datos, lo que reduce notablemente la latencia y mejora la fiabilidad.
Calls es un servidor WebRTC configurable, global y sin regiones, del tamaño de la red de Cloudflare, que está en constante crecimiento. El protocolo WebRTC permite a los interlocutores enviar y recibir pistas multimedia. Cuando estás en una videollamada, tu ordenador suele enviar dos pistas: una que contiene el audio de tu discurso y otra que contiene el flujo de vídeo de tu cámara. Calls implementa la API de WebRTC, https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionRTCPeerConnection, a través de la red de Cloudflare, donde los usuarios pueden enviar pistas multimedia. Calls también expone una API en la que se pueden solicitar otras pistas multimedia dentro del mismo contexto de PeerConnection.
Hoy en día, cuando alguien menciona "tiempo real a través de WebRTC", solemos suponer una videoconferencia con más de 50 participantes en la que cada participante habla con todos los demás, y cada participante ve a los otros 49 que se unen y abandonan la reunión. La API de Calls permite controles granulares que no se pueden implementar solo con WebRTC estándar. Cuando desarrollas con Calls, solo te limita tu imaginación, no la tecnología.
Cloudflare Calls te permite usar las API de RTC estándar sin los inconvenientes de rendimiento y fiabilidad. Calls implementa la API de PeerConnection en el perímetro, reduciendo así la imprevisibilidad asociada a los usuarios finales que se conectan directamente entre sí. Se ejecuta en todas las ubicaciones y servidores de Cloudflare. Como la red de Cloudflare está a menos de 10 milisegundos del 90 % de la población mundial, no añade ninguna latencia perceptible.
Cloudflare Calls será una buena solución si gestionas tu propio servidor WebRTC, como Janus o MediaSoup. También puede sustituir las implantaciones existentes de Janus o MediaSoup, especialmente en los casos en que tengas clientes que se conecten globalmente a una única implantación centralizada.
Región: Tierra
Desarrollar y mantener tu propia infraestructura en tiempo real conlleva retos únicos en términos de arquitectura y escalado. Cuando gestionas tu propia infraestructura de servidores WebRTC, es necesario que respondas y revises constantemente tus respuestas a preguntas peliagudas como: "¿qué regiones admitimos?", "¿cuántos usuarios necesitamos para justificar la creación de más infraestructura en otra región de la nube?", "¿cómo escalamos durante los picos de uso imprevistos?" y "¿cómo evitamos las pérdidas económicas durante las horas de bajo uso de nuestra infraestructura?".
Cloudflare Calls elimina la necesidad de responder a estas preguntas. Calls utiliza anycast para cada conexión, de modo que cada paquete se dirige siempre a la ubicación de Cloudflare más cercana. Es global por naturaleza. Tus usuarios son atendidos automáticamente desde una ubicación cercana a ellos. Calls escala con su uso y tu equipo no tiene que crear su propia lógica de escalado automático.
Responde a la pregunta "¿dónde está el problema? pero más rápido
Cuando hablamos con clientes con cargas de trabajo WebRTC, hay un tema recurrente. Los clientes desearían que la solución de problemas fuera más fácil. Cuando un grupo de personas habla a través de una videollamada, lo que está en juego es mucho más importante cuando los usuarios tienen problemas. Cuando una página web no se carga, es habitual que los usuarios vuelvan a intentarlo al cabo de unos minutos, pero cuando se interrumpe una videollamada, suele ser el fin de la llamada.
El enfoque de Cloudflare Calls en la observabilidad ayudará a los clientes a llegar al fondo de los problemas más rápidamente. Calls se ha desarrollado en la infraestructura de Cloudflare, de ahí que tengamos visibilidad de extremo a extremo desde todas las capas del modelo OSI.
Calls ofrece una vista del lado del servidor de la API de estadísticas de WebRTC para que puedas ahondar en los problemas de cada conexión de pares y en el flujo de datos multimedia dentro de ella sin depender solo de los datos enviados por los clientes. Optamos por esto porque la API de estadísticas es un lugar estandarizado en el que los desarrolladores están acostumbrados a obtener información sobre su experiencia. Es la misma API disponible en los navegadores y es posible que ya la estés utilizando hoy para obtener información sobre el rendimiento de tus conexiones WebRTC.
La privacidad y la seguridad son clave
Calls elimina la necesidad de que los participantes compartan entre sí información como su dirección IP. Digamos que estás creando una aplicación que conecta a terapeutas y pacientes mediante videollamadas. Con una implementación tradicional de WebRTC, los dispositivos del paciente y del terapeuta hablarían directamente entre sí, lo que llevaría a la exposición de datos potencialmente confidenciales, como la dirección IP. La exposición de información como la dirección IP puede poner en riesgo a tus usuarios con ataques de denegación de servicio.
Con Calls, sigues utilizando WebRTC, pero cada participante se conecta a la red de Cloudflare. Si cuatro personas están en una videollamada con Cloudflare Calls, cada uno de los dispositivos de los cuatro participantes estará hablando solo con la red de Cloudflare. La experiencia para tus usuarios finales será como una llamada punto a punto, solo que con las ventajas añadidas de seguridad y privacidad.
Por último, todo el tráfico de vídeo y audio que pasa por Cloudflare Calls está encriptado por defecto. Calls usa nuestros productos, incluido Argo, para enrutar el contenido de vídeo y audio de forma segura y eficiente.
¿Y ahora qué?
Hoy anunciamos Cloudflare Calls en versión beta cerrada. Para probar Cloudflare Calls, solicita una invitación y consulta tu bandeja de entrada en las próximas semanas.
La versión beta de Calls será gratuita. Queremos trabajar con los primeros clientes que quieran participar con nosotros cuando Calls empiece a estar disponible de forma general. Si estás creando una aplicación de vídeo en tiempo real, tienes problemas para ampliar la infraestructura WebRTC tradicional o simplemente tienes una gran idea que quieres explorar, deja un comentario cuando solicites una invitación y nos pondremos en contacto contigo.