Introducción
Hola, soy WcaleNieWolny - ingeniero de software principal de Capgo.
Durante los últimos 8 meses, he estado desarrollando el sistema de organización, y a partir del 14 de abril, me alegra anunciar que el sistema está completo 🎉 🎊
Finalmente, tras 8 meses, cada parte de Capgo es accesible para los miembros de la organización. Esto incluye:
- apps
- estadísticas
- facturación
- soporte completo para CLI
- ¡y mucho más!
No ha sido fácil llegar hasta aquí; hemos pasado por 3 revisiones importantes de los sistemas.
Organizaciones v1
El comienzo fue difícil… Al principio, empecé a trabajar en esto apenas 2 semanas después de unirme al proyecto. En ese momento, apenas conocía el codebase o tenía una idea clara de cómo implementarlo.
Esto me llevó a implementar la solución más chapucera, que solo permitía acceder a las apps, canales y versiones. Ni siquiera permitía que el usuario invitado accediera a las estadísticas.
Luego esperé a que Martin revisara esto. Esperé y esperé, pero no pasó nada. 3 meses después, decidí retomar el tema y arreglar todos los conflictos de merge. También decidí hacer tests, lo cual resultó ser una gran idea. Como era de esperar, la solución chapucera falló por completo. En ese momento, decidí corregir todos los bugs y escribir un test E2E exhaustivo. Tuve que lidiar con un code muy roto y con muchas malas decisiones de mi yo del pasado, pero después de 2 semanas intensas, por fin logré que funcionara.
Sin embargo, eso no significa que fuera perfecto. El propietario de la organización seguía teniendo mucho más acceso que incluso el usuario invitado con más permisos. La experiencia de usuario también era bastante deficiente. El usuario invitado ni siquiera podía ver las estadísticas de la aplicación ni gestionar la facturación, y el CLI solo permitía subir.
A pesar de todos esos desafíos, Martin revisó el PR y, una semana después, se lanzó a producción.
Organizaciones v2
El sistema de organización funcionaba bastante bien a pesar de los retos. Los usuarios lo estaban utilizando y realmente impulsó todo el proyecto. Sin embargo, todavía tenía que:
- arreglar el desastre hecho en seguridad a nivel de fila
- añadir soporte para todo el CLI
- asegurar que los usuarios admin tengan el mismo acceso que el propietario
Después de muchas discusiones con Martin, decidimos que lo mejor era reescribir todas las reglas de seguridad y pasar la propiedad de los recursos a las organizaciones en lugar de a los usuarios. Esto facilitaría la integración con el nuevo sistema de organizaciones y también eliminaría mucho code heredado.
Escribir las nuevas code de RLS fue muy tedioso, pero tras una semana y media, la migración completa estuvo lista.
Esta vez, sin embargo, decidimos no escribir el test E2E, lo que significó que tuvimos que probarlo manualmente. Tras tres llamadas muy largas, Martin y yo finalmente decidimos hacer el push a producción y esperar que todo saliera bien 🙏
No salió... Resulta que rompí el registro de usuarios y los nuevos no podían crear una cuenta 😅
Tras una llamada de pánico, subí rápido unos cambios a prod y me fui a dormir. Desafortunadamente, mis cambios solo crearon más problemas 😰
Al despertar, me di cuenta de que los usuarios tenían muchas organizaciones vacías. Esto no debería pasar, ya que solo se debe permitir 1 organización por usuario. Me tomó algo de tiempo pensar cómo eliminar todas las orgs duplicadas y vacías, pero fuera de eso, los cambios fluyeron bastante bien.
Organizaciones v3
Pero eso no era suficiente. Todavía faltaba un componente enorme: el billing.
Hasta ahora, solo el owner podía gestionar el billing. Esto causó problemas interesantes, como usuarios que compraban un plan pensando que era para la organización. Lo solucionamos manualmente de inmediato, y fue en ese momento cuando decidimos que este problema era inaceptable.
La migración fue bastante fluida. Tomó una semana de trabajo, pero comparado con V1 y V2, la verdad es que no fue tan difícil 🚀
Organizaciones v4 - el futuro
Después de todo este trabajo duro, creo que es hora de enfocarme en otra cosa por ahora 😎
No fue fácil, pero aprendí mucho y capgo ahora tiene una funcionalidad muy importante y útil. Aún tengo que marcar como deprecated las funciones legacy, mejorar la UX de la webapp y monitorear bugs, pero no debería haber cambios mayores en este sistema.
Gracias por leer 🚀
Seguir leyendo: Un sistema de organización completamente nuevo
Si estás usando Un sistema de organización totalmente nuevo para planificar las operaciones del dashboard y de API, conéctalo con Resumen de API para los detalles de implementación en API Overview, Introducción para los detalles de implementación en la Introducción, Claves de API para el detalle de implementación en API Keys, Dispositivos para el detalle de implementación en Devices, y Bundles para el detalle de implementación en Bundles.