第1章 システム設計のトレードオフとガイドライン システム設計のトレードオフとガイドライン
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
今日の技術革命は、大規模なソフトウェア・システムによって起きている。Google、Amazon、Oracle、SAPといった大企業は、いずれも大規模なソフトウェア・システムを構築し、自社(および顧客)のビジネスを運営している。このような大規模ソフトウェアシステムを構築・運用するには、実際にシステムをコード化する前に、技術アーキテクチャを設計・開発するファースト原則思考が必要となる。なぜなら、ユーザがシステムを必要とするようになったときに、これらのシステムが機能しなかったり、拡張できなかったりするような状態にはしたくないからである。
設計が最初に正しければ、実装の残りの旅はスムーズになる。そのためには、ビジネス要件に目を向け、顧客のニーズとオブジェクトを理解し、さまざまなトレードオフを評価し、エラー処理とエッジケースについて考え、アルゴリズムやデータ構造のような基本的な細部に気を配りながら、将来の変更と堅牢性について熟考する必要がある。企業は、システムについて注意深く考え、ボトルネック、システム要件、対象とするユーザ、ユーザ・アクセス・パターン、その他多くの決定事項を理解するために時間を投資することで、無駄なソフトウェア開発努力という過ちを避けることができる。
この章では、基本的な概念、大規模なソフトウェア・システムで当然発生するトレードオフ、そのようなシステムを構築する際に避けるべき誤り、そしてシステム設計のガイドライン、つまり長年にわたる大規模ソフトウェア・システムの構築から学んだ教訓を理解してもらうことを目的として、システム設計の基本を取り上げる。この章では、基本的なことを紹介する。詳細については後の章で掘り下げていくが、まずは基礎をしっかり固めてほしい。システム設計の基本概念から始めよう。
システム設計の概念
システム設計の構成要素を理解するためには、システムにまつわる基本概念を理解する必要がある。ここでは、、 抽象化を活用することができる。コンピュータサイエンスの概念で、システム設計の概念のモデルを作成するために、内部の詳細を抽象化することで、全体像を把握することができる。システム設計の概念は、それがどのようなソフトウェア・システムであっても、コミュニケーション、一貫性、可用性、信頼性、スケーラビリティ、システムの保守性、フォールト・トレランスを中心に展開される。これらの概念のそれぞれについて詳しく説明し、メンタル・モデルを作成すると同時に、大規模なシステム設計においてこれらの概念がどのように適用されるかを探っていく。
コミュニケーション
大規模なソフトウェアシステムは、サーバと呼ばれる小さなサブシステムで構成され、互いに通信を行う。つまり、ネットワークを介して情報やデータを交換し、ビジネス上の問題を解決したり、ビジネスロジックを提供したり、ビジネス機能を構成したりする。通信は、システムのニーズや要件に応じて、同期的または非同期的に行われる。図1-1は、同期通信と非同期通信における動作シーケンスの違いを示している。
注
通信プロトコルや非同期通信のメカニズムについては、第6章で詳しく説明する。
図1-1. 同期通信と非同期通信のシーケンス図
同期通信
、友人と電話で会話しているところを想像してみてほしい。相手の声が聞こえ、同時に相手と話し、会話が完了するまでの間にポーズを挟む。これは ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access