Exploración de la Arquitectura REST
Introducción
En el vertiginoso mundo de la tecnología de la información, la Arquitectura REST se ha consolidado como un enfoque esencial para el desarrollo de servicios web. Introducida por Roy Fielding en 2000, la Arquitectura REST se basa en protocolos estandarizados, con énfasis en la simplicidad y la eficiencia en las interacciones cliente-servidor.
Este trabajo tiene como objetivo proporcionar
un análisis conciso de la Arquitectura REST, sus principios, beneficios ,componentes, importancia, ventajas y desventajas, y cómo su implementación puede optimizar el rendimiento y la
escalabilidad de las aplicaciones web. Nuestro estudio será una valiosa fuente
de información para desarrolladores y arquitectos de software interesados en
mejorar la eficacia de sus servicios web.
¿Qué es Arquitectura Rest
REST
es una arquitectura de desarrollo web que puede ser utilizada en cualquier
cliente HTTP. Además, es mucho más simple que otras arquitecturas ya
existentes, como pueden ser XML-RPC o SOAP. Esta simplicidad se consigue porque
emplea una interfaz web que usa hipermedios para la representación y transición
de la información.
Esta
arquitectura fue definida por Roy Fielding en el año 2000, que además es unos
de los principales artífices de la especificación del protocolo HTTP.
Objetivos:
- Simplicidad y eficiencia: REST busca simplificar la interacción entre el cliente y el servidor mediante el uso de un conjunto limitado de métodos bien definidos.
- Escalabilidad: Los servicios REST están diseñados para ser escalables, lo que significa que pueden manejar un gran número de solicitudes simultáneas y se pueden ampliar para satisfacer la demanda creciente.
- Interoperabilidad: Los sistemas basados en REST se construyen con la expectativa de que interactuarán con otros sistemas. Por lo tanto, se busca que sean compatibles y puedan trabajar juntos de manera eficiente.
- Sin estado: En la arquitectura REST, las solicitudes del cliente al servidor son independientes y pueden ser procesadas individualmente. Esto permite una mayor confiabilidad y escalabilidad ya que el servidor no necesita recordar información sobre el estado del cliente entre solicitudes.
- Rendimiento: Al permitir el almacenamiento en caché y al limitar la cantidad de datos transmitidos, la arquitectura REST busca mejorar el rendimiento y la velocidad de las aplicaciones web.
- Seguridad: Aunque REST no define por sí mismo mecanismos de seguridad, su diseño sin estado y su uso del protocolo HTTP permiten la aplicación de fuertes mecanismos de seguridad.
La principal ventaja de esta arquitectura es que ha aportado a la web una mayor escalabilidad, es decir, dan soporte a un mayor número de componentes y las interacciones entre ellos. Esta ventaja es gracias a una serie de características que presenta la arquitectura REST:
- Es un protocolo sin estado, debido a que no se guarda la información en el servidor. Es decir, toda la información será enviada por el cliente en cada mensaje HTTP, consiguiendo un ahorro en variables de sesión y almacenamiento interno del servidor.
- Presenta un conjunto de operaciones bien definidas, siendo las más importantes GET, POST, PUT y DELETE, que se emplea en todos los recursos.
- Utiliza URIs únicas siguiendo una sintaxis universal. Estas URIs deben seguir unas pautas que veremos más adelante.
- Emplea hipermedios para representar la información, que suelen ser HTML, XML o JSON.
Separación
cliente/servidor
Al ser
sistemas independientes (solo se comunican con un lenguaje de intercambio como
JSON) puedes desarrollarlos proyectos autónomos, equipos autónomos. Al cliente
le da igual cómo está hecha la API y al servidor le da igual qué vas a hacer
con los datos que te ha proporcionado.
Independencia
de tecnologías / lenguajes
Puedes
desarrollar en cualquier tipo de tecnología o lenguaje con la que te sientas a
gusto o con la que puedas acortar tus tiempos de desarrollo, o encaje con la
filosofía o necesidades de tu proyecto. Es indiferente que en el futuro cambies
totalmente las tecnologías con las que está implementado tu API REST, siempre y
cuando respetes "el contrato", osea, que sigas teniendo las mismas
operaciones en el API y hagan las mismas cosas que se supone que deben hacer.
Fiabilidad,
escalabilidad, flexibilidad
Al final solo te tienes que preocupar que el nexo cliente / servidor esté correcto. Puedes hacer cambios en tu servidor, lenguajes, bases de datos, etc. y mientras devuelvas los datos que toca todo irá correctamente.
Escalabilidad
porque puedes crecer todo lo que necesites en cada momento. Tu API puede
responder a otros tipos de operaciones o puede versionarse tanto como desees.
También tu programación del lado del cliente puede crecer todo lo necesario con
el tiempo, incluso como decíamos, crear otros frontales, no solo web, también
de Apps para cualquier dispositivo.
Experiencia
de usuario
Aunque
eso depende más de cómo está hecha la parte del cliente, teóricamente el
desarrollo de sitios web basados en un API puede dar mejor desempeño que uno
tradicional. Cuando haces una solicitud al servidor lo que tienes como
respuesta son datos planos, que requieren tiempos de transferencia menores que
si esos mismos datos los recibieras mezclados con el HTML/CSS de la
presentación.
Desventajas:
- Estado sin memoria (Stateless): REST es sin memoria, lo que significa que cada solicitud del cliente al servidor debe contener toda la información necesaria para comprender y procesar la solicitud. Esto puede llevar a una mayor cantidad de datos transmitidos y un rendimiento ligeramente menor, especialmente cuando se maneja una gran cantidad de datos.
- No es ideal para aplicaciones en tiempo real: REST no es la mejor opción para aplicaciones que requieren actualizaciones en tiempo real y comunicación bidireccional, como las aplicaciones de chat en tiempo real. Para este tipo de aplicaciones, tecnologías como WebSockets o GraphQL podrían ser más apropiadas.
- Sobre-Fetching y Under-Fetching: Este es un problema que se encuentra en las APIs REST donde el servidor puede enviar datos adicionales que el cliente no necesita (Sobre-Fetching) o el cliente tiene que hacer múltiples solicitudes para obtener todos los datos necesarios (Under-Fetching). Esto puede afectar la eficiencia y el rendimiento de la aplicación.
- Estructura de URL compleja para solicitudes más avanzadas: Las APIs REST necesitan una estructura de URL más compleja para solicitudes avanzadas como la filtración de datos, lo que puede resultar complicado de implementar y mantener.
- La arquitectura REST, que es la abreviatura de Representational State Transfer, es una popular elección para desarrollar APIs por su simplicidad, escalabilidad, y la universalidad de su uso en la web. REST aprovecha los protocolos HTTP estándar y los métodos de solicitud como GET, POST, PUT y DELETE para facilitar la interacción entre los clientes y el servidor.
- A pesar de algunas desventajas, como ser estado sin memoria, la dificultad en gestionar aplicaciones en tiempo real, problemas de sobre-fetching y under-fetching, estructuras de URL complejas para solicitudes avanzadas, desafíos con el versionado de la API y la manipulación de errores, REST se mantiene como una de las arquitecturas más utilizadas.
- Muchas de estas desventajas pueden mitigarse con un diseño y una planificación adecuados. Por ejemplo, se pueden usar tecnologías complementarias o alternativas como GraphQL para superar limitaciones en escenarios específicos. Además, en muchos casos, la amplitud del soporte y la vasta cantidad de herramientas y bibliotecas disponibles para desarrollar y mantener APIs REST compensan sus desventajas.
GuassWebApp(2014): Arquitectura REST: la arquitectura del momento. Extraido de: https://gausswebapp.com/arquitectura-rest.html
- Alvares, M (2014): Ventajas e inconvenientes de API REST para el desarrollo. Extraído de: https://desarrolloweb.com/articulos/ventajas-inconvenientes-apirest-desarrollo.html

Comentarios
Publicar un comentario