Un nouveau système d'organisation
Introduction Salut, je suis WcaleNieWolny - Le lead ingénieur logiciel de Capgo.
Depuis les 8 derniers mois, j'ai développé le système d'organisation, et à partir du 14 avril, je suis heureux de vous annoncer que le système est désormais terminé 🎉 🎊
Finally, after 8 months, every single part of Capgo is accessible to org members. This includes:
- applications
- statistiques
- facturation
- full CLI support
- et bien plus encore !
Cela n'a pas été facile d'arriver là ; il y a eu 3 révisions majeures du système.
Organisations v1
Les débuts ont été difficiles… Au début, j'ai commencé à travailler sur ce projet 2 semaines après avoir rejoint le projet. À l'époque, j'avais peu ou pas de connaissance sur le codebase ou aucune idée plus large sur la manière d'implémenter cela.
Cela a conduit à l'implémentation de la solution la plus hacky qui ne supportait que l'accès aux applications, aux canaux et aux versions. Elle ne permettait même pas à l'utilisateur invité d'accéder aux statistiques.
Et puis j'ai attendu que Martin révise cela. J'ai attendu et attendu, mais rien de vraiment important n'est arrivé. 3 mois plus tard, j'ai décidé de revenir sur cela et de résoudre tous les conflits de fusion. J'ai également décidé de tester, ce qui s'est avéré être une excellente idée. Comme prévu, la solution hacky a complètement échoué. À ce moment-là, j'ai décidé de corriger tous les bugs et d'écrire un test E2E exhaustif. J'ai dû travailler avec des code très cassés et de nombreuses mauvaises décisions que j'avais prises à l'époque, mais après 2 semaines difficiles, j'ai finalement réussi à le faire fonctionner.
Cela ne signifie pas, cependant, que cela était parfait. Le propriétaire de l'organisation avait encore beaucoup plus d'accès que même l'utilisateur invité le plus élevé. L'expérience utilisateur était également très déficiente. L'utilisateur invité ne pouvait même pas voir les statistiques d'application, gérer les factures et le CLI était limité à l'upload uniquement.
Malgré tous ces défis, Martin avait révisé le PR, et une semaine plus tard, il a été poussé en prod.
Organisations v2
Le système d'organisation fonctionnait plutôt bien malgré tous les défis. Les utilisateurs l'utilisaient, et cela a vraiment poussé l'ensemble du projet en avant. Cependant, j'avais encore à:
- corriger le gâchis fait dans ajouter le support pour l'intégralité du __CAPGO_KEEP_0__
- add support for the entire CLI
- Après
beaucoup de discussions fixer le bordel créé dans avec Martin, nous avons décidé que la meilleure façon d'avancer était de réécrire les règles de sécurité entières et de déplacer la propriété de tous les ressources vers les organisations et non les utilisateurs. Cela permettrait une intégration plus facile avec le nouveau système d'organisation, et cela supprimerait également beaucoup de legacy code.
Écrire les nouvelles RLS code était très fastidieux, mais après une semaine et demie, la migration entière était prête.
Cette fois-ci, nous avons décidé de ne pas écrire les tests E2E, ce qui signifiait que nous devions les tester manuellement. Après 3 appels très étendus ensemble, Martin et moi avons finalement décidé de pousser vers la production et d'espérer qu'il irait bien 🤖
Ce n'est pas allé… Il s'avère que j'ai cassé l'enregistrement des utilisateurs, et les nouveaux utilisateurs ne pouvaient pas créer un compte 😪
Après un appel de panique rapide, j'ai rapidement poussé quelques modifications dans prod et suis allé me coucher. Malheureusement, mes modifications n'ont créé que plus de problèmes 😨
Après que j'aie réveillé, j'ai découvert que les utilisateurs avaient beaucoup d'organisations vides. C'est pas censé se produire car il ne devrait y avoir qu'une organisation par utilisateur. Il a fallu du temps de réflexion pour supprimer toutes les organisations dupliquées vides, mais en dehors de cela, les modifications sont allées plutôt bien.
Organisations v3
Même cela n'a pas suffi. Il y avait encore un composant immense manquant - la facturation.
Jusqu'à présent, seul le propriétaire pouvait gérer les factures. Cela a créé quelques problèmes intéressants où un utilisateur a acheté un plan en pensant qu'il l'achetait pour l'organisation.
La migration a été plutôt fluide. Il a fallu une semaine de travail mais comparé à V1 et V2, cela n'a vraiment pas été si dur.
Organisations v4 - l'avenir
Après tout ce travail dur, je pense qu'il est temps de se concentrer sur autre chose pour l'instant.
It was not easy but I learned a lot and capgo has received a very nice and important feature I still have to deprecate the legacy functions, improve the webapp user experience, monitor for bugs, but there should not be any major changes to this system.
Merci de lire.
Continuez à partir de Système de l'organisation nouvelle.
Si vous utilisez Système de l'organisation nouvelle to plan dashboard and API operations, connect it with API Overview for the implementation detail in API Overview, Introduction pour les détails d'implémentation dans Introduction, API Clés pour les détails d'implémentation dans API Clés, Appareils pour les détails d'implémentation dans Appareils, et Ensembles pour les détails d'implémentation dans Ensembles.