インテリジェントクラウド+インテリジェントエッジ=ローカルクラウド?
先週、Microsoftに関する記事で目を惹くものがありました。インテリジェントクラウドとインテリジェントエッジについてです。
でもこれ、5月に発表されていたようですね。
集中→分散の歴史を繰り返すコンピューティング環境
クラウドとは、集中化されたコンピューティング環境です。コンピュータの歴史を紐解くと、最初はIBMを初めとした大型機を複数のユーザーが共有して利用する形態でした。それが、コンピュータの小型化によって分散処理に移行し、PCが出現して位アンドサーバーとなり、分散化が進んだという経緯があり、しかしコンピュータの数が多くなりすぎて管理が大変になってTCOも増大し、そのソリューションとしてクラウドによる再集約化に至った、とみることができます。クラウドにおいては、コンピューティング資源をクラウドに集中させ、クライアントの負荷を下げることで、モバイルデバイスのようなリソースに制限のあるデバイスで、それまで不可能だった高度な処理を行う事ができるようになったのです。
しかし、記事にもあるように、ビッグデータの世界になると、全てのデータをクラウドに集約するのは通信回線の容量やレスポンスタイムの観点からも不可能になってきます。こうしてクライアント(エッジ)でできることはクライアントで、という動きがでてきました。これがエッジコンピューティングやフォグコンピューティングです。ナデラCEOが
「データには引力がある」
というのは、データは発生したところ、その近くで処理するのが最も望ましい、という意味では無いでしょうか。
Microsoftは、現在クラウドとエッジの2極構造に向かっているパラダイムをさらに進め(というか、まだエッジコンピューティングにもなりきっていないですが)、クラウドもエッジも一体化した形にシフトするという意味で「インテリジェントクラウド、インテリジェントエッジ」と名付けたのだと思います。そして、最も注目すべきは、その中心にサーバーレスを掲げたことです。
サーバーレスとは
サーバーレスコンピューティングは、ここ数年出てきた言葉で、その名の通りサーバーを立ち上げずにプログラムを実行できるクラウド利用の方法です。IaaSなどでは、従量制と言いながらもサーバーを契約し、セットアップを行い、使うときにはそれを起動しなければなりませんでした。サーバーレスはその手間も費用も省き、自分が開発したプログラムを登録しておき、何らかのイベントをトリガーとして起動させ、処理が終わるとプログラムの実行環境は消え去ります。純粋にデータ処理にかかった時間分だけが課金されるためコストが安く、維持費もかからず、大量の処理が発生しても自動的にスケールできるため、IoTなどでの活用が期待されています。サービスとしてはAmazon Lambda、Azure Functions、Google Cloud Functionsなどがあり、技術的には(少なくともLambdaは)コンテナを使っているようです。
PaaSやSaaSの機能を組み合わせて使うAPIベースのマッシュアップに似ており、この辺の定義や違いについてはまだ曖昧な点もありますが、私の理解としては、マッシュアップはあらかじめ用意されたソフトウェア全体やソフトウェアの一部機能などの比較的大きな機能ブロックを組み合わせるイメージで、サーバーレスは自分で書いたもう少し粒度の細かいプログラム(Lambdaでは関数と呼んでいます)を動かすということかな、と思います。
状況を検知して最適な環境でプログラムを実行
ここからは記事を読んでの私の妄想です。コンテナで動く「関数」は、どこで動かしてもかまいません。であれば、その時々の回線状況、デバイスの処理能力などに応じて、最適な場所で処理を行う、といった使い方が可能になります。回線が混んでいるが、自分には処理能力が無い、といった場合には、近隣に助けてくれるデバイスが無いか探す、といったことも可能になるでしょう。エッジ側の複数のデバイス間で処理を分散させたりすることも使い方によっては有効かも知れません。状況に応じて、エッジ側でクラウドを構築してしまう、というというイメージ。いわばローカルクラウドです。ただそれも、新しい形として固定したものでは無く、最適な処理形態を目指す一過性のもので、全体としてはクラウドとエッジが一体化されたものとして運用されるという世界なのではないかと思います。
もう一つの視点として、記事にもありますが、これは新しいハイブリッドの形と捉えることもできます。Azureが目指したハイブリッドを、IoTの世界にも広げていこうという戦略、それがインテリジェントクラウド、インテリジェントエッジなのかも知れません。