サービスの障害について考える!


Silicon Valley Super Ware

2020年7月29日


サービスの障害について考える!

今日は予定を少し変更して、サービスの障害の話にします。
というのも、今回の外部サービスとして利用しているSendGridのサービスに 昨日障害が発生していました。

障害は起こりえる物です!大切なのはそれにどのように対応するかです。

もちろん、障害が起きない方が良いに越したことはありませんが、 完全に障害を取り除くことは現実的には相当ハードルが高いのも事実です。 大企業の提供するサービスには小さな障害が社会的な問題になる事もあるので、 相当なお金をかけて、その可能性を極限まで「ゼロ」に近くなるような努力をしています。 しかし、完全に「ゼロ」にはなかなかできないのが現状です。
逆に言うと、一般的なサービスは障害は起きるものと考えた方が無難です。 障害ではなくても、システムのメインテナンスの為に一時的ですが サービスが中断されることも多いのが現状です。
外部のサービスをあなた自身のサービスに組み込む場合、 あなたの作る部分だけではなく、外部のサービスの障害も 結果的にあなたのサービスの問題になる場合もあるわけです。

障害の影響を見積もる!

サービス一般の話はいろいろな障害の可能性があるので余り役に立つ話はできません。 今回は今回採用した、「SendGrid」のサービスの障害を中心に考えてみます。
今回の連載では、「メッセージの送信」と「メッセージの追跡(トラッキング)」 について実際に使ってみようという趣旨で連載してきました。 実際は完全なサービスにすることを考えると、他の機能も実装する必要があることは 既に触れた通りです。
考えられる障害は
  • メッセージが配信されない
  • 宛先の登録ができない
  • 送信者の登録ができない
  • 配布リストに宛先が登録できない
  • (上記の)情報の更新ができない
  • (上記の)情報の削除ができない
  • 上記の情報が取得できない

というのが考えられる主な「問題」です。

当たり前ですが、一番大きな問題は言うまでもなく 「メッセージが配信されない」 です。
次が、宛先の登録ができないです。
その他の物は、問題ですが「後でやっても何とかなる」場合が多い 問題です。
そう考えると、対処を考えた方が良い問題は、「メッセージの送信」と 「宛先の登録」です。

最重要項目はどちら?

では、最も重要な機能はどれかという事を考えてみましょう!
まず考えるのは基本機能である「メッセージの送信」です。
考えるのはメッセージの送信の「緊急性」です。
「今本当にメッセージが送れないと困るか?」です。 当然、送ろうとしていたメッセージが送れないわけですから困ります。 でも、送れない時はどうしますか?

緊急の場合なら、別な手段を考えるはずですよね?
E-Mailや電話を使えばとりあえずその場は凌げます

もう少し言えば、殆どのマーケティングメッセージは後から送りなおしても大きな問題では 無い場合が殆どです。SendGrid側でも復旧後には受け付けたメッセージは送信する場合が 殆どです。つまり、サービスを利用する側としては、障害で送信が受け付けられなかった メッセージを後から送る仕組みがあれば、ほぼ問題は解決です!
つまり必要な事は2つです!
  • 後でやり直しできるように、送るメッセージの控えを残す
  • メッセージが受け付けられたかチェックする(問題を把握する方法を持つ)
これが出来れば対処可能です!
実は、やっかいなのが「宛先の登録」です。 これの対処方法が実は最重要項目である場合が多くなります!
理由は簡単で「やり直しが難しい」処理だからです。
ビジネスをされている方は既にお分かりかもしれませんが、「興味がある人のリスト」は資産です 例えば、メルマガに登録しようとしたときに、システムの障害で登録できなかった場合、 その人が、後で登録をする場合はあると思いますが、無い場合も相当数あります。 無かった場合は、「機会の消失」になってします。
メッセージを送る場合、メッセージを送る人はこのサービスの場合、サービスの利用者です。 ところが、登録する人は、多くの場合は、サービスの利用者の顧客である場合が多くなります。 つまり、「他の人」です。 この場合、やり直す為の情報と機会が大きく変わってきます。 たとえば、メッセージは作ったメッセージを残すのが一番ですが、最悪の場合 メッセージを作成しなおして送るという選択肢があります。利用者が作ったメッセージなので 全く同じとは言わなくても、かなり近いメッセージをも打ち度作る事はある程度可能です。
一方で、宛先の登録(=メルマガの登録)だとすると、登録するのは「別の人」です。 登録する人がやり直してくれる可能性は未知数です。 ここに難しさがあります。

対処方法は?

完全に障害を回避する方法は難しいですが、問題を最小化する事は意外に簡単にできるものです。
例えば、宛先の登録の場合SendGridで障害が起きている時に同時に、Firebaseでも障害が起きている可能性は かなり低くなります。そう考えると、登録情報をFirebaseに残すようにするだけで、後でやり直すチャンスは格段に 大きくなるものです。
こうした、重要な情報が「無くならないようにする」のが重要なポイントです。 Firebaseを利用するというチョットした事ですが、これだけであなたのサービスの信頼性は格段に向上します。
Webサービスの開発で重要な事は、プログラミング技術で機能を実装する事も重要ですが、 それ以上に大切なのは、サービスの中身と優先度を考えて、いかに価値の高いサービスにするかが 実はとても重要です。 同じ機能でも、サービスの作り方でサービスの価値は大きく変わります。
シリコンバレースーパーウエアでは、単に機能を作るだけではなく、利用者を第一に考えた 使いやすく価値のあるサービス作りの手法を提供しています。 単純に、Webサービスを作るだけではなく、どのように作って、どのようにビジネスにつなげて 行くかが鍵です。また、フリーランスの方だけではなく、就職を考えている方にも 「実践力」を養うことで「即戦力」のエンジニアとしてのスキルを身に着ける事ができます!

興味のある方は今すぐお問合せください!



またよろしければ、ニュースレターの登録をお願いします!大体週一回お届けしています。ブログよりは一歩踏み込んだもっと濃い内容を発信しています。



Copyright(c) 2020 by Silicon Valley Super Ware, all rights reserved.

コメント

このブログの人気の投稿

ユーザーインターフェースの設計

足し算以外もできるようにする

改良版足し算プログラム