ZOZOTOWNのPUSH配信基盤をFCMにシームレスに移行するための考慮ポイント - ZOZO TECH BLOG
こんにちは、MA基盤チームの田島です。ZOZOTOWNでは、ユーザコミュニケーションの手段としてLINE、MAIL、アプリへのPUSH通知を利用しユーザへのお知らせを実現しています。 ...
https://techblog.zozo.com/entry/migrate-push-notification-to-fcm
こんにちは、MA部MA基盤ブロックの齋藤(@kyoppii13)です。
ZOZOTOWNではアプリ向けのキャンペーンやセール情報などの配信でプッシュ通知を利用しています。プッシュ通知で配信するキャンペーンはセグメントに向けたマス配信のみで、ユーザごとにパーソナライズして配信するためのパーソナライズ配信には利用していませんでした。また、パーソナライズ配信の中にはリアルタイム性が求められるキャンペーン配信も含まれます。そこで、リアルタイムキャンペーンでプッシュ通知するための配信基盤を作成しました。
本記事では、リアルタイムなプッシュ通知を実現するために作成したシステムの紹介と、安定した配信を実現するために行った工夫について紹介します。
本章では、従来のプッシュ通知と課題について説明します。
ZOZOTOWNではアプリ向けのキャンペーンやセール情報をプッシュ通知を含む様々なチャネルで配信しています。配信するキャンペーンの種類は大きく分けて、マス配信とパーソナライズ配信の2種類があります。
マス配信は、ある条件に一致する一定のユーザに対してバッチ処理によって一括で配信しています。パーソナライズ配信はユーザごとにパーソナライズしてキャンペーン配信します。中にはリアルタイム性が求められるキャンペーン配信も含まれます。例えばカートに入れたままで注文が確定していない商品のリマインドなどがあります。マス配信とパーソナライズ配信の基盤はそれぞれ分かれて存在しています。
マス配信ではすでにプッシュ通知を利用していました。プッシュ通知にはFirebase Cloud Messaging(以降、FCM)を利用しています。FCMに対象者と送信するメッセージ内容をリクエストすることでプッシュ通知が可能です。
マス配信でのプッシュ通知について、詳しくはこちらをご覧ください。
パーソナライズ配信は施策効果も大きいことから、プッシュ通知を利用したいというニーズがありました。
パーソナライズ配信基盤のみでプッシュ通知をするのであればパーソナライズ配信基盤を改修し、直接プッシュ通知もできました。しかし、パーソナライズ配信基盤は改修コストが大きく、システムが複雑になってしまいます。また、将来的には配達状況などを通知するトランザクションメッセージなどでもプッシュ通知をしたいというニーズから、複数のシステムから利用できる統一的な配信基盤が必要でした。
前述の課題を解決するために、プッシュ通知のための配信基盤を作成しました。システムのアーキテクチャを下図に示します。
プッシュ通知を配信したい場合はこのシステムに対して対象者と通知内容をリクエストします。システムはそれを受けてデータを整形し、FCMにリクエストすることでユーザにプッシュ通知が届きます。また、配信時に配信実績をBigQueryに保存します。
配信基盤の入力は下図の赤枠で示した部分です。
配信基盤は入力にPub/Subを利用しています。以下のようなフォーマットのメッセージを受け取ります。
{
"source": Integer,
"source_uid": Integer,
"registration_token": String,
"member_id": Integer,
"push_info": {
"title": String,
"body": String,
"url": String,
"image_url": String
}
}
各パラメータの説明を以下の表に示します。
続きはこちら