10章バッチ処理
1人の人物に強く影響されすぎたシステムは成功できない。初期の設計が完了し、十分に頑健になっているなら、多くの様々な視点を持つ人々がそのシステムを独自に体験し始めたときに、本当のテストが始まるのだ。
――Donald Knuth
本書の第Ⅰ部と第Ⅱ部では、リクエストやクエリ、そしてそれらに対応するレスポンスや結果について多くを論じました。このデータ処理のスタイルは、多くの現代的なデータシステムが前提としているものです。ユーザーが何かを尋ねたり、ユーザーが指示を送信したりすると、少し後でシステムが(願わくば)答えを返してくれます。データベース、キャッシュ、検索インデックス、Webサーバー、そして他の多くのシステムがこのように動作しています。
こういったオンラインシステムでは、それがページをリクエストしているWebブラウザであれ、リモートAPIを呼んでいるサービスであれ、概してリクエストは人間のユーザーによって生じるものであり、ユーザーはレスポンスを待っていることが前提とされています。ユーザーをあまり長く待たせることはできないので、こういったシステムではレスポンスタイムに十分な注意を払わなければなりません(「1.3.2 パフォーマンスの表現」参照)。
Web及び増加しているHTTP/RESTベースのAPIによって、リクエスト/レスポンススタイルのやりとりは非常に一般的になり、当たり前のものとして受け止められるようになってきました。しかし、それがシステムを構築する唯一の方法というわけではなく、他のアプローチにもそれなりのメリットがあることは覚えておかなければなりません。それでは、3つの異なるシステムのタイプを区別しておきましょう。
- サービス(オンラインシステム)
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.