継続的なイノベーション: AWSブロックストレージの簡潔な歴史
(allthingsdistributed.com)継続的なイノベーション: AWSブロックストレージの簡潔な歴史
-
紹介
- Marc OlsonはElastic Block Store(EBS)チームで10年以上働いてきた。
- EBSは単純なブロックストレージサービスから、1日に140兆件を超える処理をこなす大規模なネットワークストレージシステムへと進化した。
- この記事では、EBSの進化の過程と重要な教訓を共有する。
-
EBSの初期の歴史
- EBSは2008年8月20日にリリースされ、EC2インスタンス向けのネットワーク接続ブロックストレージを提供するというシンプルなアイデアから始まった。
- 当初は共有ハードディスクドライブ(HDD)を使用していたが、現在では単一のEC2インスタンスに数十万IOPSを提供できる。
- EBSは現在、分散SSDフリートを通じて1日に140兆件を超える処理を実行している。
-
待ち行列理論
- コンピュータシステムがストレージと相互作用する方法は、基本的に変わっていない。
- CPUはリクエストをキューに入れ、ストレージデバイスはCPUメモリからデータを取得して耐久性のある媒体に保存するか、逆にデータをCPUメモリへ転送する。
- 待ち行列理論は、このプロセスを理解するうえで重要な役割を果たす。
-
HDDからSSDへの移行
- 初期のEBSはHDDを使用しており、これは物理的な限界によって性能が制約されていた。
- SSDの登場により、ランダムリクエストもほぼシーケンシャルリクエストと同じくらい高速に処理できるようになった。
- 2012年には、SSDを使った新しいストレージサーバータイプと、Provisioned IOPSという新しいEBSボリュームタイプをリリースした。
-
計測と管理
- 2012年当時、EBSには基本的なテレメトリしかなかった。
- システム性能を改善するには、何が問題なのかを突き止め、それを優先順位に従って解決する必要があった。
- 複数のサブシステムでIOを計測する仕組みを構築し、継続的な監視によって変化を検知した。
-
組織の分割統治
- EBSストレージサーバーチームを、データレプリケーション、耐久性、スナップショットのハイドレーションなど特定領域に集中する小規模チームへ再編した。
- 各チームは独立して変更を反復し、コミットできた。
-
前提への挑戦
- Xenハイパーバイザーのデフォルト設定が性能を制限していたことを発見した。
- Nitroオフロードカードを使って、ネットワークおよびストレージ処理をハードウェアにオフロードした。
-
ネットワークチューニングの実験
- EBSをNitroへ移行する際、ネットワーク自体のオーバーヘッドが増加した。
- TCPの代わりにSRD(Scalable Relatable Diagram)プロトコルを開発し、ネットワーク性能を改善した。
-
制約条件がイノベーションを促進する
- すべての顧客にSSDの利点を提供するため、既存ハードウェアを置き換えずにSSDを追加した。
- SSDをサーバーに手作業で追加し、新しい書き込みをSSDに保存した後、非同期にHDDへフラッシュした。
-
性能拡張を振り返って
- 個人的な成長の物語: 小さな会社の文化から大規模組織への移行。
- 同僚とのデバッグセッションを通じて問題を解決し、チームの効率を高めた。
-
結論
- EBSは単一の大規模な変更ではなく、一連の段階的な改善を通じて進化してきた。
- 顧客の要求は今後も増え続け、それがイノベーションと反復を続ける動機となる。
# GN⁺の要約
- この記事は、AWSのEBSがどのように進化してきたのかについて、内部関係者の視点を提供する。
- 待ち行列理論、SSD導入、ネットワークチューニングなど、さまざまな技術的課題と解決策を扱っている。
- 性能改善のための継続的な計測と管理の重要性を強調している。
- 類似機能を持つ製品としては、Google Cloud Persistent DiskやMicrosoft Azure Disk Storageがある。
1件のコメント
Hacker Newsのコメント
大規模システムに関心があるなら、この記事は読む価値がある
問題を解決するには、何がうまくいっていないのかを知る必要がある
2013年にEBSサーバーへSSDを導入したプロジェクトは、AWSの興味深い話のひとつだ
AWSで約4日間続いた障害はEBSが原因で発生し、AWSへの信頼を揺るがした
Redditは2008年にEBSの初期ユーザーのひとつだった
ランダムな遅延を加えると、平均遅延と外れ値の両方が減少する効果がある
大規模インターネット企業で働きながら、多くの教訓を得た
2013年にすべてのEBSユニットへSSDを手動で取り付けたという部分が興味深かった
2009年にAmazon S3の内部について講演した
クラウドの初期には汎用ハードウェアを使っていたが、今では個々のサービスに特化したハードウェアを使っている
最初の図は誤っているか古くなっている
新しいEC2インスタンスに高速な256GBデータセットディレクトリを提供する最良の方法を探している