IaaS(インフラストラクチャー・アズ・ア・サービス)である「AWS(アマゾン・ウェブ・サービシズ)」には、データベース(DB)やロードバランサー(負荷分散装置)の運用管理を自動化する機能がある。これらの運用自動化機能の有用性を、AWSで仮想マシンを140台利用する日本のゲーム事業者が評価した。
東京・新宿に本社を置くgumiは、ゲームや占いサービスを携帯電話向けに提供する事業者だ。現在、100種類以上のサービスを提供しており、登録ユーザー数は累計で850万人を超える。
ユーザー数が多いのは、SNS(ソーシャル・ネットワーキング・サービス)の「mixi」で利用できる「mixiアプリ」としてサービスを提供しているからだ。
gumiは当初、mixiアプリを運用するのに、5台のサーバーを利用していた。しかしこれらが、サービス開始直後にダウン。ハードウエアを増強していたのでは、利用者の急増に追いつかないと判断し、AWSの仮想マシン貸しサービス「Amazon EC2」を利用することにした(図1)。現在140台の仮想マシンを運用し、利用料金は月額で500万円である。
同社にとって500万円という料金は、決して安価ではない。AWSより安いホスティング事業者もある。それでもgumiの堀内康弘最高技術責任者(CTO)は、「AWS以外を利用するつもりはない」と断言する。AWSが備える運用自動化機能を活用することで、インフラエンジニアの人件費を含めたシステム運用費を抑制できていると満足しているためだ。
データベース管理者が不要
AWSは、仮想マシン貸しサービスであるEC2や、ストレージサービスの「Amazon S3」など様々なサービスからなる。このなかでも堀内氏が「欠かせない」としているのが、RDB(リレーショナルデータベース)ソフト「MySQL」をサービスとして利用できる「Amazon RDS」だ(図2)。
Amazon RDSは、MySQLのインストールやパッチ適用、日次でのバックアップ作業などを自動化している。DBサーバーに障害が発生した場合でも、バックアップデータとトランザクションログを使用して、障害が発生した1分前の状態にデータを復元する。
さらにAmazon RDSの「Multi-AZ」というオプションを利用すると、MySQLのセカンダリーDBを、異なる「データセンターゾーン」で運用できる。Multi-AZは障害によってプライマリーDBが止まった場合でも、処理を自動的にセカンダリーDBに切り替える。「専門の管理者を抱えていない当社でも、RDBを無停止運用できる」と堀内氏は語る。
料金は仮想マシンのサイズによって変わり、Multi-AZを利用する場合は料金が2倍になる。gumiは68Gバイトのメモリーと、8個の仮想プロセッサコアを搭載する仮想マシンを利用する。Multi-AZ付きで、料金は1時間当たり6.2ドルだ。
gumiのmixiアプリが使用するRDBは、Amazon RDSの1台のみ。DBの性能を補うために、頻繁に読み出されるデータを格納するメモリーキャッシュの「memcached」や、キー・バリュー型データストア「Tokyo Tyrant」をEC2の仮想マシンで運用している。
サーバーの増減は手動で管理
gumiは運用する仮想マシンの台数を、mixiアプリの利用状況に応じて増減させている。かつては、負荷に応じて仮想マシンの台数を自動的に増減させる「Auto Scaling」という機能を使っていたが、今は手動に切り替えた。
Auto Scaling機能で問題になったのが、ロードバランサーの処理能力だった。ロードバランサー配下のサーバーが増えると、ロードバランサー自体の処理能力が限界に達する。そうすると、より性能が高いロードバランサーに処理が切り替わるが、切り替え時にシステム全体が一時停止してしまう。
「mixiアプリでは、アプリケーションの処理性能が低下すると、運営事業者のミクシィから当社にペナルティーが課せられる。その基準は、『応答時間が10秒を超える処理が10分間で1000件以上発生した場合』。ロードバランサーの不調によるシステム停止は許容できなかった」(堀内氏)。
Auto Scaling機能は便利だが、規模の大きいシステムには向かないようだ。