トイルのない開発運用環境を目指すトヨタ自動車事例
実際にどのようなことをするのだろうか。佐藤氏は、トヨタ自動車での事例を取り上げて解説した。
トヨタ自動車ではDX推進の一環で、AIを活用したWebアプリケーションの内製開発に乗り出した。インフラはGoogle Cloudを中心としたハイブリッドクラウド環境で構築し、アジャイル開発やコンテナ技術などモダンなテクノロジーでシステム環境を整えた。しかし、メンバーは当時アプリケーション開発・運用の知識や経験が少なかった。ある程度は形になったものの、このままでは自分たちの作りたいアプリケーションが開発できない上に、トイルも積み重なっていくだろう。こうして今年4月、同社はスリーシェイクの開発支援を受けることになった。
トヨタ自動車のプロダクトマネージャーを中心に、トヨタ自動車の運用担当と開発担当を、スリーシェイクのインフラ構築支援担当とアプリケーション開発支援担当でサポートする体制を構築したのち、現在の課題と改善の方向性を話し合い、大きく次の3つを実施することになった。
- 長期運用を見据えたアーキテクチャの再構成
- 開発速度向上のためのフロントエンド開発ツールの導入
- 運用作業効率化のためのアプリケーションの修正
1つめは、アーキテクチャの再構成だ。以前は、Google Kubernetes EngineのAutopilotモードでアプリケーションPodを管理しており、アプリケーションごとのページからCloud SQLへの接続やFirebaseでの認証認可処理を実行する構成だった。
「画面上の処理が多く、また、各アプリケーションでUI層を実装していたため、UIの共通化がされておらず修正に時間がかかってしまう。ジョブからデータベース接続していることも、マイグレーションを複雑にする要因」。そう述べた佐藤氏は、システムの長期運用が見えている中で、このままの設計で進めた場合、運用開発において、トイルが多くなってしまい、トヨタ自動車が本来やりたいAIプラットフォームの開発の妨げになってしまうと感じた。
そこで佐藤氏たちは、フロント用Podと認証用Podを立てて、アプリケーションPodからはAPI接続で集約。データベースもAPIからのみ参照するように変えて、通信を大幅に整理して将来的にトイルとなる要素を排除したという。これにより長期運用と開発速度向上を見越して、UIを共通化し、各WebフレームワークのUI層を切り離して整理することができた。
その上で、佐藤氏たちはメンバーに対してリファクタリングのオンライン勉強会を実施した。
「1ファイルが3000行もあり、その大半が同じ処理について書かれているものもあった」と振り返る佐藤氏。コピペにより実装を使いまわすことが多く、修正するコストが掛かっていた。また、モジュール化されていないため、他の人が見たときに、どういう処理なのかをコードを読んで理解するのに時間がかかってしまっていたという。しかも「フレームワークのバージョンアップをしても、動作確認作業やテストの修正が複雑になってしまうのが見えている」と続ける。
勉強会は定期的に開催し、リファクタリングの必要性や視点を学ぶ座学に加えて、実際に動いているコードを参照しながら何を修正できるかをハンズオンで学習。実践力の向上に努めた。