クラウドコンピューティング概論 - isem.co.jp · 2011/11/09版...

60
2011/11/09クラウドコンピューティング概論 1 クラウドコンピューティング概論 ~分散システム構築技法の革命か?~ http://www.isem.co.jp/documents/FUN20111109/IntroductionToCloudComputing.pdf クラウドコンピューティング概論 ~分散システム構築技法の革命か?~ http://www.isem.co.jp/documents/FUN20111109/IntroductionToCloudComputing.pdf 20111109公立はこだて未来大学 高橋研究室 特別講義 宮西洋太郎 (ご質問は、[email protected]へ) 20111109公立はこだて未来大学 高橋研究室 特別講義 宮西洋太郎 (ご質問は、[email protected]へ)

Transcript of クラウドコンピューティング概論 - isem.co.jp · 2011/11/09版...

2011/11/09版 クラウドコンピューティング概論 1

クラウドコンピューティング概論~分散システム構築技法の革命か?~

http://www.isem.co.jp/documents/FUN20111109/IntroductionToCloudComputing.pdf

クラウドコンピューティング概論~分散システム構築技法の革命か?~

http://www.isem.co.jp/documents/FUN20111109/IntroductionToCloudComputing.pdf

2011年11月09日公立はこだて未来大学高橋研究室 特別講義

宮西洋太郎(ご質問は、[email protected]へ)

2011年11月09日公立はこだて未来大学高橋研究室 特別講義

宮西洋太郎(ご質問は、[email protected]へ)

2011/11/09版 クラウドコンピューティング概論 2

内容

• 情報技術の進歩(ハードウェア)

• 情報技術の進歩(ネットワーク)

• 情報技術の進歩(ソフトウェア作成)

• 情報技術の進歩(ソフトウェアアーキテクチャ)

• 情報システム構築技報の変遷

• クラウドコンピューティングとは

• クラウドコンピューティングのメリット/デメリット

• クラウドコンピューティングは本命であろうか

• クラウドコンピューティングの要素技術

• クラウドコンピューティングサービス提供者

• クラウドコンピューティングによる情報システム構築方法

• SWIMクラウドコンピューティングトライアルプロジェクト• 話題

2011/11/09版 クラウドコンピューティング概論 3

情報技術の進歩(ハードウェア)

• リレー(継電器)によるディジタルコンピュータ

• 真空管によるディジタルコンピュータ

• トランジスタによる(ディジタル)コンピュータ

• ICによるコンピュータ

• LSIによるコンピュータ

• ダウンサイジング(どんどん小さくなる)の流れメインフレーム(大型コンピュータ)からミニコン、オフコン、パソコンへ

• マイクロプロセッサ、パーソナルコンピュータ(PC、パソコン)

• 個人が所有するコンピュータ

• 機器に組み込まれたコンピュータ(携帯電話、ゲーム機、家庭電気製品、自動車など)

• 別の流れは、並列コンピュータ、スーパーコンピュータ、グリッドコンピュータなど

2011/11/09版 クラウドコンピューティング概論 4

情報技術の進歩(ネットワーク)

• 専用線による遠隔端末からコンピュータを使用(ホスト集中処理)

• 専用線によるコンピュータネットワーク(分散処理のはじまり→クライアントサーバ処理へ)

• 電話線によるコンピュータネットワーク

• インターネットの出現(ARPAネット)• LANの出現、高速化 物理層IEEE802.3

10Mbps→100Mbps→1000Mpbs• プロトコルの自然淘汰(TCP/IPへ)

ISO対TCP/IP→TCP/IPに淘汰された• 広域ネットワークの帯域幅の拡大(ブロードバンド)アナログ回線→ADSL→光ファイバー(クライアントサーバ処理→Webアプリケーションへ)

• 無線通信ネットワーク、高速化 物理層IEEE802.11

2011/11/09版 クラウドコンピューティング概論 5

情報技術の進歩(ソフトウェア作成)

• マシン言語によるプログラミング

• アセンブラ言語によるプログラミング

• コンパイラ言語、インタープリタ言語によるプログラミング

• ソフトウェア危機(Software Crisis)• ソフトウェアエンジニアリング(Software Engineering)の誕生

• 構造化プログラミング

• 大規模ソフトウェアの開発技法の整理(ウオータフォール開発プロセス、構造化分析設計技法)

• オブジェクト指向、データ中心

• サービス指向

• クラウドコンピューティング

2011/11/09版 クラウドコンピューティング概論 6

情報技術の進歩(ソフトウェアアーキテクチャ)

• ホスト集中処理(ホスト-周辺端末)

• ホスト-遠隔端末(リモートターミナル)

• 分散処理、コンピュータネットワーク

• クライアント・サーバ

• 3層(three tiered)クライアント・サーバ(クライアント+サーバ+バックエンド(DB))

• Webアプリケーション(クライアントとサーバとの組み合わせが地理的に自由になったが、論理的には固定的)(URLで接続)

• クラウドコンピューティング(クライアントとサーバとの組み合わせが完全に自由、クラウド側でサーバとの対応の面倒をみている)

2011/11/09版 クラウドコンピューティング概論 7

情報システム構築技法の変遷(1)

図 ソフトウェア工学の誕生から、構造化技法、オブジェクト指向技法、サービス指向、クラウドへ

構造化技法

要求定義

外部設計

内部設計

プログラミング

結合テスト

総合テスト

運用テスト

上流

下流 構造化プログラミング

構造化設計

構造化分析

時代とともに下流から上流へ広がる個別的な手法

別々の手法

オブジェクト指向技法

全工程統一的な手法

オブジェクト指向設計

オブジェクト指向プログラミング

オブジェクト指向分析

ソフトウェア工学の誕生1970年ころ

ウォーターフォールモデルの誕生

歴史的な推移

歴史的な推移

歴史的な推移

サービス指向

クラウド

オブジェクト指向の普及1990年ころ

サービス指向の出現2000年ころ

クラウドフィーバー2010年

2011/11/09版 クラウドコンピューティング概論 8

情報システム構築技法の変遷(2)

