coursera で クラウドコンピューティングを学ぶ講座をとりました.

分量が多いので, Cloud Computing Concepts は Part1,2 に分かれている. 今回は, Part1 についての記事.

これは, クラウドコンピューティング 3 シリーズのなかのはじめに位置する講座です.

  • Distribute Systems
  • Cloud Application
  • Cloud Networking.

内容

内容は分散コンピューティングについての古典的な理論から, 最新の研究の話題まで, 幅広い.

Part1 では, 以下を学んだ.

  • Introduction

Clouds, Mapreduce, Key-value stores

  • Classical Precursors

Peer-to-ppeer systems, Grids

  • algorithms

Gossip, Membership, Paxos

  • Classical algorithms

Time and Ordering, Snapshots, Multicast

NoSQL や P2P の最前線の話題についても触れる.

動画がとても早口 (通常速度で x1.3-5 くらい?) あまり英語を聞き取れず. もっぱら以下の本の該当個所を読みながら進めた.

プロクラミングの課題もある. C++ で実装する.

感想

以前の仕事について

この記事とかぶる部分もあるが, もう一度.

今働いている会社の部署は, サーバやストレージ製品の制御ファームをつくっている. クラウドコンピューティングに関わる製品の設計開発だ.

そして自分はというと, 今でこそ名実ともに窓際族であるので 部署の仕事とまったく関係ない遊び人をしているが, かつてはストレージ製品の開発に関わってた.

自分の担当していた機能は, 異常検出.

2,4,8 ノードのそれぞれ独立した RAID コントローラが, それぞれを互いに監視しあう. あるコントローラで異常が発生したときは, 別のコントローラが異常をすばやく検出して, エラーリカバリを実施する.

なので, 以今回学んだことは前の仕事にかなり関わってた.

あまりに無知だった

8 ノードでの異常検出について自分の頭でいろいろ考えた.

自分の知らないところでは, そのような知識は体系化されて, 理論的な裏付けがされていて, 改良されていることなど, 想像だにしなかったことだった.これには, とても驚いた.

以下, 具体例をあげる.

Failure Detector/HeartBeating

異常検出については, 以前の記事でまとめた.

Membership List

自分の関わってきた製品は, 最大 8 ノードまでだったが, 今後はノードが動的に追加できる, スケールアウト型ストレージの需要がでてくるかもしれない.

今までは, 固定の構成で仕様を考えていたが, 動的に変更されるような構成で仕様を考えることになるかもしれない.

スケールアウト型の制御方法で王道的な制御方法として MembershipList による制御があることをしった.

Consensus

Master-Slave アーキテクチャで制御しているとき, Master であるノードで異常が発生したさいに, 次の Master ノードを決定する必要がある.

また, 複数ノード同時に異常を検出した場合, 被疑個所がノードにあるの か通信経路にあるのかを決定して, たのノードと合意をとる必要がある.

このような, 複数のノード間で単一の結果について合意を得るプロセス は Consensus 問題と呼ばれていて, それに対して効果的なアルゴリズム の研究がされている.

システム制御は奥が深い! そして自分は井戸の中の蛙だった

自分の所属している部署は, 自称システム制御を得意としているが, それは井戸の中の蛙のような気がしてきた. いったい, なにと比較して得意だといっているのだろうか? 年月だけ重ねても, 世の中についていけなければ意味がない.

他のクラウド製品が, フォルトトラレント性を確保するために どのようなことをしているのか, まったく無知である. それらは企業秘密ということもあり, 特許で防衛しているところもある.

しかし, 世の中では, 分散コンピューティングの理論やアルゴリズムが 日進月歩で開発されていて, Yahoo, Google, Facebook などの先端企業は そのような技術を取り入れている.

新しい技術に対して無知であることは, 世の中からとりのこされるばかりか, 自分たちの仕事すらなくなってしまうおそれのある, 非常に危険なことだ.

継続して技術動向を追いかけていくような態度が必要だ. それは, 自分にも必要だが, 組織にも必要だ.