Este curso completamente online consta de siete módulos.
El primer modulo te permitirá que conozcas el concepto de Cloud Computing (Computación en Nube) de forma profunda y no sesgada, así como los principales antecedentes y tecnologías afines que han propiciado su auge. Se abordan las tecnologías, herramientas, proveedores, estándares y paradigmas de computación involucrados en el Cloud. Se estudian algunos casos de éxito de la tecnología y se discuten tanto los principales modelos de servicio (IaaS, PaaS, SaaS y *aaS), como los modelos de despliegue (Cloud público, híbrido, on-premise y de comunidad) como las ventajas/inconvenientes de la externalización del almacenamiento y/o cómputo a un tercer proveedor.
El segundo módulo aborda los principales servicios de AWS (Amazon Web Services) para la creación de arquitecturas de aplicaciones escalables y elásticas con aprovisionamiento dinámico de recursos y con gestión eficiente de datos en la nube. Para ello se cubre el servicio Amazon EC2, para el aprovisionamiento de máquinas virtuales, el servicio Amazon S3 para el almacenamiento de ficheros en la nube y el servicio Auto Scaling para la creación de flotas elásticas de máquinas virtuales que crecen y decrecen en función de reglas de escalado. Posteriormente se trata la gestión de bases de datos en la nube. Para ello trabajarás con el servicio Amazon RDS para el despliegue de sistemas gestores de bases de datos relacionales en la nube. Posteriormente, conocerás las bases de datos de tipo NoSQL y trabajarás con Amazon SimpleDB para desplegar bases de datos de tipo clave/valor en la nube de AWS.
El tercer módulo permite al alumno iniciarse en la arquitectura de aplicaciones elásticas y escalables en la nube. Se abordan las principales características y aspectos de diseño que toda aplicación Cloud debería idealmente cumplir. Además se presentan los servicios, herramientas y patrones de diseño que se pueden utilizar para cumplir dichos requisitos. Se tratan buenas prácticas para el desarrollo de aplicaciones en el Cloud, abordando esquemas de tolerancia a fallos, replicación y desacoplado de componentes. Todo ello para producir aplicaciones escalables que aprovechen las capacidades elásticas de la infraestructura de Cloud público. Realizarás prácticas para evolucionar una arquitectura de aplicación web monolítica hacia una arquitectura escalable y elástica con externalización del almacenamiento de datos.
El cuarto módulo trata el despliegue y configuración automatizada de infraestructuras virtuales usando herramientas de DevOps. En primer lugar, se utilizan los servicios de AWS (CloudFormation y OpsWorks) para desplegar y configurar automáticamente arquitecturas de aplicaciones complejas. Posteriormente, se utiliza Ansible como herramienta para el aprovisionamiento y configuración de recursos, que puede ser utilizada independientemente de AWS. Finalmente, se aborda el servicio VPC (Virtual Private Cloud) para crear subredes y mejorar la seguridad de las arquitecturas de aplicaciones.
El quinto módulo aborda la tecnología de contenedores, cubriendo de forma especial Docker y su ecosistema de herramientas (Docker Machine, Docker Compose y Docker Swarm), así como servicios de tipo PaaS disponibles en AWS como AWS Elastic Beanstalk para el despliegue automatizado de aplicaciones en la nube.
El sexto módulo cubre el proceso de grandes volúmenes de datos (Big Data). Se aborda el modelo de programación MapReduce y su implementación en el framework Apache Hadoop. Crearás programas MapReduce para procesar diferentes datasets sobre clusters Hadoop que tú mismo desplegarás con Amazon EMR. Se abordará Apache Hive como herramienta de consulta desde Apache Hue para facilitar la interacción con el cluster Hadoop.
Finalmente, el séptimo módulo aborda las arquitecturas de aplicaciones serverless mediante AWS Lambda, para crear funciones orientadas a eventos sin gestión explícita de servidores. Se analiza el modelo de procesado de eventos basado en reglas (CloudWatch Events) así como fuentes de eventos (CloudTrail) para la creación de arquitecturas de aplicaciones ultra-escalables en la nube. Desplegarás aplicaciones web completamente serverless tanto en el front-end (JAMStack) como en el back-end, utilizando Amazon Cognito para dotar de autenticación tanto en las aplicaciones web como en las APIs involucradas.
Módulo 1: Introducción a Cloud Computing
- Definición(es) de Cloud Computing
- Relación con otros paradigmas de computación
- Modelos de despliegue
- Casos de éxito: Académicos y Empresariales
- Retos en la adopción
Módulo 2: Introducción a Amazon Web Services
- Panorámica de servicios en AWS
- Amazon EC2 (Elastic Compute Cloud), para el despliegue de máquinas virtuales (instancias)
- EBS (Elastic Block Store), para la gestión de volúmenes orientados a bloques
- Amazon S3 (Simple Storage Service), para el almacenamiento de ficheros en la nube
- Amazon ELB (Elastic Load Balancer), para crear balanceadores de peticiones entre instancias
- Auto Scaling, para la creación de flotas elásticas de instancias de cómputo
- Amazon RDS (Relational Database Service), para el despliegue de gestores de bases de datos relacionales en la nube
- Amazon SimpleDB, para la creación de bases de datos de tipo NoSQL en la nube
- Amazon DynamoDB, para almacenar datos NoSQL con una baja latencia en las consultas
Módulo 3: Aplicaciones Cloud
- Características de las aplicaciones Cloud
- Servicios, herramientas y tecnologías para el diseño de aplicaciones Cloud
- Casos de estudio científicos, académicos y empresariales
- Patrones de diseño de aplicaciones Cloud
- Creación de arquitecturas escalables
Módulo 4: Despliegue y Configuración Automatizada
- Introducción a DevOps
- AWS CloudFormation
- AWS OpsWorks
- Ansible
- VPC
- Infrastructure as Code
Módulo 5: Gestión de Aplicaciones en Entornos PaaS
- Introducción a la tecnología de Contenedores
- Docker y su ecosistema
- Plataformas como Servicio
- AWS Elastic Beanstalk
Módulo 6: Big Data en AWS
- Modelo de programación MapReduce
- Apache Hadoop
- Amazon EMR
- Apache Hive
- Apache Hue
Módulo 7: Arquitecturas de Aplicaciones Serverless
- CloudWatch Events
- Amazon CloudTrail
- AWS Lambda
- Amazon SQS
- API Gateway
- Amazon CloudFront
- Procesado eficiente de ficheros mediante computación distribuida
- Arquitecturas de aplicaciones web serverless (JAMStack)
- Autenticación de APIs y front-end web con Amazon Cognito