Giter VIP home page Giter VIP logo

cc's Introduction

Material docente para Cloud Computing: Fundamentos y Aplicaciones

Build Status

Cloud Computing I es una asignatura anual del máster de ingeniería informática en la UGR.

La asignatura se imparte en el curso 2021-2022 de martes a jueves de 18:00 a 20:00, martes y jueves clase dividida en la 2.9, clase conjunta el miércoles en la 1.6.

Tendrás que llevar tu portátil a todas las clases. Se usará GitHub para los ejercicios y el proyecto; también para los objetivos semanales, que estarán (año 2021-22) en este repositorio.

Estos son los objetivos de la asignatura, con un objetivo principal es que el estudiante, al final de la asignatura, sea capaz de hacer lo siguiente:

  1. Entender las técnicas de diseño e implementación de aplicaciones nativas en la nube.
  2. Definir el entorno de trabajo para desarrollo de una aplicación en particular y usarlo en IaaS.
  3. Usar ese entorno para configurar integración continua en una aplicación.
  4. 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.
  5. Entender las técnicas de configuración automática de entornos virtuales y las sepa aplicar en los entornos anteriores.
  6. Usar lo aprendido para despliegue masivo de aplicaciones en la nube.

Temario - Programa de la asignatura

Este curso cero puede ayudarte a navegar por muchos de los temas que se van a dar en la asignatura. El curso se imparte periódicamente, conviene estar atento a cuando se imparta.

Los materiales de la asignatura están enlazados desde aquí y disponibles con una licencia libre. Los fuentes de los mismos están en GitHub.

  1. Desarrollo basado en pruebas
  2. Usando contenedores
  3. Integración continua
  4. REST
  5. Microservicios
  6. Composición de contenedores

La temporización de la asignatura y la interacción entre estudiantes y el profesor están en un repositorio de GitHub.

Temas que se han impartido otros años y ya no forman parte del contenido principal (pero se pueden consultar a título informativo)

  1. Arquitecturas software para la nube
  2. Orquestación de contenedores

Prácticas - Actividades académicas dirigidas

El objetivo de la asignatura es la realización de un proyecto con diferentes hitos que correspondan a los objetivos cumplidos hasta ese momento. Se trata de que los proyectos sigan un sistema de desarrollo ágil, es decir, de definición de infraestructura para un proyecto existente o que se irá mejorando a lo largo del cuatrimestre. A grosso modo, los hitos se organizarán de la forma siguiente.

  1. Puesta a punto del repositorio de la asignatura y buenas prácticas en el uso de los mismos y descripción del problema a resolver, la lógica de negocio y su solución
  2. Planificación del proyecto
  3. Tests
  4. Uso de contenedores
  5. Integración continua
  6. Microservicios
  7. Composición de contenedores

Seminarios y material adicional

Material adicional de la asignatura, que se usará en clase pero que el alumno tendrá que aprender a su ritmo

  1. Introducción ligera al lenguaje Ruby

Tutorías virtuales y presenciales

Las tutorías virtuales se realizarán preferiblemente a través del grupo de Telegram, que se comparte con los estudiantes de otros años de la misma asignatura. Se aconseja a todo estudiante matriculado que solicite una tutoría al principio de curso para recibir orientación sobre el mismo.

Criterios de evaluación

Los criterios de evaluación figuran en la ficha de la asignatura en la web de posgrado, y se especifican en el repositorio de la clase.

cc's People

Contributors

adrichainz avatar alexespana avatar alxe avatar anglepi avatar arturocs avatar aythae avatar carlosma7 avatar deividventas avatar dylan-nogueras avatar e89835 avatar erseco avatar fernandoroldan93 avatar fpeiro avatar gabcas28 avatar germaaan avatar gomezportillo avatar grivasgervilla avatar groctel avatar guillergood avatar jj avatar kcobos avatar lulivi avatar mati3 avatar mcarmona99 avatar mgarenas avatar neo-stark avatar pacastillo avatar pedromfc avatar potray avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cc's Issues

arreglar script travis

before_install no hace nada e install realmente tampoco. Las versión de perl no coincide con la del script de tests.

Revisar capítulo de contenedores

  • Los ejemplos no reflejan casos de uso y son más bien arbitrarios.
  • El uso interno del contenedor tampoco explica bien para qué se puede usar y el caso de uso correspondiente.
  • Documentar mejor buenas prácticas.

Inconsistencia en ejercicios del tema de contenedores

En el tema relativo a contenedores, los ejercicios 6 y 7 tratan sobre un mismo tema, de forma que la realización del ejercicio 6, implica la realización del ejercicio 7, por lo que el ejercicio 7 no se trata de un ejercicio sino de una parte del ejercicio 6.

Y, posiblemente, eliminar el hito de PaaS

Para entrar en harina en otras cosas más interesantes de virtualización. Si se queda el de PaaS, que sirva como introducción para trabajar con sistemas cloud como Azure.

Ampliación apuntes provisionamiento ligero

Aquí un pequeño resumen del proceso seguido para levantar el primer contenedor LXC:

Tras instalar LXC en Arch junto con el paquete arch-install-scripts (que sugiere en la documentación de Arch que se instale) con los comandos:

pacaur -S lxc
pacaur -S arch-install-scripts

Lo primero que observamos es que, como dice en la documentación anteriormente nelazada, los namespaces de usuario no aparecen como disponibles cuando comprobamos con lxc-checkconfig, esto es aparentemente por un motivo de seguridad de Arch lo que nos obliga a ejecutar los comandos con sudo al parecer.

