Al entrar en mi nueva empresa me topé con un cambio drástico en la forma en la que los elementos de la infraestructura se comunican entre sí. Para entenderlo mejor, mi compañero Iván me dejó el libro XMPP: The Definitive Guide, escrito por Peter Saint-Andre , Kevin Smith y Remko Tronçon.
El libro muestra los últimos avances recorridos en XMPP, los estándares más empleados e implementados e incluso el desarrollo de forma ágil de una aplicación XMPP en Python. Dejo la recomendación del libro pues me ha resultado de mucha ayuda y es muy ameno.
La forma de emplear el sistema mezclada con lo que permite en sí el protocolo hace que el desarrollo de sistemas SOA (Service Oriented Architecture) sea mucho más completo que con HTTP. La arquitectura con XMPP proporciona:
- La capacidad de mantener los elementos conectados. Los componentes que se pueden anexionar a los servidores XMPP pueden servir como sistemas RPC a los clientes u otros componentes en la misma red.
- Mantiene la presencia de los elementos en la red. El servidor puede avisar a clientes o componentes subscritos de la presencia de un componente u otro cliente.
- Comunicación cliente a cliente. Un cliente puede enviar un mensaje directamente a otro cliente, o un componente directamente a un cliente. El esquema no es cliente-servidor, y la comunicación es de conexión completa o total, con lo que la información puede fluir sin problemas en cualquier dirección.
- Suscripción y Publicación. Además de la presencia, los componentes y clientes pueden establecer colas a las que se pueden suscribir clientes o componentes y publicar ahí información con la frecuencia que se desee.
- Los clientes pueden ser aplicaciones de escritorio, con lo que un usuario puede recibir información directa de los sistemas e interactuar con ellos.
Los sistemas son completamente asíncronos, con lo que puede enviarse tanta información como se quiera y estar al tanto de las respuestas al mismo tiempo.
Además, XMPP tiene extensiones para el traspaso de ficheros y el establecimiento de llamadas con su extensión Jingle. Todas estas extensiones se recogen en la página oficial de extensiones y son enumeradas con las letras XEP seguida de 4 dígitos numéricos.
Una red que base su comunicación en una serie de servidores Jabber (o XMPP) puede construir una red compleja en la que sus sistemas interactúen conectando cada elemento al sistema elaborando llamadas propias a través de la personalización de stanzas de tipo IQ con sus propios espacios de nombres.
Sin duda, la implementación de sistemas SOA en XMPP puede facilitar tareas bastante complejas en otros protocolos, como HTTP, facilitando no solo el tránsito de mensajes, sino también la escalabilidad, disponibilidad y el alto rendimiento.