Tabla de Contenidos

1. Introducción. La web

La web

La web son páginas (En formato HTML, Imagen, JSON, XML ,etc) que se interconectan entre ellas por enlaces (urls).

Su estructura es la siguiente:

El navegador solicita por TCP/IP el recurso a obtener. El formato de como solicita ese recurso es por el protocolo HTTP. Y el servidor de TCP/IP responde usando el protocolo HTTP devolviendo los datos.

En el ejemplo podemos ver que se pide el recurso /index.html. Una vez obtenido , el navegador ve que hay enlaces a otros recursos que también solicita al servidor:

Con todo ello , muestra la página HTML+CSS+Imagen y ejecuta el código JavaScript sobre la página dentro del navegador.

En el host servidor se estaba ejecutando el servidor TCP/IP que entiende el protocolo HTTP. A ese software lo llamaremos servidor Web. El servidor es "personalizable" permitiendo que se ejecute código específico para nuestra aplicación. Ese código específico es el código de servidor que se suele escribir en Java, PHP, NodeJS, etc.

Por lo tanto en una app web hay 3 tipos de código:

En la siguiente imagen vemos un esquema similar en el que las peticiones van hacia varios servidores Web

Chrome DevTools

Los navegadores suelen llevar herramientas para depurar las páginas web. En Chrome , si pulsamos F12 y pinchamos en la opción de "Network" (Menu superior), podemos ver todas las peticiones que hace el navegador al cargar una página.

Podemos ver en la página del CIPFP Mislata, como se han hecho 40 peticiones , siendo entre ellas:

Servidor Ruta dentro del servidor
www.gstatic.com /charts/loader.js
www.fpmislata.com /moodle/lib/javascript.php/1588418173/lib/requirejs/require.min.js
www.fpmislata.com /logos/amadeus.png
www.fpmislata.com /moodle/theme/image.php?theme=clean&component=core&image=help

Desplegar

Desplegar: Instalar la aplicación web que hemos desarrollado (HTML,CSS,JS,Código Servidor, etc) en un servidor Web.

Para desplegar hay muchas cosas a tener en cuenta.

¿Cómo distingues al loro propiedad de un desarrollador de software de los loros cuyos dueños son de otras profesiones? Es el que repite sin parar «En mi equipo funciona bien». ^_^

Desafíos y tareas para desplegar

Herramientas relacionadas con el despliegue

Herramientas que vamos a usar en clase:

Otras herramientas y Servicios:

Ejemplos de Tipos de Despliegue

  1. Todo el código está en un único servidor servidor Web
  2. Como en el caso anterior pero se añade Todo el código está en un único servidor servidor Web y hay una base de datos pero todo en el mismo Host
  3. Todo el código está en un único servidor servidor Web en un Host y la base de datos está en otro Host
  4. Todo el código está en un único servidor servidor Web en un Host , la base de datos está en otro Host y la copias de seguridad de la base de datos están en otro Host
  5. Todo el código está en un único servidor servidor Web pero distribuido en 4 Host, hace falta otro host adicional para el balanceo de carga , la base de datos está en otro Host y la copias de seguridad en otro Host.
  6. El código fuente está dividido en 3 microservicios, estando cada uno de ellos en un host distinto. Dos de los microservicios usan cada uno su propia base de datos que está cada una en su propio Host y el último microservicio necesita de otro Host con un servidor de correo para enviar notificaciones.
  7. Como en el caso anterior pero se añade que los log de todos los servidores web y de las bases de datos, están centralizados en un Host distinto.
  8. Como en el caso anterior pero se añade otro servidor que es el que cuando se quiere cambiar el programa , compila el código y lo instala en los Hosts que sea necesario.
  9. Como en el caso anterior pero se añade que el código fuente está en otro servidor.
  10. Como en el caso anterior pero uno de los microservicios tiene una base de datos tolerante a fallos, por lo que hay 2 Host para la base de datos, de forma que los datos están sincronizados entre ellos y un balanceador de carga si detecta un fallo en una base de datos, redirige las peticiones a la otra base de datos.

