📝クラウドコンピューティング概論(Cloud Computing Basics)
- up: 📂ソフトウェア開発ドメイン
- refs:
Cloud とは #
Lots of storage + compute cycles nearby (from: coursera)
とくに, 現在 (2015) は以下の新しい特徴が注目されている.
- Massive scale
- 巨大なスケールのデータセンター. クラスター.
- On-demand access
- お金を払えば誰でもアクセス可能.
- HaaS
- Data-intensive Nature:データの増大
- New Cloud Programming Paradiums
- (MapReduce, Hadoop, NoSQL, Cassendra, MongoDB)
Cloud 構成要素 #
A Single-site cloud (=Datacenter) は以下で構成される.
- Compute nodes
- Switches, connecting the racks
- A network topology, hierachical
- Storage
- Front-end for submitting jobs and receiving client requests
- Software Services
A geographically distributed cloud は single-site cloud を連携させる.
- core switch
- top of rack switch
- rack
- servers
Scale out, Scale up #
-
Scale up
- grow your cluster capacity by replacing with more powerful macines.
- Traditional approach.
- Not cost-effective
- you need to replace machiens often.
- grow your cluster capacity by replacing with more powerful macines.
-
Scale out
- incrementally grow your cluster capacity by adding more COTS machines.
- Cheaper.
- Over a long duration, phase in a few newer machine.
- Used by most companies who run datacenters and clouds today.
- incrementally grow your cluster capacity by adding more COTS machines.
On-Demmand Access #
オンデマンドアクセス. 以下のような技術背景がある.
- Computation-Intensive Computing 演算処理の集中
- Data Intensive データの集中
データの集中によって, 注目は computationn から data に変わった.
- 計算技術は CPU の高速化よりも, Disk や Network の I/O がボトルネックになってきた.
- メニーコアや高密度メモリによって, アプリがボトルネックになってきた.
- 関数型言語が重要視されるようになってきた.
Public cloud #
お金を払えばだれでも利用できる.
- Amazon EC2
- Amazon S3
セットアップ不要. 時間とお金を節約できる.
Private cloud #
会社の社員が利用できる. オンプレミス, オンプレ.
ASS Classification #
PaaS #
Platform as a Service.
ソフトウェアを構築および稼動させるための土台となるプラットフォームを, インターネット経由のサービスとして提供する.
ref. Platform as a Service - Wikipedia
アプリケーションソフトが稼動するためのハードウェアや OS などの基盤 (プラットフォーム) 一式を, インターネット上のサービスとして遠隔から利用できるようにしたもの.
ref. PaaS とは 【 Platform as a Service 】 - IT 用語辞典
IaaS #
Infrastrucure as a Service.
仮想化技術を利用して CPU, ストレージ, OS, ミドルウェアなど, システムを構成するためのインフラをインターネット経由で提供するサービス.
- プロバイダーは基板となるストレージ, ネットワーク, コンピューティングリソースを管理し, 提供.
- OS や FireWall のようなネットワーク制御コンポーネントなどのアプリケーションをデプロイ, 実行, コントロールすることが可能です.
VM 上でサービスを提供する.
SaaS #
Software as a Service
- Evernote
- Google mail
FaaS #
Function as a Service
Distributed System #
分散システムとは,そのユーザに対して単一で首尾一貫 (coherent) したシステムとして見える独立したコンピュータの集合.
重要な側面は,
- 分散システムは自律コンポーネントからなる
- ユーザはそれらを単一のシステムとしてあつかう
重要な特性は,
- 多様なコンピュータの差異
- それらが通信する方法
に関して, ユーザから隠蔽されていること.
- refs.
- 分散システム 第二版: Andrew S. Tanenbaum, Maarten van Steen
- 分散システムの鉄板書籍(なんか図書室あった).
- 分散システム - Wikipedia
- 分散システム 第二版: Andrew S. Tanenbaum, Maarten van Steen
Middleware #
分散システムは,
- ユーザとアプリケーションからなる高位レベル層
- OS や基本通信機能
の間に存在するソフトウェアの層として構成されることがおおい. そのため, 分散システムをミドルウェアと呼ぶ.
ref. ミドルウェア - Wikipedia
Client-Server Sytems #
P2P Systems #
対等の者 (Peer, ピア) 同士が通信をすることを特徴とする通信方式.
クライアント - サーバ方式と対比される.
- Napster … はじめて登場した p2p システム
- Gnuterra … servants (サーバがいない.クライアントのみ)
Bittorrent #
巨大なファイルを高速にダウンロードすることを目的に開発された P2P.
DHT (Distributed Hash Table) #
ネットワーク状のマシンの集まりに Data を保存&取得するための分散アルゴリズムの総称.
100 万ノード超のネットワーク上に 1 つの巨大 Hash table を構築する技術. Key と value からなるデータを保存したり取得したりする.
100 万ノードのどのマシンに保存すればいいか.
- ランダムに ID を設定.
- key のハッシュ値をデータの ID とする.
- 担当領域が決まる.
- データ ID を担当しているマシンが保存先.
経路表を見て, データ ID に一番近いマシン ID をもつマシンを選んで, そいつに転送する. これをひたすら繰り替えしてたどりつく.
- Chrod
- Pastry
- Kelips
このひとのスライドが詳しい.
Chord #
DHT を実現する代表的なアルゴリズム.
特徴
- マシン ID は Hash (マシンの IP アドレス)
- ID 空間はリング状.
- 担当決めは時計回り.
- 各ノードは経路表 (finger table) を参考にクリエを転送して検索.
- O (logN) でノード探索.
Grid computing #
WAN 上にある計算資源 (CPU などの計算能力や, ハードディスクなどの情報格納領域) を結びつけ, ひとつの複合したコンピュータシステムとしてサービスを提供する仕組み.
複数のコンピュータをネットワークを介してつないで構成した, 高性能な仮想コンピュータ (Workstation)
Globus #
グリッドソフトウェアの開発を進める団体.
Globus Toolkit #
Grid Computing を構成するためのデファクトスタンダードな OSS.
クラウドコンピューティングとの比較 #
グリッド・コンピューティング | クラウド・コンピューティング | |
---|---|---|
管理形態 | 別々の組織による管理形態 | 単一組織による管理形態 |
標準化団体 | あり | なし |
用途 | 科学技術計算などの大規模な演算処理と | 大規模演算に加え |
並列性の高いアプリケーション | Web アプリなどの用途で利用可能 |
OpenStack との比較 #
- OpenStack は Cloud Computing
- Globos は Grid Computing
KVS: Key-Value Store #
-> DataBase へ
CAP 定理 #
ノード間のデータ複製において, 同時に次の 3 つの保証を提供することはできない.
- 一貫性 (Consistency) 全てのノードにおいて同時に同じデータが見えなければならない.
- 可用性 (Availability) ノード障害により生存ノードの機能性は損なわれない. つまり, ダウンしていないノードが常に応答を返す. 単一障害点が存在しないことが必要.
- 分断耐性 (Partition-tolerance) システムは任意の通信障害などによるメッセージ損失に対し, 継続して動作を行う. 通信可能なサーバーが複数のグループに分断されるケース (ネットワーク分断) を指し, 1 つのハブに全てのサーバーがつながっている場合は, これは発生しない. ただし, そのような単一障害点のあるネットワーク設計は可用性が成立しない.
wikipedia:
example #
- consistency & Partition-tolerance: HBase
- Availiability & Partition-tolerance: Casandra
- Availiability & Consistency: RDBMS
Eventual Consistency #
厳密な一貫性を要求する考え方ではなく, 結果的に一貫性が保たれればよいという考え方.
Casandra で利用されている.
Quorum (consistency level) #
分散トランザクションが処理を実行するために必要な最低限の票の数である. quorum ベースの技術は分散システムにおいて, 処理の整合性をとるために実装される.
多数決の原理. 最低 2 ノードからの応答によって通信が成功/ 失敗したかどうかを判断する.
Mutual Exceptions #
相互排他
MapReduce #
クラスター上での巨大なデータセットに対する分散コンピューティングを支援する目的で, Google によって 2004 年に導入されたプログラミングモデル.
関数型プログラミングの map/reduce を参考にしている.
(map square '(1 2 3 4))
(reduce + '(1 2 3 4))
MapReduce の後継として, Spark, Tez が注目を集めている.
Hadoop #
もっとも有名な MapReduce のオープンソース実装 (Java)
HDFS #
Hadoop 独自のファイルシステムである. HDFS は各 OS が提供するファイルシステム上で動作し, 数ペタバイトの容量まで拡張するよう設計している.
YARN #
Yet Another Resource Negociator.
Hadoop のスケジューラ. Node に仕事を割り当てる順番を制御する.
Distributed File Systems (DFS) #
複数のサーバに点在するフォルダを一つのフォルダツリーのように扱う技術.
ファイルシステムの仮想化技術.
- GFS
- HDFS
Clock Syncronization #
クロック同期.
分散システムにおいて, プロセスが協調して互いに同期しあうことが重要.
物理的クロック #
コンピュータのもつクロックを時間の基準とする考え方.
Cristian’s algorithm #
一般的なアルゴリズム. request,response の平均時間を足す.
Cristian’s algorithm - Wikipedia, the free encyclopedia
集中アルゴリズム.
NTP #
デファクトスタンダードな 時間同期プロトコル. 通信時間による時刻値の誤差を小さくする工夫がなされたプロトコル.
Network Time Protocol - Wikipedia
論理クロック #
プロセスの同期は必要だけれども, それが絶対的な時間でなくてもいいという考え方. さらに, 時間を同期している必要もなく, イベントの発生順序について合意していればいいという考え方.
Lamport timestamps #
ほとんどすべての 分散システムで利用されている, 論理クロックアルゴリズム. lamport が唱えた.
Vector Clock #
ベクトルクロック (Distribute Systems p248)
Lamport timestamps に 因果性 を導入.
-
happens-before"(事後) 関係
イベントの順番を知るための方法.
同一プロセス内で発生したイベント A, B において.
- A が B より以前に発生した場合, A->B.
- A がメッセージを送るイベント, B がそれを受け取るイベントなら, A->B.
異なるプロセスで発生したイベント X, Y において.
- X->Y も Y->X も成り立たない. X, Y は「同時」である.
イベント A に対して, 全てのプロセスが同意する時刻 C (A)
- A->B の場合, C (A)->C (B) でなくてはならない.
- A がメッセージを送るイベント, B がそれを受け取るイベントなら, C (A)->C (B) である.
- 時計の値 C は常に進み続ける. (イベント間では必ず 1 つ進む)
Global Snapshot #
分散システムにおけるそのときの状態.
liveness & Safety #
Collectness (正確性) は 2 つの性質からとらえられる
-
liveness (生存性) guarantee that something good will happen, eventually.
-
Safety (安全性) guarantee that something bad will never happen.
Snapshot Algorithm #
Chandy-lamport global snapshot alogrithm ともいう.
Remote Procedure Call #
RPC, 遠隔手続き呼び出し.
異なるアドレス空間のプロセス間で関数が呼ばれる.
コードは自動生成されることがおおい.(ex.Spring)
LPC #
Local Procedure Call. 同一プロセス内で関数が呼ばれる.
transaction #
クライアントからサーバへの一連の RPC.
- commits サーバに変更を残す
- aborts サーバになにも影響を与えない
ACID 属性 #
トランザクション処理の信頼性を保証するために求められる性質
Concurrency #
Pessimistic Concurrency #
もっとも悪い場合を想定して, オブジェクトにアクセスさせない.
排他的ロック. lock/unlock, ロックを獲得したものだけアクセスさせる.
- write mode
- read mode
Optimistic Concurrency #
もっともよい場合を想定して, オブジェクトにアクセスさせる.
pessimistic concurrency よりも並列性を向上させる.
Consensus #
参加者のグループにおいて単一の結果について合意を得るプロセス
たとえば以下のようなものに関わりがある.
- Reliable Multicast
Make sure that all of them receive the same updates in the same order as each other
- Membership/Failure Detection
To keep their own local lists where they know about each other, and when anyone leaves or fails, everyone is updated simultaneously
- Leader Election
Elect a leader among them, and let everyone in the Exclusigroup know about it.
- Mutual Execution
To ensure mutually exclusive (one process at a time only) access to a critical resource like a file.
Synchronize #
メッセージが一定時間内にやりとりされるシステム.
- 合意をとるアルゴリズムは存在する.
Asynchronize #
メッセージが不定な時間にやりとりされるシステム.
- 合意をとるアルゴリズムは存在しない.(LFP proof)
PAXOS #
もっとも有名な 合意アルゴリズム.
Software Defined Infrastructure #
ソフトウェアを中心としたインフラ構築のビジョン.
Software-defined data center (SDDC) is a vision for IT infrastructure that extends virtualization concepts such as abstraction, pooling, and automation to all of the data center’s resources and services to achieve IT as a service (ITaaS)
- Software-defined data center - Wikipedia, the free encyclopedia
- Software Defined Infrastructure - Wikipedia, the free encyclopedia
「 Software Defined 」とは「 (手作業ではなく) ソフトウェアで定義・制御する環境」を実現する, または目指すという意味
- よくわかる IT 新発見 第 1 回 「 Software Defined xx 」の潮流を読み解く!|伊藤忠テクノソリューションズ
- 漆原茂の技術インパクト - 第 10 回 Software Defined Everything:ITpro
各ベンダの動向 #
Intel - Software Defined Infrastructure (SDI) #
データセンターのサーバー, ネットワーク, ストレージを統合する戦略.
SDI の大きな特徴は, コンピュート (CPU, メモリ), ネットワーク, ストレージなど, データセンターを構成するハードウェアをすべて抽象化して, ソフトウェアで自由に設定を変更することができる点
ハードウェアとソフトウェアがタイトに結びつくのではなく, ハードウェアを抽象化し, 必要に応じてソフトウェアから設定を変更するだけで, サーバーのリソース構成をダイナミックに変更できるシステムが必要になってきた
- 米インテルが Software Defined Infrastructure を発表, ストレージとネットワークで攻勢:ITpro
- 【仮想化道場】“やわらかいデータセンター"を作る, Intel の Software Defined Infrastructure - クラウド Watch
Cisco - Software Defined Network (SDN) #
Software-Defined Networking.ネットワークにおける Software defined.
EMC - Software Defined Storage (SDS) #
EMC のとなえる戦略. ストレージにおける Software Defined.
実現するための技術・ OSS #
OpenStack #
OpenFlow #
OpenFlow とはソフトウェアによってネットワークの構成を行うための新しい標準.
CloudStack #
Hydrogen #
OpenDaylight Project とは, SDN (Software Defined Network) のプラットフォームを開発するプロェクト. Linux Foundation Project のひとつ.
SDN の市場育成とともにこの分野の革新とユーザ環境への導入促進を目的に活動を開始したのが「 OpenDaylight 」です. 業界をリードする素晴らしいメンバー (Platinum/Gold スポンサー:Brocade, Cisco, Citrix, Ericsson, IBM, Juniper, Microsoft, Redhat, NEC, VMWare) が参加し, 複数のインダストリ プレイヤーによるコントリビューション (HackFest 参加, ソースコード寄贈, 共同開発) によりコントローラ フレームワークを形成.
OpenDaylight が開発したオープンソース コントローラ フレームワークが Hydrogen.
- オープンソース SDN プロジェクトの OpenDaylight が初リリース, 「 Hydrogen 」が登場
- SDN のオープンソースプロジェクト:OpenDaylight Project, 最初のリリース Hydrogen を発表 - @ IT
- #3 最終回は Neela Jacques 氏に OpenDaylight について伺いました:LinuxCon Japan 2014 Preview|gihyo.jp … 技術評論社
BookMarks #
Software Defined Archtecture #
サービスをorchestrationしたりprovisioningしたりするメカニズム.
Software Defined Infrastructe #
このページで紹介されているアーキテクチャがわかりやすい.
以下, 引用.
- Orchestration ・・・ 下位の機能レイヤの API を通じて全体のプロビジョニングを実施.
- Controller ・・・ 上位レイヤからの API を介した指示にしたがって, Device の設定変更を実施.
- Device ・・・ 上位レイヤの API を介した指示にしたがって, 必要な IT リソースを提供.
Rack Scale Architecture (RSA) #
Intel が提唱するアーキテクチャ.
これはよくわかならいな.
Immutable Infrastructure #
一度サーバーを構築したらその後はサーバーのソフトウェアに変更を加えないこと.
変更は設定がかかれた設定ファイル (Code) に加える.使い捨てサーバ.
以下の説明がとてもわかりやすい.
Windows って調子が悪くなると再インストールしてすっきりさせるじゃないですか. OS にいろんなソフトウェアをインストールしたりカスタマイズしたりすると調子が悪くなりますが, 再インストールすれば戻ります.
だったら, そもそも毎回作り直せばシステムはすっきりするよね, というのが簡単な Immutable Infrastructure の説明です.