LINEヤフー Advent Calendar 2023の8日目の記事です。
LINEヤフー Tech blogをご覧の皆さん、こんにちは。 京都開発部所属でデリバリーサービス 出前館のサーバーサイド開発を担当している本多康久です。
弊社では、グループ会社である株式会社 出前館のプロダクトを共同で開発しています。今回のブログでは、出前館のサーバーサイドで使用されているフレームワークであるSpring Boot の3系対応の事例について紹介します。
Spring Bootとは
Spring Bootは、Springのプロジェクト群を使用してアプリケーションを簡単に作成するためのOSSのフレームワークです。Spring Bootアプリケーションは、スタンドアローンの独立したJavaアプリケーションとして実行できます。Springのプロジェクト群(Spring Security, Spring Data, Spring Batch, etc.)との相互依存性の管理や自動設定により開発にかかるコストを大幅に減らせる強みがあります。
この強みにより、Spring Bootは出前館をはじめ、LINEヤフーの多くのプロダクトにも採用されています。
2系のサポート期間の終了
メジャーバージョンの2系は2023年11月24日でサポートが終了する(cf. サポート期間)ため、3系へのメジャーバージョンのアップグレードへの対応が必要です。
出前館でのマイクロサービスアーキテクチャ
デリバリーサービスである出前館は、近年、マイクロサービスアーキテクチャを採用し、数十のコンポーネントが稼働しています。出前館のマイクロサービスアーキテクチャの取り組みについては、"20年以上続くフードデリバリー サービス「出前館」におけるマイクロサービス化の取り組み(漆原, Tech-Verse 2022)", "出前館 マイクロサービスにおける加盟店管理画面のBFFアーキテクチャ(古田, LINE KYOTO交流会 2022)"などがありますので、詳細はそちらを参照ください。
本ブログでは、マイクロサービスアーキテクチャとして稼働するサービスの一つである、クーポンドメインを担っているクーポンサービスのSpring Boot 3系対応について紹介します。
バージョンアップグレードにおける具体的な対応内容
バージョンアップ前後の環境の情報は以下の通りです。
Software stacks | version (as-is) | version (to-be) |
---|---|---|
Java | 17 | 17 |
Spring Boot | 2.6.3 | 3.1.3 |
Gradle | 7.3.3 | 8.2.1 |
作業手順
まず、バージョンアップグレードの際の作業手順と、それぞれの工程にかかった時間を順番に説明します。
Release Notes, Migration Guidesの確認 (1日間)
Spring Bootは、GitHubのRepositoryのWikiページにRelease NotesやMigration Guidesがドキュメント化されています。Release Notesには各マイナーバージョンのリリース内容が、Migration Guidesにはメジャーバージョンアップグレードの手順と変更点が記載されています。