本文へスキップ
← 記事一覧に戻る

Pull型アーキテクチャ

Pull型アーキテクチャとは

システム開発における Pull型アーキテクチャ とは、データや処理の流れが「受信側(Consumer)が能動的に取得しにいく」設計思想です。対義語は Push型(送信側が能動的に配信する)です。

Push型との比較

観点 Pull型 Push型
主導権 Consumer(受信側) Producer(送信側)
タイミング Consumerが任意のタイミングで取得 Producerが発生時に配信
代表例 ポーリング、GraphQL、RSS Webhook、Server-Sent Events、Push通知
結合度 疎結合になりやすい 密結合になりやすい

Pull型の代表的なパターン

1. ポーリング (Polling)

ConsumerがProducerに対し、定期的にリクエストを送り新規データを確認する。

Consumer ──[GET /jobs?status=pending]──> Server
Consumer ──[GET /jobs?status=pending]──> Server  (定期繰り返し)

用途: バッチ処理のジョブキュー監視、外部API連携

2. メッセージキュー (Message Queue)

ConsumerがキューからメッセージをPullする形式。

Producer --> [Queue] <-- Consumer (Pull)

代表ミドルウェア:

  • Apache Kafka(Consumer Groupがoffsetを管理しPull)
  • Amazon SQS
  • RabbitMQ(Pull/Push両対応)

3. イベントソーシング + Pull

イベントストアに蓄積されたイベントをConsumerが任意に読み取る。

Pull型のメリット

  • Consumerの処理能力に合わせて取得量を制御できる(バックプレッシャーの実現)
  • Producerがconsumerの状態を知る必要がない(疎結合)
  • Consumer側のスケールアウトが容易
  • 障害時の復旧が容易(再度Pullし直せばよい)

Pull型のデメリット

  • リアルタイム性が低下しやすい(ポーリング間隔の問題)
  • 不要なリクエストが増える(データがなくてもポーリングが発生)
  • ポーリング間隔の設計が難しい(短すぎると負荷増大、長すぎると遅延)