JAVA

マイクロサービス入門:Spring Boot 3.2 と Java 21 の実装・Docker・Kubernetes ガイド

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

1. マイクロサービスとは何か ― 概念と留意点

基本概念

  • 機能単位で独立したプロセス群としてシステムを構築。
  • 各サービスは 自己完結(データベース・ビジネスロジックを持つ)ため、開発チームが言語やフレームワークを選択しやすくなる。

主な利点

項目 具体的効果
スケーラビリティ 高負荷のサービスだけを水平に増やせる。CPU・メモリ使用率が最適化され、インフラコスト削減につながる。
組織独立性 チーム単位でデプロイサイクルが短くなり、アジイル開発が実現しやすい。
技術選択の自由度 言語・ミドルウェアをサービスごとに最適化できる(例:リアルタイム処理は Kotlin、バッチは Scala 等)。

直面しやすい課題

  • ネットワーク遅延・障害
    サービス間呼び出しが増える分、通信エラーやレイテンシが全体性能に影響する。
  • 分散トランザクション
    ACID を保つには Saga パターンや イベント駆動 の設計が必須になる。
  • 運用負荷
    ロギング・モニタリング・構成管理ツールを複数導入し、統一的に可視化する仕組みが必要。

2. Spring Boot 3.2 と Java 21 の概要 ― プロジェクト作成手順

Spring Initializr の設定例(Maven/Java 21)

項目 設定値
Project Maven Project
Language Java
Spring Boot 3.2.x (最新)
Packaging Jar
Java 21
Dependencies Spring Web, Spring Data JPA, Spring Cloud OpenFeign, Spring Boot Actuator
  1. https://start.spring.io にアクセスし上表通りに入力。
  2. Generate → ダウンロードした ZIP を解凍。
  3. ターミナルで ./mvnw spring-boot:run を実行し、起動を確認。

Java 21 の新機能がそのまま利用可能

  • レコードシーリングクラスパターンマッチング for switch が Spring のバインディングや Jackson とも相性良好。
  • Jakarta EE 9+ への移行が完了しており、javax.*jakarta.* に置き換わった API をそのまま使用できる。

3. シンプルな REST API の実装・テスト & Docker コンテナ化

CRUD エンドポイント(最小構成)

JUnit 5 + MockMvc でコントローラ単体テスト

Dockerfile(マルチステージビルド)とサイズの目安

※イメージサイズはベースに使用する distroless/java21 のバージョンや JAR の依存関係によって変動します。実際のビルド結果は「数十 MB 程度」になることが多いですが、正確な数値は docker images で確認してください。

ビルド・起動例

docker‑compose でローカルに複数サービスを一括起動


4. Spring Cloud の主要コンポーネントと Observability 設定

コンポーネント 用途 主な設定例
Service Discovery (Eureka / Consul) サービスの登録・検索 spring.cloud.discovery.enabled=true など
Config Server 外部化されたプロパティ管理 Git リポジトリを指す spring.cloud.config.server.git.uri
LoadBalancer クライアント側負荷分散 @LoadBalanced RestTemplate または OpenFeign と併用
Resilience4j サーキットブレーカー・リトライ application.ymlresilience4j.circuitbreaker.* を定義
Actuator + Micrometer メトリクス収集 & エンドポイント公開 /actuator/prometheus で Prometheus 形式にエクスポート

Actuator と Micrometer の設定例

  • Grafanajvm_memory_used_bytes{area="heap"} 等を可視化すれば、ヒープ使用率や GC の頻度が即座に把握できる。
  • Spring Cloud Sleuth(2024.0 以降)は自動的に traceId を付与し、分散トレースのベースとなる。

5. Dapr と Kubernetes デプロイ ― Helm Chart の基本構造

Spring Boot アプリと Dapr sidecar の連携

参考: 「Spring Bootで始める Dapr 入門」は執筆時点で有効です。

ローカルクラスター(Kind)へのデプロイ手順

Helm Chart の構成要素(簡易例)

  • values.yaml のみを書き換えることで、ステージング・本番環境の差分を GitOps ツール(ArgoCD 等)から管理できる。

6. 実務で活かすベストプラクティス

API バージョニング & エラーハンドリング

  • バージョンをパスに組み込むことで、将来的な互換性破壊が安全になる。
  • @RestControllerAdvice で例外を統一フォーマット(code, message) に変換すると、フロントエンド側の実装コストが削減できる。

統一ロギング戦略

  • JSON 形式で出力し、Elastic Stack(Filebeat → Elasticsearch → Kibana)へ流すと検索・集計が容易になる。
  • Sleuth が自動付与する traceId と組み合わせることで、サービス間トレーシングが一貫して取得できる。

CI/CD パイプライン(GitHub Actions)

  • ポイント
  • ビルドとテストを分離し、失敗した段階でパイプラインが止まるようにする。
  • image.tag に Git SHA を使用すれば、デプロイ履歴がコード変更と1対1で追跡できる。

7. 次のステップ

  1. ローカル環境で実装確認
  2. ./mvnw spring-boot:run/api/v1/users が期待通りに動くかテスト。

  3. コンテナ化・Compose でマルチサービスを体験

  4. データベース、Config Server、ユーザーサービスが連携できることを確認。

  5. Dapr sidecar を追加し State Store / Pub‑Sub のサンプルを実行

  6. dapr run --app-id user-service --components-path ./components でローカルにデプロイ。

  7. Helm Chart と GitHub Actions による自動デプロイ

  8. helm install → CI が成功したら本番クラスターへ自動的にリリースされるフローを構築。

  9. Observability の整備

  10. Prometheus + Grafana ダッシュボードで JVM、HTTP latency、CircuitBreaker の指標を可視化し、アラート設定も行う。

本ガイドは Java 21 / Spring Boot 3.2 をベースに、マイクロサービスの設計・実装・デプロイまでを一貫して体験できるよう構成しています。最新バージョンや外部リンクの有効性は随時チェックし、組織の要件に合わせてカスタマイズしてください。

スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-JAVA