Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create Devops Project #1857

Merged
merged 17 commits into from
Aug 16, 2024
14 changes: 14 additions & 0 deletions learning-objectives/data.yml
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,20 @@ data-analytics:
- analysis-report
- analysis-presentation

devops-computing-cloud-services:
- concepts-cloud-infrastructure-virtualization
- setting-up-runtime-environment
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

esto es instalar las herramientas de la nube respectiva?

- monitoring-application-virtual-machine
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se refiere al dashboard de la nube respectiva?


devops-docker:
- docker-container-image
- dockerfile
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esto es un tema amplio que tal vez depende de otros OAs (bash/shell-scripts y algo sobre Linux/Debian o Alpine)

- docker-commands

devops-container-cloud-services:
- orchestration-system-components
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si dejamos fuera K8s creo que no hacemos nada de orquestación.

- configure-container-task-definitions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Estas son las deficiones para K8s?


# New OAs since UXD006
agile-planning:
- scope
Expand Down
95 changes: 95 additions & 0 deletions learning-objectives/intl/es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2003,6 +2003,101 @@ ai-prompting/open-ai-api:
- title: "The chat completion object - API Reference - OpenAI API"
url: https://platform.openai.com/docs/api-reference/chat/object

devops-computing-cloud-services:
title: Servicios de computación en la nube
description: Servicios de computación en la nube como AWS EC2 y Azure VM

devops-computing-cloud-services/concepts-cloud-infrastructure-virtualization:
title: Comprender los conceptos fundamentales de la infraestructura en la nube y la virtualización
description: Describir los conceptos básicos de la infraestructura en la nube y cómo la virtualización permite la creación y gestión de máquinas virtuales
links:
- title: AWS Cloud Essentials
url: https://aws.amazon.com/getting-started/cloud-essentials/
- title: Get started with Amazon EC2
url: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html

devops-computing-cloud-services/setting-up-runtime-environment:
title: Configurar el entorno de ejecución de una aplicación en una máquina virtual
description: Instalar y configurar un sistema operativo y otros servicios esenciales en una máquina virtual para ejecutar una aplicación
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esto es independiente de Devops entonces, de hecho el primer proyecto no lo llamaría Devops porque no involucra Dev solo Ops ;-)

links:
- title: Despliegue de API NodeJS
url: https://dev.to/drsimplegraffiti/from-code-to-the-cloud-a-step-by-step-guide-to-deploying-your-nodejs-app-on-aws-ec2-4300
- title: Despliegue API Python
url: https://www.geeksforgeeks.org/how-to-deploy-python-application-in-aws/
- title: Despliegue de API Java
url: https://medium.com/@amitu2016/deploying-spring-boot-web-app-on-aws-using-ec2-and-s3-4db1d0f55c78

devops-computing-cloud-services/monitoring-application-virtual-machine:
title: Monitorear la ejecución de una aplicación en una máquina virtual
description: Utilizar herramientas de monitoreo para supervisar la ejecución de una aplicación en una máquina virtual
links:
- title: Monitor Amazon EC2 resources
url: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring_ec2.html

devops-docker:
title: Docker
description: Docker permite empaquetar una aplicación junto con todas sus dependencias (como bibliotecas, configuraciones y archivos necesarios) en una unidad estándar conocida como contenedor

devops-docker/docker-container-image:
title: Explicar qué es Docker, Docker container y Docker image
description: Explicar qué es Docker, Docker container y Docker image
links:
- title: What is a container?
url: https://docs.docker.com/guides/docker-concepts/the-basics/what-is-a-container/
- title: What is an image?
url: https://docs.docker.com/guides/docker-concepts/the-basics/what-is-an-image/
- title: What is a registry?
url: https://docs.docker.com/guides/docker-concepts/the-basics/what-is-a-registry/

devops-docker/dockerfile:
title: Comprender y usar las intrucciones básicas de un Dockerfile para definir una Docker image, como `FROM`, `WORKDIR`, `COPY`, `RUN` y `EXPOSE`
description: Comprender y usar las intrucciones básicas de un Dockerfile para definir una Docker image, como `FROM`, `WORKDIR`, `COPY`, `RUN` y `EXPOSE`
links:
- title: Understanding the image layers
url: https://docs.docker.com/guides/docker-concepts/building-images/understanding-image-layers/
- title: Writing a Dockerfile
url: https://docs.docker.com/guides/docker-concepts/building-images/writing-a-dockerfile/
- title: Build, tag, and publish an image
url: https://docs.docker.com/guides/docker-concepts/building-images/build-tag-and-publish-an-image/
- title: Multi-stage builds
url: https://docs.docker.com/guides/docker-concepts/building-images/multi-stage-builds/