ソフトウェア設計エンジニアの主要留意点

1. ソフトウェア工学以前(Before Software Engineering)の時代ハードウェアリソース(主メモリの容量、実行ステップ数)に留意。

2. 構造化の時代スパゲッティプログラムの排除(goto less)、ソフトウェアの構造に留意、「連接、選択、反復」のパターンにはめる。

3. オブジェクト指向の時代ソフトウェア体系の中を動き回る情報の塊(オブジェクト)に留意、できるだけ自律的単位(属性、メソッドをもつ)としてまとめ、不要な情報は隠蔽する。人間社会のモデリング(モデル化)、情報の擬人化、そのモデリング。

4. サービス指向の時代オブジェクトの粒度をさらに大きく、サービスという単位で捉える。3~4の流れで、アプリケーションプログラムの視線は、上へ上へと、用途(業務)のほうを向いてきた。ビジネスプロセスモデリングなど。

5. クラウドコンピューティングの時代再び、インフラ(仕組み、メカニズム)を意識する必要がでてきた。

   (PaaS、SaaSを利用した情報システムの構築)

2011/11/09版 クラウドコンピューティング概論 9

情報システム構築技法の変遷(3)

ソフトウェア設計エンジニアの主要留意点

(縦軸スケールは定性的かつ主観的)

構造化以前 構造化 オブジェクト指向 サービス指向 クラウド

下向きの視線(インフラ(仕組み)、ハードウェア)への注力度

上向きの視線(ビジネス、業務、プロセス)への注力度

インフラ(仕組み)を意識した設計、ただし、インフラで他社との差別化は困難

よって、ビジネスプロセスのモデリングが、やはり重要

ハードウェアの高性能化によりインフラをあまり意識しなくてもよい

上向き視線(ビジネスプロセスモデリング)に注力

処理対象のモデリングの重視

インフラ(仕組み)利用のノウハウを蓄積し、

下向きの労力を省くことが望ましい

2011/11/09版 クラウドコンピューティング概論 10

情報システム構築技法の変遷(4)

分散システム構築方法が目指してきた方向(原則)の1つ

オブジェクト指向が目指してきた方向(原則)の1つ

クラウドコンピューティングでは、

透過性(Transparency) 分散していることを意識しなくても良い、位置透過性

情報隠蔽(Information hiding) オブジェクト内部のことは外にださない、自律動作

どちらも、上位レベルの機能を実現するために働いている下位レベルの事柄は、上位レベルから見え(意識し)なくてもよい。見えないようにする。

サーバの所在場所はユーザからまったく見えない。その意味では透過的である。ただしソフトウェア構築の際、インフラ(仕組み)を意識する必要がある。

2011/11/09版 クラウドコンピューティング概論 11

クラウドコンピューティングとは(1)

 

クライアントからの情報処理要求は、雲の上(インターネット上)にある、場所を意識しなくても良いどこかのサーバで処理されて、結果が戻ってくる。このような形態での情報処理をクラウドコンピューティングという

雲の上のコンピュータ

サーバ

クライアントクライアント

クライアント

サーバ サーバ・・・・・ ・・・・・

・・・・・ ・・・・・

クラウド(雲 Cloud)

すなわちインターネット

2011/11/09版 クラウドコンピューティング概論 12

クラウドコンピューティングとは(2)

 

クラウド(雲 Cloud)

すなわちインターネット

サーバ

クライアント

クライアント

クライアント

サーバ

サーバ

・・・・・ ・・・・・

・・・・・ ・・・・・

Wikipedia クラウドコンピューティングとは、ネットワーク、特にインターネットをベースとしたコンピュータの利用形態である。ユーザはコンピュータ処理をネットワーク経由で、サービスとして利用する。

雲の中のコンピュータ

2011/11/09版 クラウドコンピューティング概論 13

クラウドコンピューティングとは(3)NIST(National Institute of Standards and Technology)の定義

Definition of Cloud Computing:  Cloud computing is a model for enabling convenient, on-demand network

access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes availability and is composed of five essential characteristics, three service models, and four deployment models.

  クラウドコンピューティングとは、構成可能なコンピューティングリソースの共有プール(ネットワーク/サーバ/ストレージ/アプリケーション/サービス)への、便利で、オンデマンドでのネットワークアクセスを可能にするためモデルである。そして、それらのリソースは、最小の管理労力またはサービスプロバイダとのやりとりにより、迅速にプロビジョニング(計画)ができ、提供を受けることができる。このクラウド・モデルはシステムの可用性を促進するものであり、5つの本質的な特性と、3つのサービスモデル、そして4つのディプロイメント(配置)モデルで構成される。

2011/11/09版 クラウドコンピューティング概論 14

クラウドコンピューティングとは(4)essential characteristics 本質的な特性

Essential Characteristics: (1)  On-demand self-service. A consumer can unilaterally provision computing

capabilities, such as server time and network storage, as neededautomatically without requiring human interaction with each service’s provider.

  On-demand self-service.消費者は、それぞれのサービスプロバイダとの人的な対話に依存することなく、必要に応じて自動的かつ一方的に、サーバやネットワーク、ストレージの利用時間といった、コンピューティング能力をプロビジョニング(準備)することができる。

2011/11/09版 クラウドコンピューティング概論 15

クラウドコンピューティングとは(5)essential characteristics 本質的な特性

Essential Characteristics: (2)  Broad network access. Capabilities are available over the network and

accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

  Broad network access. このコンピューティング能力は、ネットワーク上で利用でき、また、標準的なメカニズムを介してアクセスできる。それにより、各種のシン/シック クライアントプラットフォーム(携帯電話/ラップトップパソコン/ PDA)からの利用が促進される。

2011/11/09版 クラウドコンピューティング概論 16

クラウドコンピューティングとは(6)essential characteristics 本質的な特性

Essential Characteristics: (3)  Resource pooling. The provider’s computing resources are pooled to serve multiple

consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage, processing, memory, network bandwidth, and virtual machines.

  Resource pooling.プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用する多数の消費者に提供される。リソースは、消費者からの需要にしたがって動的に割当/再割当される物理的あるいは仮想的なリソースとして用いられる。一般的に、そこで供給されるリソースの正確な位置を、顧客が制御/知覚することはないという意味で、場所からの独立といった感覚があるが、より高い抽象レベル(例:国/州/データセンタ)において場所は特定されるかもしれない。こうしたリソースの例としては、ストレージ/プロセッサ/メモリ/ネットワーク帯域幅/仮想マシンなどが含まれる。

2011/11/09版 クラウドコンピューティング概論 17

クラウドコンピューティングとは(7)essential characteristics 本質的な特性

Essential Characteristics: (4)  Rapid elasticity. Capabilities can be rapidly and elastically provisioned, in

some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.

  Rapid elasticity. コンピューティング能力のプロビジョニング(準備)は、ラピッド(迅速)でエラスティック(弾力的、柔軟)なものになる。そして、ある場合には自動的に、スケールアウトの際に拡大し、また、スケールインの際に縮小する。消費者にとって、このプロビジョニング能力は、しばしば、見かけ上、制限なく追加でき、また、いつでも必要量を購入できるものとなる。

2011/11/09版 クラウドコンピューティング概論 18

クラウドコンピューティングとは(8)essential characteristics 本質的な特性

Essential Characteristics: (5)  Measured Service. Cloud systems automatically control and optimize

resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported providing transparency for both the provider and consumer of the utilized service.

  Measured Service.サービスの種類(例:ストレージ/プロセッサ/バンド幅/アクティブユーザアカウント)に適した抽象レベルにおける測定機能を高めることで、クラウドシステムは自動的にリソース利用を制御し、最適化する。こうしたリソースの使用量はモニタ/コントロールされ、利用されたサービスのプロバイダと消費者の両者に、透明性をもってレポートされる。

2011/11/09版 クラウドコンピューティング概論 19

クラウドコンピューティングとは(9)service models  サービスモデル

Service Models: (1)  Cloud Software as a Service (SaaS). The capability provided to the consumer is to

use the provider’s applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.

  Cloud Software as a Service (SaaS).消費者に提供される機能は、コンピューティングの能力は、クラウドインフラストラクチャ上で実行されるプロバイダのアプリケーションを利用できることである。そのアプリケーションは、Web ブラウザ(Web メールなど)といったシンクライアントインターフェイスを介して、各種のクライアントデバイスからアクセスできる。消費者はネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理/制御は行わない。ただし、ユーザー特定の限定されたアプリケーション構成の設定はその限りではない。

2011/11/09版 クラウドコンピューティング概論 20

クラウドコンピューティングとは(10)service models  サービスモデル

Service Models: (2)  Cloud Platform as a Service (PaaS). The capability provided to the

consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations.

  Cloud Platform as a Service (PaaS).消費者に提供される機能は、プロバイダによってサポートされているプログラム言語とツールで、消費者が作成または取得したアプリケーションをクラウドインフラストラクチャにディプロイすることである。消費者はネットワーク、サーバ、オペレーティングシステム、ストレージなどの、基礎となるクラウドインフラストラクチャの管理/制御は行わないが、ディプロイ(配置)されたアプリケーションを制御したり、また、そのホスティング環境の構成を制御することもありうる。

2011/11/09版 クラウドコンピューティング概論 21

クラウドコンピューティングとは(11)service models サービスモデル

Service Models: (3)  Cloud Infrastructure as a Service (IaaS). The capability provided to the consumer

is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).

  Cloud Infrastructure as a Service (IaaS).消費者に対して提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアを、消費者がディプロイ/実行することができる場所として、プロセッサ/ストレージ/ネットワーク/などの重要なコンピューティングリソースなどをプロビジョニングすることである。消費者は、基礎となるクラウドインフラストラクチャの管理/制御は行わないが、オペレーティングシステム/ストレージ/ディプロイされたアプリケーションを制御し、また、選択されたネットワークコンポーネント(ホストのファイアウォールなどの)を限定的に制御する。

2011/11/09版 クラウドコンピューティング概論 22

クラウドコンピューティングとは(12)deployment models 配置モデル

Deployment Models: (1)  Private cloud. The cloud infrastructure is operated solely for an

organization. It may be managed by the organization or a third party and may exist on premise or off premise.

  Private cloud. このクラウドインフラストラクチャは、特定の組織のために単独で運用される。そして、当該組織あるいはサードパーティーにより管理され、オンプレミスあるいはオフプレミスで運用されるだろう。

2011/11/09版 クラウドコンピューティング概論 23

クラウドコンピューティングとは(13)deployment models 配置モデル

Deployment Models: (2)  Community cloud. The cloud infrastructure is shared by several

organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organizations or a third party and may exist on premise or off premise.

  Community cloud. このクラウドインフラストラクチャは、いくつかの組織により共有され、また、関心事(ミッション/セキュリティ要件/ポリシー/コンプライアンス)を共有する特定のコミュニティをサポートする。そして、当該組織あるいはサードパーティーにより管理され、オンプレミスあるいはオフプレミスで運用されるだろう。

2011/11/09版 クラウドコンピューティング概論 24

クラウドコンピューティングとは(14)deployment models 配置モデル

Deployment Models: (3)  Public cloud. The cloud infrastructure is made available to the general

public or a large industry group and is owned by an organization selling cloud services.

  Public cloud. このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体などに提供され、対象となるクラウドサービスを販売する組織により所有される。

2011/11/09版 クラウドコンピューティング概論 25

クラウドコンピューティングとは(15)deployment models 配置モデル

Deployment Models: (4)  Hybrid cloud. The cloud infrastructure is a composition of two or more

clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load-balancing between clouds).

  Hybrid cloud. このクラウドインフラストラクチャは、複数のクラウド定義(private/community/public)から、2 つ以上を組み合わせたものとなる。それぞれに固有の実体は保持するが、標準あるいや個別のテクノロジによりバインドされ、データとアプリケーションのポータビリティ(クラウド間でのロードバランシングのためのクラウドバースティングなど)を実現する。

2011/11/09版 クラウドコンピューティング概論 26

