Introduzione
Ciao, sono WcaleNieWolny - L'ingegnere software capo di Capgo.
Negli ultimi 8 mesi, ho sviluppato il sistema di organizzazione " sistema di organizzazione"Sono felice di annunciare che il sistema è stato completato il 14 aprile 🎉 🎊
Finalmente, dopo 8 mesi, ogni singola parte di Capgo è accessibile ai membri dell'organizzazione. Ciò include:
- applicazioni
- statistiche
- fatturazione
- supporto completo di CLI
- e molto altro ancora!
Non è stato facile arrivare a questo punto; ci sono stati 3 revisioni principali del sistema.
Organizzazioni v1
Le origini erano ruvide… Inizialmente, ho iniziato a lavorare su questo 2 settimane dopo aver aderito al progetto. All'epoca, avevo poca conoscenza del codebase o qualsiasi idea più grande su come implementarlo.
Ciò portò all'implementazione della soluzione più hacky che supportava solo l'accesso agli app, ai canali e alle versioni. Non consentiva nemmeno all'utente invitato di accedere alle statistiche.
E poi ho aspettato che Martin revisionasse questo. Ho aspettato e aspettato, ma nulla è realmente accaduto. 3 mesi dopo, ho deciso di tornare a questo e risolvere tutti i conflitti di merge. Ho anche deciso di testare, e si è rivelata un'ottima idea. Non sorprende, la soluzione hacky è fallita completamente. In quel momento, ho deciso di risolvere tutti i bug e scrivere un test E2E estensivo. Ho dovuto lavorare con code molto rotto e molte cattive decisioni fatte dalla mia vecchia me, ma dopo 2 settimane difficili, sono finalmente riuscito a farlo funzionare.
Ciò non significa, tuttavia, che fosse perfetto. L'owner dell'organizzazione aveva ancora molto più accesso di quanto non avesse anche l'utente invitato più alto. L'esperienza utente era anche piuttosto scarsa. L'utente invitato non poteva nemmeno vedere le statistiche dell'applicazione, gestire la fatturazione e il CLI era limitato all'upload.
Nonostante tutte queste sfide, Martin aveva revisionato il PR, e una settimana dopo, è stato spinto in prod.
Organizzazioni v2
Il sistema delle organizzazioni funzionava piuttosto bene nonostante tutte le sfide. Gli utenti lo utilizzavano e ha veramente spinto l'intero progetto in avanti. Tuttavia, ho ancora dovuto:
- risolvere il disastro creato in livello di sicurezza per riga
- aggiungere il supporto per l'intero CLI
- assicurarsi che gli utenti amministrativi abbiano lo stesso accesso del proprietario
Dopo molte discussioni con Martin, abbiamo deciso che il modo migliore per procedere era ri scrivere le regole di sicurezza intere e spostare la proprietà di tutti i risorse alle organizzazioni e non agli utenti. Ciò avrebbe permesso un'integrazione più facile con il nuovo sistema di organizzazioni, e avrebbe anche eliminato molti code.
Scrivere i nuovi RLS code è stato molto tedioso, ma dopo una settimana e mezza, la migrazione completa era pronta.
Questa volta, tuttavia, abbiamo deciso di non scrivere il test E2E, il che ha significato che dovevamo testarlo manualmente. Dopo 3 chiamate molto estensive insieme, Martin e io abbiamo finalmente deciso di pubblicare in produzione e sperare che andasse bene 🤖
Non è andato bene… Si è scoperto che ho rotto l'iscrizione degli utenti, e gli utenti nuovi non potevano creare un account 😬
Dopo un rapido chiamata di panico, ho spinto alcune modifiche in prod e sono andato a letto. Purtroppo, le mie modifiche hanno creato solo più problemi 🚌
Dopo che mi sono svegliato, ho scoperto che gli utenti avevano molte organizzazioni vuote. Ciò non doveva succedere poiché solo 1 organizzazione dovrebbe essere consentita per utente. È stato necessario un po' di brainstorming per eliminare tutte le org duplicate vuote, ma oltre a questo, le modifiche sono andate piuttosto liscie.
Organizzazioni v3
Anche questo non è stato sufficiente. C'era ancora un componente enorme mancante - fatturazione.
Fino ad ora solo il proprietario poteva gestire la fatturazione. Ciò ha creato alcune questioni interessanti dove un utente ha acquistato un piano pensando di comprarlo per l'organizzazione. Abbiamo risolto velocemente il problema manualmente e fu in questo momento che abbiamo deciso che questo problema era inaccettabile
La migrazione è stata piuttosto liscia. È stato necessario una settimana di lavoro ma rispetto a V1 e V2 non era davvero così difficile 🚀
Organizzazioni v4 - il futuro
Dopo tutto questo duro lavoro penso che sia ora di concentrarsi su qualcos'altro per ora 😎
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.
Grazie per aver letto 🚀
Continua da A un nuovo sistema di organizzazione
Se stai utilizzando Un nuovo sistema di organizzazione to plan dashboard and API operations, connect it with API Overview for the implementation detail in API Overview, Introduzione per i dettagli di implementazione in Introduzione, API Chiavi per i dettagli di implementazione in API Chiavi, Dispositivi per i dettagli di implementazione in Dispositivi, e Bundle per i dettagli di implementazione in Bundle.