Una vez hecho esto al intentar crear una máquina con Ubuntu con el comando sudo lxc-create -t ubuntu -n una-caja nos daba un error indicando que no podía ejecutar el comando debootstrap, con lo que lo hemos instalado por medio del comando sudo pacman -S debootstrap.

Una vez hecho esto, y tras un tiempo de espera, se ha configurado un contenedor con Ubuntu que arrancamos son sudo lxc-start -n una-caja y a la que nos ponemos conectar con sudo lxc-console -n una caja. Al hacer esto antes de pulsar ENTER que nos iniciará la consola de dicho contenedor, hemos de fijarno que cuando queramos salir de dicha consola hemos de emplear Ctrl+a q, si empleamos el comando exit lo único que haremos será "salir" de la máquina y aparecerá de nuevo la petición de usuario y contraseña para volver a entrar en ella.

El SEO juice no es demasiado bueno

La página web de esto debería estar entre las tres primeras, pero está la séptima. Hasta forks de otros años están por encima. Tratar de ver qué es lo que pasa y mejorar un poco el ránking.

Eliminar los ejemplos de spray.io con Scala

Parece que no se desarrolla desde hace años. El repo del ejemplo no compila. Es posible que haya que usar una versión antigua de Java, pero en cualquier caso no es un sistema en desarrollo activo y es mejor dejarlo.

Retrasar (o eliminar) el tema de arquitecturas

Aunque es necesario conocer qué arquitecturas vamos a tratar, decir qué arquitectura se elige en realidad no se relaciona por parte del estudiante con las historias de usuario que vaya a usar. Además, la arquitectura al final está condicionada por las historias de usuario, así que hasta que no existan esas HUs es muy difícil decidir por la arquitectura. En realidad, en los primeros hitos se crea la lógica básica de negocio, y sólo en el momento de conectar a datos o a otros servicios se debería de concretar si se van a usar microservicios, tareas, serverless, instancias monolíticas y qué servicios externos se van a conectar.

Crear un cliente de línea de órdenes para enviar los objetivos y prácticas

Aparte de hacer algunas comprobaciones locales, preguntaría una serie de cosas tales como

  • ¿Has enviado los objetivos correspondientes?
  • ¿Has cubierto todas las rúbricas y las has enlazado claramente?
  • ¿Has avanzado tu proyecto desde el hito anterior?

A partir de ahí podría crear un PR sólo si se cumplen todas las condiciones y pasan los tests locales; también si se responde que no a alguna de las cosas anteriores se podría indicar qué hacer para cumplirlos. Habría que tener un cliente que tuviera actualizaciones constantes desde las sesiones (para los objetivos) y los guiones.

Mejorar apuntes de chef

Crear ejemplos más reales, por ejemplo. Comprobar que todo funciona en las últimas versiones.

Trabajar más el hito 2

Dejar más claro y entrar más suavemente en el desarrollo ágil, con las diferentes partes del mismo: fases del desarrollo ágil, qué es la planificación de un proyecto, cómo se plantea un proyecto y todo eso.

Crear material (adicional) para los siguientes hitos

Del hito de Microservicios pasaremos al de PaaS, en el que habrá que tener una single source of truth con un almacén de datos. Heroku permite crear almacenes de datos con Postgres y Redis, así que no hay mucho problema al respecto.

Configurar externamente la secuencia de temas

Ahora mismo son metadatos en un comentario al principio del tema que se tratan en un hook. Sería más fácil (y no habría que reeditarlo todo) que se hiciera en un fichero externo, de forma que sólo hubiera que cambiar este. Además, se evitarían inconsistencias (y se podría generar automáticamente la secuencia en el README)

Eliminar Vagrant

Vagrant ya no se usa más que en casos muy especiales. Es mejor eliminarlo, o dejarlo como un seminario si acaso.

Modularizar los temas

De forma que sean más "atómicos" y se puedan configurar fácilmente, así como compartir entre CC e IV. En general, separar por temática, no por temas de la asignatura.

Revisar capítulo de introducción a las arquitecturas de software en la nube

Posibles mejoras:

  • Mejoras gramaticales, o de explicación de algún concepto.
  • Añadir enlaces a tutoriales, vídeos de Youtube, artículos o presentaciones
  • Añadir ejemplos en diferentes lenguajes de programación.

Este capítulo publicado está aquí: http://jj.github.io/CC/documentos/temas/Arquitecturas_para_la_nube, pero la edición se hace desde https://github.com/JJ/CC/blob/master/documentos/temas/Arquitecturas_para_la_nube.md

Posibilidad de escoger lenguaje en los ejercicios de microservicios

Dentro del tema de Microservicios, en el ejercicio 2 se propone lo siguiente:

Realizar una aplicación básica que use express para devolver alguna estructura de datos del modelo que se viene
usando en el curso.

Se podría especificar de manera que se entienda el ejercicio sin necesidad de realizarlo únicamente con Node.js y Express.

Modularizar enlaces y referencias

Como este repositorio es un trabajo evolutivo en tiempo (cada curso escolar), recomendaría adaptar los enlaces de los archivos Markdown de "enlace inmediato" a "enlace referenciado", es decir:

# "Enlace inmediato"
Los criterios generales que figuran en la [guía docente](***) son los siguientes

# "Enlace referenciado"
Los criterios generales que figuran en la [guía docente][***] son los siguientes
···
···
[guia-docente]: ***

Esto permitiría definir los enlaces en un lugar más apropiado, como sea el final de la sección o capítulo, así como más fácil mantenerlos actualizados.

Para más información, consulta la documentación de CommonMark, un intento de estandarizar Markdown.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.