クラウドコンピューティングのメリット/デメリット

メリット• 自社にサーバを設けなくてもよい(初期費用、維持費用の節減)• スケール(ユーザ数、データ量などの規模)について気にしなくてもよい(従来とは桁違いのスケーラビリティをもつ)

• 広い範囲からサービス(機能)を借用することにより、開発期間を短縮できる可能性がある(開発の高速化)

• 総合的に安価に情報システムを構築できる可能性がある(使用期間にわたる総合費用の節減)

• 大規模計算を並列処理で高速化できる可能性がある(処理の高速化)

デメリット• 外部にデータが漏れる恐れがある• サービス利用に費用がかかる(運用費用)• ブラックボックスの利用で、トラブル時の対応に不安• ブラックボックスの利用で、テストのやりかたに注意が必要• 従来のデータベース、トランザクションの考えを使えない• インフラを意識したシステム構築が必要→ノウハウ獲得の要あり• 任意の情報処理と言うより、元はと言えば、やはり大量の情報を検索するしくみから発生していることがいろいろな面での制約になっている(ようだ)

2011/11/09版 クラウドコンピューティング概論 27

クラウドコンピューティングは本命であろうか

では、一体、クラウドコンピューティングは、エンタープライズ用途(ビジネス系、業務系)の情報システムに本格的に使用できるのであろうか?

・ビジネスの遂行に役立つのであろうか?

・さらに一歩進んで、ビジネスの革新(イノベーション)を推進する原動力になるのであろうか?

もし、YESならば、クラウドコンピューティングを用いたエンタープライズ用の情報システムの構築方法を早急に獲得する必要がある。

従来の分散システム構築方法と、根本的に異なってくる可能性がある。早くノウハウを獲得すれば、アドバンテージになる。

電子情報通信学会SWIM研究会での取り組み

「クラウドコンピューティングトライアルプロジェクトCCTP」

2011/11/09版 クラウドコンピューティング概論 28

クラウドコンピューティングの要素技術(1)ユーザ(クライアント)とプロバイダ(サーバ)間のインタフェース技術

ユーザとプロバイダの間は、通常は標準化されたインターネットの技術が使用されるが、専用の技術(プロトコル、ソフトウェア、ハードウェア)を使用するものもある。(Wikipediaから引用)

プロバイダ内部の技術従来技術を利用可能とする考えオープン標準に準拠したソフトウェアや、ユーザ数や処理量の増減に対応できる仮想化技術が使用される。(Wikipediaから引用)

クラウド特有の技術を前面に押し出す考えGoogleなどは、スケーラビリティ確保のために自社独自技術を多様している。(Wikipediaから引用)→この場合、クラウドの特長を最大にひきだすため、クラウド特有技術を利用して情報システムを構築するには、独自技術(クラウドを実現している仕組み)をよく理解し、その条件下で構築することが必要となる。

2011/11/09版 クラウドコンピューティング概論 29

クラウドコンピューティングの要素技術(2)データベースリレーショナルDBからKeyValueデータストア(NoSQL)「スケーラビリティ」を厳しく優先する場合、リレーショナルDBは使用できない

トランザクションACIDトランザクションからBASEトランザクションへ上記のデータベースと関係、(スケーラビリティ優先の場合)

並列処理MapReduce

仮想化技術1つの物理的なCPUに複数の論理的なCPUを保持する複数の物理的なCPUを1つの論理的なCPUとして働く→分散処理従来型(非クラウド)情報システムを比較的容易にクラウド化する方法で、従来システムへの影響は少ない

スケールアウト担当サーバの割り当て、探索 (ハッシング)(コンシステントハッシング)担当サーバへの到達、ルーティング(構造化オーバーレイ)

2011/11/09版 クラウドコンピューティング概論 30

クラウドコンピューティングの要素技術(3)  データベース リレーショナルDBからKeyValueデータストア(NoSQL)  

クライアント

サーバ

クライアント

サーバサーバ

クラウド前

・・・・

クラウドコンピューティング

i 行(タプル) Key i Vi1 Vi2 Vi3i 番目PK i Vi1 Vi2 Vi3

KeyValueデータ

基本的に、この単位で、多数のサーバにバラバラに配置される

基本的に、すべての行が1つのサーバに配置される(PK: Primary Key)

インターネットの雲 クラウドコンピューティングの雲

2011/11/09版 クラウドコンピューティング概論 31

クラウドコンピューティングの要素技術(4)

トランザクションACID (Atomicity, Consistency, Isolation, Durability)トランザクションからBASE (Basically Availability, Soft state, Eventually consistency)トランザクションへ

一貫性(整合性)の維持

強い一貫性制御方式 ACID, 2PC, WAL

一貫性(整合性)の維持

弱い一貫性制御方式 BASE

主サイト(サーバ)

従サイト(複数あり)

トランザクション開始

更新指示

セキュア指示

コミット指示

トランザクション終了

ACK

ACK

第1相

第2相

更新処理

更新処理

セキュア状態

セキュア状態

コミット処理

コミット処理

ACK:肯定応答

トランザクション開始

主サーバ

更新処理

更新処理

更新処理

更新処理

更新処理

サーバ群(膨大な数)

時間の経過、やがて整合

Eventually consistent

楽観的一貫性制御AllOrNothing:1つでも失敗なら全体で「なし」にする

すべてが正常に完了するまで待たされる

すべてが正常に完了するまで待たない、待てない

2011/11/09版 クラウドコンピューティング概論 32

クラウドコンピューティングの要素技術(5)

並列処理

MapReduce

・・・・・・

・・・・・・

Map

・・・・・・

ReduceMap

Map

Map

MapMap

Map処理:要素ごとに行う処理

要素1

要素2

要素3

要素4

要素n

要素1

要素2

要素3

要素4

要素n

Reduce処理:要素をまとめる処理

結果

・・・・・・

2011/11/09版 クラウドコンピューティング概論 33

クラウドコンピューティングの要素技術(6)

仮想化技術

1つの物理的なCPUに複数の論理的なCPUを保持する複数の物理的なCPUを1つの論理的なCPUとして働く→分散処理

