Pendahuluan
Halo, saya WcaleNieWolny - lead software engineer Capgo.
Selama 8 bulan terakhir, saya telah mengembangkan sistem organisasi, dan per 14 April, saya senang mengumumkan bahwa sistemnya telah selesai ๐ ๐
Akhirnya, setelah 8 bulan, setiap bagian dari Capgo dapat diakses oleh anggota organisasi. Ini termasuk:
- aplikasi
- statistik
- billing
- dukungan penuh CLI
- dan masih banyak lagi!
Perjalanannya tidak mudah; sudah ada 3 revisi besar pada sistem ini.
Organisasi v1
Awalnya cukup beratโฆ Saya mulai mengerjakan ini 2 minggu setelah bergabung dengan proyek. Saat itu, saya hampir tidak tahu apa-apa tentang codebase atau punya gambaran besar cara mengimplementasikannya.
Hal ini berujung pada implementasi solusi paling hacky yang hanya mendukung akses ke apps, channels, dan versions. Bahkan user yang diundang pun tidak bisa mengakses stats.
Lalu saya menunggu Martin me-review ini. Saya menunggu dan menunggu, tapi tidak ada perkembangan berarti. 3 bulan kemudian, saya memutuskan untuk kembali dan memperbaiki semua merge conflict. Saya juga memutuskan untuk melakukan testing, yang ternyata adalah ide bagus. Tidak mengherankan, solusi hacky tersebut gagal total. Saat itu, saya memutuskan untuk memperbaiki semua bug dan menulis E2E test yang ekstensif. Saya harus bekerja dengan code yang sangat berantakan dan banyak keputusan buruk dari saya di masa lalu, tapi setelah 2 minggu yang berat, akhirnya semuanya berfungsi.
Namun, itu bukan berarti semuanya sempurna. Owner organisasi masih punya akses jauh lebih banyak dibanding user yang diundang dengan akses tertinggi sekalipun. User experience juga masih kurang. User yang diundang bahkan tidak bisa melihat statistik aplikasi, mengelola billing, dan CLI hanya sebatas upload.
Meskipun ada semua tantangan itu, Martin sudah me-review PR-nya, dan seminggu kemudian PR itu di-push ke prod.
Organisasi v2
Sistem organisasi berjalan cukup baik meskipun banyak tantangan. User sudah menggunakannya, dan ini benar-benar mendorong seluruh proyek maju. Namun, saya tetap harus:
- membereskan kekacauan di keamanan tingkat baris
- menambahkan dukungan untuk seluruh CLI
- memastikan user admin punya akses yang sama dengan owner
Setelah banyak diskusi Bersama Martin, kami memutuskan bahwa cara terbaik untuk melangkah maju adalah menulis ulang seluruh aturan keamanan dan memindahkan kepemilikan semua resource ke organisasi, bukan ke user. Ini akan memungkinkan integrasi yang lebih mudah dengan sistem organisasi baru, dan juga akan menghapus banyak code legacy.
Menulis code RLS baru sangat membosankan, tetapi setelah seminggu setengah, seluruh migrasi sudah siap.
Namun kali ini, kami memutuskan untuk tidak menulis test E2E, yang berarti kami harus mengujinya secara manual. Setelah 3 panggilan yang sangat intens, Martin dan saya akhirnya memutuskan untuk push ke production dan berharap semuanya berjalan lancar ๐
Ternyataโฆ Ternyata aku merusak registrasi user, dan user baru tidak bisa membuat akun ๐
Setelah panggilan panik singkat, saya dengan cepat push beberapa perubahan ke prod dan pergi tidur. Sayangnya, perubahan saya hanya menciptakan lebih banyak masalah ๐ฐ
Setelah bangun, saya menemukan banyak organisasi kosong milik pengguna. Ini seharusnya tidak terjadi karena hanya 1 organisasi yang diizinkan per pengguna. Butuh waktu untuk brainstorming cara menghapus semua org duplikat dan kosong, tapi selain itu, perubahan berjalan cukup lancar.
Organizations v3
Bahkan ini masih belum cukup. Masih ada komponen besar yang hilang - billing.
Sampai saat ini hanya owner yang bisa mengelola billing. Ini menciptakan beberapa masalah menarik di mana pengguna membeli plan dengan mengira mereka membelinya untuk organisasi. Kami segera memperbaiki masalah ini secara manual dan pada titik itulah kami memutuskan bahwa masalah ini tidak dapat diterima
Migrasinya cukup mulus. Butuh waktu seminggu, tapi dibanding V1 dan V2, prosesnya tidak sesulit itu ๐
Organizations v4 - masa depan
Setelah semua kerja keras ini, saya rasa sudah waktunya untuk fokus pada hal lain untuk saat ini ๐
Tidak mudah, tapi saya belajar banyak dan capgo telah menerima fitur yang sangat bagus dan penting Saya masih harus mendeprekasi fungsi legacy, meningkatkan pengalaman pengguna webapp, dan memantau bug, tapi seharusnya tidak akan ada perubahan besar pada sistem ini.
Terima kasih sudah membaca ๐
Lanjut dari A brand new organization system
Jika Anda menggunakan Sistem organisasi yang benar-benar baru untuk merencanakan operasi dashboard dan API, hubungkan dengan Ringkasan API untuk detail implementasi di API Overview, Pendahuluan untuk detail implementasi di Introduction, Kunci API untuk detail implementasi di API Keys, Perangkat untuk detail implementasi di Devices, dan Bundle untuk detail implementasi di Bundles.