佐野氏の自己紹介

佐野成氏:では「元ウェブ系エンジニアが語るIaaS(VM屋さん)の開発ってなにしてんの?」について話します。自己紹介はたいしたことをしゃべる必要はないのですが、もともとWebフリーランスと大学院生の二足の草鞋をしていて、どういうわけか今はNTTコミュニケーションズでIaaS、VM屋さんのエンジニアとして働いています。

今日は、元Webフリーランス的な人がIaaSの世界に飛び込んで(この分野が)どんなふうに見えたかとか、「こういうことが課題なんだな」と(思った)ことを話したいです。「IaaSに興味あるんだよね」という人たちが、「えいや」と飛び込めるような下地を作れたらなと思っています。

今日話すのはSDPF(Smart Data Platform)クラウドについて

すごく基本的なところとして、「IaaSって何?」という話があります。というか今回、若干タイトル詐欺かもしれなくて。IaaSといってもいろいろある中で、今回特に話すのは正確に言うと「SDPFクラウド」という、NTTコミュニケーションズが出しているクラウドプラットフォームの仮想サーバーのIaaSの話です。あまり主語のでかいことを言って怒られるとアレなので。

SDPF(Smart Data Platform)クラウドというものがあって。(スライドを示して)これは利用例ですが、インターネットがあって、ロジカルネットワークがあって、ファイアウォールをかませちゃったりして、その下にVM立ててみたいな。よくある基本的なクラウドコンピューティングを使える(環境)をエンタープライズ向けに提供しています。

もともと「Open TechLunch」の第2回でクラウドの作り方を話した人がいて、そこで「SDPFを支える技術」というスライドを出していました。

こんな感じで、クラウドは結局でかいデータセンターの中に特殊なデータセンターネットワークの技芸のネットワーキングがあって、さらにそこにいろいろな計算機リソースがぶら下がっているものなんですよね。

ネットワークという観点で話したのが、第2回のOpen TechLunch「クラウドの作り方(使い方じゃないよ)」で、(登壇者の)飛岡さん(飛岡良明氏)は隣のネットワークチームの人ですが、この人が話さなかった部分。

「実際にぶら下がっているリソースの人たちはなにやっているの?」ということを今日は話していこうと思います。

IaaSについておさらい

まず基本的な話として、「IaaSって何?」を念のためにおさらいしたいと思います。Smart Data Platformというクラウドサービス。クラウドプラットフォームの1つに仮想サーバーがあるわけで、こうやっていろいろ利活用や管理分析とかがあります。

(スライドを示して)ここに仮想サーバーがあって、私はこのチームに所属して開発をしています。

(スライドを示して)クラウドサービスを語る時に、よくサービス提供者の責任分界みたいなものがあって。IaaSはVirtualizationまで面倒を見る、PaaSはRuntimeまで面倒を見る、SaaSは全部面倒を見るみたいなものがあるじゃないですか。要するに、サービス提供者は(スライドの)赤い部分を開発して、利用者は灰色の部分を利用する感じのやつですね。

(スライドを示して)私はIaaSの仮想サーバー(の担当者)なので、このあたり(括弧で示した部分)に責任を持っているというところです。

「じゃあ、PaaSやSaaSはVirtualizationの赤いところもやっているんですか」というと、そうじゃなくて。実際にはPaaSはなんらかのIaaSの上に乗っかっていて、SaaSもなんらかのPaaS、あるいはIaaSを組み合わせていて、その上でアプリケーションとデータの部分だけを自前で実装していることが多いんじゃないかと思います。

例えば、ラーメンを作る時に全部自分で用意するのではなくて、売っているものやキッチン(にあるもの)などを用意して、そこで必要な料理という部分だけをやると思うんですよね。

そんな感じで、ここで言いたいのは「SaaSやPaaSは、なんらかのIaaSに乗って動いていることがあるんやで」ということです。すごく基本的な話かもしれませんが。

IaaSのVM屋は何を売っているのか

「IaaSのVM屋さんってどんな商売なの?」という、みなさんがIaaSのVM屋さんになるためになにが必要なのかを簡単に説明したいと思います。

まず、巨大な計算機のリソースの山を作ります。便利でスケールするネットワークを用意します。(スライドを示して)この米印がついているのは私もちょっとよくわかっていないので、聞かれたらネットワークの人に聞くと思います。

それを用意して、そこに大量のサーバー、CPUとメモリの山を用意します。その上でさらに巨大なShared Storageを用意します。

この巨大な計算機リソース、CPUとメモリとストレージ、そしてネットワークを用意した後で、これらをなんらかのかたちで割譲する仕組みを用意します。

