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.

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:

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.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete