現代システムにおける通知の重要性
さて、現代的なサービスで重要なことは何でしょうか?
唐突な質問で「???」となったかもしれませんが、それは知ってもらうことです。実際にサービスを作って運用してみるとわかりますが、インターネットという電子砂漠の中で知ってもらうことが一番大変です。実際にウェブサービスを知ってもらっても、店に入らずすぐに帰る顧客も沢山います。
また、来店した顧客にメールアドレスを教えてもらったら、昔はメールを送るだけでした。住所を書いてもらったら、DMを送るなどもしていました。
ですが、これらの方法はだいぶ時代遅れ、というかEC以外のウェブサービスにはあまり効果は薄いです。
では、最も効果があるのは何でしょうか?それは、言わずと知れたPush通知です。
しかし、通知というものは上手くやることでユーザーはうれしくなりますが、上手くやらないと嬉しくなりません。会社のブランディングにまで影響してくるのです。
ですので、安売りのような通知はPushで頃合いを見てリアルタイムに出す必要がありますし、読ませるようなものはメールで休日にでも出して上げるなど、ファンづくりの一環として実装すべきものなのです。
Webサービスにメッセージを送るSQS
では、通知はどうやれば実装できるのでしょうか?実は、最近のクラウドサービスでは最初からPush用の環境を実装しており、安価に利用することが出来ます。例えばAWSではこの機能のことを、SNS(Simple Notification Service)と呼んでいます。
このSNSはサーバレスアーキテクチャのため、AWSが用意しているAPI等を経由して、すぐに通知をWebサービスなどに送信できます。この時、モバイルOSへの通知はOS毎のフォーマットに合わせてカスタマイズすることも出来ます。しかし、単純に通知のメッセージを出して、Webサービス上にアラートを出すだけならば、SQSというメッセージキューイングシステムを使います。
私はRuby on Railsを使って実装していますので、Shoryukenというオープンソースライブラリを利用して実装しました。
SDKであっというまにメールが送れるSES
つづいてはSESです。SESはSimple Email Serviceの略で、その名の通りSMTPサーバを立てずにEmailを外部に送信できるサービスです。迷惑メール問題もDNSサーバであるRoute53にSPFとDKIMを設定すれば問題なく送信できます。ただし、大規模なメールマガジンのようなものを送信する場合は専用業者のシステムを経由したほうが良いです。
それはメールの負荷もさることながら、迷惑メール対策を行っている各キャリアの設定を回避する方法を知っているからです。
同様のサービスにはSendGridなどがあります。またメール一斉送信はMailChimpなどのソリューションがあるので、上手く組合せて使うことが大切です。
無理に一つのソリューションで解決するのは時間の無駄なのでよくありません。
まとめ
ここまでは概念と各ソリューションについて説明してきました。サーバレスアーキテクチャとして、他のAWSのサービスとは少し毛色の違った実装がなされている通知系のサービス群。SDK等を活用することで、さっと作れる仕様なのは開発者の工数削減にも繋がりますし、メンテナンスコストも少なくて済みます。
このように、便利な機能があるのに実装せずに無駄な工数を掛けていたならばもったいないということです。マネジメント側も知識をつけて、無駄な実装をさせていないのか定期的にチェックしましょう。
さて次回は、私達が実際にどのように実装したのかを解説します。Ruby on Railsを使っておりコード自体は非常にシンプルですが、1行でもコードを減らす努力を行うことで、運用面も楽になっていきます。