CPU(物理的なサーバマシン)

仮想的CPU

仮想的CPU

仮想的CPU

仮想的CPU(論理的なサーバマシン)

物理的CPU

物理的CPU

物理的CPU

2011/11/09版 クラウドコンピューティング概論 34

クラウドコンピューティングの要素技術(7)

スケールアウト

担当サーバの割り当て、探索 (ハッシング)(コンシステントハッシング)

担当サーバへの到達、ルーティング(構造化オーバーレイ)

Key

担当サーバの割り当て、探索

どのサーバにこのKeyのデータを格納(割当)するか、または存在するか(探索)

担当サーバへの到達

ハッシング、

コンシステントハッシング

どのサーバにこのKeyのデータを格納(割当)するか、または存在するか(探索)が決まった

このKeyのデータを担当(格納)しているサーバ

クラウド(インターネット)の中を通過して、どうやって、到達するか

(データ格納の要求、データ送信の要求、データ処理の要求etc)

ルーティングのしくみに類似

2011/11/09版 クラウドコンピューティング概論 35

クラウドコンピューティングの要素技術(8)(各社の比較、参考文献(3)から作成、要継続調査)

  Google Amazon EC2 Windows Azure Salesforce.com

KeyValueデータストア ○ ○ ○ ×

 

GFS(GoogleFile System),Bigtable

Amazon Simple DB

Windows Azure Table

 

RDB × ○ ○ ○

   Amazon RDS(MySQL)

SQL Azure Force.com Database

ACIDトランザクション

△限定的な対応(同一ノード上のデータ間)

○ ○ ○

BASEトランザクション ○      

並列処理MapReduce Amazon Elastic

MapReduce    

2011/11/09版 クラウドコンピューティング概論 36

クラウドコンピューティングサービス提供者マイクロソフト (PaaS).Net、Azure (SaaS)Microsoft Online Services

グーグル (PaaS)Google App Engine (SaaS)Google Apps

アマゾン (IaaS)Amazon EC2、 Amazon S3

セールスフォース (PaaS)Salesforce AppExchange(SaaS)Salesforce CRM

IaaS

PaaS

SaaS

(SaaS:Software as a Service)(PaaS:Platform as a Service)(IaaS:Infrastructure as a Service)

(SaaS:アプリケーションの提供)

(PaaS:アプリ構築の基盤提供)

(IaaS:HW、基本ソフトウェア提供)

2011/11/09版 クラウドコンピューティング概論 37

クラウドコンピューティングによる情報システムの構築方法(1)

クラウドコンピューティングの要素技術は特徴でもあるが、情報システム構築の制約ともなる場合がある。

この制約をクリアしながら、業務用(エンタープライズ用)の情報システムを構築する手法、ノウハウを確立する必要がある。

特に

・データベース

・トランザクション

・並列処理の上手な利用

・セキュリティ

に注意が必要である。

・ひとつの解決方法は、制約にひっかからず、自社のコアコンピタンスではない部分のみ、クラウドにまかせ、それ以外は、自社内の情報システムに任せるというハイブリッドクラウドの考えもある。

・セキュリティについては、外部にデータを保存する危険性を避けるため、自社内にクラウドを構築するプライベートクラウドという考えもある。この場合も、会社規模が大きいほど、ハードウェアやソフトウェアの共通利用を図ることができ、メリットがある。これに対して、通常のクラウドをパブリッククラウドという。

参考文献(2)-7、(3)

基本的には、今後の課題

2011/11/09版 クラウドコンピューティング概論 38

クラウドコンピューティングによる情報システムの構築方法(2)

日経SYSTEMS、2009年12月号記事から、参考文献(3)・要件定義フェーズでの留意点基盤(インフラ)を前提として、要件を定義する– 非機能要件(特に運用要件)(TIS中村健氏)

• 運用要件をまとめ運用ポリシーとする• 運用ポリシーとサービス提供者のサービスレベルとの対比• フィット/ギャップ、ギャップの少ないサービス提供者を選択• ギャップは、運用要件をさげる、

– 機能要件• クラウドコンピューティングでは実現できないものがある(複数データの読み書きを行うトランザクション処理)

• 公開されているサービスの利用(TIS中村健氏)• アドオン開発

– データモデルの設計(グルージェントの岡本聰氏)トランザクションの粒度(かたまりの大きさ)に要注意RDBからKeyValue型へ、データベースのアクセス時に集計は、あらかじめ集計しておく

2011/11/09版 クラウドコンピューティング概論 39

クラウドコンピューティングによる情報システムの構築方法(3)

日経SYSTEMS、2009年12月号記事から、参考文献(3)

・設計フェーズでの留意点

クラウドの特徴、制約に留意する

– スケーラブルの特徴をいかす(インテック・ネットコア中川郁夫氏)1. KeyValueデータストアを並列にアクセス2. トランザクションの単位を小さくする3. 参照専用(書き込みの競合を防ぐ)4. 同一処理を複数実行、成功したものを採用5. セッション状態をもたない

– セキュリティ問題の回避(テラスカイ竹澤聡志氏)• 処理は外部にさせて、結果を社内に保存

– バックアップ方式(アビームコンサルティング関川秀一郎氏)複数のバ クア プを併用

2011/11/09版 クラウドコンピューティング概論 40

クラウドコンピューティングによる情報システムの構築方法(4)

日経SYSTEMS、2009年12月号記事から、参考文献(3)・実装・テストフェーズでの留意点

実装フェーズ

– 制約(伊藤忠テクノソリューションズ高島元氏)1. 実行ステートメント数の制限2. クエリー発行数の制限

テストフェーズ

– テストの自動化(日立製作所宮崎肇之氏)1. 回帰テスト(クラウド側のバージョンアップ時など)、テスト済の全アプリケーションを再度テストする

2. 繰り返しテスト、応答時間の測定など3. 並列処理の確認4. ログによる確認(グレーボックステスト)

チューニングの考え(クロスマーケティング竹下康平氏)徐々にリソースを増やしていき、処理時間をみる

2011/11/09版 クラウドコンピューティング概論 41

