放置するほど悪化したレガシー問題で、状況は「がけっぷち」に
VOYAGE GROUPが行っているサービスのひとつに「ECナビ」がある。ネットショッピングでのポイントがお得にたまるというサイトで、主婦層を中心に人気を集めるサービスだ。カイゼンに取り組んだ2015年当時のシステム状況について、VOYAGE GROUP 本部長の福田氏は「がけっぷち」であったと振り返る。
「当時のシステムが抱えていた根本的な問題は、古くて大規模であったということです。1000を超える機能と900テーブルに及ぶデータベースは、10年以上のものが大半でした。また、2000年代頃からメンテナンスも放置状態。しかし、インフラがオンプレであることや管理部門が別組織であったことも足かせとなり、カイゼンに取り掛かろうにも、とにかく変更に時間がかかることがネックでした」
問題を認識していたものの、その手の付けにくさから現状維持のまま事業を継続していると、事態はさらに悪化していった。技術がレガシーであるがゆえに若手エンジニアへの訴求力が足りず、エンジニア採用に苦戦していくようになる。それと同時並行して、在籍エンジニアのモチベーションも下がっていくのが見て取れるようにもなり、古い技術が引き起こす組織問題に悩まされた。さらに、使用していたデータセンターが撤退の予兆を見せたことも引き金となり、変化を検討せざるを得ない状況に達してしまう。多方から寄せる課題に追い詰められながらも、だからこそ「自分たちで変えてやる」という意気込みをもって動き始めたという。
とった手段は「調査」と「葬り」、そして決して「無理をしない」こと――レガシー対策でまず取り組むべきこと
現状を変えるためにまず取り組んだこと。それは「調査」と呼ばれる現状把握だ。4~5人のチームで、3ヶ月をかけて現状の調査と社員へのヒアリングを実施。その際に、「機能一覧」や「サービス全体図」などを始めとする多くの資料を新規に作成することで、見える化を図ったという。特に1000を超える機能を一覧化したことは効果が大きく、営業部門などシステム開発から遠い関係者を含めた議論の場で、大いに役立ったそうだ。
次に取り組んだのは、「葬り」と名付けられた断捨離だ。社内用語で不要な機能を削除することを意味し、まずは当初6ヶ月の期間、集中的に実施した。このソリューションの価値は、機能そのものを削除するため「手間をかけずに“問題の分母”を減らす」ことができることだという。セッションでは、単純だが非常に強力な手段であると強調された。
「調査」と「葬り」により、2015年の作業開始時点で1876あった機能数は、2019年時点で700と半分以下に減少、テーブル数も1200に膨れていた状況から813と3分の2近くまで減らすことができた。コードの行数も半減させることができたという。
活動の中でもうひとつ意識したのが、「無理をしない」ということ。具体的には、まずがけっぷちだからといって「短期で」「フルリプレース」をしようとは考えないこと。この手のマイグレーションでは抜本的な対策を計画したくなるものだが、この規模のシステムで現状を全て調べて作り直すというのはコストがかかりすぎ、非現実的である。よって「長期で」「段階的にカイゼン」するということを当初から重視したという。
もう一点、無理をしないためには、取り組む問題を絞ることが重要だとされた。あれもこれもと発散してもこの規模では終わりが見えない。その施策をとることの「価値」と、それを実現する際の「工数」の2つを評価軸とし、取捨することが大事であると語られた。そして、その両者について方向性がぶれないよう、具体的な方針を言語化するという方策をとった。価値については、「今、その課題に取り組むことで長期かつ段階的カイゼンがより加速していくか?」という問いを基準とする。工数は、「5人くらいのチームで、3~6ヶ月以内で完了できるか?」という定量的な工数指針が立てられた。
見えてきた「今すぐ取り組むべきもの」と「先送りすべきもの」
「調査」と「葬り」を終え、残った機能に対し、いよいよ本格的なカイゼンを施していくことになる。しかし問題は大小含め山積みであるため、優先度付けを行う必要があった。そのために、まず問題をアプリとインフラに大きく分けた上で、インフラに関する対処を最優先としたという。インフラを優先した理由は、まず現行システムにはオンプレ環境という根本的な制約があったこと。加えて、縦割りの管轄があるために「段階的なカイゼン」がとれないという事情がこれまでも足かせであったためだ。一方で、アプリはすでに「葬り」で必要十分に絞ることができている。また、コントロールできるインフラが先にととのうことで、アプリケーションのカイゼンも迅速化することが見込まれたことも、インフラ優先とした理由に挙げられた。
カイゼンの際のポイントは、「自由なインフラ」とすること。インフラとアプリの管轄を分けずに、開発者がコントロール可能な状態とすることで、対応の俊敏性を高める。また、そのためにもサービス全体をオンプレからAWSに移行することを計画した。