Contenido del curso
0:00/6:50
Dividir una API en microservicios escalables
Suscríbete para ver másKafka para comunicar microservicios por eventos
Suscríbete para ver másFlujo de trabajo con Kafka para enrutar microservicios automáticamente
Suscríbete para ver másBases de datos fuera de contenedores Docker
Suscríbete para ver másAutomatiza microservicios ASP.NET con Bash
Suscríbete para ver másAutomatizar microservicios con Bash y Dockerfile
Suscríbete para ver másAzure Service Bus para comunicación entre microservicios
Suscríbete para ver másRest Client como alternativa a Swagger en VS Code
Suscríbete para ver másTres microservicios .NET corriendo sin Docker
Suscríbete para ver másCreación de servicios de consulta con .NET y SQL
Suscríbete para ver másDocker Compose con cinco microservicios .NET
play_circleViendo ahoraMonorepo vs multirepo en microservicios
Suscríbete para ver másConfiguración de secretos de GitHub para desplegar en Azure
Suscríbete para ver másDespliegue de aplicaciones con Azure Container Apps desde Docker Hub
Suscríbete para ver másDespliegue automático de microservicios con GitHub Actions
Suscríbete para ver másDesplegando microservicios con GitHub Actions
Suscríbete para ver másPróximos pasos de mejora en arquitectura de microservicios
Suscríbete para ver másDesplegar varios microservicios uno por uno se vuelve tedioso cuando tu arquitectura crece. Con Docker Compose puedes orquestar todos tus contenedores con un solo comando, aprovechando los Dockerfiles que ya generaste en cada proyecto. Esta guía te muestra cómo armar el archivo docker-compose.yml, configurar puertos y levantar cinco servicios .NET coordinados por Service Bus.
¿Qué hace Docker Compose en una arquitectura de microservicios?
Docker Compose lee un archivo YAML donde declaras todos los servicios de tu sistema y los despliega de forma simultánea como contenedores. En lugar de construir y correr cada imagen por separado, defines una vez la configuración y ejecutas docker compose up [02:30].
¿Qué es Docker Compose? Es una herramienta que orquesta múltiples contenedores Docker desde un solo archivo YAML. Tú declaras servicios, puertos y rutas, y Compose se encarga de construir las imágenes y levantarlas en conjunto.
En el ejemplo de la clase se levantan cinco servicios: agregar miembro, escoger edad, agregar adulto, agregar niño y obtener adultos. Tres de ellos se comunican vía Service Bus y dos exponen endpoints HTTP.
¿Cómo crear el archivo docker-compose.yml?
El archivo debe vivir dentro de la carpeta microservicios, no en una subcarpeta. Visual Studio lo reconoce automáticamente y muestra el ícono de la ballenita rosa al lado del nombre [00:55].
Dentro del archivo declaras una sección services con la lista de todo lo que quieres desplegar. Cada servicio incluye:
add-member.¿Por qué no puedes repetir el mismo puerto en dos servicios?
Cada puerto del host solo puede mapearse a un contenedor a la vez. Si agregar miembro usa el 8080, entonces obtener adultos debe usar otro distinto, por eso en la clase se cambia al 5000 [01:50]. Los servicios que se invocan vía Service Bus no necesitan exponer puertos porque no reciben tráfico HTTP directo.
¿Cuándo defino puertos en Docker Compose? Solo cuando el servicio expone un endpoint accesible desde fuera del contenedor. Los servicios internos que se comunican por mensajería como Service Bus no requieren mapeo de puertos.
¿Cómo levantar y verificar los servicios?
Desde la terminal, ubícate en la carpeta microservicios y ejecuta docker compose up. Compose construirá las imágenes y desplegará los contenedores asignando un color distinto a cada servicio en los logs, lo que facilita rastrear qué está pasando en cada uno [02:35].
Una vez arriba, prueba los endpoints desde tus archivos .http:
localhost:5242 o el puerto local por el puerto que asignaste en Compose, por ejemplo 8080 para agregar miembro o 5000 para obtener adultos.En la demostración, al registrar a Pepe nacido en 1999 se ve cómo el mensaje viaja por Service Bus y termina ejecutando agregar adulto [04:15]. Al registrar a Alejandra con fecha 2020, el flujo termina en agregar niño.
¿Qué ventajas obtienes al orquestar con Compose?
Después de ver los cinco servicios funcionando de manera coordinada, el siguiente paso es completar los servicios de consulta restantes copiando y adaptando el código que ya tienes. Cuéntame en los comentarios qué puertos estás usando en tu propio docker-compose.yml y si te topaste con conflictos al mapearlos.
Alberto Diaz
Amin Espinoza
ProfesorRoyer Guerrero Pinilla
Tengo una duda sobre Docker y microservicios, al instalar dependencias como
npm install,mvn install, etc., dentro del Dockerfile no hace mucho más lento elbuildo eldocker-compose up?También escuché que en proyectos con varios servicios en Node.js, en vez de tener muchosnode_modulesseparados, se puede usar uno solo compartido. ¿Eso es buena práctica? o Cuál es la mejor forma de manejar esto para que no se vuelva lento?
La mejor práctica sería evitar a toda costa Node! Jajajajajaja No es cierto, si lo vas a hacer, crear un servicio de dependencias solo es bueno si esto te permite desplegar muchos servicios. De lo contrario es trabajo adicional. Por otro lado, la idea de un microservicio es solo tener un solo objetivo en mente, esto haría que no necesites cargar muchos módulos, eso es algo que debes considerar.
Acoplamiento por infrastructura es inviable meter eso en un cloud build o algo asi... este curso es muy superficial y solo copia y pega y ya.....