De 30 a Más De 200 Estrellas en Una Semana: Mi Aventura Creando Aws-Doctor

Introducción
Uno de mis sueños como ingeniero de software siempre fue tener un proyecto open source ’exitoso’, y aunque ’exitoso’ es un término muy relativo, para mi lo principal era desarrollar algo que me resolviera un problema y que luego le fuera útil a los demás, y justamente esto es de lo que vengo a contarte en este artículo.
Contexto
Una de mis tareas, además de desarrollar features y mantener aplicaciones, es controlar gastos e infraestructura en la nube, específicamente AWS. Sin darme cuenta, me pasaba los días ejecutando los mismos comandos y realizando las mismas acciones en la consola de AWS una y otra vez. Además, independientemente de que AWS Cost Explorer tiene una funcionalidad para comparar gastos entre distintos meses, no puedes usarla para el mes en curso, solo para los meses pasados, y a mi personalmente me gusta ir comparando los gastos del mes en curso con el mes pasado en el mismo período de tiempo, o sea, si hoy es 15 de enero, quiero comparar los gastos del 1 al 15 de enero con los gastos del 1 al 15 de diciembre. Y precisamente este es el motivo que me llevó a crear aws-doctor.
Primeros pasos
Comencé a desarrollar aws-doctor hace 5 meses. Inicialmente se llamada aws-billing, y el primer problema que resolví fue el de comparar los gastos del mes en curso con el mes pasado en el mismo período de tiempo. Puedes ver un demo de esta funcionalidad en el siguiente video:

Luego, agregué la funcionalidad --trend para mostrar en la consola la tendencia de costos de los últimos 6 meses, esta es una funcionalidad que está disponible directamente en AWS, así que verdaderamente no añade mucho valor agregado más allá de tener disponible esta información directamente desde la consola, a continuación te muestro un demo de esta funcionalidad:

Primer release
Luego de estar alrededor de 5 meses con estas funcionalidades, decidí añadir una feature que a mi entender le daría buen valor agregado a la herramienta y que al menos a mi me encantaría tener en la misma, y es la funcionalidad de detectar recursos olvidados en AWS --waste. Desde direcciones IP elásticas no asociadas a ningún recurso, hasta volúmenes EBS que no están siendo usados por ninguna instancia EC2. Actualmente la herramienta realiza los siguientes chequeos:
- Direcciones IP elásticas no asociadas
- Volúmenes EBS no asociados
- Volúmenes EBS asociadas a instancias detenidas
- Instancias EC2 reservadas que expiran en los próximos 30 días o que expiraron en los últimos 30 días
- Instancias EC2 detenidas por más de 30 días
- Balanceadores de carga sin target groups asociados
- AMIs no asociadas a ninguna instancia EC2 y creadas hace más de 90 días
- EBS Snapshots no asociados a ningún volumen EBS ni AMI
- EBS Snapshots creados hace más de 90 días, el volumnen EBS asociado ya no existe y no es usado por ninguna AMI
Esta funcionalidad se mantendrá en constante desarrollo para añadir más verificaciones y chequeos de recursos olvidados en AWS.
Pues, una vez me decidí a implementar esta funcionalidad, me puse manos a la obra y el 18 de Enero lancé la versión v1.0.0 de aws-doctor. La funcionalidad waste la puedes ver en el siguiente demo:

Promoción y crecimiento
En este momento, el repo tenía alrededor de 30 ⭐ en GitHub, nada especial, pero habían sido 30 ⭐ que me había ganado orgánicamente en su mayoría, entonces pensando que quizás podría interesarle a más personas, decidí compartir el repo en algunas comunidades en Reddit. Lo compartí en devops y en aws, el enfoque fue más que nada para saber que pensaban los demás, obtener feedback relacionado a la herramienta y que podría añadir en el futuro. De aquí obtuve algunas visitas al repo y algunas ⭐ más, pero nada fuera de lo común.
El punto de inflexión vino cuando Gemini (mi asistente favorito de IA) me sugirió compartir el repo en Hacker News. Hacker que? Yo nunca había escuchado sobre ese sitio web, y a juzgar por su apariencia antigua, pensé que no era la gran cosa, incluso por poco no comparto el repo en ese sitio web. Independientemente de todo, compartí el repo en Hacker News un día después de compartirlo en Reddit, y para mi sorpresa, el post comenzó a ganar tracción rápidamente. En cuestión de horas, el repo pasó de tener 30 ⭐ a tener más de 100 ⭐, y actualmente, a 8 días de haber lanzado el release v1.0.0, el repo cuenta con 236 ⭐.
No es solamente el hecho de las ⭐, sino que empezaron a crear issues en la herramienta y a hacer PRs, personalmente me impresionó mucho que me acosté a dormir, y cuando me desperté a la mañana siguiente, tenía 6 PRs abiertos y 3 issues creados por otros usuarios. Verdaderamente esto me dio un gran shot de motivación para seguir mejorando la herramienta y dedicarme a mantenerla.
Contribuciones y comunidad
Quiero agradecerle a Jonathan Tsai por su increíble contribución a la herramienta, hasta el día de hoy ha abierto muchos PRs y se mantiene bastante activo en el repo. Además, me mostró su flujo de trabajo con Claude Code y me impulsó a comenzar a probar agentes de IA para el desarrollo de software. Además, mi amigo Evert Arias en este PR creó el script de instalación automática para Linux y MacOS, configuró Go Releaser para generar los binarios para todos MacOS, Linux y Windows y configuró esto usando Github Actions, lo cual me ahorra muchísimo trabajo y tiempo. Otro amigo, Danyer, me ayudó con los guidelines para los agentes de inteligencia artificial y según hablamos, quiere contribuir haciendo que se muestre el logo de aws-doctor al ejecutar el comando en la consola.
Verdaderamente me siento muy agradecido con la comunidad por todo el apoyo que han mostrado hasta ahora, es algo que verdaderamente me hace feliz, y es lo que me demuestra que esto es a lo que me quiero dedicar por el resto de mi vida.
Próximos pasos
Actualmente, aws-doctor está en constante desarrollo y la última versión es la v1.3.0, que entre otras funcionalidades, declara una nueva bandera --update para actualizar la herramienta a la última versión disponible. El roadmap actualmente luce de la siguiente forma:
- Añadir más chequeos en la funcionalidad
--waste - Añadir reportes en formato PDF
- Añadir integración con Slack y Discord para enviar reportes automáticamente hacia los canales correspondientes
Hasta la próxima
En futuros artículos mostraré las nuevas funcionalidades que vaya añadiendo a la herramienta, así como también compartiré todo lo que vaya aprendiendo en este camino. Si te interesa el proyecto, no dudes en darle una ⭐ en GitHub y compartirlo con tus amigos y colegas. ¡Nos vemos en la próxima!
Contenido relacionado
- Mi Primera Contribución a GitLab en Ruby: De Golang Al Monolito
- De Apuntar Al 1ro a Ganar El 2do: Mi Experiencia en El Hackathon De GitLab
- Mi Experiencia Como Contribuidor Notable en GitLab
- Como GitLab Puede Impulsar Tu Carrera Profesional
- Clases De Almacenamiento S3