クラウドコンピューティングによる情報システムの構築方法(5)

参考文献(2)-7 萩原正義「クラウドアプリケーションの分析と開発手法」、情報処理2009年11月号を参考に•クラウドアプリケーション開発上の制約

– 非同期通信• 可用性重視、部分的障害の許容• 従来は同期呼び出し→非同期通信• 一貫性の緩和

– 常時稼動(更新の常時受け付け)• スケーラビリティから読み取りデータのロック不可、もとのデータは更新されているかもしれない(Postel’s Law)

– CAP(Consistency, Availability, network Partitioned)定理• ACIDトランザクションからBASEトランザクションへ

– KeyValueストア• 可用性とスケーラビリティのために、RDBからKeyValueストアへ、最小行単位で多数のサーバに分散(究極的な水平分割)

2011/11/09版 クラウドコンピューティング概論 42

クラウドコンピューティングによる情報システムの構築方法(6)

参考文献(2)-7 萩原正義「クラウドアプリケーションの分析と開発手法」、情報処理2009年11月号を参考に•クラウドアプリケーション開発手順

–従来は機能要件定義からアーキテクチャへクラウドでは、アーキテクチャありき、機能要求とアーキテクチャのすりあわせ

–処理機能設計よりも、データ設計を重視(データ指向(中心)設計)

–データ設計•概念設計 →  論理設計 → 物理設計

– 従来: ER図 →リレーション(表)→ 物理的配置– クラウド:  ER図 → KeyValueストア設計(物理的配置は雲の中)

•マスターデータとトランザクションデータの分離•アプリケーションから要求されるデータ

– 従来:要求時に生成する(正規化を重視)– クラウド:あらかじめ生成しておく(理由:多様なSQL機能を使えない)、(非正規化)参照系と更新系の分離:データ更新をできるだけさける(理由:トランザクションの制限)

2011/11/09版 クラウドコンピューティング概論 43

クラウドコンピューティングによる情報システムの構築方法(7)

参考文献(2)-7 萩原正義「クラウドアプリケーションの分析と開発手法」、情報処理2009年11月号を参考に•クラウドアプリケーション開発分析手順

– 概念モデル(ER図)→リレーション→正規化– 機能はユースケースで表現– ユースケースからシステム内を流れるトランザクションを抽出– トランザクションからCRUD(Create/Read/Update/Delete)に分類

– トランザクションから非正規化– トランザクションから参照系(Read)と更新系(Update)に分離– 一貫性要求→厳密な一貫性が要求されても、何らかの手段(要件定義の緩和、順序の変更など)で緩和する(行単位でのAtomicityゆえ)

– 並列性の工夫

2011/11/09版 クラウドコンピューティング概論 44

クラウドコンピューティングによる情報システムの構築方法(8)

•プライベートクラウドというソリューション– クラウドを担うサーバを自社内にもうける– セキュリティ確保のため– サービスの自由なカスタマイズ、自由な追加– サーバ設置、維持のためのコスト要

•ハイブリッドクラウドというソリューション– システムをパブリッククラウドに任せる部分と任せない部分に分割– 任せない部分を自社内サーバをもうける。あるいは旧来のシステム(オンプレミス)を存続させ、共存させる。

– セキュリティ確保、一部自由度確保

要するに、情報システム構築論の確立には、まだまだ検討の必要がある(と個人的には思える)

2011/11/09版 クラウドコンピューティング概論 45

SWIMクラウドコンピューティングトライアルプロジェクト(1)

SWIMとは電子情報通信学会の研究会(信学会では、研究専門委員会)Software Interprise (InternetとEnterpriseとを結合した造語)Modelingホームページ:http://www.ieice.org/~swim/jpn/エンタープライズ(企業、非営利組織)と情報技術との相互イノベーションを目指す。

クラウドコンピューティングトライアルプロジェクト(CCTP)2010年度SWIM研究会が行う集団的研究活動

クラウドコンピューティングトライアルプロジェクト(CCTP)の目的(1)エンタープライズ用途の情報システムにとって、クラウドコンピューティングは次世代経営情報技術として本命になりうる画期的技術なのか、単なるバズワードに終わるのか、学会研究会として、不偏不党の第三者的、かつ学術的立場から、見極めること。(2)エンタープライズ情報システムにおけるデータそのものやデータ処理方法は、まさに企業の魂であり、生命線ともいえる。行政などでは、個人情報の保護が欠かせない。それらを外部にゆだねることの不安やリスクとひきかえに如何なるメリットを享受しうるかを見極めること。(3)もし本命になりうる技術ならば、リレーショナルDBの多様な検索の不使用や粒度の大きいACIDトランザクションの不使用など、従来の分散システム構築方法の常識を覆す可能性があり、クラウドコンピューティング技術をエンタープライズ情報システムへ適用するための実践的ノウハウ(実践的知見)を獲得することが、エンタープライズ情報システムの構築技術者(あるいは企業)にとって、重要かつ喫緊の課題であり、実践的ノウハウを獲得すること。

2011/11/09版 クラウドコンピューティング概論 46

SWIMクラウドコンピューティングトライアルプロジェクト(2)

プロジェクトの基本的な考え(プロジェクト憲章)

• 「冷静な科学技術的とりくみ」

• 「Give&Takeの精神:各自自分のノウハウを提供するかわりに、他の方からもそれ以上のノウハウをいただく」同じ「要件定義」にしたがって、各社のサービスを利用して、自主的にプロトタイプを作成し、その経験をもちより、評価します。多くのプロトタイプ構築の実績を必要とします。これは、集団的取組みでないと難しい。

• 「来るは拒まず、去るは追わずの精神:プロジェクトへの参加も脱退もメンバーの自主的な意思とします」

• 「ボランティア活動の精神:各自のできる範囲(リソース)でご協力をお願いします」

• 「得られたノウハウの活用は、なんら制限しません」(ビジネス展開など)例えば、Takeしたノウハウの活用も制限しません。Give&Takeです。

• 「基本的に本プロジェクトでの直接の金銭の出入りはありません」(各自の負担でトライアル、義務もなし)

