Infraestructura virtual es una asignatura obligatoria de la rama "Tecnologías de la Información" del primer cuatrimestre del cuarto curso del Grado de Ingeniería Informática y optativa en otras ramas y en el Doble Grado de Informática y Matemáticas.
La asignatura en el curso 24-25 se imparte en el aula 1.3 los viernes de 12:30 a 14:30 (grupo conjunto) y en la -1.2 los jueves de 8:30 a 10:30 y de 12:30 a 14:30 (grupos divididos). Se recuerda a los estudiantes que en todas las clases será necesario llevar el portátil, ya que son siempre clases prácticas; por lo mismo, se recomienda encarecidamente la asistencia a todas las clases para realizar las prácticas in situ y que el profesor pueda ayudarles.
Las clases de cursos anteriores están grabadas, y puedes acceder a ellas en esta lista de reproducción de YouTube. Conviene que te refieras a ellas sólo para los conceptos, no para los temas administrativos.
Se usará GitHub para el proyecto, la forma principal de examinar la asignatura; cada una de las entregas representan haber alcanzado objetivos de aprendizaje, y por lo tanto se denominan objetivos.
Los materiales de la asignatura están enlazados desde abajo y disponibles con una licencia libre. Los fuentes de los mismos están en GitHub.
La temporización de la asignatura y los objetivos de cada sesión figuran en la bitácora de clase. Enlazaremos también en ese fichero las grabaciones que se hagan de las sesiones en vivo.
Estos son los objetivos de la asignatura, cuyas sesiones de clase se irán reflejando en un repositorio de GitHub.
En resumen, nuestra intención es que el estudiante al final de la asignatura sea capaz de hacer lo siguiente:
- Definir el problema, entorno de trabajo y pruebas para desarrollo de una aplicación en particular y desplegarlo en un PaaS.
- Usar ese entorno para configurar integración continua en una aplicación.
- Crear un entorno virtual para desarrollar y alojar la aplicación y comprenda el soporte físico de las técnicas usadas para crear tal entorno virtual.
- Entienda las técnicas de configuración automática de entornos virtuales y las sepa aplicar en los entornos anteriores.
- Use lo aprendido para despliegue masivo de aplicaciones en la nube.
El objetivo del proyecto es que el estudiante se familiarice con la metodología usada habitualmente en desarrollo de aplicaciones (en la nube y cualquier otro tipo), por lo tanto, lo importante es que vaya, a través de la puesta en práctica en un proyecto propio, interiorizando las mejores prácticas en ingeniería de software.
Previo a la asignatura, es conveniente que consultes este curso, con material suplementario a lo que se imparte en la asignatura. Los temas relevantes se enlazarán en cada hito.
La parte práctica de esta asignatura consiste en la realización de un proyecto a lo largo de la misma, cubriendo diferentes objetivos de aprendizaje a la vez que se realizan diferentes productos mínimamente viables de ese proyecto. Los proyectos consisten en crear la infraestructura virtual junto con una aplicación desarrollada según el modelo DevOps. A grosso modo, los objetivos se organizarán de la forma siguiente.
- Objetivo cero: Uso básico de herramientas, problema a resolver.
- Historias de usuario y planificación.
- Modelización del problema.
- Automatización de las tareas.
- Tests unitarios para la clase/s diseñadas.
- Técnicas de virtualización: Contenedores para pruebas.
- Integración continua.
- Servicios esenciales.
- REST.
- Implementación de REST.
En estas prácticas se realizarán una serie de actividades para ayudar a interiorizar los conceptos.
Este último para crédito adicional:
- PaaS.
Estas prácticas se han hecho otros años:
- Provisionamiento de máquinas virtuales.
- Virtualización de aplicaciones.
- Sistemas serverless.
- Creando microservicios.
- Desplegando a la nube: Platform as a Service.
El temario está sólo como complemento, porque hay que partir de los objetivos de aprendizaje semanales y los objetivos a entregar. Esto se ha usado como material primario antes de 2021, pero ya no se considera material principal y está, en muchos casos, sin actualizar.
- Introducción: conceptos y soporte físico. Esta introducción es cultura general; aunque conviene conocerlo, no es imprescindible para llevar a cabo, en general, el proyecto de la asignatura. Se aconseja vivamente, sin embargo, leerlo y llevar a cabo los ejercicios de autoevaluación.
- Iniciación a DevOps: desarrollo basado en pruebas.
- Usando contenedores.
- Integración continua.
- Breve introducción a REST.
- Puesta en marcha de microservicios.
- Platform as a Service.
Estos temas se pueden consultar como material adicional, han dejado de formar parte del temario de la asignatura:
- Introducción e historia de los contenedores.
- Técnicas de virtualización.
- Aislamiento de recursos.
- Almacenamiento virtual.
- Gestión de configuraciones.
- Computación serverless.
Material adicional interesante para la asignatura, que se impartirá (en todo caso) fuera del horario lectivo.
- Mini-tutorial de Markdown, por Justo Javier Galera (JotaGalera).
- Introducción ligera a git.
- Introducción ligera al lenguaje Ruby.
Las tutorías virtuales se realizarán preferiblemente a través del grupo
de Telegram; habrá que solicitar al profesor ser añadido. Finalmente, el
profesor está disponible por Telegram y Google Meet (en todos los
casos: jjmerelo
); para cualquier videotutoría se pide consultar con cierta
antelación.
Los criterios de evaluación figuran en la ficha de la asignatura en la web del grado, y se especifican en el repositorio de la clase.
Si no se ha superado la asignatura en la convocatoria ordinaria, en la extraordinaria habrá que entregar los diferentes objetivos del proyecto no entregados, con fecha tope el día que se haya anunciado oficialmente para el examen.