Arquitectura Orientada a Recursos
La arquitectura orientada a recursos es un estilo de arquitectura de software que se basa en la idea de que todo es un recurso, y que estos recursos pueden ser accedidos y manipulados a través de una interfaz uniforme. Tambien es mejor conocido como REST (Representational State Transfer).
REST destaca por ser absurdamente simple, busca la simplicidd, sencillez, y eficiencia. Sobre todo es la favorita para programadores que consumen la API. Aunque puede resultar un poco más complicado para los programadores que la implementan.
Características
- Interfaz uniforme: Los recursos son accesibles a través de una interfaz uniforme, que permite a los clientes acceder y manipular los recursos de la misma manera, independientemente de la implementación subyacente.
- Sin estado: Cada solicitud del cliente al servidor debe contener toda la información necesaria para que el servidor pueda procesar la solicitud. Esto significa que el servidor no mantiene ningún estado entre las solicitudes del cliente.
- Cacheable: Las respuestas a las solicitudes del cliente deben ser marcadas como cacheables o no cacheables. Esto permite a los clientes almacenar en caché las respuestas y reutilizarlas en lugar de solicitarlas al servidor cada vez.
- Cliente-servidor: La arquitectura orientada a recursos sigue el modelo cliente-servidor, donde el cliente y el servidor son entidades separadas.
- Sistema en capas: La arquitectura orientada a recursos permite que el sistema se divida en capas, donde cada capa es responsable de una parte específica de la funcionalidad del sistema.
Ventajas
- Simplicidad: La arquitectura orientada a recursos es simple y fácil de entender, lo que facilita su implementación y mantenimiento.
- Escalabilidad: La arquitectura orientada a recursos es altamente escalable, ya que permite que los recursos se distribuyan en múltiples servidores.
- Flexibilidad: La arquitectura orientada a recursos es flexible y extensible, lo que permite que los recursos se agreguen, modifiquen o eliminen fácilmente.
- Rendimiento: La arquitectura orientada a recursos es eficiente en términos de rendimiento, ya que permite a los clientes almacenar en caché las respuestas y reutilizarlas en lugar de solicitarlas al servidor cada vez.
- Seguridad: La arquitectura orientada a recursos es segura, ya que permite que los recursos se protejan con autenticación y autorización.
Desventajas
- Complejidad: La arquitectura orientada a recursos puede ser compleja de implementar, especialmente para los programadores que no están familiarizados con ella.
- Rendimiento en baja latencia: La arquitectura orientada a recursos puede tener un rendimiento inferior en comparación con otros estilos de arquitectura en entornos de red de baja latencia.
- Seguridad: La arquitectura orientada a recursos puede ser menos segura en comparación con otros estilos de arquitectura, ya que los recursos son accesibles a través de una interfaz uniforme, y se requiere establecer limites claros.
Ejemplo
Un ejemplo de arquitectura orientada a recursos es una API RESTful que proporciona acceso a una base de datos de empleados. Los recursos en este caso serían los empleados, y la interfaz uniforme permitiría a los clientes acceder y manipular los empleados a través de operaciones como GET, POST, PUT y DELETE.
GET /employeesPOST /employeesPUT /employees/{id}DELETE /employees/{id}En este ejemplo, los clientes pueden obtener una lista de todos los empleados, agregar un nuevo empleado, actualizar un empleado existente y eliminar un empleado existente a través de la API RESTful.
Casos donde REST es una buena opción
- APIs públicas: REST es una excelente opción para APIs públicas, ya que es simple y fácil de entender para los desarrolladores que consumen la API.
- Aplicaciones web: REST es una buena opción para aplicaciones web, ya que permite a los clientes almacenar en caché las respuestas y reutilizarlas en lugar de solicitarlas al servidor cada vez.
- Sistemas distribuidos: REST es una buena opción para sistemas distribuidos, ya que permite que los recursos se distribuyan en múltiples servidores.
- Escalabilidad: REST es una buena opción para sistemas altamente escalables, ya que permite que los recursos se distribuyan en múltiples servidores.
Casos donde REST no es una buena opción
- Aplicaciones en tiempo real: REST puede no ser una buena opción para aplicaciones en tiempo real, ya que puede tener un rendimiento inferior en entornos de red de baja latencia.
- Aplicaciones de alta seguridad: REST puede no ser una buena opción para aplicaciones de alta seguridad, ya que los recursos son accesibles a través de una interfaz uniforme, y se requiere establecer limites claros.
- Aplicaciones de baja latencia: REST puede no ser una buena opción para aplicaciones de baja latencia, ya que puede tener un rendimiento inferior en entornos de red de baja latencia.
Conclusión
REST es un estilo de arquitectura de software simple, sencillo e intuitivo, donde al igual que la programacion orientada a objetos, es mucho mas facil de aplicar y entender para el programador, aunque presenta problemas tecnicos el de sostener REST en todo momento.
Referencias
Escrito por: Omar Flores Salazar