目次
ネットショップ作成サービス「カラーミーショップ」では、ショップオーナーさまに安心して使っていただくために、カラーミーショップで起きた重大な障害の原因とその対策について、「安定したサービス提供のための改善レポート」という形で継続的に発信していくことにしました。
今回の記事では、2021年の7月から9月までに発生した2件の障害の原因と、現在取り組んでいる対策についてお伝えします。
2021年7月の障害は、カラーミーショップが利用しているデータベースサーバが高負荷状態になってしまったことが原因です。カラーミーショップでは、管理者ページ・ショップページ・カートページが同じデータベースサーバ群に接続していたため、高負荷状態が複数のページに影響を与えてしまいました。
障害発生時のデータベースの状態を調査した結果、データベースサーバの高負荷状態を引き起こしたのは、管理者ページ改善のために追加した新しいクエリ(SQL文)であることもわかりました。
カラーミーショップでは、検証用の環境で動作確認を行った上でリリースをしています。動作確認では、意図しない動きをしないか、エラーが発生しないかといったこと以外に、パフォーマンスの観点でも確認します。しかし、この障害を引き起こしたクエリは、本番環境と同様のデータ量の場合にのみパフォーマンスの問題を引き起こすもので、動作確認では問題ないと判断されたものでした。
これらの障害に対しては、現在3つの対策を並行して進めています。
新しいクエリや変更されたクエリが存在しないかを自動的にチェックする仕組みを導入し、新しいクエリがあった場合は本番と同等のデータ量でチェックすることを開発プロセスに組み込みました。
データベースサーバを性能の高いものに変更し、既存のクエリで潜在的に同じ問題を抱えているものがあった場合の影響が小さくなるようにしました。
2021年10月より、パフォーマンス改善に専属で取り組むチームを組織し、データベースを中心としたパフォーマンスの継続的なモニタリングと改善を行うことにしました。このチームの活動については、改めてお伝えしますので続報をお待ちください。
2021年9月の障害は、GMOペパボが契約しているデータセンターと、外部のクラウドサービスを接続する専用線に不具合が発生したことが原因でした。
カラーミーショップは、自社で管理しているプライベートなクラウド基盤と、パブリックなクラウドサービスを組み合わせてサービスを提供しています。また、外部のクラウドサービスをセキュアに利用するため、専用線を使ってデータセンター間の接続を行っています。専用線は2系統による冗長構成(※)をとっていましたが、今回の障害ではその両方が影響を受けてしまいました。
※冗長構成とは、障害が発生した場合でもシステム全体の機能が維持できるよう、予備やバックアップを配置して運用することを言います。
今回の障害を受け、障害時に代替経路となるセキュアな通信を確保する方法の検討と導入を進めています。また、障害発生時の早期復旧のために、切り替えの訓練やリハーサルなども計画しております。
本記事では、2021年7月から9月の間に発生した2件の障害について、原因と現在取り組んでいる対策についてレポートしました。今後もショップオーナーさま、購入者さまに、より安心してご利用いただけるサービスとなるよう、安定したサービス提供のための改善に取り組んでまいります。
登録時間はたった3分