JAVA

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

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

Contents

スポンサードリンク

1️⃣ 前提条件と開発ツールのインストール

1.1 必要なコンポーネント

コンポーネント 推奨バージョン (執筆時点) 備考
JDK 21(LTS) Spring Boot 3 系は Java 17+ が必須。最新の LTS を使用すると長期サポートが受けられる
IDE IntelliJ IDEA (Community/Ultimate) または Visual Studio Code どちらも Java 用プラグインが充実
ビルドツール Maven 3.9.x、Gradle 8.5+ プロジェクトの好みで選択可
コンテナランタイム Docker Engine 27.x 以上 Windows/macOS/Linux 共通

1.2 OS 別インストール手順

macOS

ツール インストールコマンド
SDKMAN!(JDK 管理) curl -s "https://get.sdkman.io" \| bash && source "$HOME/.sdkman/bin/sdkman-init.sh"
JDK 21 sdk install java 21-open
IntelliJ IDEA Community brew install --cask intellij-idea-ce
VS Code + Java 拡張 brew install --cask visual-studio-code && code --install-extension vscjava.vscode-java-pack
Maven / Gradle brew install maven gradle

Ubuntu/Debian 系 Linux

Windows(PowerShell)

ポイント
macOS は Homebrew がデファクトスタンダード、Linux は apt/yum 系に加えて Snap や SDKMAN! を併用、Windows は Chocolatey (または Scoop) が便利です。
いずれの環境でも java -version / mvn -v / gradle -v が期待通りに表示されればインストール完了です。


2️⃣ Spring Initializr で雛形プロジェクトを作成

2.1 Spring Initializr の利用方法

項目 設定例
URL https://start.spring.io
Project Maven (または Gradle)
Language Java
Spring Boot 3.2.x(最新マイナーバージョン)
Group / Artifact com.example / order-service
Java Version 21
Dependencies Web, Eureka Client, Config Client, Actuator, OpenFeign, SpringDoc OpenAPI UI

備考:Spring Boot のバージョンは「最新安定版」を選択してください。公式ページの Release Notes を随時確認すると、マイナーバグ修正や新機能が把握できます。

2.2 生成された pom.xml(抜粋)

2.3 プロジェクトのインポート

IDE 手順
IntelliJ IDEA File → New → Project from Existing Sourcespom.xml を選択し、Maven が自動的に依存を解決します
VS Code 拡張機能 Java Extension Pack が有効なら、プロジェクトルートで Ctrl+Shift+P → Java: Import Maven Projects

3️⃣ サービスディスカバリ & 設定管理(Eureka / Consul + Config Server)

3.1 Eureka Server の作成

src/main/resources/application.yml

起動クラス

起動後は http://localhost:8761/ に管理画面が表示されます。


3.2 Config Server の作成

src/main/resources/application.yml

ポイント
* git.uri はプライベートリポジトリでも構いません。その場合は認証情報(SSH キーや Personal Access Token)を環境変数で渡すのが安全です。


3.3 クライアント側設定例(order‑service)

bootstrap.yml(Spring Boot 2.x 系から推奨されていたファイルですが、Spring Boot 3 でも有効です)

application.yml(ローカルプロパティの上書き例)

この構成で、サービスは起動時に Eureka に登録し、外部化された設定は Config Server から取得します。


4️⃣ REST API と自動ドキュメント、Docker イメージの作成

4.1 コントローラ・サービス実装(簡易サンプル)

ベストプラクティス
ビジネスロジックは必ず @Service に分離し、コントローラはリクエスト/レスポンスの変換に専念させます。
DTO と Request オブジェクトは record(Java 21)で定義するとコード量が大幅に削減できます。

4.2 OpenAPI (Springdoc) の自動生成

pom.xml に以下依存を追加しただけで、起動時に Swagger UI が有効になります。

アクセス URL: http://localhost:8080/swagger-ui.html
application.yml でベースパスを変更した場合はそのプレフィックスに合わせてください。

4.3 Dockerfile(マルチステージビルド)

ビルド・実行例

ポイント
-XX:+UseContainerSupport は JDK 21 以降のデフォルトですが、明示的に書くとコンテナリソース制限が正しく反映されます。
Alpine ベースはサイズが小さく、脆弱性スキャンの対象面も減ります。


5️⃣ Kubernetes デプロイ、CI/CD パイプライン、Observability & Security

5️⃣1 Helm Chart(order‑service 用)

Chart.yaml

values.yaml(主要パラメータ)

templates/deployment.yaml(重要ポイントにコメント)

5️⃣2 GitHub Actions による CI/CD(ci-cd.yml

補足
KUBE_CONFIG は GitHub のシークレットに Base64 エンコードした kubeconfig を保存し、env: でデコードして使用します。
Windows ランナーが必要な場合は runs-on: windows-latest に変更し、Docker Desktop がインストールされた環境を用意してください。

5️⃣3 Observability(メトリクス・トレーシング・ログ)

5.3.1 Micrometer + Prometheus

Prometheus の scrape_configs に以下を追加:

5.3.2 Zipkin(分散トレーシング)

pom.xml に依存を追加:

application.yml 設定例:

5.3.3 ログ集約(ELK)

src/main/resources/logback-spring.xml の抜粋:

ポイント
* コンテナ環境では LOGSTASH_HOST を環境変数で注入し、Fluent Bit → Elasticsearch へ転送する構成が一般的です。

5️⃣4 Security – JWT 認証

依存関係(pom.xml)

セキュリティ設定(SecurityConfig.java

JWT プロバイダーの概略実装

ベストプラクティス
JWT_SECRET は必ず 環境変数 か Kubernetes Secret に保存し、コードにハードコーディングしないこと。
トークンの有効期限は用途に合わせて短め(15‑30 分)に設定し、リフレッシュトークンで延長する構成が推奨されます。


6️⃣ 参考リンク(公式ドキュメント)

項目 URL
Spring Boot 3.2.x リファレンス https://docs.spring.io/spring-boot/docs/current/reference/html/
Spring Cloud 2024.0.x (Hoxton) https://spring.io/projects/spring-cloud
Spring Initializr https://start.spring.io
Spring Cloud Eureka https://cloud.spring.io/spring-cloud-netflix/reference/html/#spring-cloud-eureka-server
Spring Cloud Config Server https://docs.spring.io/spring-cloud-config/reference/
Springdoc OpenAPI 3 https://springdoc.org/
Micrometer & Prometheus Integration https://micrometer.io/docs/registry/prometheus
Zipkin with Spring Cloud Sleuth https://spring.io/guides/gs/distributed-tracing/
Helm Charts のベストプラクティス https://helm.sh/docs/topics/charts/
GitHub Actions for Java https://docs.github.com/en/actions/language-and-framework-guides/building-and-testing-java-with-maven

上記リンクはすべて公式または広く信頼されたリソースです。外部の未確認サイトへの依存は排除しました。


まとめ

  1. OS に合わせた JDK/IDE のインストール を最初に完了させる(macOS・Linux・Windows 各対応)。
  2. Spring Initializr で必要なスターターを選択し、pom.xmlbuild.gradle に BOM を導入すれば依存管理がシンプルになる。
  3. Eureka + Config Server の組み合わせでサービスディスカバリと外部化設定を実装。
  4. Springdoc OpenAPI が自動生成する Swagger UI と、マルチステージ Dockerfile により開発から本番デプロイまで一貫したフローが確立できる。
  5. Helm + GitHub Actions で Kubernetes への継続的デリバリーを実現し、Micrometer/Prometheus, Zipkin, ELK による可観測性、そして JWT + Spring Security による API 保護を組み込む。

この手順書は「最新安定版」前提で作成していますが、バージョンは随時公式リリースノートで確認し、<properties>helm values の値を書き換えて運用してください。


本稿の内容は 2026‑04‑15 時点の情報に基づいています。技術スタックは急速に進化するため、公式ドキュメントやリリースノートで定期的な見直しを行うことを推奨します。

スポンサードリンク

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