我々の場合はそれらを仮想化というかたちでリソースを切り分けるのですが、仮想化の中にもいろいろな技術があって、私たちはLINUXの上で動いているQEMU(Quick Emulator)やKVM(Kernel-based Virtual Machine)という技術を使ってリソースを割譲しています。

この巨大な計算機の山と、そしてそれを抽象的に、仮想的にリソースとして割譲する仕組みが出揃いました。あとはこれを割譲しているリソースのマネジメントをするための、「誰がどこにどれくらいのリソースを使っているか」を管理するためのソフトウェアが必要です。SDPFクラウドの仮想サーバーチームでは、この部分のソフトウェアとしてOpenStackを採用しています。

要するに、VM屋さんは、巨大なリソースプールを切り売りするビジネスモデルと言えると思います。

OpenStackとは何か

(スライドを示して)「OpenStackって何?」というと、これはOpenStackのページから持ってきた文言ですが、「Open Source Cloud Computing Infrastructure」と書いてあって、クラウド基盤を提供するためのOSS群がOpenStackです。

30個程度のコンポーネントからなっていて、このバーチャルマシンを担当するNovaや、ネットワークを担当するNeutronというものがあります。ほかにも認証認可のKeystoneなど、全部で30個程度のコンポーネントがあって、その中のいくつかを使って我々は仮想サーバーを提供しています。言語はPythonやGoで書かれています。Pythonが多いかな。

さて、仮想サーバー屋さんをやるために必要なものが出揃いました。つまり山のようなリソースと、それを仮想的に切り分けるVirtualization、さらにそのリソースを管理するためのOpenStackです。

OpenStackを経由してVMを作る流れ

(スライドを示して)ここで、実際にOpenStackを経由してVMを作ることをなんとなく流れとして見てみます。まずリソース管理のAPIを提供するOpenStackがあるので、人間が「サーバーください」とOpenStackのPOST APIを叩きます。

すると、データセンターの実際のコンピュートノードと言われたりしますが、Virtualizationをするためのホストと調停をして、OpenStackはドカーンとVMをスポーン、作成させます。

VMが出来上がったら、またOpenStackと協調しながら接続情報を人間に返してあげます。その接続情報を持って、人間はこのVMにSSHするわけです。「あぁ、欲しかったサーバーが手に入ったぞ、やった」ということが、VM屋さんのやっていることです。

「OpenStackって何?」という人が、もしかしたらけっこういるかもしれなくて。ニッチだけど知っている人は知っているのがOpenStackです。我々は仮想サーバーを提供するためのパーツとして、OpenStackを商品として売るために使っています。実際、大量の計算機リソースを効率的・経済的に管理するニーズはすごくニッチですがそこそこあって、そういったケースではOpenStackが使われていることがあります。

(スライドを示して)一番下にopenstack.orgのuse-casesというページがあります。ここを見てみると「あそこが!?」という会社がユースケースを載せていたりして、見てみるとおもしろいので、みなさんも後でこれを見てみてください。

例えば、左がBlizzard Entertainmentという、ビデオゲームの「オーバーウォッチ」などのゲームを開発している会社です。そこはOpenStackを使っているし、WalmartもOpenStackを75万コアで動かしているようです。すごいですね。

IaaSのVM屋はインフラストラクチャーを隠蔽している

(スライドを示して)さて、IaaSのVM屋さんに必要なものをみなさんに教えて、実際にAPIを使って話しているということがわかったところで。、これまでの依存関係を整理してみると、こんな感じになります。

まず、外側に露出するインターフェースとしてのOpenStack。そして、それと協調するホストOS。そのホストOSは巨大なネットワークや巨大なストレージにぶら下がっていて、そのサーバーもCPU、メモリをもちろん持っています。このホストOSがVirtualizationを行うことで、ゲストOSであるVMが生えてくる。こういった依存関係になることがわかります。

一般的に、これは私が今までそう思っていたというだけですが、VMを作ってSSHをすると考えた時に、「人間が直接ゲストOSになにやらSSHしているのではないか」という認知を私はしていました。

(スライドを示して)しかし実際はそうではなくて、IaaSであるVM屋さんはなにを隠蔽していたかというと、この巨大なデータセンターネットワークや巨大なストレージやサーバーや冗長のための仕組みで、それを隠蔽した上で、ゲストOSにリーチする仕組みを提供しているのがVM屋さんの実際なんです。

というわけで、これを見るとなにがわかるかというと、すごくいろいろなものを隠蔽していて、そしてその隠蔽しているものは、当たり前ですがインフラです。インフラストラクチャーを隠蔽している。しかもそれらは、ハードウェアと密結合してVMが動いている。これがインフラの開発のちょっとつらいところ、その1から5みたいな感じです。

(次回に続く)