Channels, la apuesta de Django para modernizar el desarrollo de aplicaciones

Introducción

Django es el framework por excelencia para desarrollo web en Python que, con más de 10 años de vida, es sin duda una de las mejores plataformas open source para construir aplicaciones web hoy en día.

Desde sus inicios la filosofía del framework fue agilizar el desarrollo de aplicaciones ayudando a los desarrolladores a trabajar de una forma limpia y pragmática para así alcanzar los objetivos con la máxima calidad posible. La seguridad, escalabilidad y versatilidad han sido los pilares sobre los que se sustenta su filosofía, lo que se resume en su leitmotiv: “…el framework para perfeccionistas con fechas de entrega”.

El uso de Django está hoy en día muy extendido en la industria y es usado en grandes y pequeñas compañías de gran impacto como: Google, Instagram, Spotify, Dropbox, Quora, NASA o Telefónica. Varios de los proyectos más exitosos desarrollados en Paradigma han sido construidos usando Django.

Django

 

La web tradicional

Tradicionalmente el desarrollo web en general se ha movido en un paradigma donde la información se ofrecía a través de páginas web estáticas, o recuperando esa información desde una base de datos y sirviéndola siguiendo el patrón Modelo Vista Controlador (MVC).

Django ha nacido y evolucionado en este entorno y, como otros frameworks, se ha basado en un modelo de peticiones y respuestas; donde el cliente nos realiza peticiones a través de HTTP y el framework nos ayuda a gestionarlas y procesarlas para devolverle una respuesta con la información solicitada.

1

(Fuente: blog.heroku.com)

La web del futuro

Sin embargo, el mundo ha cambiado y los desarrollos se han vuelto más complejos. Las aplicaciones necesitan ser más ricas e interactuar más con los clientes. Además, muchas veces están compuestas de varios servicios que deben colaborar entre ellos (microservicios) y, en ocasiones, gestionar información en tiempo real o siguiendo modelos peer-to-peer. Nuevas tecnologías como Ajax y WebSockets están sobradamente consolidadas y es necesario integrarlas de la manera más rápida y sencilla posible.

En este nuevo contexto ha llegado el momento de romper los esquemas tradicionales y buscar nuevas formas de hacer las cosas que se adapten al mundo actual. La propuesta de Django en este sentido es Channels, un paso de gigante en la evolución del framework, que nos propone un nuevo paradigma para hacer las cosas.

Channels

Channels nos ofrece dos grandes funcionalidades nuevas, a través de una nueva abstracción:

  • La primera es la posibilidad de manejar de una forma sencilla e integrada en el framework todo el trasiego de información y la gestión asociada a los WebSockets.
  • La segunda nos proporciona la posibilidad de manejar y gestionar las tareas que ejecutarán en background y que harán de consumidores.

2

(Fuente: blog.heroku.com)

Como se puede ver en el diagrama el modelo tradicional de petición/respuesta queda perfectamente integrado dentro un esquema general más potente y extenso, lo que nos permite integrar progresivamente este nuevo concepto en nuestras aplicaciones sin tener que tirar código antiguo.

Lo que se nos proporciona principalmente es un sistema de cola de tareas. Los mensajes son introducidos en el “channel” por los productores y entregados al consumidor que está escuchando en ese canal. El diseño inicial prevé usar Redis para soportar la capa “channel layer” y manejar los mensajes, pero a través de un API de alto nivel, que permitirá integrar otras colas o sistemas de paso de mensajes en el futuro.

Todo el sistema ha sido pensado en la escalabilidad, de manera que podemos escalar horizontalmente levantando tantos procesos como necesitemos.

Conclusión

Sin duda, Channels va a suponer un antes y un después en el desarrollo de aplicaciones modernas con Django, manteniendo los principios de limpieza y elegancia que siempre han definido su diseño.

Django Channels está disponible hoy en día como un paquete separado, pero ya puede ser usado en Django desde la versión 1.8. Está previsto que se integre en el core del framework en la versión 1.10 que se estima será liberada en el verano de 2016.

Este artículo está fuertemente inspirado y motivado por el gran artículo escrito por Jacob Kaplan-Moss, uno de los desarrolladores del core de Django más notables y que nos puede servir como punto de partida para profundizar más en Channels.

No cabe duda de que este es el mejor momento para empezar a probar Channels, conocerlo en profundidad y empezar a pensar cómo integrarlo en nuestras arquitecturas para construir las aplicaciones del futuro.

Manuel Zaforas es Ingeniero Superior en Informática por la UPM. Está interesado en HPC, IoT, Cloud, NoSQL, Big Data, Data Science, Machine Learning y Agile. Apoya activamente la implantación de software libre, la calidad en los procesos de desarrollo de software a través de la mejora continua y la innovación en las metodologías de desarrollo y gestión de equipos. Actualmente trabaja en Paradigma como Scrum Master y Arquitecto Software.

Ver toda la actividad de Manuel Zaforas

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

Comentarios

  1. Fernando Buelvas dice:

    Muchas gracias por la información.

Escribe un comentario