Diseña software para un entorno cloud native
Conecta infraestructura repetible, procesos sustituibles, estado duradero y comportamiento observable. Evalúa el diseño cloud native más allá de empaquetar contenedores.
Publicado por TaigaCómo escribimos
Qué aprenderás
- Distinguir el empaquetado en contenedores del comportamiento cloud native.
- Identificar riesgos de estado, reintentos y sustitución en un servicio generado.
- Definir un contrato de plataforma que agentes y personas puedan verificar.
Define el comportamiento necesario
Las prácticas cloud native facilitan un desarrollo y una operación repetibles en entornos públicos, privados o híbridos. CNCF destaca los sistemas que siguen siendo gestionables, observables y resilientes mientras cambian. Los contenedores y la orquestación pueden apoyar este enfoque. No establecen todas estas propiedades por sí solos.
Empieza por un servicio ficticio de informes. Una herramienta de IA crea un endpoint, un worker y una imagen de contenedor. Una demostración produce el PDF correcto. Antes de producción, el equipo debe responder a otra pregunta: ¿qué ocurre cuando la plataforma sustituye el worker durante un trabajo?
Es una cuestión de diseño de aplicación y también de infraestructura. Un reinicio puede restaurar el proceso y perder su trabajo pendiente.
Separa el proceso del estado duradero
El prototipo guarda los trabajos en cola y los informes terminados en el disco del contenedor. Sustituirlo puede eliminar ambos. Añadir más workers también puede producir respuestas distintas según cuál reciba la solicitud.
El diseño revisado usa un almacén duradero de trabajos y un almacén de objetos autorizado. Una solicitud registra una identidad de trabajo. Un worker toma el trabajo, crea el resultado y registra su ubicación. Los controles de acceso siguen siendo necesarios cuando el usuario descarga el informe.
| Aspecto | Pregunta para el servicio de informes |
|---|---|
| Estado | ¿Qué registros deben sobrevivir a la sustitución del proceso? |
| Configuración | ¿Cómo se ejecuta el mismo artefacto en cada entorno? |
| Identidad | ¿Qué identidad de servicio puede leer el trabajo y escribir su resultado? |
| Estado de funcionamiento | ¿Puede el worker aceptar trabajo y completarlo? |
| Parada | ¿Qué ocurre con un trabajo tomado cuando se detiene el worker? |
| Capacidad | ¿Qué límite se alcanza primero: workers, base de datos, almacenamiento u otro servicio? |
Mantén los secretos fuera de la imagen. Proporciónalos mediante el sistema de secretos autorizado. Registra qué cambios de configuración requieren una nueva publicación o reiniciar el proceso.
Diseña los reintentos antes de añadir workers
Supongamos que el worker guarda un PDF y se detiene antes de confirmar el trabajo. La cola vuelve a entregar el trabajo. Un segundo intento no debe crear otro cargo al cliente ni enviar mensajes contradictorios de finalización.
Usa una operación idempotente cuando corresponda. Repetir la misma solicitud lógica debe conservar el efecto previsto. Define una identidad estable de solicitud, registra el resultado de forma duradera y comprueba qué ocurre en cada punto de fallo. AWS describe esta técnica en su guía de reintentos seguros.
Los reintentos también necesitan límites. Usa un tiempo de espera, un número máximo de reintentos y una demora que evite solicitudes repetidas simultáneas. Conserva los trabajos fallidos para inspeccionarlos en vez de reintentarlos indefinidamente.
Haz revisable el estado deseado
Una configuración declarativa indica el despliegue previsto. Un controlador trabaja para mantener ese estado. Por ejemplo, un Deployment de Kubernetes gestiona réplicas de la aplicación y actualizaciones controladas. La aplicación sigue teniendo que gestionar correctamente su sustitución.
Versiona la configuración de infraestructura y aplicación. Revisa los cambios mediante el proceso habitual de entrega. Observa la finalización real de los trabajos, su antigüedad en cola, los fallos y los límites de las dependencias. Un proceso en ejecución puede seguir siendo incapaz de producir un informe.
Elige una plataforma que el equipo pueda operar
Cloud native no exige convertir todas las aplicaciones en microservicios. Una aplicación modular sobre un entorno gestionado puede cumplir sus requisitos. Más servicios introducen más interfaces, decisiones de despliegue y trabajo operativo.
Da al agente de desarrollo el contrato real de la plataforma: entorno de ejecución admitido, método de identidad, servicios de datos, reglas de despliegue y pruebas necesarias. Prueba las interrupciones y sustituciones además de las solicitudes satisfactorias. Continúa con la disponibilidad y los límites de fallo.
Haz el ejercicio
Un servicio ficticio de informes guarda los trabajos y los archivos terminados en el disco del contenedor. Dibuja el flujo entre solicitud, trabajo, archivo y descarga. Marca el estado duradero. Define qué ocurre si el worker se detiene después de escribir un archivo, pero antes de confirmar el trabajo.
Descargar hoja de ejercicios (Markdown)Comprueba lo que has aprendido
Fuentes y lecturas adicionales
- CNCF: Cloud Native Definition v1.1 ↗
- Kubernetes: Deployments ↗
- AWS Builders’ Library: Making retries safe with idempotent APIs ↗
Lecturas relacionadas de Taiga
Desmarcar esta opción elimina todo el progreso guardado en este navegador.
El progreso permanece en este navegador. Sin cuenta ni seguimiento.