ECサイトの運営には「集客」「接客」「決済」「受発注」「発送」「在庫管理」「追客」「お客様サポート」と多くのことが必要になるため、そこには多くのテクノロジーや、データベースが複雑にからむために、ECサイトの運営はまさに「テクノロジー総合芸術」と言えます。
そのために、ECサイトの運営するとどうしても予期しない事故・障害が発生してしまいます。ECの事故や障害は無い方が良いに決まっているのですが、事故を完全に避けることは不可能です。ですから、ECサイトの事故・障害は事前と事後の対策が重要になってくるのです。
2019年5月22日にEC業界を代表する下記の4社が、エンジニア向けにECサイトの事故・障害等の事例発表会を「EC Tech Group #2 ここだけの話〜各社の事故事案〜」にて開催いたしました。
◆参加企業4社
アスクル株式会社
BEENOS株式会社
株式会社インターファクトリー
ヤフー株式会社
本日の記事では弊社、株式会社インターファクトリー(ebisumart)の発表事例を中心に、ECサイトの事故・障害について詳しく解説いたします。
※この記事は2019年5月22日に行われた「EC Tech Group #2 ここだけの話〜各社の事故事案〜」のイベントをもとに作成しております。
ECサイトにおける3つの事故・障害事例を解説!
株式会社インターファクトリー 高山 穣
弊社インターファクトリーでは「ebisumart」というクラウドSaaS型のECサイトを運営しており、現在数百店舗のEC事業者様が、このクラウド環境(ebisumart)を利用してECサイトを運営しております。
クラウドSaaS型のECシステムの最大のメリットはシステムの「最新性」と、事業者の「個別のカスタマイズ」の両方を実現することが可能なため、ebisumartを利用する事業者様が、ありがたいことに日々増えております。
そのため、問い合わせも多くよせられることで弊社エンジニアが対応すべきチケット(障害等のタスク)も増えつつあります。ECサイトに限りませんが、システムにおける事故や障害には下記のように2つの傾向があります。
◆システムの事故・障害の2つの傾向
①ヒューマンエラー
②仕組み不足(システムの事前検討漏れ等)
それらを踏まえて、実際にあった3つの事故・障害の事例を挙げていきます。
事例①ECサイトの商品発送不備
事例:ユーザーがECサイトで商品を購入したが、商品の発送がされなかった
通常、ECサイトの決済ではECシステム側が決済を行わず、決済代行会社に決済データを渡して決済を行います。決済代行会社側のシステムでは、商品購入したユーザーが選択するネット決済方法にあわせて「クレジットカード決済」「コンビニ決済」「ID決済」などが決済側のシステムで行われます。
この障害事例では、商品注文時に決済データを、外部連携先の決済会社のシステムに飛ばしましたが、受注データ作成時に予期せぬシステムエラーが発生し、データが作成されないことが原因でした。
この障害の対策として決済連携前に「仮の注文データ」を作っておき、注文完了後に仮のデータを削除する変更を行いました。
このように、サーバー間(ここではECシステムのサーバーと決済システムのサーバー)をまたいでの、データの受け渡しでは、データの不整合が発生する前提で仕様を検討する必要があるのです。
事例②データメンテナンス時に起きたヒューマンエラー
事例:一部のデータだけにデータメンテナンスを行ったが、全てのデータに修正が入ってしまった
SQLと言われるデータベース言語を使って、データの一部修正をエンジニアが行いましたが、SQLの記載ミスによるヒューマンエラーが発生したため、全てのデータに修正がかかってしまいました。幸いデータのバックアップを定期的にとっていため大事には至りませんでした。
単純なミスと思われるかもしれませんが、このようなミスはどの企業でも起こりうることで、会場に集まった多くのエンジニアから「私もやってしまったことがある!」といった共感が得られました。
ヒューマンエラーが起こってしまう背景には、必ず個人の問題ではなく、組織や業務フローに問題があります。この時のヒューマンエラーは作成したSQLのレビュー不足がありました。この対策として今後、このような手動オペレーションをする際は、必ず実行内容のレビュー(ここではSQLレビュー)を行うフローに改善を行いました。
重要なことは「ヒューマンエラーは必ず起こる」という前提で、業務フローの見直しを行うことです。
事例③アクセス数の増加によるサーバーダウン
事例:アクセス数急増によるサーバーダウン
ECサイトのトラフィックの特徴は「トラフィックが安定しない」ことにあります。なぜならEC事業者は売上拡大のために、テレビCMを行ったり、多くの注目を浴びるためにキャンペーンやセールスを仕掛けるからです。またファンの多い特定分野のECサイトで人気商品の発売を行う場合にも、想定外の急激なアクセスがある場合もあるからです。
アクセス増により、サーバーが不安定にならないように負荷テストを行うのが一般的ですが、それだけでは不十分です。つまり想定値の10倍のトラフィックがあった場合どうするかも想定する必要があるからです。
例えば、東京オリンピックのチケット申込のサイトですが、申込が殺到したため、チケットを申し込めないユーザーが不満を募らすことがニュースになりました。
しかし、開発エンジニアからみると「チケット申込サイトは想定以上のトラフィックに対しても良く機能している」と感心しました。なぜなら、チケット申込の画面はエラーを表示しているものの、サーバーにアクセスしたユーザーの一定数以上をウエイトに回しており、サーバーがダウンすることなくしっかり運用できているからです。
相当数のユーザーがウエイトに回ったため、不満が多かったのも事実ですが、それでもエラー画面を適切に表示させて、サーバーを止めない点は、ECサイト関係者にとっては非常に参考になります。
つまり、ECサイトの運営においては相当のトラフィックが来ることを事前に想定しておき、システムの想定以上のトラフィックが発生しても「どう振る舞うべきか」を事前に考えておくことが、ECサイトの運営では非常に大切になってきます。
例えば、エラーが出ることは望ましいことではありませんが、サーバーが止まってしまいレスポンスがないことよりも、はるかに良い状況と言えます。「事故や障害を出さない事」も重要ですが、「事故や障害が起こった際の振る舞い」を決めておくことは、ECサイトの運営には欠かせないことと言えます。
4社のEC業界人が語る!ECサイトの事故・障害で大切なこと
この日のイベントでは、4社の登壇がありました。そこで共有された「ECサイトの事故・障害」で大切なことを紹介いたします。
1社目:アスクル株式会社 木内さん
木内氏「障害や事故は出さない方が良いが、事故はどうしても避けられない。だから事前準備と事後対応が重要」
2社目:BEENOS株式会社 光本さん
光本氏「コミュニケーションが大切です。弊社では開発チームとCSのチームの代表同士が定例会議を開くことで、コミュニケーションがスムーズになった」
3社目:株式会社インターファクトリー 高山
高山氏「事故が起きそうだな。と思えば必ず起きる。だからすぐに改善することが重要」
4社目:ヤフー株式会社 山口さん
山口氏「冷静に対応すること」
企業間を超えたエンジニア同士の活発な議論や交流
この日は30名近くのEC事業関係者(主にエンジニア)があつまり、登壇者のプレゼンテーションの後には、多くの質問や共感がよせられるなど、大変盛り上がりました。
また、交流会では食事をしながら、各社の事故・障害対策などの意見を積極的に意見交換いたしました。
「事故があった」というのは決して褒められる状況ではありません。しかし、事故はどんなに対策をしても、起こってしまうものです。
ですから、EC事業者は「事故が発生する事前準備」と「事後の対応」が大切で、また決してあわてず冷静に対応することが求められるのです。