本稿はJCB Tech Blog Advent Calendar 2022の12月1日の記事です。
JCBデジタルソリューション開発部アーキテクトチームの長沼です。
今回は、我々が開発するJCB Digital Enablement Platform (JDEP)の開発体制と、
その体制に至るまでの過程についてご紹介したいと思います。
現開発体制
JDEPでは、本記事の執筆時点(2022年12月時点)で、32のチーム(総勢400人規模)が合計14のアプリケーションを開発しています。
現在のJDEPのチーム構成は次のようになっており、大きく以下2種類のチームに分けることができます。
- 個々のアプリケーション(プロダクト)を開発するアプリチーム (図の中央、Team A/B/C...)
- アプリチームを共通的に支える共通チーム (図中 Team A/B/C以外の各Team)
そのアプリチームと共通チームの詳細について以降で説明します。
アプリチーム
アプリチームは、決済インフラ、業務効率化、キャンペーン企画等に関係した様々なアプリケーションを開発しています。
1つのアプリチームは、アジャイル開発の考え方に従い概ね10人程度で構成されます。
またアプリケーションの規模やフェーズに応じて、1つのアプリチームが1つのアプリケーションを開発する以外に、
1つのアプリチームが複数のアプリケーションを開発・運用する場合もあれば、複数のアプリチームで1つのアプリケーションを開発する場合もあります。
共通チーム
共通チームは、専門性に応じて、それぞれ明確な役割を持ったチームで構成されます。
具体的には、次のようなチームから構成されます。
- Platform Team
アプリケーションが稼働する各種環境構築や、Google Cloudほかで構成されるJDEPの維持管理を行うチーム。 - SysAd Team
アプリケーションを開発するためのファシリティ(開発端末やセキュリティルーム、開発支援系 SaaS等)の維持管理を行うチーム。 - QSAT Team
アプリケーションに対して広く品質保証面での支援や第三者視点でのテストを行うチーム。名前の由来は"Quality, Support, Assurance, Trust"の頭文字。 - SRE Team (Diplomat & Sheriff)
アプリケーションに対して運用面での支援や共通チームとの窓口、およびJDEP全体の信頼性確保・向上する役割を持つチーム。
SREチームはさらに、各アプリチームへ参加しSREの考え方を注入・支援するDiplomatチームと、プラットフォーム全体の信頼性を確保・向上するためのルールやシステム整備するSheriffチーム、の2チームからなります。 - Arch Team
アプリケーション開発時に生じる技術的課題の解決支援や、JDEPへの新技術導入に向けた先行評価検証、を行うチーム。 - Sec Team
アプリケーションに対するセキュリティ面での支援や、クレジットカード関連の基準(PCIDSS)準拠の支援、を行うチーム。 - Design Team
アプリケーションに対してUX/UI面で支援するとともに、JDEP全体でのデザインのあり方を検討するチーム。
メンバー構成
各チームは基本的にアジャイルスクラムで開発していますが、そのメンバは弊社社員のみで構成されるわけではありません。
具体的には下の図のように、弊社の中で実際にビジネスを行っているユーザ部門、システム開発を主管するシステム部門に加え、弊社の Business Partner(以下BP、いわゆるSIer様)
に所属するメンバーが1つのチームとなって活動しています。
メンバーのロールとしては所属組織の特性に応じて、ユーザ部門からBiz PO(プロダクトオーナー)、システム部門からDev(開発メンバ)や必要に応じてBiz POをシステム的な面で支えるSys PO、BPからSM(スクラムマスター)やDev、が1つのチームにJOINし開発を進める形となっています。
体制の変遷
開始当初の体制
今でこそ、このような大規模な開発体制となったJDEPですが、始まりは30人程度で、チーム構成も今ほど大掛かりなものではありませんでした。 開発開始当初は、次の図のように1つのアプリケーションと開発するアプリチーム、それを支えるPlatform TeamおよびQSAT TeamとSEC Teamのみから構成されました。
アプリケーション増に伴うプラットフォームチームの変更
その後、JDEP上で開発されるアプリケーションが増えるとともに、最初に開発されたアプリケーションがリリースを迎え始めます。 アプリケーション数が増え、かつフェーズも異なるアプリケーションを支えるため、Platform Teamから派生する形で、アプリケーションの運用面を支援する役割を持ったSRE Teamと、技術面を支援する役割を持ったArch Team、ファシリティ面を維持管理するSysAd Team、を設置しました。この時点では、SREチームは1チームのみで構成されていました。
さらなる規模拡大・多様化に対する変更
更に開発されるアプリケーションは増え、そして多様化していきます。 JDEP開発当初はAPIやバッチ処理など機械的な処理を行うものが主でしたが、この頃になるとユーザインターフェース(要は画面)を持つWebアプリなど様々な特性を持つアプリケーションが増えていきます。
このような背景から、まずアプリケーションの利用者に寄り添った価値提供を実現する実装にすべく、UI/UXを適切に考えるためのDesign Teamを設置しました。 合わせてアプリケーション数の増加に伴いSREチームの支援業務が過多かつ多様化し、プラットフォーム横断の改善まで十分に手が回らないという問題が生じました。この解決策として1つのチームであったSRE Teamを、個別のアプリケーションの事情に沿った内容を対応するDiplomat Teamと、共通的な内容を対応するSheriff Teamの2チームに分け各々の役割に沿って対応することとしました。
最後に
今回は我々が行っているJDEP開発をチームの変遷という観点から見てみました。 個人的には、小さく始めて必要に応じて成長、また状況に応じて体制も変わっていく、ということが実践・実感できる面白い事例なのかなと感じています。
最後になりますが、JCBでは我々と一緒に働きたいという人材を募集しています。 詳しい募集要項等については採用ページをご覧下さい。
本文および図表中では、「™」、「®」を明記しておりません。
Google Cloud, GCPならびにすべてのGoogleの商標およびロゴはGoogle LLCの商標または登録商標です。
記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。