52 - Integración con servicios en la nube - desplegando aplicaciones en Rust

52 - Integración con servicios en la nube - desplegando aplicaciones en Rust

¡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!