マイナビの内製開発におけるクラウドインフラ構築で抱えていた「3つの課題」
就職・転職・アルバイトなどの人材サービスや、ニュースメディアをはじめとした生活情報サイトの運営など50以上の多種多様なサービスを運営するマイナビでは、これまで一部サービスのクラウドインフラを内製開発してきたが、その開発・運用プロセスにはいくつかの課題を抱えていたという。
同社の内製開発の大まかな手順は、まずは企画チームとアプリチームが要件をすり合わせた後、クラウドチームがクラウドインフラの開発に着手する。アプリチームはインフラ環境が整うまでの間、ローカルのDocker環境で開発作業を進め、環境が整いしだいクラウド上での開発に移行するという流れで進められてきた。
なお同社では、IaC(Infrastructure as Code)ツールとしてAWS CDK(Cloud Development Kit)を採用している。AWSが提供しているBLEA(Baseline Environment on AWS)を自社用にカスタマイズしたベースコードを開発しており、プロジェクトの要件に応じてリソースの追加、設定変更、削除といった改修を行い、AWSリソースをデプロイしている。またコードに改善点が見つかった場合は、ベースコード側に取り込むことで次回以降のプロジェクトに反映されるような改善サイクルを確立している。
しかしマイナビ デジタルテクノロジー戦略本部 ビジネスイノベーション統括本部 クラウドインテグレーション統括部 クラウドエンジニアリング部 エンジニアリング1課 課長 小原夏々子氏によれば、この一連のプロセスには3つの大きな課題があったという。

「1つ目の課題は、クラウド環境を提供するまでのリードタイムが長いという点でした。アプリチームとクラウドチームの動き出しのタイミングが異なるため、クラウドチームに話が来てから初めてヒアリングや要件定義の作業を開始し、構築を行う必要がありました。そのため、クラウドインフラ環境の提供までに1か月以上のリードタイムが発生していました」
なお2つ目の課題は、「インフラ環境を提供した後の手戻り」だった。アプリエンジニアはローカルのDockerで開発を行うケースが多いため、自ずとクラウドインフラ構成もコンテナを用いた構成が多くなる。しかし、ローカル開発が進んだタイミングでクラウド環境へデプロイを行うと、アプリケーションのデプロイがうまくいかないほか、ローカルで動いていたものがクラウドのインフラ環境では動かないといったトラブルが多発していた。
そして3つ目の課題は、「運用の属人化」だった。個別にAWS CDKコードを改修するため、開発に関わったメンバーや担当者しか詳細を把握できておらず、運用フェーズで問題が発生した際に状況把握に時間がかかっていた。担当しているプロジェクトが多いこともあり、全体像の把握は困難で、結果として運用の属人化が深刻化していた。