1章はじめに

今日のアプリケーションやAPIは常に動き続け、以前はごく少数のミッションクリティカルなサービスだけに求められていた可用性と信頼性が今や必要条件になっています。同様に、口コミによる急速なサービス成長の可能性があるので、どんなアプリケーションもユーザの要求に応えて直ちにスケールするよう作られなければなりません。このような制約や必要条件があることで、これから作られるアプリケーションはすべて、それが消費者向けのモバイルアプリケーションであるか、バックエンドの課金アプリケーションであるかに関わらず、分散システムである必要があります。

しかし、分散システムの構築は困難です。システムは1回限りのオーダーメードなものである場合も多いでしょう。その場合の分散システムの開発は、モダンなオブジェクト指向プログラミング言語の発展より前のソフトウェア開発によく似たものになります。幸いにも、オブジェクト指向言語の発展過程と同じように、分散システムの構築の難しさを劇的に低減する技術的な進歩がありました。それは、コンテナとコンテナオーケストレータが広く使われるようになったことです。オブジェクト指向プログラミングにおけるオブジェクトと同じく、構成要素がコンテナ化されることで、信頼性の高い分散システムを構築する方法が非常にシンプルで分かりやすくなります。そのため、コンテナは再利用可能なコンポーネントあるいはパターンを作る基本になります。この章では、現在に至る開発の歴史の概略を述べます。

1.1 システム開発の歴史概観

初期の頃は、射撃表や潮の満ち引きの計算、暗号解読、またそれ以外の正確さが求められて複雑だけれども決まった手順の数学的計算のアプリケーションといった、特定用途向けのマシンが使われていました。その後、こういった専用のマシンは汎用的でプログラマブルなマシンへと発展しました。さらに、同時に1つのプログラムしか実行できなかったものが、タイムシェアリングオペレーティングシステムを使うことで1台のマシンで複数のプログラムを同時に実行できるようになりました。しかし、各マシンはそれぞれ独立したままでした。 ...

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.