店舗向けポータルサイトをELBを使って冗長化

飲食店を1,000店舗以上運営する企業のポータルサイト構築事例をご紹介します。店舗の席に置いてあるタブレット端末で表示するこのポータルサイトは、位置情報に基づいた情報配信を行っています。徐々に店舗への設置台数を増やしており、負荷状況に応じてサーバーの台数や性能を増強可能なAWSで構築しました。

概要

  • 店舗用タブレットで表示する情報ポータルサイト
  • ポータルサイトは独自システムで構築
  • 徐々に導入店舗を増やしていくため、負荷状況に応じてスムーズに対応可能な構成が必要
  • Webサーバーの冗長化構成を採用しました

構成

独自システムを動作させることと、一部パッケージを利用することからプログラムを動作可能とする必要があり、EC2を利用しました。店舗でのタブレット端末利用という使い方のため、突発的にアクセスが集中することは見込まれません。導入店舗数の増加に応じて、徐々にサーバー台数を増やす構成を選択しました。

構成解説

ALB(ロードバランサ)

インターネットからのアクセスをALB(Application Load Balancer)で2台のEC2インスタンス(Webサーバー)へ振り分けます。Webサーバーの役割は閲覧者向けにホームページを表示することに特化しており、特殊な振り分けルールなどはありません。HTTPSでのアクセスのため、SSL証明書を組み込んでいます。

EC2(公開用Webサーバー)

Webサーバー2台構成です。どちらがメインサーバー・サブサーバーなどの分類はありません。ポータルサイトのコンテンツが配置してあります。また、Availability Zoneというデータセンターの所在を別々に分けることで片方のデータセンター自体に何かがあっても動作し続けることが可能な構成としました。

以前利用していたドメインのリダイレクト処理を行いたい要件があり、EC2自体にもSSL証明書を組み込んでいます。

構築の効果

上記の構成で冗長化したポータルサイトには次のようなメリットがあります。

サーバーダウンが発生していない

サーバーを冗長化することで万が一サーバーに障害が発生した際も、サービスの停止が発生しません。セキュリティパッチ適用などのやむを得ないメンテナンスの際も、一台ずつメンテナンスをすることでユーザーに影響を与えることがありません。

柔軟なスペック増強

店舗に設置する端末の増加にともない、アクセス数が増加することが予想できているため、EC2を追加するだけで増強可能な仕組みとしました。既存のEC2インスタンスを複製して、配置することですぐに増強が可能です。

コスト削減

1,000台以上の端末を想定した構成を最初から構築すると、当初はアクセス数が少ないにも関わらず、大きなサーバーコスト、維持費用がかかってしまいます。現在のプロジェクトの状況に応じた適切な規模でサーバーを準備し、必要なタイミングで徐々にスペックを上げていくことでコスト削減ができています。

おわりに

Webサーバー2台というシンプルな構成ですが、徐々に規模を増やしていくというプロジェクトにクラウドは適しています。

今後、アクセスが増加した際は、(1)サーバーのスペックを上げる(2)サーバーの台数を横に増やす、の2つの選択肢が考えられます。

メンテナンスの手間を考えるとサーバーのスペック増強が望ましいです。一方、同時接続により応答が遅くなってしまったり、コストメリットが出るケースではサーバーの台数を増やすことも考えられます。状況をふまえ、それぞれのメリットを理解した上で構成を決定すると、より良い結果が得られます。

少し先の運用まで視野に入れてインフラ構築を行った事例でした。