En el ecosistema cloud actual, la eficiencia técnica debe ir de la mano con la optimización de costes. El despliegue de aplicaciones web estáticas (SPA, landings o blogs) mediante Object Storage y Content Delivery Network (CDN) se ha consolidado como la arquitectura de referencia. En este artículo, exploraremos cómo utilizar Terraform para provisionar de forma profesional y reproducible un entorno de alta disponibilidad en Scaleway, permitiendo el uso de dominios personalizados y certificados SSL con un coste operativo prácticamente nulo.
1. Arquitectura de la Solución
El objetivo es desacoplar el almacenamiento de los archivos del servicio de entrega. La arquitectura se compone de:
- Bucket de Object Storage: Donde residen los archivos estáticos (HTML, JS, CSS).
- CDN (Content Delivery Network): Para la caché de borde, reducción de latencia y gestión del certificado SSL.
- Terraform: Como herramienta de Infraestructura como Código (IaC) para garantizar que el despliegue sea auditable y repetible.
2. Configuración del Proveedor y Backend
Iniciamos nuestro archivo main.tf configurando el proveedor de Scaleway. Es fundamental definir la región y el proyecto de forma explícita.
Terraform
terraform {
required_providers {
scaleway = {
source = "scaleway/scaleway"
version = ">= 2.0"
}
}
}
provider "scaleway" {
zone = "fr-par-1"
region = "fr-par"
}
3. Creación del Bucket para Alojamiento Estático
El almacenamiento en Scaleway es compatible con la API de S3. Necesitamos crear un bucket y configurar su visibilidad para que el CDN pueda acceder a los objetos.
Terraform
resource "scaleway_object_bucket" "static_website" {
name = "mi-aplicacion-digital-v1"
acl = "public-read" # Permite lectura pública para la web
}
resource "scaleway_object_bucket_website_configuration" "main" {
bucket = scaleway_object_bucket.static_website.id
index_document {
suffix = "index.html"
}
error_document {
key = "404.html"
}
}
4. Implementación del CDN y Dominio Personalizado
Para profesionalizar el acceso, configuramos el Scaleway Edge Services (CDN). Esto nos permite asociar nuestro dominio y forzar el tráfico a través de HTTPS de forma gratuita.
Terraform
resource "scaleway_edge_services_backend" "backend" {
bucket {
name = scaleway_object_bucket.static_website.name
region = scaleway_object_bucket.static_website.region
}
}
resource "scaleway_edge_services_pipeline" "cdn" {
name = "cdn-web-estatica"
description = "CDN para la web del Kit Digital"
# Origen de los datos
origin {
backend_id = scaleway_edge_services_backend.backend.id
}
# Configuración del dominio y SSL
# Nota: Requiere que el dominio esté gestionado en Scaleway DNS o configurado externamente
}
5. Gestión del Despliegue (CI/CD)
Una vez que la infraestructura está lista mediante terraform apply, el ciclo de vida del software continúa con la carga de archivos. Para mantener el flujo automatizado, podemos integrar el volcado de archivos en nuestro pipeline:
Bash
# Ejemplo de sincronización mediante AWS CLI (compatible con Scaleway S3)
aws s3 sync ./dist s3://mi-aplicacion-digital-v1 --endpoint-url https://s3.fr-par.scw.cloud
Conclusión
Implementar esta solución en Scaleway no solo reduce los costes fijos de mantenimiento al eliminar la necesidad de servidores (VPS), sino que mejora drásticamente la seguridad y la velocidad de carga. El uso de Terraform asegura que toda la justificación técnica del proyecto esté documentada mediante código, cumpliendo con los estándares de calidad exigidos en proyectos de digitalización avanzada.