オンライン対戦が楽しめたり、ゲームデータのバックアップなど、さまざまな機能が利用できるNintendo Switch Onlineは、会員制のサービスです。加入の仕方には2つあって、個人プランとファミリープランがあり、加入期間も1か月、3か月、12か月から選べるようになっています。その加入状況を管理するのが、私が開発を担当した「権利管理サーバー」です。サービスにアクセスしてきたお客様が、どのプランに、どれくらいの期間加入しているのかを判別するサーバーで、そこを通らないとサービスを楽しむことのできない、いわば“関所”のような存在です。
ですから、もしサーバーがダウンしてしまうと、お客様がオンラインゲームで遊べなくなってしまいます。そもそも、お客様の目的は“関所”を通ることではなく、オンラインゲームで遊ぶことですので、サーバーがダウンしているせいでゲームが遊べなくなることは絶対に許されません。
また、このサービスはNintendo Switchが発売されてから1年6か月後にスタートすることになったのですが、当時Nintendo Switch本体の累計販売数は1500万台を超えていました。そのため、サービス開始日には世界中からたくさんのお客様がその“関所”にアクセスすることが予想されたのです。入社3年目だった私は、この「権利管理サーバー」の開発を担当することになったのですが、責任重大な仕事だけあって大きなプレッシャーを感じました。
そもそも、絶対にダウンしないサーバーというのは存在しません。サーバーは物理的な機械ですので、いつかは壊れてしまいます。そこで、サーバーは壊れるものだという前提で、予備のサーバーを用意したり、アクセスに応じて柔軟に増減できるようにシステムを設計しました。サーバーを増やすとそのぶん費用もかかってしまいますが、今回はサーバーをダウンさせないことを優先すべきだと判断しました。
そして重要なのが負荷テストです。これは、想定されるアクセス数で負荷をかけてみて、サーバーが問題なく動くかどうかをテストするというものです。今回は、過去のネットワークサービスの利用状況をもとに、ある程度の予測を立ててテストをしました。しかし、初めてスタートするサービスの場合、実際のアクセス数を正確に予測することは難しく、想定を超えるアクセスが発生する可能性も十分にありました。もしそうなると、サーバーがダウンしてサービスが利用できなくなってしまうかもしれません。そこで、想定外のシナリオを用意して、入念にテストを行うことにしました。想定よりも大きな負荷がかかったときに、システムのどの部分でどのような異常が起こるのか、それを直すのにどういう手順が必要なのかをドキュメント化して、サービス開始に備えたのです。
そうして迎えたNintendo Switch Onlineのサービス開始日は、落ち着いた気持ちで迎えることができました。サーバーシステムの開発は2か月ほどで終わったのですが、負荷テストには3か月ほどの間、毎日ひたすら負荷をかけて、グラフとにらめっこしていました。なので、やれることはすべてやりきった感がありましたし、対応ドキュメントを作ったことで、どんなことが起こっても、即座に対応できる自信がありました。はじめは大きなプレッシャーを感じていましたが、入社3年目で、このような責任重大なプロジェクトに挑戦できたことは、自分の財産になったと思っています。
※AWS Summit 2019 Osakaで、田中が「権利管理サーバー」についての講演を行いました。
その際に使用した講演の資料(PDF)はこちらからご覧いただけます。https://pages.awscloud.com/rs/112-TZM-766/images/D-06.pdf(AWS Summit 2019公式サイト内)