Introducción a la arquitectura frontend-backend o cliente-servidor
La arquitectura cliente-servidor es un tema fundamental en la informática, ya que facilita la comunicación entre componentes clave el cliente, el servidor y el sistema operativo. Estos conceptos, en conjunto, sustentan el funcionamiento de aplicaciones y sistemas, conformando la base sobre la cual se construye la tecnología moderna.
Contexto e Introducción
El reto surgió debido a una exposición de proyecto que teníamos pendiente en el SENA y que debíamos presentar de acuerdo a los requisitos de entrega, los cuales incluían información sobre la arquitectura de software en la que estábamos trabajando. Por lo tanto, tenía dudas respecto a los conceptos de cómo está conformada la arquitectura de un aplicativo, y fue gracias a conversaciones con miembros de la comunidad sobre la arquitectura de aplicaciones que decidí aceptar un reto buscando entenderlo mejor. Éste artículo presenta mi solución al reto Entender y explicar la arquitectura frontend-backend o cliente-servidor, preparado por Jayson Salazar.
¿Qué es hardware?
Son todos los componentes físicos de un medio informático como las partes físicas de una computadora o dispositivo electrónico, como la CPU, la memoria RAM, el disco duro, la placa madre, la pantalla, el teclado, el mouse, etc.
¿Qué es un sistema operativo?
El sistema operativo (OS, por sus siglas en inglés, que significa Operating System) es un tipo de software intermediario que actúa como puente entre el hardware de una computadora y las aplicaciones que utilizan los usuarios. Un dato que me parece interesante es que los OS utilizan el lenguaje de bajo nivel1, que es el tipo de lenguaje que interpreta el hardware, y el lenguaje de alto nivel, que es más cercano a como piensan y escriben código los humanos.
¿Qué es una aplicación servidor (server application) y aplicación cliente (client application)?
Aplicación Servidor (Application Server): Es un software diseñado para ofrecer servicios y recursos a otras aplicaciones. Los servidores de aplicaciones 2 suelen manejar tareas como la gestión de transacciones, la seguridad, el manejo de bases de datos y la lógica empresarial (backend3).
Aplicación Cliente-Servidor (Client-Server): es un modelo en el que las tareas se distribuyen entre los componentes cliente y servidor. El cliente como lo mencione anteriormente es el medio que solicita recursos al servidor mientras que el servidor es el sistema que proporciona esos recursos en respuesta a las solicitudes del cliente. Esta arquitectura es común en aplicaciones de red, como aplicaciones web y bases de datos 456.
En una analogía, el chef es el servidor de aplicaciones y los platos de comida son los recursos o servicios que solicita a un cliente.
¿Cómo se comunican el servidor y el cliente?
La comunicación entre el cliente (navegador web) y el servidor (donde reside el sitio web o la aplicación) se basa en el protocolo HTTP.
HTTP (Esp. Protocolo de transferencia de hipertexto/ Eng. Hypertext Transfer Protocol) permite que el cliente envíe solicitudes al servidor para obtener recursos, como datos, y el servidor responde con la información solicitada. Lee más acerca de HTTP7
REST (Esp. Transferencia de estado representacional/ Eng. Representational State Transfer) utiliza HTTP para estructurar éstas solicitudes y respuestas, organizando los recursos en endpoints (puntos finales) y utilizando los métodos HTTP (GET, POST, PUT, DELETE) para realizar operaciones en esos recursos. Lee más acerca de REST8
Otras tecnologías de la historia:
CGI (Common Gateway Interface): utilizada en los primeros días de la web, CGI permitía a los servidores web ejecutar programas externos para generar contenido dinámico en respuesta a las solicitudes del cliente. Aunque se ha vuelto menos común debido a su ineficiencia, sentó las bases para la interactividad en línea. Lee más acerca de CGI9
XML-RPC: permitía la comunicación entre sistemas utilizando XML para codificar solicitudes y respuestas. Aunque menos eficiente que REST, fue una de las primeras tecnologías en permitir la integración entre aplicaciones y servicios web. Lee más acerca de XML-RPC10
SOAP (Simple Object Access Protocol): Un protocolo de comunicación más complejo que XML-RPC, SOAP permitía la transmisión de mensajes estructurados entre aplicaciones a través de diversos protocolos, no solo HTTP. Lee más acerca de SOAP11.
Cada una de estas tecnologías ha contribuido al desarrollo y la evolución de la comunicación cliente-servidor en la historia de la informática y la web.
¿Qué es lo que hoy en dia llamamos frontend?
El frontend se refiere a la parte visual y con la que interactúan los usuarios en una aplicación o sitio web, este se compone de diseño, la interfaz de usuario (GUI) y la presentación de la información.
¿Qué es lo que hoy en dia llamamos backend?
El backend es la parte “detrás de escena (Behind The Scenes)” de una aplicación o sitio web, donde se gestionan los datos, la lógica de funcionamiento y la comunicación con el servidor.
Arquitectura de Comunicación Cliente-Servidor
Diagrama Cliente-Servidor y Base de datos
Conclusiones
En resumen, la arquitectura cliente-servidor es un tema fundamental en la informática, ya que facilita la comunicación entre componentes clave: el cliente, el servidor y el sistema operativo. Estos conceptos, en conjunto, sustentan el funcionamiento de aplicaciones y sistemas, conformando la base sobre la cual se construye la tecnología moderna.
Agradecimientos
Gracias a Jayson Salazar y Andrés Viloria por ayudarme a obtener un concepto más solido sobre la arquitectura de software. Muy utíl en la exposición que realicé
Notas al Pie
Servidor de aplicaciones - Wikipedia, la enciclopedia libre ↩︎
¿Qué significa lado del cliente y lado del servidor? - Lado del cliente vs. Lado del servidor - Cloudflare ↩︎
Introduction to client-server architecture (frontend backend) ↩︎
Protocolo de transferencia de hipertexto - Wikipedia, la enciclopedia libre ↩︎
Transferencia de Estado Representacional - Wikipedia, la enciclopedia libre ↩︎
Interfaz de entrada común - Wikipedia, la enciclopedia libre ↩︎
Simple Object Access Protocol - Wikipedia, la enciclopedia libre ↩︎