はじめに
こんにちは、私はWcaleNieWolny - Capgoのリードソフトウェアエンジニアです。
過去8ヶ月間、私は組織システムを開発しており、4月14日をもってこのシステムが完成したことをお知らせできることを嬉しく思います🎉 🎊
ついに、8ヶ月の後に、Capgoのすべての部分が組織メンバーにアクセス可能になりました。これには以下が含まれます:
- アプリ
- 統計
- 請求
- 完全なCLIサポート
- そしてもっとたくさん!
ここに到達するのは簡単ではありませんでした;システムの大きな改訂が3回ありました。
組織 v1
始まりは厳しかった… 当初、プロジェクトに参加してから2週間後にこの作業を始めました。 その時、コードベースについての知識はほとんどなく、この実装方法についての大きなアイデアもありませんでした。
これにより、アプリ、チャネル、バージョンにアクセスするためだけの最もハッキーな解決策を実装することになりました。 招待されたユーザーが統計にアクセスすることも許可されていませんでした。
そして、その後、マーチンにレビューを待っていました。待っても待っても、何も本当に起こりませんでした。3ヶ月後、私はこれに戻ってすべてのマージコンフリクトを修正することにしました。また、テストを行うことにしましたが、これは素晴らしいアイデアであることが判明しました。 驚くことではありませんが、そのハッキーな解決策は完全に失敗しました。その瞬間、私はすべてのバグを修正し、広範囲なE2Eテストを書くことに決めました。 非常に壊れたコードと過去の私が行った多くの悪い決断とともに作業しなければならなかったが、2週間の厳しい作業の後、ようやく機能するようになりました。
しかし、これは完璧だったという意味ではありません。組織の所有者は、最高の招待ユーザーよりもはるかに多くのアクセス権を持っていました。ユーザーエクスペリエンスもかなり不足していました。招待されたユーザーはアプリケーションの統計を見ることも、請求を管理することもできず、CLIはアップロードのみに制限されていました。
これらのすべての課題にもかかわらず、マーチンがPRをレビューし、一週間後にそれが本番環境にプッシュされました。
組織 v2
組織システムは、すべての課題にもかかわらず、かなりうまく機能していました。ユーザーはそれを利用しており、プロジェクト全体を前進させる役割を果たしました。しかし、私はまだ次のことをしなければなりませんでした:
- 行レベルのセキュリティで発生した混乱を修正する
- CLI全体のサポートを追加する
- 管理者ユーザーが所有者と同じアクセスを持つことを確認する
マーチンとの多くの議論の後、進む最良の方法は、セキュリティルール全体を再記述し、すべてのリソースの所有権をユーザーではなく組織に移行することだと決定しました。 これにより、新しい組織システムとの統合が容易になり、多くのレガシーコードが削除されることになります。
新しいRLSコードの作成は非常に面倒でしたが、1週間半後には移行全体が準備完了しました。
しかし今回は、E2Eテストを書くことはせず、手動でテストする必要がありました。3回の非常に広範な通話の後、マーチンと私はついに本番環境にプッシュすることを決定し、うまくいくことを願いました🙏
うまくいきませんでした… ユーザー登録を壊してしまい、新しいユーザーがアカウントを作成できなかったことが判明しました😅
迅速なパニックコールの後、私はすぐに本番環境にいくつかの変更をプッシュし、寝ました。不運なことに、私の変更はさらに多くの問題を引き起こしただけでした😰
目覚めると、ユーザーが多くの空の組織を持っていることに気づきました。これは、1人のユーザーあたり1つの組織のみが許可されるべきなので、発生すべきではありません。すべての重複した空の組織を削除するのには時間がかかりましたが、それ以外は変更はかなりスムーズに進みました。
組織 v3
これでもまだ不十分でした。請求という巨大なコンポーネントが欠けていました。
これまでのところ、所有者だけが請求を管理できました。これにより、ユーザーが組織のために計画を購入していると思い込んで購入した興味深い問題が発生しました。 私たちはすぐに手動で問題を修正し、この問題は受け入れられないものであると決定しました。
移行はかなりスムーズでした。作業に1週間かかりましたが、V1やV2と比較して本当にそれほど難しくはありませんでした🚀
組織 v4 - 未来
これらすべてのハードワークの後、今は別のことに集中する時だと思います😎
簡単ではありませんでしたが、多くを学び、Capgoは非常に素晴らしく重要な機能を受け取りました。 レガシー関数を非推奨にし、Webアプリのユーザーエクスペリエンスを改善し、バグを監視し続ける必要がありますが、 このシステムには大きな変更はないはずです。
読んでくれてありがとう🚀