プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • マイクロサービス
  • 【マイクロサービス】「メッセージブローカー」(AWSメッセージングサービス比較など)
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【マイクロサービス】「メッセージブローカー」(AWSメッセージングサービス比較など)

07.16

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

メリット

例えば、稼働率99%のものを直列に3つ同期的に繋げたとしたら稼働率は97%に下がってしまいます。

必要のないものはできるだけ非同期処理に置き換えるようにした方が稼働率は向上します。その際に使用するのがメッセージブローカーになります。

方式

キュー方式(pull方式)

メリット

処理量が多くても対応できる。(バッチ処理に対応できる。)

デメリット

コンシューマー側主導であり、取りに来られたタイミングが適切でなければラグ(待ち時間)が多少発生する。

Pub/Sub方式(Push方式)

メリット

常にコンシューマ側へプッシュするので通信がリアルタイムに近づけられる。

デメリット

コンシューマー側の許容できるリソース量を加味しないといけないので重い処理には向かない。

代表的なメッセージブローカー(インストールするもの)

Apache Kafka

高スループット。キュー方式のメッセージング。一番有名。

Apache ActiveMQ

Pub/Sub方式のメッセージング

RabbitMQ

AMQPに対応している。メッセージ、キュー、ルーティングに対応。

Redis

KVSの一種としてメッセージキューを提供している。(他と違いジャンルはメッセージというよりは、データベースではあるが。)

代表的なメッセージブローカー(マネージドサービス)

Queue Storage(Azure)

ストレージを使ったメッセージサービス

Service Bus(Azure)

Queue Storageより多機能

Pub/Sub(GCP)

Pub/Sub呼び出し。

Tasks(GCP)

相手を指定する呼び出し

AWSのメッセージングサービスの比較

SQS

Queueサービス、アプリケーションを統合するのに向いたサービス、KVS

Amazon MQ

Apache MQからの移行向け、ActiveMQ、RabbitMQのマネージドサービス

SNS(Pub/Sub)

Messagingサービス、アプリケーションを統合するのに向いたサービス

SNS(Mobile push)

Pinpointセグメントプッシュに置き換えも検討可能なのでSNSのPub/Sub機能に比べてあまり使われません。

SES

eメールに特化

Pinpoint

キャンペーン、効果測定、顧客利用状況把握、分析基盤として利用することが可能

MSK(AWS)

Kafkaのマネージドサービス

ElasticCache(AWS)

Redisのマネージドサービス

サーキットブレーカー

何度かエラーになっているサービスは即時エラーを返してくれるような仕組みです。なので、ユーザーはエラーだった場合はいろんなサービスを経由することなく即時応答結果を得ることができます。

有名なサーキットブレーカー

Istio

サービスメッシュ。Kubenetesの拡張。サーキットブレーカーにも多数の機能があります。

Hystrix

現在はメンテナンスされていないです。

resilience4j

Hystrixの後継サービスで、Javaで実装されているOSSです。

App Mesh(AWS)

サーキットブレーカー以外にカナリアデプロイにも対応しています。マネージドサービスなのでできるだけ使った方が良いでしょう。

サービスディスカバリ

マイクロサービスはサービスが動的に生成破棄されるのでアクセス先のIP、ポート番号がわからない現象が起きます。

サービスレジストリ

クライアントとサービス間に配置しておき、サービスとIPアドレスのマッピング表を保持させます。やっていることはDNSに似ています。

有名なサービスレポジトリ

Zookeper(Apach)

Hadoopで利用されている。CLIを実行する実装が必要になります。公式ライブラリはJavaとCに対応。

Consul(Hashi Corp)

エージェントを使ってサービスを監視する。Hashi Corpはteraformを作っている会社。

Eureka(Netflix)

ロードバランスとフェイルオーバー。AWS向け。

etcd

エトセディーと読む。Kubenetesで利用されている。Kubenetesはetcdを使ってアクセス先のポートを見つけることに成功しています。

スポンサーリンク
  • 2022 07.16
  • miyabisan2
  • コメントを書く
  • AWS, マイクロサービス
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 07.11

    【AWS】「RDS」の冗長化、リードレプリカの活用事例

  2. 2021 01.10

    【AWS】VPCの「Route53 Resolver」について

  3. 2021 01.03

    【AWS】「Lambda」のパフォーマンスチューニング

  4. 2021 12.05

    【設計】「キューイング」とは?

  5. 2022 07.09

    【マイクロサービス】設計(通信、APIゲートウェイ、テスト、リリース手法、正常性確認、可観測性)

  6. 2022 07.16

    【マイクロサービス】「データの整合性」の担保(サーガ)

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Git】「pre-commit」について

【マイクロサービス】「データの整合性」の担保(サーガ)

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー