ServerlessとOpenWhisk

このエントリは OpenWhisk Advent Calendar に書くOpenWhiskネタが間に合わずに書いているOpenWhiskがどんな位置付けなのかを書いてみようと書き始めたColumnです。界隈の怖い面に突っ込まれそうで怖い..

Serverlessいいですね。でも「サーバ」が無くなるわけではなくて物理的には当然世の中に存在します。lessになるのはシステム構成やアーキテクトの世界として「サーバ」という単位ではなく処理を考える時代がやって来ています。最近はそういったこともあり「Compute」と呼ぶと誰が申しておりまいた。(ここでは「サーバ」という表記は物理的なHW要素をもつ言葉として記載しています)

最近私が取り組んでいる、IBM Bluemixもアプリケーションエンジニアにとってはどこの「サーバ」で動かすかはもうハンドリングは出来ません。幾つの実行環境上で動かすかを指示を出すだけです。それでもまだPaaSの世界ではアプリケーションの実行に必要な複数のライブラリの管理は必要ですね。そしてもう一つ忘れてならないのは本格的に利用され始めているDockerコンテナ環境の世界があります。これも利用の仕方によっては「サーバ」という概念を取り払って利用することが出来ます。(実際にはBluemixなどのPaaSソフトウェアは内部でDocker同様にLinuxコンテナを利用しているため考え方では両者は同じことを示しているとも言えるかもしれません)Bluemixでは特に常駐型の機能の提供を想定されてサービスがデザインされています。ちょっと前の3層構造で言えば「APサーバ」に該当する部分を多く担うでしょう。そして「DBサーバ」などの機能や多くの「非機能」部分の機能は as a Serviceとして提供されておりユーザからの「サーバ」という概念はありません。(いやDBだってという話はちょっと置いておきます)

さて、そうなってくると従来あるようなバッチ処理や運用担当が実行するオレオレツールはどこで動作させるべきでしょうか。昨今出てきたServerlessと呼ばれる仕組みは「Function as a Servce」とも呼ばれ、同期的な処理も非同期的な処理も何らかの環境変化によるイベント駆動でさえも処理を出来るようになった今時な仕組みです。ユーザの定義したバッチ処理は用意されたどこかの「サーバ」上で動作します。そしてこれも「サーバ」という概念はありません。さらに言えばランタイムなどの括りもなく「コード」のみが管理されるのも特徴です(理想的にはね)。

PaaS等のコンテナ環境でも、Fuction as a Serviceに代表される仕組みもどれも「サーバ」という概念がない時代になってきています。これがクラウドで利用するともうほんとに「サーバ」なんか考えない。クラウド最高。

とは言え、オンプレミスの世界では「サーバ」上に「OS」が導入されここのサーバに何らかの機能が付与されているサーバ仮想化が中心かと思います。オンプレミス上においてもBluemixの元となっているOpenSourcecのCloud Foundry、そしてDockerベースの様々な環境(例えばOpenShift等はデプロイ環境も用意されているまさにPaaSという括りですね)や、最近Apache になったOpneWhisk(もちろん他にもありますね、個人的にはStackStormが好きです、処理実行環境ではMesosphereのDC/OS等も入ってくると思います)を用いることでオレの「サーバレス」が作れる様になってきています。

とりとめなく書いたところですが「インフラエンジニアとしては結局そのCloudFoudryを動かすためにOpenStaskとかVMWareとかいるし VMいるやん!」と言われるとその通りとしか言えません。益々高度化したソフトウェアスタックを構築できる最近のインフラエンジニアには頭が上がりませんな。

Servelessの本質とかいう話ではなくてOpenWhsikなどのツールがどんな位置付けなのかなんとなく概念的なあたりで納得感があると良いのですが。
Like what you read? Give Hideaki Tokida a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.