Eurekaの導入と活用方法

基本概念 EurekaはSpring Cloudが提供するサービス登録と発見機能です。各サービスは登録センターに登録され、他のサービスがその存在を知ることができます。 Eurekaには以下の3つの役割があります: 登録センター:サービスの状態を管理する中心サーバ サービス提供者:Eurekaに登録されるマイクロサービス サービス消費者:Eurekaを利用してサービスを検索するマイクロ ...

6月25日 22:26 投稿

Eurekaを使用した効率的なサービス構成管理の実装

Eurekaを使用した効率的なサービス構成管理の実装 マイクロサービスアーキテクチャでは、サービスの発見と登録はシステムの高可用性を保証するための重要な要素です。Netflix Eurekaは、サービスの登録と発見機能を提供するソリューションであり、さらに構成管理の役割も果たします。この記事では、Eurekaでサービスの構成管理をどのように実装するかについて詳しく説明し ...

6月25日 21:19 投稿

Spring Bootテストにおける「java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration」の解決策

問題の概要 Spring Cloudプロジェクトで@SpringBootTestアノテーションを使用して単体テストを実行すると、以下のエラーが発生することがあります。 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test 原因の分析 @SpringBootTestアノテーションは、テ ...

6月21日 22:02 投稿

Spring Cloud Eurekaによる高可用サービスレジストリの構築

Spring Cloudの概要 Spring CloudはSpring Boot上に構築された分散システム開発のためのツールセットであり、開発者が分散システムにおける一般的なパターンを迅速に実装することを支援します。 主な機能として、設定管理、サービスディスカバリ、サーキットブレーカー、インテリジェントルーティング、マイクロプロキシ、コントロールバス、ワンタイムトークン、グローバ ...

6月21日 01:07 投稿

Spring Cloud マイクロサービスアーキテクチャの実装例

親プロジェクトの構成 Mavenの親プロジェクトは、サブモジュール間で依存関係とバージョンを一元管理します。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https ...

6月20日 20:23 投稿

Spring Cloud Feignによるサービス間通信の実装

本記事では、Spring Cloud Feignを利用したマイクロサービス間での内部API呼び出しについて解説します。サービスディスカバリ機構と連携し、サービス名に基づいて他のサービスを呼び出す方法に焦点を当てます。 設定 1. 依存関係の追加 (pom.xml) まず、pom.xmlファイルにSpring Cloud Feignのスターター依存関係を追加します。 <dependency> ...

6月8日 18:25 投稿

Spring Cloudにおける複数のFeignClientが同一サービスを呼び出す際のカスタム設定の問題

@FeignClientアノテーションには、以下の主要な属性があります。 name: FeignClientの名前を指定します。Ribbonを使用している場合、この名前はサービスディスカバリに使用されるマイクロサービスの名前となります。 configuration: Feignのカスタム設定クラスを指定します。Encoder、Decoder、ログレベル、Contractなどをカスタマイズできます。 contextId: FeignClien ...

6月3日 18:35 投稿

マイクロサービス間での相互呼び出しの3つの一般的な方法(ソースコード付き)

マイクロサービスアーキテクチャにおいて、複数のサービスを連携させて機能を実現する必要がある場合が頻繁にあります。このような状況で、サービス間の通信方法は設計の重要な要素となります。ここでは3つの代表的なアプローチを紹介します。 一、RestTemplateによる通信 @Bean public RestTemplate createRestClient() { return new RestTemplate(); } サービスコン ...

6月2日 21:05 投稿

Spring Cloud Gateway の内部構造を一文で理解する

序論 こんにちは、しばらくぶりです。数ヶ月間お休みしていたのですが、小年(旧正月)に再び戻ってきました! 最近のプロジェクトではアーキテクチャの最適化が必要となり、あるビジネスモジュールが急速に成長しているため、それを独立したサービスとして切り出すことを検討しています。 以前にもサービス分割に関する記事を書いたことがあります:「毎日Architectureを ...

6月1日 21:20 投稿

Spring CloudにおけるRibbonの負荷分散メカニズムと設定最適化

リクエストの処理フローと分散機構 コンシューマー側アプリケーションがダウンストリームAPIへ呼び出しを行う際、Ribbonがクライアントサイドの負荷分散として介入します。標準的なデータフローは以下の順序で進行します。 呼び出し元(例:注文処理サービス)がHTTPリクエストを発行し、Ribbonクライアントレイヤーで補足されます。 Ribbonがサービスレジストリ(Eur ...

6月1日 20:30 投稿