はじめに

近年、特にサーバーサイドやバックエンドのシステムに関わるソフトウェアエンジニアリングに携わってきた方々は、おそらくデータのストレージや処理に関連する大量のバズワードの洗礼を浴びてきたことでしょう。NoSQL! ビッグデータ! Webスケール! シャーディング! 結果整合性! ACID! CAP定理! クラウドサービス! MapReduce! リアルタイム!

この10年の間に、私たちはデータベースや分散システム、そしてそれらの上でアプリケーションを構築する手法において数多くの興味深い発展を目にしてきました。またいくつもの力が、これらの発展を推進してきたのです。

  • Google、Yahoo!、Amazon、Facebook、LinkedIn、Microsoft、Twitterといったインターネット企業は莫大なデータとトラフィックを処理しており、その規模で効率的に処理を行える新しいツールを創造しました。
  • 企業はアジャイルでなければならず、仮説の検証を低コストで行い、開発のサイクルを短く、データモデルを柔軟に保つことによって、マーケットの新しい知見に対し素早く対応しなければなりません。
  • フリーでオープンなソフトウェアは大きな成功を収めており、多くの環境において商用ソフトウェアやカスタムの自家製ソフトウェアよりも好まれるようになりました。
  • CPUクロックの速度は向上しなくなっていますが、マルチコアプロセッサは標準的なものとなり、ネットワークの高速化も進んでいます。これはつまり、並列度は増していくばかりであることを示しています。
  • 小規模なチームで働いていても、今日ではAmazon Web ServicesのようなInfrastructure as a Service(IaaS)のおかげで、多くのマシンや複数の地域に分散するシステムを構築できるようになりました。 ...

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.