遅延処理とは、ある処理に時間が掛かる場合、最も時間が掛かる部分を分離し、他の処理を先に進めてしまうことを指す。時間がかかる部分の処理結果が遅れて返ってくるので、遅延処理と呼ぶ。見かけの処理速度やスループットを向上させることができるのに加えて、空きリソースの活用や、負荷の平準化が図れるメリットがある。

 SOA(サービス指向アーキテクチャー)では、各サービスが非同期に連携することを推奨している。これは、アプリケーション処理方式における遅延処理といえる。受け付けだけをレスポンスとして応答し、それに続く後処理を遅れて実行するためだ。後処理にエラーが発生した場合には、前の処理に戻って打ち消し処理が必要になる。その点は前回の「トランザクション」を参照頂きたい。
 アプリケーションだけでなく、ハードやOS、ミドルウエアでも遅延処理が実装されているものが少なくない。それを見誤ってシステム設計すると、データを保全できなかったり、処理時間の超過を招いたりする恐れがある。ITアーキテクトとしては、この遅延処理の実態を把握しておきたい。

 最初に、ハードの遅延処理の代表である書き込みバッファとファイルシステムのI/O遅延処理、および、I/O遅延処理のデメリットをカバーするデータベース処理方式を説明する。次に、バックアップタイミングを保証するスナップショット技術と、その延長線上にある遅延バックアップ処理方式について解説する。

バッファでまとめて書き込み

 まず、遅延処理の代表である書込みバッファについてだ。アプリケーションから見ると、バッファリングした時点で次の処理に進めるが、実態としては見た目の処理よりも遅れる形で、バッファ上のデータが一定の量や時間ごとにまとめてディスクへ書き込まれる。こうして、バッファがCPUとI/Oの速度差を吸収しているのだ。