マイクロサービスアーキテクチャは、大規模なシステムを構築する上で有力な選択肢となっています。ここでは、いくつかの実装技術による構築手法をご紹介します。
マイクロサービスパターン
#MicroProfile
#MicroProfileは、2016年9月に誕生したエンタープライズマイクロサービス向けのプラットフォームです。
JavaEE(現JakartaEE)の仕様をベースとしつつも、マイクロサービスアーキテクチャに親和性の高い機能(JAX-RS, CDI, JSON-P等)に限定しています。
ここでは、そんなMicroProfileの導入や各機能の利用方法をご紹介します。
逆張りのMicroProfile ~ Helidonで始めるマイクロサービスへの一歩 ~
#Javaによるエンタープライズ開発のフレームワークと言えばSpring Frameworkがデファクトで鉄板となっているこの昨今、唯一のメリットは標準と言う錦の御旗だけに見えるJava EEに起源を発するMicroProfileに注目し、そして敢えて世間の逆を本気で行き、結果「マイクロサービスのバックエンドならSpringよりもイケてるね!」の境地に達したSpring好き(だった)エンジニアがMicroProfileへの知見や感想をつづっていく連載ブログ
-
概要編
-
導入編
-
Umbrella仕様編
- MicroProfile Config 3.0へのキャッチアップ
- MicroProfile OpenAPI 3.0の新機能と既存機能の比較
- MicroProfile RestClient 3.0の確認と小技機能の紹介
- MicroProfile JWT Authがやってくれること・できること
- MicroProfile Healthの機能と利用
- MicroProfile Metricsの機能と利用
- MicroProfile OpenTracingとJaegerで理解する分散トレーシング
- MicroProfile Fault Tolerance(1) - 例で理解する基本機能編
- MicroProfile Fault Tolerance(2) - 例で理解する非同期編
- MicroProfile Fault Tolerance(3) - 例で理解する設定編
- MicroProfileのサンプルリニューアル – 今度はほんとにMSA
-
Standalone仕様編
- 今後、順次追加予定!
-
Jakarta EE CoreProfile仕様編
-
(番外編)
Spring Boot
#Javaでマイクロサービスを構築するならやはりSpring Bootは外せません。ここではSpring Bootを使った実装をご紹介します。
Spring Boot による実践マイクロサービス開発
#この連載では、宇宙船の冬眠ポッド (hibernation pod) を題材に OpenAPI Generator を使ってサービスを構築します。
- 第1回 OpenAPI Generator を使ったコード生成
- 最初に OpenAPI Generator を使った簡単なサービスを実装します。
- 第2回 イベントストーミングとドメイン駆動設計の戦略的設計
- ドメイン駆動設計の主に戦略的設計で活用するイベントストーミングと、サイドカーパターンを紹介します。
- 第3回 OpenAPI Generator 利用時の Generation Gap パターンの適用
- OpenAPI Generator のようなコード生成の活用でポイントとなる Generation Gap パターンについて説明します。
- 第4回 ドメイン層の実装とサービスの完成
- ドメイン駆動設計の戦術的設計によってサービスの実装を完成します。
- 第5回 Open Policy Agent とサイドカーパターンによる認可の実装
- サイドカーパターンで Open Policy Agent を使ってサービス全体を完成します。
(番外編)
- Spring Boot と Apache Camel の統合
- Spring Boot でエンタープライズインテグレーションパターン (EIPs) を活用するため Apache Camel との統合について説明します。
- OpenID Connect でパスワードレス認証を使う
- Keycloak OpenID Connect によるパスワードレス認証を利用する構成を説明します。
非同期メッセージング
#マイクロサービスアーキテクチャで使われるプロセス間通信には REST や gRPC のような一対一の同期的通信だけでなく、一対多の非同期なメッセージングによる通信もあります。ここでは、非同期メッセージングのテクノロジーについてご紹介します。
Kafka
#Apache Kafka は publish/subscribe 型のメッセージングプラットフォームです。Kafka についてのブログ記事をピックアップしました。
- Debezium によるチェンジデータキャプチャー
- Strimzi - Kubernetes で Kafka を運用するための Operators
- Knative EventingのKafka BrokerでリトライとDead Letter Sink(DLS)を試す
- Kafka を Java のテストプロセスに埋め込める EmbeddedKafka でコンシューマーをテストする
- Kafka の Web UI を提供する kafka-ui を試す
- Spring Boot で作る Kafka Streams アプリケーション
- Kafka Streams パイプラインを迅速に作成できる ksqlDB を触ってみる
AsyncAPI
#非同期メッセージングによる API 仕様を定義した AsyncAPI に関する記事です。