こんにちは。一年ぶりの登場となりますCTOの山田です。
さて、RareJob Tech Blogも無事一年が経ち、当初の宣言通り週1ペースで様々な記事が投稿されてきました。また、この一年、レアジョブは様々な変化がありました。中でもレアジョブ英会話のシステムリニューアルの意思決定をしたことが開発部門にとって大きな変化です。背景や目的としていることなどはRareJob Appealの記事をご覧下さい。
このシステムリニューアルPJでは、日本だけではなくフィリピン開発部隊との連携が必要となります。レアジョブは、連結子会社6社ありますが開発部門を持っているのが日本のレアジョブとフィリピン ケソン市にオフィスを構えるRareJob Philippines, Inc.の2社だけですので、この2社間の連携が非常に重要です。この2社間でどのような体制、開発プロセスでシステムリニューアルPJを進めるのかを紹介したいと思います。 国を跨り協働開発する際の参考になればと思います。なお、RareJob Philippines, Inc.ではレアジョブレッスンを提供する講師に関わるすべてのシステム開発・運用を担っております。
開発組織間の連携
リニューアルプロジェクトでは、多くの不確実性と変化が伴うためスクラムで開発を推進していきます。アジャイル開発は経験主義を基本としているので、いきなり大きなプロジェクトを立ち上げてもうまく行きません。普段からどのような仕組みでコミュニケーションを取っているかで立ち上がり方が違います。言語、文化、時差など様々な違いをどう吸収するかを考えながらこれまで組織を構築してきました。現在では各レイヤーでコミュニケーションを密に取り、レアジョブ英会話サービスを共に支える組織となりました。
日本とフィリピン共に機能組織としての技術本部があり、ほぼ同じような組織構造で構成しております。
Engineer Manager間での情報共有
RareJob Philippines, Inc.の開発責任者へは週次で会社の動きを共有。特に日本を軸に計画が大きく変わることがあるため、影響ある情報をいち早く伝えることを心がけています。
また、Engineering Manager間は月一で情報共有会を開催。プロジェクトの動きや課題の議論などをこの場で行ないます。もちろん必要であれば随時オンラインミーティングを開催しています。Lesson Roomの協働開発
Skypeに変わるWebRTCを利用したレッスン提供機能であるLesson Roomを生徒側は日本、講師側はフィリピンで開発を行っております。
コアとなるロジックを共通化しているため、密に連携しながら生産性を向上させる取り組みをしております。生徒向け、講師向けに関わる開発、リリース情報の共有
基本的には双方のサービス要件に沿ったドメスティックな案件が多いです。ただし、現在は共通のDBを利用して生徒、講師システムが動いておりお互い影響し合うため、リリース情報の共有は会議やチャットなどで行ないます。システムリニューアルPJでは、この共通DBをどのように分割するかを議論しています。レアジョブグループの共通基盤協働開発
Golangで開発されたプロダクト共通の情報資産を有する共通基盤。各プロダクトからはAPIで利用可能で、レアジョブ英会話サービスでは、リニューアルプロジェクトを通じて一部の機能を共通基盤へ移管していきます。この共通基盤は、生徒システム、講師システム双方で利用するため、協働で開発しております。AWSの協働運営
レアジョブでは、複数のプロダクト、メディア、社内向けのサブシステムなど多くのシステムが稼働しています。講師の給与計算などフィリピン固有の重要なシステムもあります。これらを安定的に運営していくため、ルールや権限など厳格に設計し、協働で運営してます。
システムリニューアルPJの進め方
プロトタイプとしてMVPを創る
レアジョブ英会話も気がつけば多くのお客様に利用されている規模の大きなシステムとなりました。この規模のシステムリプレイスをいきなり進めるには、多くの手戻りが発生することが容易に想像でき、またビジネスへの影響も広範囲に渡るため、2019/11〜2020/3まではプロトタイプという位置づけでレアジョブ英会話のMVPを開発しました。
このプロトタイプフェーズでは、MVPの開発だけではなく以下も行ないました。
- ストーリーの整理(ユーザーストーリーマッピング)
- 責任分界点の整理
- 技術選定とシステムアーキテクチャ設計
- CI/CDの再定義
- LeSSのアプローチでの開発プロセス確立(実践から経験を得る)
- 移行方針と方法
国境を超えてスクラムを実践する
プロトタイプ開発での経験を経て、この時の最終的な仕組みをベースに、フルバージョンの開発は下記のような整理をしました。
体制
- 4つのスクラムチームから構成(日本とフィリピンの混同チームもある)
- 全体の意思決定者であるプロダクトオーナーがおり、各スクラムチームにチーム毎の意思決定をするサブプロダクトオーナーを配置
- 各スクラムチームに技術的な意思決定をするテックリードを配置
- 全チームのプロダクトオーナー、テックリードからなるステアリングコミッティを設置
Global TimelineとPBL
- 開発効率観点から開発していく順をEpic単位で定義したGlobal Timelineを策定し、ステアリングコミッティで全体の進捗を管理する
- ユーザーストーリーを一元管理し、PBLに分解し各スクラムチームで開発を担う
スプリントとスクラムイベント
- 期間は2週間で、開始、終了をすべてのチームで合わせ、スクラムイベントを同日に一斉開催する
- 各スクラムチームでのプランニング前に全体プランニングとして、次スプリントで必要となるPBLを他チームへ依頼する
- 各スクラムチームの振り返り後、全体での振り返りを実施
全体像
その他の取り組み
- 共通の課題リストを持ち、PJ全体で解決に向けた取り組みを行なう
- マイクロサービスとは言え、原則の技術選定に準ずる
- 運用が複雑化しないようにCI/CD、監視などの仕組みを統一していく
- 利用するツール(ドキュメンテーション、コミュニケーションツールなど)を統一する
- 原則英語でドキュメントを書き、分散させない
- 各自英会話スキルをレアジョブ英会話で磨く
- 定期的に出張しFace to Faceで理解を深める(新型コロナ問題で当面厳しそう)
- 背景、目的、方針は何度も同じことを伝える
- 技術顧問の広木さんに、移行方法をレビューして頂く(第三者がレビューすることで気づきが多い)
最後に
システムリニューアルPJでは、モノリシックアーキテクチャからマイクロサービスアーキテクチャへとシステムそのものを変えていきます。これだけでも難易度が高いですが、フィリピン開発部隊と進めていくことでさらに難易度が上がります。
また長期プロジェクトになるため、問題が発覚したらすぐに解決に向けて動く必要があり常に神経を尖らせて、関係者と密な連携を取り進めていきます。
このプロジェクトを通じてレアジョブグループ全体の開発機能が一段高いレベルに上がることを確信しており、またこれから立ち上がる新規事業へも貢献出来ると思います。
ということで、また来年(!?)お会いしましょう。