8章分散システムの問題

僕らは出会ったばかり

ネットワークは遅れ気味

だけど僕のデータはここにある

なんとか保存してはくれないか

――Kyle Kingsbury, “Carly Rae Jepsen and the Perils of Network Partitions”(2013)

これまでの数章で繰り返し出てきたテーマは、おかしくなったことをシステムがどう扱うのか、ということでした。論じてきたのは、たとえばレプリカのフェイルオーバー(「5.1.3 ノード障害への対処」)、レプリケーションのラグ(「5.2 レプリケーションラグにまつわる問題」)、トランザクションの並行性制御(「7.2 弱い分離レベル」)といったことです。現実のシステムで生じうる様々なエッジケースの理解が進めば、それらをうまく扱えるようになります。

しかし、これまでフォールトについて多くを語ってきたとはいえ、これまでの数章はあまりに楽観的過ぎました。現実はもっと暗いものです。ここからは最大限に悲観的になり、おかしくなるかもしれないことは必ずいつかおかしくなるものと考えましょう†1(経験豊富なシステム運用担当者は、これは妥当な推定と言うでしょう。うまく聞き出せば、過去の戦いの古傷をいたわりながら恐ろしい物語を聞かせてくれるかもしれません)。

分散システムを扱うということは、単一のコンピュータ用にソフトウェアを書くこととは根本的に異なります。そしてその主な違いは、驚くべき問題が新たに、そして大量に現れるということです[1, 2]。本章では、実際に生じる問題をつかみ、何を頼りにできて、何を頼りにできないのかを理解しましょう。

結局のところ、エンジニアとしての私たちのタスクは何もかもがおかしくなったとしても仕事をこなしてくれる(たとえばユーザーの期待に添った保証を提供する)システムを構築することです。 ...

Get データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.