En el siguiente diagrama se vería el ejemplo "4" donde , el servidor web, la base de datos y el servidor de copias de seguridad son servidores distintos:

Conceptos

Ejemplo de PAAS en Java:

IAAS vs PAAS

El IAAS es mas versátil ya que solo nos ofrecen el ordenador y nosotros nos montamos todo como queremos. El problema es que es mas complicado todo de hacer y tenemos que administrarlo todo: Sistema operativo, servidor web y aplicación

Por otro lado en el PAAS, solo nos tenemos que preocupar de nuestra aplicación lo que hace que sea mas sencillo. El problema es que ya no hay tanta versatilidad, ya que debemos ceñirnos al entorno que nos ofrece la empresa

NodeJS

NodeJS (o simplemente node) es un lenguaje de programación basado en JavaScript. Al ser un lenguaje interpretado, su forma de trabajar es mas similar a BASH que a Java. ¿Porque vamos a usar NodeJS? Porque muchas herramientas para el desarrollo web están hechas en node. Además del lenguaje de programación, node incluye un gestor de paquetes similar al de Linux (como apt) que se llama "npm" (Node package manager )

Instalación de NodeJS

Antes de empezar, deberemos configurar el proxy que se usa en el CIPFP Mislata para la orden apt, para ello editar el fichero "/etc/apt/apt.conf" y añadir lo siguiente:

Acquire::http::proxy "http://172.16.0.9:8080/";
Acquire::https::proxy "http://172.16.0.9:8080/";

Ejecutar los siguientes comandos:

sudo apt update
sudo apt install nodejs
sudo apt install npm

Instalar NodeJS desde la página oficial de Node.JS

NPM

Ahora vamos a configurar el proxy para el gestor de paquetes de node.

Lanzar los siguientes comandos:

npm config set proxy http://172.16.0.9:8080
npm config set https-proxy http://172.16.0.9:8080

Proyectos con node

npm init

Instalar la librería de JavaScript llamada "jQuery"

npm install jquery

npm install typescript -g

npm install

Programar en NodeJS

Ahora vamos a ver como ejecutar código node.

El programa mas sencillo es hacer el "Hola Mundo". Para ello creamos un fichero llamado "index.js" con el contenido siguiente:

#!/usr/bin/env node

console.log('Hola Mundo');

Para ejecutarlo hay que lanzar la orden:

node index.js

Y mostrará por consola el mensaje "Hola mundo"

Como en NodeJS se usa JavaScript, podemos usar todo lo que sabemos de JavaScript en un programa de node.

Ejercicios

Ejercicio 1

Navega a la página https://www.apache.org/ e indica:

Ejercicio 2

Del apartado "Ejemplos de Tipos de Despliegue" de este tema, haz un diagrama del esquema de Hosts que se usan y que software se instalaría en cada uno de ellos. Pero solo para los ejemplos 2, 5 y 10

Ejercicio 3

Imagina un nuevo ejemplo de despliegue que tenga al menos 4 servidores. Deberás explicarlo y hacer su esquema.

Ejercicio 4

Busca por internet el nombre de 2 servidores web que permitan aplicaciones en Java y de 2 servidores web que permitan aplicaciones en PHP

Ejercicio 5

Busca por internet el nombre de 2 balanceadores de carga y indica cuando usarías cada uno de ellos.

Ejercicio 6

Busca por internet el nombre de dos empresas que ofrezcan servicios de tipo IAAS

Ejercicio 7

Busca por internet el nombre de dos empresas que ofrezcan servicios de tipo PAAS

Ejercicio 8

Busca por internet el nombre de dos empresas que ofrezcan servicios de tipo SAAS

Ejercicio 9

Busca dos empresas de Hosting y comprara el precio de sus VPS, suponiendo características parecidas. ¿Cual elegirías?

Ejercicio 10

Busca por internet una empresa con su precio y características para poder tener:

Ejercicio 11

NodeJS tiene una librería llama Math.js que permite trabajar con números complejos.

Haz una aplicación en node que sume los números complejos (2+4i) y (-5+3i) y muestre el resultado por pantalla.Indica como ejecutar la aplicación