ナビタイムはコストを半減、「スポットインスタンスを制する者はAWSのコスト最適化を制する」:ほぼ月刊AWS(2)(1/2 ページ)
「Amazon EC2」の購入オプションは複雑ですが、うまく使えばコストを大きく引き下げられるとされるのがスポットインスタンスです。ナビタイムジャパンは、これを使ってEC2のコストを半減できたといいます。
2020年9月中旬には「T4gインスタンス」が発表され、東京を含むリージョンで提供開始となるなど、Amazon Web Services(AWS)の最も基本的なサービスである「Amazon EC2」のインスタンスタイプは多様化(および移行)が続いています。
Amazon EC2をコスト効率よく活用するためのカギとされているのが「スポットインスタンス」です。ナビタイムジャパンの「乗換NAVITIME」では、AWSへの移行直後と比較して、リクエスト数は20%増加したにもかかわらず、コストは80%削減できたそうです。このコスト削減で大きな役割を果たしたのがスポットインスタンスだといいます。
ナビタイムジャパンACTSインフラグループの田中一樹氏は、「AWS Japan Summit Online 2020」におけるセッションで、「スポットインスタンスを制する者がAWSのコストカットを制す」と語り、同社のAmazon EC2利用におけるコスト最適化を説明しました。
今回の「ほぼ月刊AWS」では、AWS Japan Summit Online 2020の関連セッションから、スポットインスタンスの現状や使い勝手、課題などについてのコメントをまとめてみます。
スポットインスタンスとは、あらためてどういうもの?
スポットインスタンスは、クラウドサービスとしてAWSが用意している余剰リソースの一部(「スポットプール」としてある程度のリソースを割り当て)を、安価で利用できるようにした購入オプションの1つです。
Amazon EC2における他の購入オプションには、起動したいときに起動し、不要な時にやめる「(割引なしの)オンデマンドインスタンス」、1年あるいは3年といった単位で購入をコミットすることで割引が得られる「リザーブドインスタンス」、複数のインスタンスタイプやサイズにまたがるコミットで、リザーブドインスタンスをより柔軟にしたものともいえる「Savings Plans」があり、複雑なことになっています。さらに東京リージョンではまだ提供されていませんが、リザーブドインスタンスの一種で、1日数時間だけ稼働したいような場合に使える「Scheduled Reserved Instances」があります。
Amazon EC2の購入オプション。この他に東京リージョンでは提供されていない「Scheduled Reserved Instances」がある(AWS Japan Summit Online 2020における後出の滝口氏による講演の資料より)
これらの中で、オンデマンドインスタンスに比べて最大9割引と、圧倒的に安価なのがスポットインスタンスです。安価である一方、AWS側のキャパシティーの都合により、停止となる、あるいは起動ができなくなる可能性があるため、これらに対応できる用途で使うことになります。
スポットインスタンスの価格は、スポットプールごとに流動的に推移し、空き容量が少なくなると上昇し、多くなると下降します。スポットプールはアベイラビリティゾーン(AZ)、インスタンスタイプごとに設定されています。そして、ユーザーが設定する上限価格よりもスポットインスタンス価格が下回っている限り、オンデマンドインスタンスなどと同じ品質で利用でき、逆にこれを上回ると、2分の猶予をもって中断される、あるいは新たに起動できないということになります。
「起動のしやすさはEC2サービスの需要、空きキャパシティーだけで決まるため、オンデマンドインスタンスの10倍の価格を上限価格として設定したとしても、起動のしやすさは変わらない」と、アマゾンウェブサービスジャパンのEC2スポットインスタンススペシャリスト、滝口開資氏は同カンファレンスの別セッションで話しました。
この図では、「ap-northeast-1a」における「c5.large」インスタンスタイプの空きキャパシティーが不足したため、c5.largeは起動できない(AWS Japan Summit Online 2020における滝口氏による講演の資料より)
スポットインスタンスはサービス提供開始当初、必ず上限価格を入札する、オークション的な機能のイメージでした。しかし、現在ではオンデマンドインスタンスの価格がデフォルトで上限価格に設定されます。これより低い上限価格をユーザー側が設定することはできますが、より低いスポット価格でインスタンスの中断や起動不可が発生するため、「上限価格を設定せず、デフォルト設定を採用することを強く推奨する」と滝口氏は話しました。
停止の2分間前に通知を受けて、インスタンスを停止する、データをAmazon S3などに退避するといった作業を自動的に行うなどの方法で、対応できるような用途であれば使えることになります。特にコンテナサービスでは、オーケストレーション機能との連動ができるため、スポットインスタンスとの親和性は高いとされています。
ナビタイムのオンデマンドインスタンス「全廃」に向けた取り組み
ナビタイムジャパンでは、AWSへの移行時にアプリケーションをコンテナ化し、「Amazon Elastic Container Service(Amazon ECS)」で動かすことにしました。移行当初はこれを全て割引なしのオンデマンドインスタンスで動かしましたが、その後スポットインスタンスの積極活用へと舵を切りました。とはいえ全断しては困るため、全てをスポットインスタンスで賄うわけにはいきません。だからといって、スポットインスタンス以外を全てオンデマンドインスタンスで動かすのではコスト削減効果が限定的となります。そこでオンデマンドインスタンスを極力リザーブドインスタンスに移行し、さらにスポットインスタンスを最大限に活用しようと考えたといいます。
そこでナビタイムは、「Amazon EC2 Auto Scaling」のミックスインスタンスグループ機能を活用しました。
これは異なるインスタンスタイプ、購入オプションを組み合わせて単一のスケーリングポリシーを適用できる機能です。
インスタンスタイプについては、Amazon ECSで定義したCPU/メモリサイズを超えるものから、あまり使われていないものも含めてできるだけ多様な選択を行い、起動できる確率を高めたといいます。
Copyright © ITmedia, Inc. All Rights Reserved.