JAVA

Spring Boot 3.2 と JDK21で始めるマイクロサービス構築ガイド

ⓘ本ページはプロモーションが含まれています

Contents

スポンサードリンク

1. マイクロサービスとは? Spring が提供する主な支援機能

1‑1. 基本概念(概要)

項目 従来のモノリシック方式 現代のマイクロサービス
デプロイ単位 アプリ全体を一括デプロイ サービスごとに独立した JAR/コンテナ
スケーリング プロセス数増加で対応(リソース浪費) 必要なサービスだけ水平スケール
障害影響範囲 1つの障害が全体を停止させやすい サービス間は疎結合なので局所的に切り離し可能

参考:Spring Cloud の公式ガイド「Microservices with Spring Cloud

1‑2. Spring が提供する支援機能(2025 年 12 月リリース)

カテゴリ 主なモジュール 代表的な機能
DI / コンポーネントスキャン Spring Framework @Component, @Autowired による疎結合実装
サービスディスカバリ Spring Cloud Netflix Eureka クライアントは spring-cloud-starter-netflix-eureka-client を追加するだけで自動登録/検索
外部設定管理 Spring Cloud Config Server Git・SVN・ローカルファイルをバックエンドにした集中設定
分散トレーシング & メトリクス Spring Boot Actuator + Micrometer /actuator/prometheus で Prometheus にメトリクス公開
同期呼び出し Spring Cloud OpenFeign @FeignClient だけで HTTP クライアントが生成
非同期メッセージング Spring Cloud Stream (Function‑style) Supplier/Consumer/Function ビーンで RabbitMQ/Kafka と連携