2011/11/09版 クラウドコンピューティング概論 47

SWIMクラウドコンピューティングトライアルプロジェクト(3)

個人情報保護の基本的な考え(プライバシー保護のポリシー)

• 参加者名簿を作成し、参加者に提供します。• 参加者名簿は個人情報ですので、このプロジェクト以外でのご使用はご遠慮くださいますよう、お願いいたします。

• また、本プロジェクトには参加するが、どうしても名簿から除いておくことをご希望のかたは、お知らせください(好ましくありませんが)。

• また、相互にバックグラウンド(いままでのご経験)の理解を深めるため、ご経歴の会社、大学も記しておきました。もし間違っていましたら、ご指摘ください。もちろん、空欄のままでも結構です。

• プロジェクト参加者は、プロジェクトに関しましては、「仲間うち」ということで、お互いの連絡などに、ご活用いただきますと、ありがたいと存じます。

2011/11/09版 クラウドコンピューティング概論 48

SWIMクラウドコンピューティングトライアルプロジェクト(4)

 

•システム構築

•サービス提供者n

•システム構築

•サービス提供者B

•システム構築

•サービス提供者A

共通 システム仕様書

システム構築

サービス提供者A

システム構築

サービス提供者B

システム構築

サービス提供者n•・・・・

サービス提供者Aに関するノウハウと評価 •・・・・

クラウドコンピューティングとして(サービス提供者に共通する)共通のノウハウと評価

評 価WG

構 築WG

要 件WG

サービス提供者Bに関するノウハウと評価

サービス提供者nに関するノウハウと評価

•・・ •・・•・・

2011/11/09版 クラウドコンピューティング概論 49

SWIMクラウドコンピューティングトライアルプロジェクト(5)

• マイルストーン– プロジェクト計画書発行、参画者の応募、(メール、HP)         2009/12– プロジェクト計画書の意見公募(Request for Comment) 2010/1– 参画者の確定、参画者が事前調査を完了、 2010/2– プロジェクト計画書の公開、意見収集、改定完了、 2010/3– プロジェクトスタート、 2010/4– 要求仕様書、不明点の解決、 2010/5– 各社のクラウドコンピューティングサービスの疑問点解決、 2010/6– 各参画者の情報システム開発完了、 2010/8– 成果の評価、とりまとめ、 2010/9– 成果の外部発表(例えば案、CEATECでのチュートリアル)、      2010/10– 成果の検討、議論、今年度のまとめ、 2011/2

2011/11/09版 クラウドコンピューティング概論 50

SWIMクラウドコンピューティングトライアルプロジェクト(6)

• 成果の目標例として、•• あるベンダーX社ごとに、下記のような整理を行う(ベンダー提供のサービスを利用するノウハウ)•• 1.この業務(ア)は、どう工夫しても、X社のIAAS、PAASではできないアプリケーションである• 例:X=Google社で、頻繁にトランザクション(読み書き)が行われ、リアルタイムに処理することを要求されるアプリケーション。

• 例:X=Google社で、従来型のRDBのSQL機能をふんだんに使うアプリケーション。•• 2.この業務(イ)は、多少要件を緩めることによって、X社のIAAS、PAASで構築できるアプリケーションである

• 例:リアルタイム性を、ヒューマンインタフェースで許容範囲で、待たせることによって、実現できるアプリケーション。

•• 3.この業務(ウ)は、データの持ち方を工夫することによって、X社のIAAS、PAASで構築できるアプリケーションである

• 例:読み取り専用のデータと書き込みは一方向性にできるといったデータのもちかたで、実現できるアプリケーション。

• リアルタイムシステムであっても、センサーなどのモニタリングシステムのようなもの。•• 4.この業務(エ)は、たいした工夫をしなくても、すなおにX社のIAAS、PAASで構築できるアプリケーションである

• 例:大量の情報源から検索するアプリケーション(Googleの本来のアプリケーション)

2011/11/09版 クラウドコンピューティング概論 51

SWIMクラウドコンピューティングトライアルプロジェクト(7)

アプリケーション(ア)

アプリケーション(イ)

アプリケーション(ウ)

アプリケーション(エ)

ベンダー(A)

ベンダー(B)

ベンダー(C)

ベンダー(D)

1~4のどれにあたるか

2011/11/09版 クラウドコンピューティング概論 52

「話題(1)」1.ユーザ企業、情報サービス産業、クラウドサービス提供企業の関係

従来の情報サービス産業(IT業界)

ユーザ企業

製造、流通、金融、電力、公共etc

(低コスト、短納期、高品質、安全)

パラダイムシフトか単なる選択肢の追加か

SIer(情報システムの構築

請負)

情報システムの提供

ハードウェア、基本ソフトウェア、パッケージの提供企業

ユーザ企業が自社の情報システムを構築する

ユーザ企業がクラウドを利用して自社の情報システムを構築する

クラウドコンピューティング

SIerがクラウドを利用してユーザ向けの情報システムを構築する

ユーザ企業の主要メリットは?

・TCO(Total Cost of Ownership)の削減

・莫大なスケーラビリティ

2011/11/09版 クラウドコンピューティング概論 53

「話題(2)」2.これをチャンスと捉え、情報サービス産業の繁栄につなげることができるか

パラダイムシフト、革命、イノベーション

脅威(threat)

機会(opportunity)

情報サービス産業

情報サービス産業

繁栄に向けて

どのようにして?

良好な関係

クラウドコンピューティング クラウドコンピューティング

プライベートクラウド、ハイブリッドクラウドといったソリューションなど、どのような方法でチャンスに?

OR

(脅威も機会もあり)

2011/11/09版 クラウドコンピューティング概論 54

「話題(3)」3.各社がこれを、どのように迎え撃つか(どのように準備するか)

大波がやってくる

準備を怠る会社

大波に飲み込まれ衰退

クラウドコンピューティング

備える会社

大波に乗り、繁栄

「備えよ常に」とは言うものの

一体、何をすればよいのか?

まず、クラウドコンピューティングをよく知ることでは?

「備えあれば、憂いなし」

