はじめに
こんにちは、私は WcaleNieWolny - Capgo のリードソフトウェアエンジニアです。
過去8ヶ月間、私は 組織システムを開発してきました。4月14日、このシステムの完成を嬉しくお知らせします 🎉 🎊
ついに8ヶ月を経て、Capgo のすべての機能が組織メンバーに利用可能になりました。これには以下が含まれます:
- アプリ
- 統計
- 請求
- 完全な CLI サポート
- などなど!
ここまで来るのは簡単ではありませんでした。システムは3回も大幅に改訂されています。
Organizations v1
始まりは荒削りでした… プロジェクトに参加して2週間後にこの作業を始めました。 当時、コードベースや実装方針についてほとんど知識がありませんでした。
その結果、アプリ、チャネル、バージョンへのアクセスのみをサポートする、最もハック的なソリューションを実装することになりました。 招待されたユーザーが統計にアクセスすることすら許可されていませんでした。
その後、Martinのレビューを待ち続けました。待っても待っても何も進まず、3ヶ月後、この作業に戻ってマージ競合をすべて修正することにしました。テストも実施することにし、これは素晴らしい判断でした。 当然ながら、ハック的なソリューションは完全に失敗しました。その瞬間、すべてのバグを修正し、広範なE2Eテストを書くことを決意しました。 非常に壊れた code と、過去の自分が下した多くの悪い決定と格闘しなければなりませんでした。しかし、2週間の激しい作業を経て、ようやく機能するようになりました。
しかし、それで完璧だったわけではありません。組織のオーナーは、最高権限の招待ユーザーよりもはるかに多くのアクセス権を持っていました。ユーザー体験もかなり不足していました。招待されたユーザーはアプリケーションの統計を確認できず、請求を管理できず、CLI はアップロードに限定されていました。
これらの課題にもかかわらず、MartinはPRをレビューし、1週間後に本番環境にデプロイされました。
Organizations v2
課題は多かったものの、組織システムは概ねうまく機能していました。ユーザーも活用しており、プロジェクト全体を大きく前進させてくれました。ただし、私にはまだ以下のことが必要でした:
- で起きた混乱を修正する 行レベルセキュリティ
- CLI 全体へのサポートを追加
- 管理者ユーザーがオーナーと同じアクセス権限を持つことを保証する
完了後、 多くの議論を経て Martinと話し合った結果、最善の進め方として、セキュリティルール全体を書き直し、リソースの所有権をユーザーではなく組織に移動することになりました。 これにより、新しい組織システムとの統合が容易になり、多くのレガシーなcodeも削除できます。
新しいRLSのcodeを書くのは非常に面倒でしたが、1週間半で移行の準備が整いました。
今回はE2Eテストの作成を見送り、手動でのテストに頼ることにしました。3回の長時間の通話を経て、Martinと私はついに本番環境にデプロイし、うまくいくことを祈ることにしました🙏
しかし、うまくいきませんでした… ユーザー登録が壊れており、新規ユーザーがアカウントを作成できないことが判明しました😅
慌てて通話したあと、私は急いで本番環境に変更を反映し、寝ました。残念ながら、その変更はさらに多くの問題を引き起こしました😰
朝起きてみると、ユーザーに大量の空の組織が存在していることに気づきました。本来、ユーザーごとに1つの組織しか許可されないはずなので、これは想定外でした。重複した空の組織をすべて削除するにはいくつかのアイデア出しが必要でしたが、それ以外の点では変更は比較的スムーズに進みました。
Organizations v3
それでもまだ不十分でした。まだ大きな要素が欠けていたのです。それは請求処理(billing)です。
これまで請求処理を管理できたのはオーナーのみでした。これにより、ユーザーが組織向けに購入したつもりでプランを購入してしまうという興味深い問題が発生しました。 私たちは迅速に手動で問題を修正し、この時点でこの問題が許容できないと判断しました。
移行は比較的スムーズでした。1週間かかりましたが、V1やV2と比較すると、それほど難しくはありませんでした 🚀
Organizations v4 - 未来へ
こうしたハードワークを経て、今は別のことに集中する時が来たと思います 😎
簡単ではありませんでしたが、多くのことを学び、capgo は非常に素晴らしいかつ重要な機能を獲得しました。 まだレガシー機能の非推奨化、Webアプリのユーザー体験の改善、バグの監視が必要です。 しかし、このシステムに大きな変更は入るべきではありません。
お読みいただきありがとうございます 🚀
「A brand new organization system」から続く
使用している場合 全く新しい組織体制 ダッシュボードと API の運用を計画するには、これを次と連携させます API の概要 「API の概要」の実装の詳細については、 はじめに 「はじめに」における実装の詳細については、 API キー API Keys の実装の詳細については、 デバイス Devices の実装詳細については、および Bundle Bundlesの実装詳細については