clase:daw:daw:tema12
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previa | |||
| clase:daw:daw:tema12 [2026/10/28 09:57] – borrado - editor externo (Fecha desconocida) 127.0.0.1 | clase:daw:daw:tema12 [2026/10/28 09:57] (actual) – ↷ Página movida de clase:daw:daw:2eval:tema12 a clase:daw:daw:tema12 Lorenzo | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | ====== 12. Introducción al despliegue ====== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Desplegar ===== | ||
| + | |||
| + | < | ||
| + | |||
| + | Para desplegar hay muchas cosas a tener en cuenta. | ||
| + | |||
| + | <note tip> | ||
| + | ¿Cómo distingues al loro propiedad de un desarrollador de software de los loros cuyos dueños son de otras profesiones? | ||
| + | </ | ||
| + | |||
| + | ===== Desafíos y tareas para desplegar ===== | ||
| + | |||
| + | * Generación de la aplicación a instalar | ||
| + | * Obtener el código fuente | ||
| + | * Compilar el código fuente | ||
| + | * Probar la aplicación | ||
| + | * Analizar la calidad del código | ||
| + | * Múltiples programas a instalar | ||
| + | * Sistema Operativo | ||
| + | * Servidor Web | ||
| + | * Base de datos | ||
| + | * La aplicación | ||
| + | * Servidor de envío de correos | ||
| + | * Etc. | ||
| + | * Hosts | ||
| + | * La base de datos puede estar en un Hosts y el servidor web en otro Hosts, etc. | ||
| + | * Los Host pueden ser maquinas virtuales o máquinas físicas estando cada una de ellas en proveedores distintos (Amazon AWS, Microsoft Azure, Google Cloud, etc). | ||
| + | * Administración | ||
| + | * Creación de copias de seguridad | ||
| + | * Logs | ||
| + | * Seguridad: Recuperación en caso de perdida de datos por algún fallo | ||
| + | * Rendimiento: | ||
| + | * Añadir nuevas máquinas si hay un pico de peticiones y quitarlas cuando ya no las hay tantas peticiones | ||
| + | * Balanceo de carga entre todos los servidores de la aplicación | ||
| + | * Monitorización del rendimiento | ||
| + | * Alertas de bajo rendimiento | ||
| + | * Fiabilidad: Permitir que la aplicación siga funcionando aunque falle algún Host. | ||
| + | * Microservicios: | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | ===== Herramientas relacionadas con el despliegue ===== | ||
| + | |||
| + | |||
| + | Herramientas que vamos a usar en clase: | ||
| + | * Script de Bash | ||
| + | * Git | ||
| + | * Docker | ||
| + | * Git Actions | ||
| + | * NodeJS | ||
| + | |||
| + | Otras herramientas y Servicios: | ||
| + | * Kubernetes | ||
| + | * Vagrant | ||
| + | * AWS | ||
| + | * Ansible | ||
| + | * Jenkins | ||
| + | * etc. Hay muchísimas herramientas distintas y servicios que ayudan al despliegue de aplicaciones. | ||
| + | |||
| + | |||
| + | ===== Ejemplos de Tipos de Despliegue ===== | ||
| + | |||
| + | - Todo el código está en un único servidor junto con el servidor Web y la base de datos. | ||
| + | - Todo el código está en un único servidor y por otro lado el servidor Web y la base de datos están en un mismo Host | ||
| + | - Todo el código está en un único servidor, el servidor Web en un Host y la base de datos está en otro Host | ||
| + | - Todo el código está en un único servidor, el servidor Web en otro Host , la base de datos está en otro Host y la copias de seguridad de la base de datos están en otro Host | ||
| + | - Todo el código está en un único servidor, el servidor Web está distribuido en 4 Hosts, 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. | ||
| + | - El proyecto está dividido en 3 microservicios, | ||
| + | - 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. | ||
| + | - 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 (El código está en el mismo servidor que en el que compila). | ||
| + | - Como en el caso anterior pero se añade que el código fuente está en otro servidor. | ||
| + | - 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 donde , el servidor web, la base de datos y el servidor de copias de seguridad son servidores distintos: | ||
| + | |||
| + | {{clase: | ||
| + | |||
| + | ===== Conceptos ===== | ||
| + | |||
| + | * VPS (Virtual Private Server): Una máquina virtual que alquilas a una empresa. | ||
| + | * Empresa de Hosting: Empresa que alquila los Host sean tanto un VPSs como una máquina real | ||
| + | * Balanceador de carga: Software que le llega una petición y la redirige a otro Host de entre varios para no sobrecargar ningún Host o evitar enviarlo a un host que no funciona | ||
| + | * Escalabilidad: | ||
| + | * Tolerancia a fallos: Diseñar la aplicación de forma que aunque un host falle, la aplicación siga funcionando | ||
| + | |||
| + | |||
| + | * IAAS (Infraestructura como servicio) : Si la empresa de Hosting solo se ofrece el Host y nosotros nos tenemos que instalar todo el software, incluyendo el sistema operativo y administrarlo todo. | ||
| + | * PAAS (Plataforma como servicio): Si la empresa de Hosting nos ofrece el Host pero tambien software generico ya instalado como el Sistema Operativo, Servidor Web, Servidor de Correo, Balanceador de Carga , etc. En este caso nosotros solo debemos instalar el código específico de nuestra aplicación.En este caso aunque nos ofrecen un host ya que en algún sitio debe estar la app, realmente nos están ofreciendo el servidor web donde instalar nuestra app. En el caso de PAAS, no tenemos que administrar nosotros ni el Sistema Operativo ni el servidor. | ||
| + | * SAAS (Software como Servicio): Como desarrolladores nunca usamos un SASS ya que la empresa de hosting ya ofrece hasta la aplicación instalada. Un ejemplo sería Google con " | ||
| + | |||
| + | |||
| + | Ejemplo de PAAS en Java: | ||
| + | |||
| + | {{clase: | ||
| + | |||
| + | ==== 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, | ||
| + | |||
| + | |||
| + | ===== Tareas de Automatización del despliegue ===== | ||
| + | Veamos ahora un ejemplo de como desplegar una aplicación web en Java con SASS , TypeScript y que se despliega en Apache. | ||
| + | |||
| + | * Build (en maven se llama package) | ||
| + | * Copiar el código de " | ||
| + | |||
| + | * Compilar el código Java | ||
| + | * Transpilar el código SASS en CSS dentro de la carpeta " | ||
| + | * Transpilar el código TypeScript en JavaScript dentro de la carpeta " | ||
| + | |||
| + | * Borrar el código SASS de la carpeta " | ||
| + | * Borrar el código TypeScript de la carpeta " | ||
| + | |||
| + | * Generar el '' | ||
| + | |||
| + | * Desplegar | ||
| + | * Copiar el '' | ||
| + | |||
| + | * Ejecutar | ||
| + | * Ejecutar el '' | ||
| + | |||
| + | Para hacer todas esta tareas vamos a usar Scripts del sistema operativo , por ejemplo en Linux se usará " | ||
| + | |||
| + | ==== Transformar SASS en CSS ==== | ||
| + | * Instalar SASS | ||
| + | |||
| + | npm install sass -g | ||
| + | |||
| + | |||
| + | * Transpilar SASS en CSS | ||
| + | |||
| + | sass ./ | ||
| + | |||
| + | |||
| + | ==== Transformar TypeScript en JavaScript ==== | ||
| + | * Instalar TypeScript | ||
| + | |||
| + | npm install typescript -g | ||
| + | |||
| + | * Transpilar TypeScript en JavaScript | ||
| + | |||
| + | tsc --outDir ./js ./ts/*.ts | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Ejercicios ===== | ||
| + | |||
| + | |||
| + | |||
| + | ==== Ejercicio 1 ==== | ||
| + | Del apartado " | ||
| + | Pero solo para los ejemplos 2, 5 y 10 | ||
| + | |||
| + | ==== Ejercicio 2 ==== | ||
| + | Imagina un nuevo ejemplo de despliegue que tenga al menos 4 servidores. Deberás explicarlo y hacer su esquema. | ||
| + | |||
| + | ==== Ejercicio 3 ==== | ||
| + | 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 4 ==== | ||
| + | Busca por internet el nombre de 2 balanceadores de carga y indica cuando usarías cada uno de ellos. | ||
| + | |||
| + | ==== Ejercicio 5 ==== | ||
| + | Busca por internet el nombre de dos empresas que ofrezcan servicios de tipo IAAS | ||
| + | |||
| + | ==== Ejercicio 6 ==== | ||
| + | Busca por internet el nombre de dos empresas que ofrezcan servicios de tipo PAAS | ||
| + | |||
| + | ==== Ejercicio 7 ==== | ||
| + | Busca por internet el nombre de dos empresas que ofrezcan servicios de tipo SAAS | ||
| + | |||
| + | ==== Ejercicio 8 ==== | ||
| + | Busca dos empresas de Hosting y comprara el precio de sus VPS, suponiendo características parecidas. ¿Cual elegirías? | ||
| + | |||
| + | ==== Ejercicio 9 ==== | ||
| + | Busca por internet una empresa con su precio y características para poder tener: | ||
| + | * Aplicación en Java con servicio IAAS | ||
| + | * Aplicación en Java con servicio PAAS | ||
| + | * Aplicación en PHP con servicio IAAS | ||
| + | * Aplicación en PHP con servicio PAAS | ||
| + | |||
