JAVA

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

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

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


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)を前提にしています。今後のマイナーバージョンアップ時には公式リリースノートをご確認ください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-JAVA