Einführung
Hey, ich bin WcaleNieWolny - der Lead Software Engineer von Capgo.
In den letzten 8 Monaten habe ich das Organisationssystementwickelt, und ich freue mich, am 14. April verkünden zu können, dass das System fertiggestellt ist 🎉 🎊
Nach 8 Monaten ist endlich jeder einzelne Teil von Capgo für Orga-Mitglieder zugänglich. Dazu gehören:
- Apps
- Statistiken
- Abrechnung
- vollständiger CLI-Support
- und vieles mehr!
Es war nicht einfach, bis hierher zu kommen; die Systeme wurden bereits dreimal grundlegend überarbeitet.
Organisationen v1
Die Anfänge waren holprig… Ursprünglich habe ich 2 Wochen nach meinem Einstieg ins Projekt damit begonnen. Damals hatte ich kaum bis gar keine Ahnung von der Codebase und auch keine größere Vorstellung davon, wie ich das umsetzen sollte.
Das führte zu einer extrem hacky Lösung, die lediglich den Zugriff auf Apps, Channels und Versionen ermöglichte. Selbst der Zugriff auf Stats war für eingeladene User nicht möglich.
Dann wartete ich darauf, dass Martin das Ganze reviewt. Ich wartete und wartete, aber es passierte nichts. 3 Monate später beschloss ich, das Thema wieder aufzugreifen und alle Merge-Konflikte zu lösen. Ich entschied mich auch für Tests, was sich als super Idee herausstellte. Wie nicht anders zu erwarten, scheiterte die hacky Lösung komplett. In diesem Moment beschloss ich, alle Bugs zu fixen und einen umfangreichen E2E-Test zu schreiben. Ich musste mit einem sehr kaputten code und vielen Fehlentscheidungen meines früheren Ichs arbeiten, aber nach zwei harten Wochen funktionierte es endlich.
Das bedeutet jedoch nicht, dass es perfekt war. Der Owner der Organisation hatte immer noch deutlich mehr Rechte als selbst der am höchsten eingestufte User. Auch die User Experience war mangelhaft. Eingeladene User konnten nicht einmal App-Statistiken sehen, das Billing verwalten, und der CLI war auf Upload beschränkt.
Trotz all dieser Herausforderungen hatte Martin den PR geprüft, und eine Woche später wurde er in die Prod gepusht.
Organisationen v2
Das Organisations-System funktionierte trotz aller Hürden recht gut. Die User nutzten es, und es brachte das gesamte Projekt voran. Dennoch musste ich noch:
- das Chaos in ... fixen Row Level Security
- Support für das gesamte CLI hinzufügen
- sicherstellen, dass Admins den gleichen Zugriff wie der Owner haben
Danach viele Diskussionen Zusammen mit Martin haben wir beschlossen, dass der beste Weg nach vorne darin besteht, die gesamten Security Rules neu zu schreiben und die gesamte Ressourcen-Ownership auf Organizations statt auf User zu verlagern. Dies ermöglicht eine einfachere Integration in das neue Organizations-System und entfernt zudem viel veralteten code.
Das Schreiben der neuen RLS code war sehr mühsam, aber nach anderthalb Wochen war die gesamte Migration bereit.
Diesmal haben wir uns jedoch gegen das Schreiben von E2E-Tests entschieden, was bedeutete, dass wir alles manuell testen mussten. Nach drei sehr ausführlichen Calls haben Martin und ich schließlich beschlossen, in die Production zu pushen und zu hoffen, dass alles gut geht 🙏
Es ging nicht gut… Es stellte sich heraus, dass ich die User-Registrierung zerschossen hatte und neue User kein Konto erstellen konnten 😅
Nach einem kurzen Panik-Anruf habe ich schnell einige Änderungen in die Prod gepusht und bin schlafen gegangen. Leider haben meine Änderungen nur noch mehr Probleme verursacht 😰
Nach dem Aufwachen stellte ich fest, dass User viele leere Organizations hatten. Das sollte nicht passieren, da pro User nur eine Organization erlaubt sein sollte. Es dauerte eine Weile Brainstorming, um alle duplizierten, leeren Orgs zu entfernen, aber abgesehen davon lief die Umstellung recht reibungslos.
Organizations v3
Selbst das war nicht genug. Es fehlte noch eine riesige Komponente – das Billing.
Bisher konnte nur der Owner das Billing verwalten. Das führte zu Problemen, wenn Nutzer einen Plan kauften, in der Annahme, er gelte für die gesamte Organisation. Wir haben das Problem schnell manuell behoben, aber dabei wurde uns klar, dass dieser Zustand inakzeptabel ist.
Die Migration verlief recht reibungslos. Es hat zwar eine Woche Arbeit gekostet, aber im Vergleich zu V1 und V2 war es wirklich nicht so schwer 🚀
Organizations v4 – die Zukunft
Nach all der harten Arbeit ist es für mich nun an der Zeit, mich vorerst auf etwas anderes zu konzentrieren 😎
Es war nicht einfach, aber ich habe viel gelernt und capgo hat ein sehr nützliches und wichtiges Feature erhalten. Ich muss noch die Legacy-Funktionen deprecate, die UX der Webapp verbessern und Bugs monitoren, aber am System selbst wird es keine größeren Änderungen mehr geben.
Danke fürs Lesen 🚀
Weiterlesen bei A brand new organization system
Wenn du es nutzt Ein brandneues Organisationssystem um Dashboard- und API-Operationen zu planen, verbinde es mit API Übersicht für Details zur Implementierung im API Overview, Einführung für die Implementierungsdetails in der Einleitung, API Schlüssel für die Implementierungsdetails in API Keys, Geräte für die Implementierungsdetails in Devices und Bundles für die Implementierungsdetails in Bundles.