脅迫観念ではなく、冷静な科学技術的態度

2011/11/09版 クラウドコンピューティング概論 55

「話題(4)」4.クラウドコンピューティングを良く知る:要素技術の一例

従来のビジネス系情報システム構築の主要キー技術

オブジェクト指向技術

ドメイン知識(対象)

リレーショナルDB技術

ネットワーク技術

プロジェクト管理技術

リレーショナルDB技術

KeyValueデータストア技術

利点

従来に比べ、桁外れに大きいスケーラビリティの実現

影響大

注意点

検索に制約が大きい(多様な検索ができない)ACIDトランザクションが限定される(参照と更新を峻別)

使ってみて、実践的知見を蓄える?

スケーラビリティ(スケールアウト)を求めるなら

2011/11/09版 クラウドコンピューティング概論 56

「話題(5)」5.クラウドコンピューティングの標準化動向

クラウドコンピューティングB

アプリケーション・・・・・

アプリケーションインタフェース(API)

アプリケーション

クラウドコンピューティングA

アプリケーションインタフェース(API)

ロックイン状態

複数のクラウドから同じサービスが同じインタフェースで、利用できない

クラウドコンピューティングB

アプリケーション・・・・・

クラウド間での相互運用性

標準化されたアプリケーションインタフェース(API)

複数のクラウドから同じサービスが同じインタフェースで、利用できる

アプリケーション

クラウドコンピューティングA

2011/11/09版 クラウドコンピューティング概論 57

「話題(6)」6.セキュリティの問題

選択肢1:クラウドを使わない(使えない)

選択肢2:セキュリティが重要なデータや処理は自社のコンピュータで行い、セキュリティに問題のないデータや処理はクラウドを使う

選択肢3:セキュリティが重要なデータや処理も、セキュリティに問題のないデータや処理もクラウドを使う

クラウドコンピューティング自社サーバ

クライアント(ブラウザ)

ハイブリッドクラウドというソリューション

自社内クラウドコンピューティング環境

クライアント(ブラウザ)

プライベートクラウドというソリューション

サービス提供者を信頼し、契約SLA (Service Level Agreement)で縛るしか方法はないのだろうか?技術的解法は?

認証、暗号化、査証、内部統制etc

過去の成功に安住、保守主義、波に乗り遅れる恐れ

2011/11/09版 クラウドコンピューティング概論 58

「話題(7)」7.OSS(オープンソースソフトウェア)との付き合い方

アーキテクチャ:Webアプリケーション

Webサーバ:Apache

OS:Linux

Applicationサーバ:Tomcat

Programming:HTML、Java、JSP、Servlet、PHP、Ruby、・・・・

Network:TCP/IP

開発環境(IDE):Eclipse

クラウドコンピューティング

がもたらす影響?

DataBase:MySQL、Postgresql

きたるべきクラウド時代に備え、

OSSの関連では、

どのような準備をすべきか?

Webサービス:WSDL、Rest

•クラウド向けデータストア

•OSSのHadoop

2011/11/09版 クラウドコンピューティング概論 59

参考文献(1) 「日経コンピュータ」2009年9月2日号、特集:グーグル 次の一手(2)情報処理学会誌 2009年11月号(「情報処理」 Vol.50 No.11)特集:クラウドコンピューティング

(2)-1 丸山不二夫「クラウドの成立過程とその技術特徴について」(2)-2 中田秀基「Googleのクラウド技術」(2)-3 石田愛「Amazon EC2」(2)-4 藤田昭人「クラウド技術とオープンソース」(2)-5 首藤一幸「スケールアウトの技術」(2)-6 山下哲也「クラウドとモバイルデバイス」(2)-7 萩原正義「クラウドアプリケーションの分析と開発手法」(2)-8 浦本直彦「クラウドコンピューティングにおけるセキュリティとコンプライアンス」・上記のうち、エンタープライズ情報システム開発に最も直接的なものは、(2)-7。・そのための予備知識として、(2)-1から(2)-3、(2)-5。・クラウドコンピューティングを有償のベンダーサービスではなく、オープンソースHadoopで実現する方法が(2)-4。・クラウドコンピューティングで懸念となるセキュリティを扱っているのが(2)-8。(3) 「日経SYSTEMS」 2009年12月号 特集:クラウド革命に備えよう(4)ニューヨークだより(IPA)2009 年 9 月  「クラウドコンピューティングの産業構造とオープン化を巡る最近の動向」

  http://www.ipa.go.jp/about/NYreport/200909.pdf(5) クラウド活用による経営システム改革~NECの実践とソリューション~     http://www.nec.co.jp/effort/strategy/2009_1105/index.html以下(6)~(13)、日経SYSTEMS(3)の紹介資料(6)米持幸寿、「クラウドを実現する技術」、インプレスジャパン(7)城田真琴、「クラウドの衝撃」、東洋経済新報社(8)日経BP社出版局編、「クラウド大全」、日経BP社(9) Nicholas G. Carr、村上彩訳「クラウド化する世界」、翔泳社(10) (株)グルージェント、「Google App Engine for Java [実践]クラウドシステム構築」技術評論社(11)並河祐貴、安達輝雄、「クラウドAmazon EC2/S3のすべて」、日経BP社(12)西田宗千佳、「クラウドの象徴セールスフォース」、インプレスジャパン(13)マイクロソフトエバンジェリストチーム、「.NET開発テクノロジ入門」、日経BPソフトプレス以下(14)は、情報処理(2)-2の紹介資料(14) 西田圭介、「Googleを支える技術-巨大システムの内側の世界」、技術評論社(2008)

2011/11/09版 クラウドコンピューティング概論 60

おわりに

クラウドコンピューティングは、本当に、企業用または行政用の情報システムに役立つものかどうかを見極めなければなりません。

もし、そうならば、そのための知識と実践方法を身につけなければなりません。

一般論では、世の中の変化に常に敏感で、世の中の変化に取り残されないようにしましょう。

さらに願わくば、私たちが世の中の変化を惹き起こす原動力になれるように精進しましょう。

ご清聴(ご注目)、ありがとうございました。