Claves para una aplicación web en la nube
no trabajar con datos en local
La elasticidad implica la creación y destrucción de máquinas/instancias de manera dinámica. Por tanto, hay que tener presente que los datos de un servidor serán destruidos cuando se pare. Nuestra aplicación web en la nube tiene que estar preparada para tal eventualidad. Por ejemplo, si nuestra aplicación permite a los usuarios subir ficheros para que luego éstos sean consultados por el resto de usuarios, no podremos ubicarlos en un directorio local del servidor que atienda la petición.
Los diferentes proveedores nos ofrecen soluciones donde alojar nuestros ficheros para poder ser accedidos por las diferentes instancias de nuestra aplicación e incluso, en caso necesario, otros servicios.
Un ejemplo sería Elastic File System de AWS o File Storage de Azure.
No usar datos en sesión de usuario en el servidor
Los datos de sesión son información útil de cada usuario que se pueden guardar en el servidor. Habitualmente, son necesarios para un correcto funcionamiento de la aplicación. Estamos en la misma situación que el punto anterior. Para que nuestra aplicación web en la nube pueda beneficiarse de la elasticidad necesitamos dejar de depender del entorno en el cual se está ejecutando nuestra aplicación. Por tanto, requerimos de algún servicio que permita almacenar esta información y pueda ser accesible de manera rápida.
Para gestionar estas situaciones, los entornos Cloud nos ofrecen soluciones de base de datos de memoria como ElastiCache en AWS o Azure Redis Cache en Azure.
Utilizar cache para el contenido estático
El uso de cache hace que nuestra aplicación se libere de gestionar aquellas peticiones en las que el contenido no se modifica (p.e. una imagen). Si a esto le sumamos que dicha respuesta se ofrece desde diferentes partes del mundo en función de la situación geográfica del origen, se mejora la velocidad y se reduce el consumo de recursos en nuestros servidores. No obstante, la aplicación web en la nube tiene que ser consciente de este hecho para poder gestionar estas peticiones y controlar cuando tiene, o no, que actualizar un contenido.
Servicios como Cloud Front de AWS o Content Delivery Network de Azure están diseñados con este propósito.
Desplegar nuevas funcionalidades sin pérdida de servicio
El último punto que, en nuestra opinión, una aplicación web en la nube debe cumplir, es realizar despliegues sin pérdida de servicio. Después, realizar pruebas con un entorno idéntico al productivo y garantizar, en caso de problemas, la vuelta a la versión anterior. Esto debería hacerse de manera rápida y transparente para los usuarios.
Diseñar y construir este tipo de procesos puede resultar complicado, ya que requiere de amplios conocimientos de infraestructura, así de como de la tecnología utilizada por cada proveedor. Solo los podremos implementar con éxito si establecemos sistemas automatizados de control de cambios, despliegue, y gestión de la infraestructura.
Top comments (0)