「あらゆるアーキテクチャには、競合する目標間の根本的なトレードオフが存在しますが、多くの組織はこの点を無視し、信頼性の低いシステムにつながっています。しかし、AWSはこれらのパラドックスを明確に受け入れており、特にS3やDynamoDBのような超大規模サービスを支える「Cells」アーキテクチャがその代表例です。中心的な課題は、大規模なスケーラビリティと障害の分離を両立させることです。なぜなら、単一の大きなクラスターの障害はすべてに影響を与えるからです。Cellsアーキテクチャは、サービスをセルと呼ばれる小さく自律的で隔離されたクラスターに分割することで、この課題に対処します。各セルは独自のコンピューティング、ストレージ、ネットワークを備えており、あるセルでの障害が他のセルに影響を与えないようにします。スマートなリクエストルーターが、受信トラフィックを適切なセルに誘導し、セルが正常でなくなった場合は自動的にルーティングを変更します。例えば、Amazon S3は、その広大なオブジェクトストアを管理するために数百のセルを使用しており、各セル内で強い一貫性を維持しています。この設計により、セルの追加によるほぼ無限のスケーラビリティが可能になり、単一の障害の影響範囲を限定します。ただし、セル間の操作は意図的に遅くするか不可能にしており、分離のための意図的な妥協です。DynamoDBも、高可用性のために個別のストレージセルとルーターセルを備えたセルベースのアプローチを採用しています。重要な教訓としては、シンプルで隔離されたセルを受け入れ、障害の封じ込めを明確に設計し、グローバルな一貫性の弱さを許容することが挙げられます。開発者やアーキテクトは、パーティション化できるように設計し、単一障害点を回避する必要があります。また、多数のセルを管理するためには、堅牢な自動化が不可欠です。Cellsアーキテクチャは、さまざまなテックジャイアントに共通するパターンであり、分散システムにおける障害の封じ込めには分離が鍵であることを示しています。」
dev.to
🦾 How AWS Secretly Breaks the Laws of Software Physics (And You Can Too)
Create attached notes ...
