Este post-mortem detalla una serie de desafíos y soluciones iterativas encontradas durante el desarrollo de Bulk Executor, una herramienta para operaciones masivas en Amazon DynamoDB utilizando AWS Glue. La causa raíz subyacente a muchos de los problemas fue la brecha entre las expectativas de una herramienta de línea de comandos 'local' y la realidad de un sistema distribuido serverless como AWS Glue, así como las limitaciones y comportamientos inesperados de los servicios subyacentes de AWS. Por ejemplo, la terminación de jobs con ^C, la latencia y muestreo de logs de CloudWatch, y la falta de rate limiting en llamadas directas a la API de DynamoDB, son todos ejemplos de cómo las abstracciones de los servicios pueden ocultar complejidades que se manifiestan como fallos o comportamientos no deseados.
Las salvaguardas iniciales fallaron porque el diseño no anticipó completamente las implicaciones de operar a escala distribuida. La expectativa de una experiencia de usuario 'local' (salida en tiempo real, terminación con ^C) chocó con la naturaleza asíncrona y distribuida de AWS Glue y CloudWatch. La falta de un rate limiter distribuido llevó a throttles en DynamoDB, un problema clásico de 'thundering herd' cuando múltiples workers acceden a un recurso compartido sin coordinación. La gestión de errores, inicialmente simple, se volvió inmanejable con cientos de stack traces idénticos, indicando una falta de agregación y contextualización de errores en un entorno distribuido.
La evolución de la herramienta muestra un patrón de descubrimiento y adaptación. Cada 'sorpresa' o 'gotcha' reveló una limitación o un comportamiento no obvio de los servicios de AWS, que requirió una solución específica. Esto subraya la importancia de entender las implicaciones de los servicios serverless y distribuidos, incluso cuando prometen simplicidad. La adopción de IA para pruebas y linting es un enfoque innovador para abordar la complejidad de la verificación de la consistencia y el cumplimiento de reglas en sistemas distribuidos, especialmente donde las pruebas unitarias o E2E son insuficientes.