1.1-Funcionamiento-Web by Lionel Ferro
1.1-Funcionamiento-Web by Lionel Ferro
1.1-Funcionamiento-Web by Lionel Ferro
Programación 2
Módulo 1: Bases de Datos
Tema 1: Funcionamiento de la web y conceptos iniciales
1.1. Funcionamiento de la web y conceptos
iniciales
1.1.1. La web vs Internet
1.1.3.1. Servidor
1.1.3.1. Cliente
Para ilustrar esta diferencia, vamos a listar algunos de los muchos protocolos de aplicación
para servicios de Internet:
• SSH: (Secure Shell) protocolo que permite el acceso remoto al shell de un servidor
por medio de un canal seguro.
• FTP: (File Transfer Protocol) protocolo de transferencia de archivos.
• SMTP: (Simple Mail Transfer Protocol) protocolo para transferencia simple de
correo, para el correo electrónico.
• DNS: (Domain Name Service) Servicio de Nombres de Dominio, es un sistema de
nomenclatura jerárquico descentralizado para dispositivos conectados a redes como
Internet o una red privada.
• DHCP: (Dynamic Host Configuration Protocol) Protocolo de configuración dinámica
del Host.
• RIP: (Routing Information Protocol) Protocolo de Información de Encaminamiento,
es un protocolo de puerta de enlace interna utilizado por los routers.
• HTTP y HTTPS: (Hypertext Transfer Protocol) protocolo de transferencia de
hipertexto (seguro), usado para páginas web.
De todos estos (que solo son una pequeña parte de los existentes) solo HTTP y HTTPS son
los protocolos sobre los que se maneja la web.
Figura 1.1
La gran mayoría de los servicios de internet (pero no todos) siguen este modelo. Por ejemplo,
todas las plataformas web, servicios de streaming, servicios de compras, pagos, banking,
correo electrónico, videojuegos, etc.
Existen otros servicios que siguen un modelo P2P (de par a par, peer to peer) en
los que no hay una jerarquía como en el modelo cliente-servidor, sino que cada
participante o nodo es igual y entre ellos se comunican y transfieren información
directamente.
Estos modelos mencionados se pueden aplicar fácilmente sobre Internet, ya que la Internet
no es más que una red de redes de computadoras interconectadas y cualquiera puede tomar
cada rol del este modelo.
Figura 1.2
Internet usualmente se diagrama como una nube. Por detrás, no es más que redes
de computadoras (y otros dispositivos) interconectadas. En esta figura, los
dispositivos en cada extremo, ya sean servidores o clientes también forman parte
de Internet.
Ejemplificando el modelo cliente-servidor para el acceso a una página web, tenemos que:
• Los clientes son dispositivos de los usuarios conectados a Internet: por ejemplo, una
computadora conectada a la red Wi-Fi o el teléfono conectado a la red de telefonía
móvil, y el software que se encuentra disponible y permite acceder a Internet en
dichos dispositivos: normalmente, un navegador web como Firefox o Chrome.
• Los servidores son computadoras que almacenan páginas web y datos. Cuando un
dispositivo cliente quiere acceder a una página web, una copia de la página web se
descarga desde el servidor al equipo cliente y se muestra en el navegador web del
usuario.
1.1.3. Estructura y funcionamiento de una página web
Ahora que sabemos cómo funciona el modelo cliente-servidor, veamos cómo se aplica este
modelo en el diseño de una página o aplicación web.
Una aplicación web se conforma de dos partes: el Frontend (lo que el usuario ve y con lo que
puede interactuar) y el Backend (lo que maneja la lógica y el acceso a datos de la
aplicación).
Cabe aclarar que, en los últimos años, con la aparición de librerías de Javascript
cada vez más complejas, se comenzó a ejecutar más de la lógica del negocio de
una aplicación del lado del cliente.
En el siguiente diagrama podemos ver de qué lado (cliente o servidor) se ejecuta cada parte
de una aplicación web.
Figura 1.3
En este diagrama vemos que el Frontend se ejecuta íntegramente en el cliente (el navegador
web) y el Backend en el servidor. El servidor, es una o más computadoras (o máquina virtual
corriendo dentro de una computadora) en las que se ejecutan servicios o daemons de
sistema operativo y aplicaciones. Entre ellos, los más importantes para nosotros, el servidor
web, la base de datos y una o más aplicaciones web.
1.1.3.1. Servidor
Servidor web
Un servidor web o webserver, es el software que se ejecuta dentro de una computadora que
permite la comunicación de la aplicación con los clientes. Su propósito es escuchar
cualquier intento de comunicación de los clientes, recibir las peticiones o requests de los
mismos, llamar a la aplicación correspondiente para que ejecute lo solicitado y devolver la
respuesta o response que le transmita la aplicación.
Algunos de los webservers más usados de la industria son Apache, nginx y Microsoft
Internet Information Services. En esta materia vamos a usar un pequeño webserver de
desarrollo que viene incluido al instalar Flask, llamado Werkzeug. Su finalidad es ser usado
para desarrollo y no está recomendado su uso en producción, o sea, para un despliegue real.
Aplicación web
Si se está sirviendo una página web estática, esta puede ser devuelta inmediatamente al
cliente ya que no se debe ejecutar ningún proceso.
Una página web estática se devuelve tal y como está almacenada. O sea, muestra
la misma información para todos los usuarios, de todos los contextos. Por ejemplo,
landing pages para alguna organización o compañía, páginas de portfolios
profesionales, las páginas de almacenamiento de documentos como leyes,
boletines oficiales, etc.
Si la página es dinámica, usualmente se van a ejecutar procesos para generar
dinámicamente la página o contenido que se va a devolver, esto incluye la obtención de
datos de la base de datos.
Una página web dinámica se caracteriza por ser generada al momento que se la
solicita, y su contenido depende de ciertos parámetros contextuales. Por ejemplo,
todas las aplicaciones con usuarios, como plataformas educativas, páginas de
redes sociales, etc. En estas aplicaciones una misma página o dirección web
mostrará contenidos distintos dependiendo de qué usuario inició sesión.
Base de datos
Por otro lado, la base de datos también está comprendida en el ámbito del servidor. Esta
almacena y pone a disposición de la aplicación web los datos necesarios para su
funcionamiento. En la Figura 1.3 se muestra a la base de datos dentro de un mismo servidor,
pero en la vida real la base de datos puede encontrarse en otro servidor, distinto al del resto
de la aplicación. De hecho, una aplicación puede hacer uso de más de una base de datos, las
cuales pueden estar en lugares físicos distintos.
1.1.3.1. Cliente
El cliente es el software que se ejecuta dentro de un dispositivo terminal (PC, teléfono
móvil, smart tv, etc.) que permite el acceso a la web a través de Internet, por ejemplo, un
navegador web como Firefox o Chrome. También se consideran clientes a las aplicaciones
que acceden a servicios de Internet como Netflix, YouTube, etc.
Los navegadores web permiten al usuario acceder y solicitar páginas web a un servidor web.
A su vez, el servidor web le va a dar una respuesta a su solicitud, junto con un código de
respuesta. Si la página no se encontró va a devolver el código 404. Si sí se encontró,
devuelve el contenido de la página (en texto) y el código 200. Estos códigos se llaman
códigos de estado de respuesta, y los estudiaremos en detalle más adelante.
Una vez que el navegador recibe el contenido, en forma de texto, debe renderizarlo (generar
una representación gráfica de la página). El texto usualmente es un documento HTML junto
con contenido o enlaces a otros archivos de texto asociados como CSS y Javascript. HTML
contiene la estructura y organización de una página web, mientras que con CSS y Javascript
se da un estilo visual y funcionalidad a la página, respectivamente. Vamos a profundizar
sobre este tema en el siguiente módulo.
1.1.4. Introducción a las bases de datos
Habiendo visto y entendido el diagrama de la Figura 1.3, vamos a comenzar a estudiar una
de las partes esenciales del Backend (y prácticamente de todas las ramas del desarrollo de
software), las bases de datos.
Si bien, desde nuestro punto de vista, las bases de datos forman parte del desarrollo web,
debemos recordar que las bases de datos no solo se aplican a este, sino que son
ampliamente usadas en la mayoría de las organizaciones, ya sean empresas, universidades,
hospitales, etc. Y forman parte de la gran mayoría de las aplicaciones en general, sin
importar su plataforma (web, desktop, móviles, etc.) ni su categoría (productividad, redes
sociales, juegos, educativas, etc.).
El manejo o gestión de las bases de datos inclusive tiene su propia rama y su propio perfil
profesional dentro del IT, la del DBA (Administrador de Bases de Datos).
Normalmente, una base de datos es manejada por un SGBD o Sistema de Gestión de Bases
de Datos (del inglés: Data Base Management System o DBMS) también llamado Motor de
Bases de Datos (Database Engine). Este software permite el acceso y manejo de los datos
almacenados a través de un sistema de usuarios y permisos. Siempre que trabajemos con
una base de datos, será usando un SGBD.
Figura 1.4
Si bien en la figura 1.4 se muestra al usuario como una persona, un usuario también puede
ser un sistema. Normalmente solo un DBA accede e interactúa directamente con el SGBD.
Todos los demás usuarios acceden a través de algún sistema creado para ese fin, incluidas
las aplicaciones.
También podemos ver que para interactuar con un SGDB debemos usar un lenguaje
especial, el SQL (Structured Query Language). Estudiaremos este lenguaje en próximos
temas.
Una base de datos está diseñada para organizar, almacenar y recuperar fácilmente grandes
cantidades de datos, restringiendo el acceso, solo a usuarios registrados en el SGBD.
Lo que todos estos almacenes de datos tienen en común es que no utilizan un modelo
relacional. Además, tienden a ser más específicos en el tipo de datos que admiten y
en cómo se pueden consultar los datos. El término NoSQL hace referencia a
almacenes de datos que no usan solo SQL para las consultas (not only SQL). En su
lugar, estos almacenes de datos usan otros lenguajes de programación y otras
construcciones para consultar los datos. En la práctica, “NoSQL” se puede
interpretar como “base de datos no relacional”, aunque muchas de estas bases de
datos admiten consultas compatibles con SQL.
En los últimos 10 años, bases de datos que hacen uso de estos modelos, han
aparecido y han demostrado una gran eficacia por su gran escalabilidad, flexibilidad
y su carácter descentralizado.
Existen otros modelos, como el Modelo Orientado a Objetos o el Modelo de Red, pero no
vamos a ahondar en ellos ya que no son muy usados en la actualidad.
1.1.6. Proveedores y Sistemas Gestores de Bases de datos
Comúnmente las bases de datos y los SGBD se perciben como la misma entidad debido a
que, como dijimos, siempre accedemos a los datos a través del SGBD. Además de esto, cada
proveedor desarrolla su SGBD para trabajar con su implementación de base de datos. Por
ejemplo, el SGBD PostgreSQL solo funciona para manejar bases de datos PostgreSQL y no
bases de datos MySQL. Sin embargo, debemos tener el claro que son dos cosas distintas. El
SGBD es la interfaz que permite al usuario manejar los datos almacenados (la base de
datos), como se ilustra en el diagrama anterior.
Como se deja entrever del párrafo anterior, cada proveedor implementa sus bases de datos
y sistemas de manera independiente y para el usuario no es aparente (ni debe serlo) cómo
se almacenan los datos internamente.
Por otro lado, sí es común para todos, la forma en que el usuario interactúa con una base de
datos. Esto se hace utilizando el lenguaje SQL (del inglés Structured Query Language,
Lenguaje de Consulta Estructurada). Este lenguaje es común para todos los SGBD (con
algunas pequeñas diferencias) y sirve para realizar cualquier operación con la base de datos.
A continuación, vamos a nombrar algunas de los SGBD más usados de la industria y explicar
un poco de cada uno.