はじめに
サーバーレス大好きなエンジニアです!
今日はDynamoDBのコスト最適化についてAWS SUMMIT2024の内容を参考に説明していきたいと思います。
対象読者
- NoSQLを使用している方
- 今後NoSQLを使用したい方
- DynamoDBに関心がある方
- サーバーレスが好きな人
目次
- なぜコスト削減が重要なのか
- データベースのコスト削減
- NoSQLのコスト削減
- Amazon DynamoDBのコスト削減
1. なぜコスト削減が重要なのか
システムを運用する際には、さまざまなコストが発生します。
- インフラコスト
- ライセンスコスト
- オペレーションコスト
- 開発コスト
- ビジネスコスト
コストが十分に確保できないと最新技術の導入が難しくなり、新機能の開発ができなくなる可能性もあります。
つまり、コストを抑えることはビジネスの競争力を向上させるためにも非常に重要です。
2. データベースのコスト削減
データベースのコスト削減は、開発において必ずと言っていいほど取り上げられるテーマの一つです。
しかし、データベースが停止したり、データが消失したりすると、甚大な影響を及ぼすため、慎重に取り組む必要があります。また、専門的な知識が求められるため、むやみに手を加えない方が良いと考えるケースも多いと思います。
3. NoSQLのコスト削減
NoSQLは、他のデータベースと比較してコスト削減が容易です。また、AWSのサービスには目的別に特化したデータベースが用意されているのも特徴の一つです。
目的に応じたデータベースを選定することで、自然とベストプラクティスに近づけると言えます。
3.1 NoSQLのコスト削減ポイント
- サイジング
- スケジューリング
- 価格体系
- オプション設定
- データモデリング
適切な量・適切なタイミングで利用されているかを確認することは、非常に重要です。また、価格体系も新しいものを試してみようというケースでコストが増加していることがあります。
データモデリングに関しては、アプリケーションの内容に深く関わるため一概には言えませんが、データベースの特性を活かしたより良いモデリングが可能な場合もあります。
3.2 コンピューティングリソースの価格設定
コンピューティングリソースの価格設定は、大きく3つの体系に分類されます。
プロビジョンインスタンス
- インスタンスを使用
- スケールイン・アウトが可能
- 割り当てた分だけ支払い
- 定常的なワークロード向け
プロビジョンキャパシティ
- サーバーレス
- キャパシティ変更が可能
- 割り当てた分だけ支払い
- ある程度予測可能で、変化が緩やかなワークロード向け
オンデマンドキャパシティ
- サーバーレス
- キャパシティ変更が可能
- 実際に利用した分だけ支払い
- 予測が難しく、変化が急激なワークロード向け
4. Amazon DynamoDBのコスト削減
4.1 DynamoDBとは?
DynamoDBは、NoSQLの中でも非常に有名なデータベースです。主な特徴は以下の通りです。
- 一桁ミリ秒の応答速度
- 大規模なスケーラビリティ
- サーバーレス
DynamoDBは、大規模なデータでも一桁ミリ秒の応答速度を維持することができます。また、小規模なアプリケーションから大規模なシステムまで、同じアーキテクチャでスケールすることが可能です。さらに、サーバーレスであるため、サーバー管理の手間がなく、メンテナンスコストが低く抑えられるだけでなく、サーバーが落ちるといった障害もほとんどありません。
4.2 DynamoDBの価格帯系について
DynamoDBには、プロビジョンキャパシティとオンデマンドキャパシティの2つの価格体系があります。
その他の特徴として、結果整合性のある読み込みは消費リソースが半分になることや、読み込みは書き込みに比べて5倍安価であることが挙げられます。
プロビジョンモードは、オンデマンドモードと比較して最大7倍コストを削減できるというメリットがあります。さらに、プロビジョンモードではリザーブドインスタンスを利用することで、よりコストを抑えることが可能です。
一方、オンデマンドモードはオートスケーリングの設定やピーク時のキャパシティ管理が不要なため、オペレーションコストの削減につながります。
4.3 Standard-IAクラス
DynamoDBには、オプションとしてStandard-IAクラスがあります。
これは、ストレージへの書き込みが多い場合に有効で、特にデータ量が非常に多いケースに適しています。
まとめ
NoSQLは、目的に応じてデータベースを選定することで、比較的コストを最適化しやすい特徴があります。
本記事では、DynamoDBの価格オプションについても説明しました。また、データベースのコスト最適化においては、リザーブドインスタンスの購入だけで終わるケースが多いですが、さらに追加でコスト削減の検討を行うことが非常に重要です。この記事が参考になれば幸いです。