¡Bienvenidos de nuevo a Rustaceo.es! Ahora que hemos construido un microservicio en Rust, es momento de llevarlo a producción y desplegarlo en la nube. En este artículo, exploraremos cómo empaquetar, configurar y desplegar nuestra aplicación Rust en plataformas cloud como AWS, GCP y Azure.
🚀 ¿Por qué desplegar en la nube? #
Las plataformas cloud ofrecen ventajas clave para aplicaciones modernas: ✔ Escalabilidad: Aumenta o reduce los recursos según la demanda. ✔ Disponibilidad: Infraestructura confiable con balanceo de carga. ✔ Seguridad: Integración con autenticación y permisos avanzados. ✔ Automatización: Despliegues rápidos y gestionados.
📦 Empaquetando la aplicación con docker #
Antes de desplegar, necesitamos empaquetar nuestra aplicación en un contenedor Docker.
📌 1️⃣ Creando un `` para Rust
# Etapa 1: construcción de la aplicación
FROM Rust:1.65 AS builder
WORKDIR /app
COPY . .
RUN cargo build --release
# Etapa 2: ejecución en un contenedor más liviano
FROM debian:buster-slim
WORKDIR /app
COPY --from=builder /app/target/release/microservicio-Rust .
CMD ["./microservicio-Rust"]
📌 2️⃣ Construcción de la Imagen Docker
docker build -t Rust-microservice .
📌 3️⃣ Prueba Local
docker run -p 8080:8080 Rust-microservice
✔ Genera una imagen liviana optimizada para producción. ✔ Reduce dependencias al incluir solo el binario compilado.
🌍 Desplegando en aws con ecs y fargate #
Para desplegar en AWS, utilizamos Elastic Container Service (ECS) junto con Fargate para ejecutar contenedores sin administrar servidores.
📌 1️⃣ Subir la Imagen a Amazon Elastic Container Registry (ECR)
aws ecr create-repository --repository-name Rust-microservice
$(aws ecr get-login --no-include-email)
docker tag Rust-microservice:latest <aws_account_id>.dkr.ecr.<region>.amazonaws.com/Rust-microservice:latest
docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/Rust-microservice:latest
📌 2️⃣ Desplegar en ECS
- Crear una tarea ECS con la imagen subida a ECR.
- Configurar un servicio ECS y una VPC con balanceador de carga.
- Utilizar Fargate para ejecución sin necesidad de servidores.
✔ AWS ECS permite desplegar contenedores en alta disponibilidad. ✔ Fargate simplifica la ejecución eliminando la gestión de servidores.
☁️ Alternativas: gcp y azure #
📌 1️⃣ Desplegando en google cloud run #
Google Cloud Run permite ejecutar contenedores serverless:
gcloud builds submit --tag gcr.io/<project-id>/Rust-microservice
gcloud run deploy Rust-microservice --image gcr.io/<project-id>/Rust-microservice --platform managed --allow-unauthenticated
✔ Cloud Run escala automáticamente sin configuración manual. ✔ Ideal para microservicios con tráfico variable.
📌 2️⃣ Desplegando en azure container apps #
az acr create --resource-group Rust-group --name rustRegistry --sku Basic
az acr login --name rustRegistry
docker tag Rust-microservice rustRegistry.azurecr.io/Rust-microservice
docker push rustRegistry.azurecr.io/Rust-microservice
az containerapp create --resource-group Rust-group --name Rust-microservice --image rustRegistry.azurecr.io/Rust-microservice
✔ Azure Container Apps facilita la ejecución sin gestionar Kubernetes. ✔ Integración con redes privadas y escalado automático.
🔍 Monitoreo y logging en la nube #
Una vez desplegado, necesitamos monitorear el rendimiento y errores.
📌 1️⃣ AWS CloudWatch Logs
aws logs create-log-group --log-group-name Rust-microservice
aws logs create-log-stream --log-group-name Rust-microservice --log-stream-name logs
✔ Registra logs en tiempo real para debugging y métricas.
📌 2️⃣ GCP Stackdriver Logging
gcloud logging read "resource.type=gce_instance" --limit 10
✔ Monitoriza logs en Google Cloud con alertas configurables.
📌 3️⃣ Azure Monitor
az monitor log-analytics workspace create --resource-group Rust-group --workspace-name Rust-logs
✔ Centraliza logs y métricas en Azure para análisis detallado.
🏆 Conclusión #
Hemos aprendido a desplegar una aplicación Rust en la nube utilizando:
🎯 Resumen de lo aprendido: ✔ Creación de Dockerfile para empaquetar la aplicación. ✔ Despliegue en AWS ECS, Google Cloud Run y Azure Container Apps. ✔ Monitoreo con CloudWatch, Stackdriver y Azure Monitor.
🔮 Próximo paso: Automatizar despliegues con CI/CD en GitHub Actions o GitLab CI.
¡Nos vemos en la siguiente entrega, Rustaceos!