Ⅱ-3-7. OSSによるシステム基盤設計事例

「OSSによるシステム基盤設計の手順」において示した手順を具体的な事例として示す。要件に適したソフトウェアの選定やシステムアーキテクチャの設計など、実際にシステム基盤を設計する際に必要となる知識について解説する。

【学習の要点】

* セキュリティ要件の実現例として、SSLによる通信の暗号化がApache HTTP Serverや、PostgreSQL、MySQLなど、様々なOSSでサポートされている。

* トランザクション管理機能など、ビジネスアプリケーションに必要な機能の多くがアプリケーションサーバによって提供されている。

* 非機能要件を実現するための負荷分散機能、冗長化機能は、データベースサーバなど、サービスを提供するソフトウェア自身の機能や、拡張機能として提供されている場合がある。

図Ⅱ-3-7.負荷分散構成の例

【解説】

1) 機能要件の実現

機能要件の実現を支援するソフトウェア、アーキテクチャの例を以下にあげる。

* セキュリティ機能

Webシステムの場合、認証の際のパスワードなど、データの暗号化が求められる場合がある。Webシステムにおける暗号化技術としてはSSLによる通信が広く用いられており、Apache HTTP ServerなどのWebサーバや、MySQLやPostgreSQLなどのデータベースサーバなどで利用することができる。

* トランザクション機能

JBossなど、Java EE仕様に準拠したアプリケーションサーバは、開発者によるトランザクション制御の他に、サーバによるトランザクション制御機能を提供している。また、分散トランザクションなど、高度なトランザクションを実現するOSSとして「JBoss Transactions」などが公開されている。

* アカウント管理機能

Webシステムのうち、ユーザからのリクエストによってアカウントの作成を行うシステムの場合、アカウントの不正取得を防ぐ仕組みが必要となる。広く利用されている仕組みとしては、アカウント作成時にEメールアドレスを入力させ、アカウントの活性化を行うためのURLを別途Eメールとして送付する方法がある。Webアプリケーション向けのフレームワークでは、このようなアカウント管理を容易に実装するための機能が提供されている場合がある。

2) 非機能要件の実現

非機能要件の実現を支援するソフトウェア、アーキテクチャの例を以下にあげる。

* 性能要件

Webシステムの場合、クラスタリングによる負荷分散や、コンテンツのキャッシュ機能の利用によって応答速度を向上させることが可能である。クラスタリングによる負荷分散を実現するOSSとしてLVSがあげられる。詳細は「II-3-2.非機能要件とシステム構成」を参照のこと。コンテンツのキャッシュ機能を実現するOSSとしては、Squidなどがある。また、多くのデータベースサーバでは、データを複数のサーバ間でレプリケーションし、負荷分散、および冗長化する機能が提供されている。例としてはMySQLで標準機能として提供されているレプリケーション機能や、PostgreSQLで利用可能なpgpoolなどがあげられる。

* 信頼性要件

信頼性を向上させる方法としては、システムの冗長化が広く用いられている。サーバの冗長化を実現するOSSとしてHeartbeatがあげられる。詳細は「II-3-2. 非機能要件とシステム構成」を参照のこと。

* 運用要件

安定した運用を継続する上で必要となるサービスの監視や、障害通知を行うOSSとしてNagiosやHobbitなどが利用されている。また、SNMPを利用したネットワーク機器の監視を行うソフトウェアとしてMRTGなどが利用されている。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。