SMPPとHTTPの比較:どちらの接続が適しているか
永続的なSMPPセッションと、リクエストごとのHTTP呼び出しを比較します。スループット、配信レシート、コールバック、そして選択を左右する障害パターンを取り上げます。
SMPPは永続セッションを維持し、バインドごとにスループットのウィンドウを持ちます。HTTPはリクエストごとに認証を行い、イベントをコールバックで受け取ります。どちらも同じメッセージを運び、同じ配信状態を報告します。トラフィックの形と、チームが運用できる障害の種類で選んでください。
主な情報
- SMPPは1つのセッションを開いたままにし、バインドごとに処理中リクエストのウィンドウを持ちます。
- HTTPは送信のたびに新しい認証済みリクエストを開始し、配信レシートにはコールバックを使います。
- どちらのモデルも同じ配信状態を返します。トランスポートによって変わるのは、その届き方です。
- 障害パターンは異なります。SMPPではバインドのウィンドウが満杯になり、HTTPではコールバックが遅くなります。
このページの内容
結論をひと言で
送信量が少なく、トラフィックが突発的で、チームがすでにWebエンドポイントを運用しているなら、HTTPから始めてください。トラフィックが一定の流れになったとき、リクエストごとの認証と接続確立のコストが目に見えるようになったとき、または配信レシートを送信と同じトランシーバーセッションで受け取る必要があるときは、SMPPに移行します。多くのプラットフォームは両方を運用しています。送信の流れにはSMPPを、着信のコールバックにはHTTPを使います。
プロトコルは製品そのものではありません。メッセージが届くかどうかを決めるのは、ルート、送信者の登録、端末側のチェックです。SMPPとHTTPは同じメッセージセンターに到達するための2つの方法であり、どちらもうまく運用することも、まずく運用することもできます。
問うべきは、どちらのプロトコルが新しいかではありません。トラフィックの発生ペースに追いついて、チームがどの障害を把握し修正できるかです。午前2時に沈黙したバインドも、午前2時に失敗し続けるコールバックも、どちらも運用上の問題です。自社のツールで診断できるほうを選んでください。
同じ仕事、2つの形
| 項目 | SMPP | HTTP |
|---|---|---|
| セッション | 認証済みのバインドを開いたまま維持 | リクエストごとにキーを送信 |
| ウィンドウ | バインドごとに固定の処理中ウィンドウ | 同時実行数はクライアントと接続プールで設定 |
| 配信レシート | トランシーバーバインド(または別のレシーバーバインド)上の deliver_sm PDU | 自社エンドポイントへのコールバック |
| 着信メッセージ | レシーバーバインドまたはトランシーバーバインド上の deliver_sm | 自社エンドポイントへのコールバック |
| 再試行 | クライアントがウィンドウとバックオフを管理 | クライアントがリクエストを再試行し、プロバイダーがコールバックを再試行 |
この表はトランスポートについて説明したもので、各プロバイダーの実装を説明したものではありません。詳細はオンボーディングで確認してください。
スループットは形に従う
SMPPのバインドは、スループットのレートとウィンドウを割り当てて提供されます。セッションが開いていれば、送信にかかるのはPDUとその応答だけで、新たなハンドシェイクは不要です。そのためSMPPは、持続的な流れに対して効率的で、キャパシティ計画も予測しやすくなります。バインドの数を数え、割り当てを確認し、処理中のリクエストをウィンドウ以内に抑えてください。
HTTPは、接続を再利用すればコストは下がるものの、リクエストごとに認証と接続確立のコストがかかります。キャパシティはバインドのウィンドウではなく同時実行数で決まるため、クライアントは素早くバースト送信でき、その後レート制限やキューに突き当たります。この柔軟性はキャンペーンや少量のアプリケーションに適していますが、クライアントが同時実行数に上限を設けない限り、ピーク時の挙動を見通しにくくなります。レート制限とウィンドウは別の制御です。前者は1秒あたりのリクエスト数を、後者は処理中のリクエスト数を制限します。リクエストごとのコストが目に見えるのは大量送信時であり、1日数千件程度では表れません。
配信レシートと着信が統合方法を決める
SMPPは、配信レシートと着信メッセージを開いているセッション上で届けます。クライアントはそれらを受け取るためにセッションを維持し、各配信レシートを保存済みのメッセージIDと照合し、deliver_sm_resp で応答する必要があります。保護すべきコールバックエンドポイントはありませんが、見守るべきセッションがあります。開いているのに何も届かないバインドは、障害パターンの一つです。
HTTPは、配信レシートと着信メッセージをURLに届けます。受信側は署名を検証し、素早く応答し、イベントを非同期で処理します。よくある障害はコールバックの遅延です。プロバイダーがタイムアウトして再試行し、同じイベントが2回処理されます。冪等性キーと素早い応答は、最適化ではなく統合の一部です。
どの経路で配信レシートが届く場合でも、元のペイロードを保存してください。プロバイダーによる解釈は変わることがあり、サポート案件では元の状態やエラーコードが決め手になることがよくあります。メッセージID、ルート、時刻とともに保存してください。
設計段階で想定すべき障害パターン
| 障害 | どのように見えるか | 対処方法 |
|---|---|---|
| バインドのウィンドウが満杯 | タイムアウトと再試行が同時に増え、キューが伸びる | 再試行を止め、ウィンドウが空くのを待ち、バインドを追加する |
| 沈黙したセッション | バインドは開いているが応答が届かない | enquire_link を送信し、セッションをタイムアウトさせ、バックオフを入れて再接続する |
| 配信レシートの不一致 | 状態が誤ったメッセージに紐づく | 到着順ではなくメッセージIDで照合する |
| コールバックの遅延 | プロバイダーが再試行し、重複が発生する | 素早く応答し、非同期で処理し、冪等性キーを使う |
| 冪等性の欠如 | ネットワークの再試行でメッセージが2件作成される | クライアント参照を付与し、それを基に重複を排除する |
| エンコーディングのずれ | 長いメッセージが分割されて届く、または文字化けする | GSM-7またはUCS-2を意図的に設定し、セグメント数をテストする |
対処はいずれも運用上のものです。どのトランスポートを選んでも、これらが不要になることはありません。
選択と統合
送信の流れが持続的で、自社でサイズを決められるウィンドウをプロバイダーが割り当て、チームがセッションを運用できる場合は、SMPPを選んでください。セッションの運用とは、バインド管理、キープアライブ、再接続、PDU単位のログです。送信量が中程度で、チームがすでにセキュアなWebエンドポイントを運用しており、コールバックがアーキテクチャに合う場合は、HTTPを選んでください。送信経路と着信経路の担当者が異なる場合は、両方を選んでください。
どちらを選ぶ場合でも、求めるべき資料は同じです。テストルート、スループットの割り当て、配信レシートの形式、エラーコードの一覧、再試行ポリシーです。SMPPの解説ではセッションを、接続ガイドでは本番運用までの道筋を説明しています。
選択した内容は、数値とともに記録してください。ピークレート、バインドごとのウィンドウ、コールバックのタイムアウト、再試行の許容量です。これらの数値のない決定は、単なる好みにすぎません。ピークやチームが変わったときに見直してください。
理解度チェック
-
キャンペーンが毎秒40件で安定して送信され、配信レシートは同じトランシーバーセッションで受け取る必要があります。どのトランスポートが適していますか?
トランシーバーバインドを使うSMPPです。十分な数のバインドと、レートに合わせたサイズのウィンドウを用意します。HTTPでもこの送信量は運べますが、配信レシートはSMPPセッション上ではなく、コールバックで届きます。
-
コールバックエンドポイントの応答に8秒かかります。何が問題になりますか?
プロバイダーがタイムアウトして再試行するため、同じイベントが再度届きます。素早く応答し、イベントは応答の後で処理してください。
-
沈黙したバインドが、切断されたバインドより厄介なのはなぜですか?
切断されたバインドは目に見える形で失敗します。沈黙したバインドは開いているように見えるため、タイムアウトで露見するまでクライアントは送信を続けます。キープアライブのトラフィックがあれば、より早く発見できます。
回答は要求したときに表示されます。採点、保存、送信は一切行いません。
よくある質問
両方を運用できますか?
統合が早いのはどちらですか?
信頼性が高いのはどちらですか?
HTTPで大量送信に対応できますか?
固定IPは必要ですか?
関連
- SMPPとHTTPによる接続
バインド、ウィンドウ、配信レポートを壊さずにテストルートを本番へ移行します。バインド、スループット、キープアライブ、エンコーディング、コールバック、障害対応を扱います。
- グローバルA2P送信者IDプレイブック
市場ごとの送信者IDの仕組み:英数字、番号、ショートコードの各経路、登録で求められる事項、国別の例。
- A2P SMS
A2P(Application-to-Person)SMSは、確認コードや取引通知など、アプリケーションが登録済みの送信者を通じて端末に送るトラフィックです。
実践する
トラフィック、接続先、必要な測定内容をお知らせください。次のステップをご案内します。