Un backend único para dominarlos a todos
Aunque tengamos que desarrollar en lenguajes y plataformas diferentes, uno de los mejores objetivos que podemos plantearnos en un departamento técnico es utilizar un mismo backend que nos sirva de base para los distintos frontales. Esta forma de trabajar nos obligará a cambiar algunas costumbres y arquitectura de las aplicaciones, pero será el mejor marco para abarcar todo tipo de proyectos, especialmente si se trata de proyectos de cierta envergadura.
Esto nos hace entender la preocupación actual de desarrollo basado en API: realizar un backend, con datos y lógica de negocio que sea capaz de funcionar en cualquier frontal que queramos aplicar. Para entenderlo, recordemos que antes se desarrollaba con un lenguaje del lado del servidor y hoy se tiende a construir un backend que devuelva datos en crudo, y así evitar generar HTML o cualquier otro tipo de salida específica de una plataforma.
El backend , cuando recibe una solicitud, suele responder enviando de vuelta datos en un lenguaje de intercambio, que podría ser el XML, aunque por su sencillez y ligereza de procesamiento los desarrolladores hemos acogido en masa JSON, la notación de objeto JavaScript.
Ventajas del desarrollo basado en API
- Se descargan tareas del servidor ya que generar un JSON es más ligero que renderizar código HTML.
- Damos más trabajo a los clientes web, que mediante Javascript son los responsables de generar la vista que se desee para mostrar esos datos.
- Se mejora la experiencia de usuario porque los datos viajarán más rápido.
- Si queremos mostrar los datos de otra forma, con cambiar el template es suficiente y el backend se mantiene tal cual.
- Ahorramos trabajo al realizar las app de cualquier plataforma móvil ya que utilizaremos el mismo servicio backend.
API REST
Acrónimo de REpresentational State Transfer, REST es la respuesta para implementar un servicio web. La clave en este caso es que un servicio REST no tiene estado. Una aplicación no guarda ninguna información de un usuario, entre una llamada al servicio web y la siguiente pero esto se traduce en ventajas del lado del servidor, como un mayor rendimiento.
Problemática de los datos de sesión
El manejo de sesiones es uno de los problemas optimización de los sistemas backend. Aumentar la memoria del servidor será suficiente para atender a más usuarios, pero habrá un momento que por mucho que se aumente no se conseguirá un mayor rendimiento. Tal vez, varios servidores menores en cluster suelen ser más eficientes que uno mayor, aunque también puede generar algún problema con los datos almacenados en la sesión.
¿Cómo conseguimos mantener la identidad de una aplicación, cuando no somos capaces de mantener el estado de los clientes que nos visitan? La respuesta pasa por usar otro tipo de almacenamiento, como serían las bases de datos. Sin embargo, nuestro problema ahora estará en la autenticación y aquí es donde entran en juego los tokens, de los que hablamos a continuación brevemente.
Funcionamiento del token en API REST
Resumimos qué es el token, necesario en el desarrollo de aplicaciones basadas en API REST, que nos permite tener un único backend para diferentes frontales.
Cuando un usuario se identifica en un servicio REST lo hace con sus credenciales de acceso (usuario y clave). El servidor, cuando confirma, devuelve al cliente un token, que no es más que una cadena alfanumérica muy larga e irrepetible, es único por cada usuario y tienen una caducidad corta. Cada solicitud que haga el mismo usuario al API REST vendrá acompañada del token de sesión y así el servidor sabrá que éste es el usuario que se ha autenticado. El token se guarda en un sistema de almacenamiento común que permita el acceso desde cualquier servidor.