devops-docker/docker-commands:
title: Ejecutar comandos básicos de Docker para gestionar el ciclo de vida de un contenedor e imagen e interactuar con contenedores
description: Usar comandos como `docker build`, `docker run`, `docker ps`, `docker stop`, `docker rm`, `docker pull` y `docker push`
links:
- title: Docker CLI Reference
url: https://docs.docker.com/reference/cli/docker/

devops-container-cloud-services:
title: Servicio de orquestación de contenedores
description: Servicios de orquestación de contenedores en la nube como AWS ECS y Azure Container Apps

devops-container-cloud-services/orchestration-system-components:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Me parece que no cubrimos esto ya si no vamos a entrar en K8s

title: Describir los componentes clave de un sistema de orquestación, como clústeres, tareas, servicios y balanceadores de carga
description: Describir los componentes clave de un sistema de orquestación, como clústeres, tareas, servicios y balanceadores de carga
links:
- title:
url:

devops-container-cloud-services/configure-container-task-definitions:
title: Crear y configurar definiciones de contenedor y tareas que incluyan todos los componentes necesarios para ejecutar un aplicación, como imágenes Docker, variables de entorno, volúmenes y configuraciones de red
description: Crear y configurar definiciones de contenedor y tareas que incluyan todos los componentes necesarios para ejecutar un aplicación, como imágenes Docker, variables de entorno, volúmenes y configuraciones de red
links:
- title:
url:

devops-kubernetes:
title: Kubernetes
description: Kubernetes es una herramienta que facilita la gestión de aplicaciones contenedorizadas al automatizar el despliegue, el escalado y la recuperación ante fallos

devops-kubernetes/kubernetes-use-cases:
title: Explicar que es Kubernetes y describir sus casos de uso y las necesidades que soluciona
description: Explicar que es Kubernetes y describir sus casos de uso y las necesidades que soluciona
links:
- title:
url:

data-analytics:
title: Análisis de datos
description: Validar hipótesis mediante el análisis de los datos, y proporcionar recomendaciones estratégicas basadas en tus hallazgos
Expand Down
126 changes: 126 additions & 0 deletions projects/05-computing-service-deployment/README.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
# API Deployment on Computing Service

## Índice

