とあるお客様のサービスは、昔モノリシックに作成されていたのですが、近年マイクロサービス化されてきており、その数も増えてきました。
マイクロサービスに分けることで、一つのサービスの中で開発を行い、影響範囲を小さく・デプロイを細かくしサービスリリースすることが利点ではありますが、
一方、これらマイクロサービスを連携するデータパイプライン部分に修正が発生すると、複数のマイクロサービスの改修をしないといけないこともあります。プロジェクトをまたがる進捗の管理をどうしたらよいか試行錯誤していましたが、最近の Jira Cloud のアップグレードでざっくり状況の可視化がしやすくなりましたのでご紹介します。
三行
プロジェクトをまたぐマイクロサービスの改修には Atlas (Atlassian Home) の Goal と Jira のエピック をリンクさせ、Advanced Roadmaps (Plans) で可視化するのがわかりやすい!
これまで
弊社ではマイクロサービスごとにプロジェクトを分けており、小さな改修についてはその中に Issue を作っていました。
プロジェクトをまたぐ機能改修についても、それ用にプロジェクトを分けるのではなく、影響のあるプロジェクトごとにどのような機能が必要か、Issue を追加していました。
プロジェクトをまたぐ場合、弊社は進捗管理ではこれまでも Atlas を使って全体のゴールを作り、Jira プロジェクトと手動でリンクさせたり、Jira のラベルを使って Advanced Roadmaps を利用してエピックを表示したりということはしていましたが、全体をぐるっと見るにはちょっと手間でした。というのも、
- 横断するプロジェクトの Goal は Atlas にまとまっているけれど、手動で Atlas とプロジェクトの連携を行わないといけず、Jira と Goal のページの行き来が億劫だった
- Advanced Roadmaps に複数のプロジェクトの一部のエピックのみ表示して今回達成したいことのみにフォーカスしたタイムラインが見たかったが、その絞り込みには複数プロジェクトを跨げる「ラベル」などを利用するしかなさそうだった
という、「惜しいところまでできているけど管理が煩雑」な状態だったのです。それが最近のアップデートで、3つの機能が全部連携できるようになったようです!
つかってみる
1. Atlassian Home で Goal を作る
今回は「横断機能A開発」とでもしましょう。Atlas では「どんなメンバーがどうしてこのゴールを達成する必要がありいつまでにどういう状態にしておくべきか」ということを Jira よりも詳細に、Confluence のぺらいちよりもゴールにフォーカス項目を絞って管理できるところがよいですね。
2. Jira チケットを作成し、各プロジェクトごとにエピックを作成
影響するプロジェクトに各々機能開発のためのチケットを作成しておきます。また、アジャイル・スプリント管理をしているため、それらをまとめるエピックも必要ですね。Jira ではエピックはプロジェクトをまたぐことができないため、サービスごとに「どのような状態・機能になっているべきか」を記述した親チケットのようなものを作成します(ちなみに今まで Jira の Task チケットに紐づける Epic は Epic Link という名前でしたが、最近 Parent に名前を変えたところからも、親チケみたいなイメージでよさそうです)
3. Jira のエピックチケットに Goal を紐づける
さて連携していきます。楽しくなってきました。2の過程で作成したエピックチケットに、Goal を連携します。二重丸アイコンをクリックし「Link goals」から 1 で作成した Goal を選択します。各プロジェクトごとに同様に 1 の Goal に紐づけていきます。
4. Plans で Goal に絞ったタイムラインを表示する
ここまでくればあとは Plans の View settings から絞り込みたい 1 の Goal を指定するだけ!
これでマイクロサービスでどのプロジェクトが開発対象で、どういうエピックを各々達成する必要があり、いつまでにそれが達成されるべきなのかがわかりやすくなりました!
ということで、プロジェクトをまたぐ小さなプロジェクト?を可視化して管理したい場合は上記のやり方がおすすめです。