Introducción a la arquitectura frontend-backend o cliente-servidor#

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 @jdsalaro.

Agradecimientos#

Gracias a @jdsalaro y @stween por ayudarme a obtener un concepto más solido sobre la arquitectura de software. Muy utíl en la exposición que realicé

¿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 nivel[1], 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 (backend[^CODECADEMY]).

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 [3][4][5].

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 HTTP[6]

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 REST[7]

Otras tecnologías de la historia:#

  1. 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 CGI[8]

  1. 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-RPC[9]

  1. 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 SOAP[10].

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#

../../../../_images/diagrama-cliente-servidor.png

Diagrama Cliente-Servidor#

../../../../_images/diagrama-cliente-servidor-base-de-datos.png

Diagrama Cliente-Servidor y Base de datos#

../../../../_images/arquitectura-tres-capas.png

Arquitectura de tres capas#

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.

Notas al Pie#