- [1. Consideraciones generales](#1-consideraciones-generales)
- [2. Preámbulo](#2-preámbulo)
- [3. Resumen del proyecto](#3-resumen-del-proyecto)
- [4. Implementaciones de ejemplo](#4-Implementaciones-de-ejemplo)
- [5. Paso a paso general para el despliegue en Amazon EC2](#5-Paso-a-paso-general-para-el-despliegue-en-Amazon-EC2)
- [6. Paso a paso detallado para el despliegue en Amazon EC2](#6-Paso-a-paso-detallado-para-el-despliegue-en-Amazon-EC2)
- [7. Consideraciones para pedir tu Project Feedback](#7-Consideraciones-para-pedir-tu-Project-Feedback)
- [8. Objetivos de aprendizaje](#8-Objetivos-de-aprendizaje)

---

## 1. Consideraciones generales

- Este proyecto lo resolvemos de manera --individual--.
- El rango de tiempo estimado para completar el proyecto es de 1 a 2 Sprints.

## 2. Preámbulo

<img
src="https://github.com/user-attachments/assets/506d6905-593f-4774-be0a-26f28c35af9b"
alt="Hardware"
aria-describedby="hardware" />

<p id="hardware">
Virtual Machines
</p>

_Photo by_
[_Alexandre Debiève_](https://github.com/user-attachments/assets/506d6905-593f-4774-be0a-26f28c35af9b)

AWS EC2 es un servicio de computación en la
nube que permiten a las desarrolladoras crear, gestionar y escalar máquinas
virtuales conocidos como instancias. Proporciona una
infraestructura flexible y segura para ejecutar una amplia variedad de
aplicaciones y servicios, con características como escalabilidad,
diversidad de tipos de instancias, soporte para múltiples sistemas
operativos, opciones de pago por uso, y avanzadas configuraciones de redes
y seguridad.

La currícula de Laboratoria incluye 4 proyectos enfocados en
desplegar la [Fleet Management API](../05-fleet-management-api/README.md)
en la nube. Cada proyecto se distingue por utilizar
diferentes métodos de despliegue, lo que te permitirá aprender y aplicar
diversas estrategias para desplegar tu aplicación en producción en un entorno real.

<img
src="https://github.com/user-attachments/assets/807d21eb-4f47-4b91-8441-a952192562f0"
alt="Proyectos Laboratoria"
aria-describedby="devops-projects-laboratoria" />

<p id="devops-projects-laboratoria">
Ruta Devops
</p>

## 3. Resumen del proyecto

En este proyecto desplegarás la Fleet Management API en una máquina
virtual usando **Amazon EC2**.

En lugar de depender únicamente de tu computadora local para ejecutar aplicaciones,
tanto en Amazon EC2, puedes utilizar servidores remotos, llamados
instancias, que ofrecen más potencia y flexibilidad. Puedes elegir entre
diferentes tipos de instancias según las necesidades
de tu aplicación. Hay instancias optimizadas para tareas que requieren
mucha memoria, mucho procesamiento, almacenamiento rápido, etc. Puedes conectarte
a tu instancia desde tu computadora local usando herramientas como SSH
(para Linux) o Remote Desktop (para Windows). Una vez conectada,
puedes usar la instancia como lo harías con tu computadora local:
instalar software, subir código, ejecutar aplicaciones, etc.

## 4. Implementaciones de ejemplo

En caso que no hayas implementado aún la
[Fleet Management API](../05-fleet-management-api/README.md)
puedes usar las siguientes implementaciones mínimas para
completar este proyecto. Elige la implementación en el
lenguaje de programación que más te interese:

- [Implementación en NodeJS](https://github.com/Laboratoria/minimum-impl-fleet-management-api-nodejs)
- [Implementación en Python](https://github.com/Laboratoria/minimum-impl-fleet-management-api-python)
- [Implementación en Java](https://github.com/Laboratoria/minimum-impl-fleet-management-api-java)

## 5. Paso a paso general para el despliegue en Amazon EC2

Podemos seguir el siguiente paso a paso general para
desplegar la Fleet Management API independientemente del lenguaje de
programación en que esta implementada.

- Paso 1: Crear una cuenta en el proveedor de infraestructura
- Paso 2: Lanzar una máquina virtual
- Paso 3: Configurar la máquina virtual
- Paso 4: Conectar a la máquina virtual desde tu computadora usando SSH
- Paso 5: Instalar las dependencias de la API en la máquina virtual
- Paso 6: Subir el código de tu API en la máquina virtual
- Paso 7: Configurar y ejecutar la API en la máquina virtual
- Paso 8: Probar la API desde tu computadora

## 6. Paso a paso detallado para el despliegue en Amazon EC2

El paso a paso detallado para el despliegue en Amazon EC2
depende del lenguaje de implementacion de la API. Te
sugerimos las siguientes guías:

- [Despliegue de API NodeJS](https://dev.to/drsimplegraffiti/from-code-to-the-cloud-a-step-by-step-guide-to-deploying-your-nodejs-app-on-aws-ec2-4300)
- [Despliegue API Python](https://www.geeksforgeeks.org/how-to-deploy-python-application-in-aws/)
- [Despliegue de API Java](https://medium.com/@amitu2016/deploying-spring-boot-web-app-on-aws-using-ec2-and-s3-4db1d0f55c78)

## 7. Consideraciones para pedir tu Project Feedback

Antes de agendar tu Project Feedback con tu coach, asegúrate de
tener una coleccion de Postman para probar la API que
desplegaste en Amazon EC2.

## 8. Objetivos de aprendizaje

> ℹ️ Esta sección será automáticamente generada en el idioma pertinente, a partir
> de los objetivos de aprendizaje declarados en [`project.yml`](./project.yml),
> al crear el repo del proyecto para un cohort en particular usando
> [`./scripts/create-cohort-project.js`](../../scripts#create-cohort-project-coaches).
>
> Acá puedes ver una [lista de todos los objetivos de aprendizaje](../../learning-objectives/data.yml)
> que contempla nuestra currícula.
5 changes: 5 additions & 0 deletions projects/05-computing-service-deployment/project.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
track: web-dev
tags:
- featured
learningObjectives:
- devops-computing-cloud-services
Loading
Loading