Azure Básico — Servicios Core para Desarrolladores
Guía práctica de servicios core de Microsoft Azure para desarrolladores: compute, storage, bases de datos, networking e identity con ejemplos hands-on.
Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.
Overview
Microsoft Azure es la segunda plataforma cloud más grande, profundamente integrada con herramientas empresariales como Microsoft 365, Active Directory y .NET. Para desarrolladores, Azure ofrece un conjunto amplio de servicios para compute, storage, bases de datos, networking e identity management. A continuación: los servicios que usarás más frecuentemente y cómo se conectan en una arquitectura de aplicación típica.
When to Use
-
For alternatives, see AWS Basics — Core Services for Developers.
-
Tu organización usa tecnologías Microsoft (.NET, Office 365, Active Directory)
-
Necesitas capacidades de cloud híbrido
-
Quieres integración estrecha con pipelines CI/CD (Azure DevOps, GitHub Actions)
-
Estás construyendo aplicaciones enterprise con fuertes requisitos de identidad
Compute — VMs, App Service y Functions
Azure Virtual Machines
IaaS con control total del SO y entorno.
# Crear una VM con Azure CLI
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys
| Serie de VM | Caso de Uso |
|---|---|
| B-series | Burst, dev/test rentable |
| D-series | Propósito general productivo |
| F-series | Optimizada para compute |
| E-series | Optimizada para memoria |
App Service
PaaS para web apps, APIs y backends mobile. Soporta .NET, Java, Node.js, Python y PHP.
# Crear una web app
az webapp create \
--resource-group myResourceGroup \
--plan myAppPlan \
--name my-webapp-123 \
--runtime "NODE|18-lts"
Capacidades: auto-scaling, deployment slots, dominios custom, certificados gestionados y CI/CD built-in.
Azure Functions
Compute serverless que ejecuta código en respuesta a triggers.
[FunctionName("HttpTrigger")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req)
{
return new OkObjectResult("Hello from Azure Functions");
}
Storage — Blob, Queue y Table
Blob Storage
Storage de objetos para datos no estructurados: archivos, imágenes, backups y logs.
# Crear storage account y container
az storage account create --name mystorage123 --sku Standard_LRS
az storage container create --name uploads --account-name mystorage123
# Subir un archivo
az storage blob upload --container-name uploads --file report.pdf --name report.pdf
| Tier | Caso de Uso |
|---|---|
| Hot | Datos accedidos frecuentemente |
| Cool | Datos poco frecuentes, almacenados ≥ 30 días |
| Archive | Datos raramente accedidos, almacenados ≥ 180 días |
Queue Storage
Message queuing simple para desacoplar componentes.
from azure.storage.queue import QueueServiceClient
queue = QueueServiceClient.from_connection_string(conn_str).get_queue_client("tasks")
queue.send_message("process-order-123")
message = queue.receive_message()
Bases de Datos — Azure SQL y Cosmos DB
Azure SQL
SQL Server gestionado con auto-scaling, backups y alta disponibilidad.
# Crear un servidor y base de datos
az sql server create --name myserver --admin-user sqladmin --admin-password Password123!
az sql db create --server myserver --name mydb --service-objective S0
Cosmos DB
Base de datos NoSQL globalmente distribuida con múltiples APIs (SQL, MongoDB, Cassandra, Gremlin, Table).
from azure.cosmos import CosmosClient
client = CosmosClient(url, credential=key)
database = client.create_database_if_not_exists("mydb")
container = database.create_container_if_not_exists("users", partition_key="/id")
container.upsert_item({"id": "user-1", "name": "Alice"})
Networking — VNet
Virtual Network aísla y asegura tus recursos de Azure.
┌─────────────────────────────────────────────┐
│ VNet │
│ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Subnet A │ │ Subnet B │ │
│ │ ┌───────┐ │ │ ┌───────┐ ┌─────┐ │ │
│ │ │ VM │ │ │ │ VM │ │ SQL │ │ │
│ │ └───┬───┘ │ │ └───┬───┘ └──┬──┘ │ │
│ │ │ │ │ │ │ │ │
│ │ Public IP │ │ Private Link │ │
│ │ (inbound) │ │ (no inbound) │ │
│ └──────────────┘ └────────────────────┘ │
└─────────────────────────────────────────────┘
Servicios clave de networking:
- VNet Peering: Conectar networks entre regiones
- Private Link: Acceso seguro a servicios PaaS sobre IP privada
- Application Gateway: Load balancer Layer 7 con WAF
- Azure Firewall: Protección gestionada a nivel network y aplicación
Identity — Azure AD
Azure Active Directory (ahora Entra ID) provee autenticación y autorización.
{
"issuer": "https://login.microsoftonline.com/{tenant}/v2.0",
"audience": "{client-id}",
"claims": {
"roles": ["Reader", "Contributor"]
}
}
Lo que funciona:
- Usa Managed Identity para autenticación service-to-service
- Habilita Conditional Access policies
- Usa RBAC a nivel resource group
- Integra con GitHub para deployments OIDC
Errores Comunes
- Usar una sola región — despliega across availability zones para resiliencia
- No usar managed identities — los service principals con secrets expiran y filtran
- Ignorar cost management — Azure Cost Management + budgets son esenciales
- Sobreaprovisionar VMs — right-size con recomendaciones de Azure Advisor
- Exponer bases de datos públicamente — siempre usa Private Link o firewall rules
Troubleshooting
- Pipeline fails silently: enable verbose logging and store pipeline artifacts between stages so you can inspect the exact state that failed.
- Container crashes on startup: check that environment variables, secrets, and config files are mounted correctly. Read the first 50 lines of logs before scaling replicas.
- Deployment rolls back repeatedly: verify health checks, resource limits, and startup probes. A failing readiness probe is a common cause of rolling restarts.
- Slow CI builds: cache dependencies and docker layers. Split large test suites into parallel jobs to reduce wall-clock time.
- Drift between environments: use infrastructure-as-code and immutable artifacts. Compare deployed versions with the declared source of truth before debugging behavior differences.
FAQ
¿Es Azure gratis? Azure ofrece un Free Tier: 12 meses de servicios selectos + 200 USD de crédito por 30 días. Algunos servicios son siempre gratis dentro de límites.
¿Azure vs AWS vs GCP?
- Azure: Mejor para empresas Microsoft-centric, cloud híbrido
- AWS: Catálogo más amplio de servicios, mayor market share
- GCP: Mejor para data analytics, AI/ML, Kubernetes
¿Cómo despliego desde GitHub?
Usa Azure App Service deployment center o GitHub Actions con azure/login y azure/webapps-deploy.
¿Cómo empiezo con esto en un proyecto existente?
Empieza con una parte pequeña y aislada de tu codebase. Aplica los conceptos de esta guía a un módulo o servicio. Mide el impacto, luego expande a otras áreas.
¿Qué herramientas necesito?
Las herramientas mencionadas throughout esta guía se listan en cada sección. La mayoría son open-source y ampliamente adoptadas. Consulta los recursos relacionados para instrucciones de setup.
¿Cómo mido el éxito después de implementar esto?
Define métricas claras antes de empezar: benchmarks de rendimiento, tasas de error o indicadores de mantenibilidad. Compara antes y después. Itera basándote en datos, no en suposiciones.
Temas Avanzados
Escenario: Arquitectura Web en Azure
Sistema: App web escalable, multi-region
Requisitos: 99.95% disponibilidad, auto-scaling, DR
Arquitectura:
Front Door (WAF + routing) -> App Service (multi-region)
Region 1: East US
Region 2: West Europe
App Service -> Azure SQL (Active Geo-Replication)
App Service -> Cosmos DB (multi-master)
App Service -> Redis Cache
App Service -> Blob Storage (static assets)
Servicios clave:
| Capa | Servicio | Configuracion |
|------|----------|--------------|
| DNS/Routing | Front Door | Priority routing, WAF |
| Compute | App Service | P1v3, auto-scale 2-10 |
| DB | Azure SQL | Business Critical, 4 vCores |
| NoSQL | Cosmos DB | 10K RU/s, multi-master |
| Cache | Azure Cache for Redis | Standard C1 |
| Storage | Blob Storage | GRS, hot tier |
| Monitoring | App Insights + Log Analytics | |
| Secrets | Key Vault | |
| CDN | Azure CDN | Edge nodes global |
Auto-scaling rules:
- CPU > 70% por 5 min -> scale out (+1 instancia)
- CPU < 30% por 10 min -> scale in (-1 instancia)
- Min: 2 instancias, Max: 10 instancias
- Queue length > 100 -> scale out
- HTTP 5xx > 1% -> scale out + alert
Disaster Recovery:
| Componente | RPO | RTO | Estrategia |
|------------|-----|-----|------------|
| Azure SQL | < 5s | < 1min | Active Geo-Replication |
| Cosmos DB | 0 | 0 | Multi-master |
| Blob Storage | < 15min | < 15min | GRS + async copy |
| App Service | 0 | < 5min | Front Door failover |
| Redis | < 1min | < 5min | Geo-replica + warm-up |
Costos estimados (mensual):
| Servicio | Costo |
|----------|-------|
| App Service (2x P1v3) | $1,000 |
| Azure SQL (BC, 4 vCores) | $1,800 |
| Cosmos DB (10K RU/s) | $600 |
| Redis (C1) | $300 |
| Storage (1TB GRS) | $50 |
| Front Door | $200 |
| Bandwidth (1TB) | $50 |
| Total | ~$4,000/mes |
Lecciones:
- Front Door unifica WAF, routing y health checks
- Active Geo-Replication da RPO < 5s para SQL
- Cosmos DB multi-master elimina write conflicts
- App Service auto-scaling responde en 3-5 min
- Key Vault centraliza secrets con rotation automatica
Como elijo entre Azure SQL y Cosmos DB?
Usa Azure SQL para datos relacionales con esquema estable, queries complejas, y transacciones ACID. Usa Cosmos DB para datos semi-estructurados, escalabilidad horizontal automatica, baja latencia global, y cuando necesites multi-master. Si necesitas ambos, usa SQL para transaccional y Cosmos para catalogo/perfil de usuario.
Errores Comunes en Producción
- Tratar la guía como un checklist para completar una vez en lugar de una práctica por evolucionar.
- Adoptar cada recomendación de golpe en lugar de comenzar con un cambio medido.
- Saltar la evaluación de madurez e imponer prácticas avanzadas a un equipo no preparado.
- No actualizar runbooks y expectativas de guardia al introducir nuevas prácticas.
- Ignorar datos reales de incidentes al priorizar qué partes de la guía aplicar primero.
- No asignar un responsable que revise decisiones trimestralmente.
- Copiar ejemplos sin adaptarlos a las herramientas y restricciones reales del equipo.
- Olvidar medir resultados antes de agregar la siguiente mejora.
Recursos Relacionados
Terraform Best Practices — Módulos, State y Workspaces
Guía práctica de mejores prácticas de Terraform: diseño de módulos, gestión de estado remoto, workspaces y seguridad para infraestructura como código de grado productivo.
GuideKubernetes Avanzado — Más Allá de lo Básico
Guía avanzada de Kubernetes: operators, custom resources, admission controllers, multi-cluster management y hardening productivo para usuarios experimentados.
GuideAWS Básico — Servicios Core para Desarrolladores
Guía práctica de servicios core de AWS para desarrolladores: compute, storage, bases de datos, networking y fundamentos de seguridad con ejemplos hands-on.