第4章 コンテナ 図
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
システムコンテキスト図を作成し、ソフトウェアシステムがシステム全体の中でどのように位置づけられるかを理解したら、次のステップは、ソフトウェアシステムの境界内に存在するアプリケーションとデータストア(C4コンテナ)を記述することだ。これがC4コンテナ図の目的であり、本章のテーマである。
コンテナ図の重要な側面
コンテナ図の使用目的や使用方法を理解するには、その意図、範囲、コンテンツ、ユースケース、および対象読者を念頭に置く必要がある。
意図
コンテナ図は、以下の質問に答えるのに役立つ:
-
ソフトウェアシステムは、アプリケーションとデータストアにどのように分解されているか。
-
それらのアプリケーションとデータストアの責任範囲は何か?
-
それらのアプリケーションやデータストアを実装するために、主にどのような技術選択(例:プログラミング言語や製品)がされているか?
-
アプリケーションとデータストアは互いにどのようにコミュニケーションするのか。
-
ソフトウェアエンジニアリングとして、機能を追加するためにどこでコードを書く必要があるか?
ここで留意すべき重要な点は、コンテナ図は、クラウド環境、サーバー、Kubernetesクラスタ、Dockerコンテナ、ロードバランサ、ファイアウォール、APIゲートウェイ、フェイルオーバーなどのデプロイメントに関する側面については、ほとんど(理想的には全く)言及すべきではないということだ。なぜか? これらは、開発環境、テスト環境、本番環境など、デプロイメント環境によって異なる可能性が高いからだ。 デプロイメント情報は、1つまたは複数のデプロイメント図(第8章を参照)を用いて、固有のデプロイメント環境ごとに1つの図で表現するのが適切だ。
範囲
コンテナ図のスコープは、単一のソフトウェアシステムである。システムコンテキスト図のスコープであるソフトウェアシステムにズームインし、その境界内に存在するアプリケーションやデータストアを示すのだ。
コンテンツ
コンテナ図には通常、4種類の要素が含まれる。すなわち、人、ソフトウェアシステム、コンテナ、そしてズームインしているソフトウェアシステムの境界である。
人とソフトウェアシステム
前の章で説明したように、システムコンテキスト図で記述されるソフトウェアシステムは、それ自体が多数の人々やソフトウェアシステムに囲まれている。一貫性を保つため、それらの同じ人々やソフトウェアシステムをコンテナ図にも繰り返し記述すべきだ。本質的には、同じ物語をより詳細に語っていることになる。
コンテナ
コンテナとは、ソフトウェアシステムを構成するアプリケーションやデータストアのことだ。各コンテナについて、以下の情報を記録する。
-
名前:コンテナの名前
-
技術:実装技術
-
説明:コンテナの役割(アプリケーションの場合)や、保存されるエンティティ、テーブル、ファイル、オブジェクトなどの概要(データストアの場合)
初期設計の段階でコンテナ図を作成する場合、技術的な詳細の一部が手元にないかもしれない。それでも構わない。たとえ技術選択の短いリスト(例:「MySQL または PostgreSQL」)や、技術の一般的な種類(例:「リレーショナルデータベーススキーマ」)であっても、知っていることを追加すればよい。 一方、既存システムを文書化するために図を作成する場合は、こうした技術的な詳細を追加できるだろう。 ...
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