根拠:Spring Boot 3.2 リリースノート(Release Notes 3.2.0)・Spring Cloud 2023.0.1 BOM(BOM Docs


2. 開発環境の構築 – JDK 21・IDE・Spring Initializr

2‑1. JDK 21 のインストールと確認

OS インストール手順
macOS brew install openjdk@21
sudo ln -sfn $(brew --prefix)/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdk
Windows choco install temurin21

インストール後は必ず次のコマンドでバージョンを確認:

公式:OpenJDK 21 ダウンロードページ(https://jdk.java.net/21/

2‑2. IDE の設定ポイント

IDE 必要プラグイン・設定
IntelliJ IDEA Ultimate Spring Boot, Lombok, Docker プラグインを有効化。
File → Settings → Build, Execution, Deployment → CompilerTarget bytecode version21 に設定。
VS Code 拡張機能「Java Extension Pack」「Spring Boot Dashboard」必須。.vscode/settings.json に runtime 設定を追加:
json { "java.configuration.runtimes": [{ "name": "JavaSE", "version": "21" }] }

2‑3. Spring Initializr でプロジェクト作成

項目 推奨設定
Project Maven(Gradle でも可)
Language Java
Spring Boot 3.2.0(執筆時点の最新安定版)
Packaging Jar
Java 21
Dependencies Spring Web, Actuator, Eureka Discovery Client, Config Client, OpenFeign, Spring Cloud Stream (RabbitMQ)

生成された pom.xml とディレクトリ構成は以下の通りです(抜粋):

参考:Spring Initializr 公式サイト(https://start.spring.io/


3. 必要なスターターと依存関係 – Maven と Gradle の実装例

3‑1. BOM 管理(Spring Cloud 2023.0.1)

3‑2. Maven (pom.xml) 完全例

3‑3. Gradle (Kotlin DSL) 完全例

注意@EnableEurekaServer / @EnableEurekaClient は Spring Cloud 2023.0 系列では不要です。spring-cloud-starter-netflix-eureka-server をクラスパスに置くだけで自動的に有効になります(公式ドキュメント: Eureka Server)。


4. 基本サービスの実装 – Eureka、Config Server、REST API、テスト

4‑1. Eureka サーバー(サンプルコード)

pom.xml に追加

エントリポイント

application.yml

公式リファレンス:Eureka Server の最新ガイド(https://docs.spring.io/spring-cloud/docs/current/reference/html/#spring-cloud-eureka-server

4‑2. Config Server(Git バックエンド)

依存追加

エントリポイント

application.yml(サーバ側)

クライアント側(bootstrap.yml)

公式リファレンス:Spring Cloud Config Server(https://docs.spring.io/spring-cloud-config/reference/html/

4‑3. REST API の実装例(Product Service)

ポイント@Validated@Valid による入力チェックは必須です。Spring Boot 3.2 のデフォルトは Jakarta Validation (jakarta.validation) へ移行しています(Release Notes)。

4‑4. 統合テスト – Testcontainers + JUnit 5

根拠:Testcontainers 公式サイト(https://www.testcontainers.org/)と Spring Boot 3.2 のテストガイド。


5. サービス間通信 – Feign と Function‑style Spring Cloud Stream

5‑1. 同期呼び出し:OpenFeign(最新 API)

依存はすでに spring-cloud-starter-openfeign が入っている前提です。

公式リファレンス:OpenFeign の最新ガイド(https://docs.spring.io/spring-cloud-openfeign/reference/html/

5‑2. 非同期メッセージング:Spring Cloud Stream Function Model

@EnableBinding は Spring Cloud Stream 4.x 系列で非推奨です。
代わりに Function Beanspring.cloud.function.definition を使用します。

(1) ビーン定義(Producer)

(2) ビーン定義(Consumer)

(3) application.yml でバインディング設定

公式ドキュメント:Spring Cloud Stream Function モデル(https://docs.spring.io/spring-cloud-stream/reference/html/function.html


6. Docker コンテナ化とローカルマルチサービス環境

6‑1. 共通ベースイメージ(マルチステージビルド)

ポイント--no-daemon は CI 環境でのビルド速度向上に必須です(Gradle 公式ガイド)。

6‑2. docker-compose.yml 全体構成(抜粋)

起動コマンド

公式リファレンス:Docker Compose V2 ドキュメント(https://docs.docker.com/compose/

6‑3. Actuator + Prometheus 設定例

application.yml(任意のマイクロサービス共通)

Prometheus の prometheus.yml(ローカル構成)

Grafana の公式ダッシュボード ID 6756(Spring Boot)をインポートすれば、CPU・JVM メモリ・HTTP レイテンシが即座に可視化できます。

参考:Micrometer 公式ドキュメント(https://micrometer.io/docs/registry/prometheus


7. CI/CD パイプライン – GitHub Actions の実装例

ベストプラクティスまとめ

項目 推奨設定
ブランチ戦略 main(リリース) / feature/*(開発) / Pull Request によるコードレビュー必須
テスト方針 JUnit 5 + Testcontainers で統合テストを必ず走らせ、ローカル DB と同一イメージを使用
イメージ管理 GitHub Container Registry(GHCR)か Docker Hub に commit‑sha タグでプッシュし、Immutable なイメージとして扱う
デプロイ 開発環境は docker compose up; 本番は Kubernetes + Argo CD へ移行する構成を想定

根拠:GitHub Actions の公式ガイド(https://docs.github.com/en/actions)と Spring Boot の Docker ビルド推奨パターン。


8. 全体まとめ & 次のステップ

  1. 開発基盤
  2. JDK 21、Spring Boot 3.2、Spring Cloud 2023.0.1 を組み合わせた環境は、Java の最新機能と Spring エコシステムの成熟度を同時に享受できる。

  3. マイクロサービス基盤

  4. Eureka(サービスディスカバリ)+ Config Server(外部設定)で「自律的かつ集中管理」な構成を実現。
  5. Actuator + Micrometer + Prometheus/Grafana で運用時の可観測性を確保。

  6. 通信パターン

  7. OpenFeign → 同期呼び出し(軽量・Eureka 自動解決)
  8. Spring Cloud Stream Function Model → 非同期イベント駆動(@EnableBinding から脱却)

  9. コンテナ化 & デプロイ

  10. マルチステージ Dockerfile と docker‑compose.yml により、ローカルで本番に近いマルチサービスクラスターを数分で起動。
  11. CI(GitHub Actions)+ CD(GHCR → Kubernetes/Argo CD)でコード→デプロイまで自動化可能。

  12. 次の学習ステップ

  13. Kubernetes への移行:Spring Cloud Kubernetes の ConfigMap / Secret 統合を調べる。
  14. 分散トレーシング:Spring Cloud Sleuth → OpenTelemetry に置き換える実装例を試す。
  15. セキュリティ:Spring Security OAuth2 Resource Server と JWT を組み合わせた API 認可設計。

結論:本稿で示した手順とコードは、2025 年時点の公式最新スタックに完全対応しています(非推奨 API は除外し、Function‑style Stream へ置換)。これらをそのままプロジェクトに貼り付ければ、Spring Boot 3.2 + JDK 21 のモダンマイクロサービス基盤が即座に構築できます。


参考リンク集

内容 URL
Spring Boot 3.2 Release Notes https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes
Spring Cloud 2023.0 (BOM) https://spring.io/projects/spring-cloud#overview
OpenFeign Reference https://docs.spring.io/spring-cloud-openfeign/reference/html/
Spring Cloud Stream Function Model https://docs.spring.io/spring-cloud-stream/reference/html/function.html
Testcontainers Documentation https://www.testcontainers.org/
Micrometer Prometheus Registry https://micrometer.io/docs/registry/prometheus
Docker Compose V2 Docs https://docs.docker.com/compose/
GitHub Actions Official Guide https://docs.github.com/en/actions

この記事は 2026 年 4 月 18 日に執筆され、最新の Spring エコシステム(Spring Boot 3.2、Spring Cloud 2023.0.1)を前提にしています。今後のマイナーバージョンアップ時には公式リリースノートをご確認ください。

スポンサードリンク

-JAVA
-, , , , , , , , ,