Stateful Web

github.com/kaozdl

kaozdl@gmail.com

Acerca de mi

¿Que es un navegador web?

Los inicios de la web

Los primeros sitios web no eran experiencias interactivas.
Se escribían sitios en HTML directo que se navegaban a traves de links.

Server Side Rendering

Para permitir mas interactividad lenguajes como PHP podían integrarse en el código HTML, renderizando páginas "al vuelo" en función de los datos ingresados por los usuarios.

Con esto nacen las primeras aplicaciones web

La era JQuery

Javascript, un lenguaje inicialmente pensado para añadir algo de interactividad a los sitios, empezó a permitir el desarrollo de aplicaciones web que corrían en el lado del cliente, en lugar del servidor.
JQuery es un ejemplo muy popular de esto con su $.ajax()

La era de la SPA

Este estilo de aplicaciones se popularizo incluso mas con la aparición de las apis REST.
Nacieron muchos frameworks para crear este tipo de aplicaciones.
React, Vue y Angular son ejemplos populares de este tipo de frameworks.

Sin embargo las SPA presentan algunos problemas

Problemas de las SPA

  • Se mandan muchos MB de JS al cliente
  • El cliente necesita cargar mucho JS antes de poder funcionar
  • Separación arbitraria en la capa de comunicación (front-end/back-end)
  • Usualmente requiere mas desarrolladores
  • El desarrollo de la capa de comunicación implica un tiempo extra.
JS Fatigue

La fatiga de JS

Estas herramientas son ampliamente usadas hoy dia, pero cuales realmente precisamos?

Stimulus es un framework pensado para mejorar la experiencia del HTML estático o renderizado en el servidor.

El HTML que "ya está ahí"

Esto se logra conectando objetos de JS con elementos del documento mediante anotaciones.

Es posible centralizar el estado de una aplicación web en el Backend, enviando al cliente sólamente las actualizaciones necesarias, logrando una performance similar a la nativa.

Chris McCord

La web también evolucionó

Websockets

  • La conexión con el servidor es permanente

  • El servidor puede mandar datos al cliente sin que este lo pida

  • El servidor es consciente del estado del cliente

Phoenix LiveView

¿En que consiste la idea?

  • Usar una cantidad mínima de JS, solo para la comunicación
  • La mayor parte del renderizado ocurre en el servidor
  • Luego del renderizado inicial, el servidor indica los cambios y JS los aplica

Otros frameworks tomaron esta idea

Stimulus Reflex busca extender la capacidad de Rails y Stimulus, Interceptando las interacciones del HTML y enviándolas al servidor mediante web-sockets.
Estas interacciones son procesadas en el servidor mediante acciones "Reflexes" sin necesidad de recargar la página para observar un cambio.

Django-Sockpuppet

Pros

  • Lógica de negocio centralizada en el servidor
  • Menores tiempos de respuesta
  • Menor carga del lado del cliente puede ayudar en dispositivos lentos (celulares)
  • Los cambios se ven muy rápido

Contras

  • Es muy facil incluir lógica en la capa de presentación
  • Si la conexión se corta la app deja de funcionar
  • Mayor carga del lado del server
  • Puede requerir infraestructura adicional
  • Requiere un cambio de paradigma

¿Que se puede hacer con esto?

Elixir Web Console

  • https://elixirconsole.wyeworks.com/

Tune

  • https://tune.fullyforged.com/

Text on Arrival

  • https://textonarrival.com/

Gracias por escuchar!

Links para seguir leyendo

Stateful Webconf

By Kalil De Lima

Stateful Webconf

  • 206