Software-Defined Networkで、アプリケーション開発者がネットワークインフラを制御する時代がやってくるか
これまでネットワークの構成を変更するには、ネットワーク上のスイッチやルータ、ファイアウォールなどの機器をそれぞれ個別に設定しなければなりませんでした。それを、ソフトウェアでプログラミングするように自由に構成できるようにしよう、というのがSoftware-Defined Networkの考え方です。
それを実現する技術の1つであるOpenFlowの登場によって、Software-Defined Networkはこの1年ほどで一気に現実のものになってきました。
いま、このSoftware-Defined Networkを用いてネットワークインフラを制御するさまざまなソフトウェアが登場していますが、いずれアプリケーション開発者がネットワークインフラを制御するようになるだろうという予想が、日経コンピュータ 2012年12月6日号の記事「これから始める「ネットワーク仮想化」第5回 「SDN」と「OpenFlow」の関係 時代で変わる“ソフトウェア”」で示されています。
アプリケーションからコンピューティングリソースが制御できる時代
連載の著者であるNTTデータの馬場達也氏は、Software-Defined Networkの登場によって、2012年現在起きているのは、仮想サーバの管理、仮想ストレージの管理と合わせて、Software-Defined Networkを用いて仮想化された仮想化ネットワークを管理する「オーケストレータソフトウェア」の登場だと解説しています。
具体的には、OpenStackやCloudStack、そして同社のHinemosなどがそれに当たるとのこと。図を引用します。
そして馬場氏は、この先の変化についての考えも示しています。それは、アプリケーションからネットワークも含むコンピューティングリソースを制御できる時代がやってくるだろう、という予想です。
つまり、アプリケーション開発者が使う、JavaやRubyなどのプログラミング言語レベルで、使用したいネットワークのリソースを指定できるようになるというわけである。そして、ネットワークだけではなく、CPUやメモリー、ストレージなどのコンピューティングリソースも同様に指定して自動的に確保できるようになっていくだろう。
あらゆるものがプログラマブルなリソースへ
アプリケーションプログラマがネットワークを制御するだろうという予想は、Publickeyで5月に掲載した記事「Software-Defined Networkで、ネットワーク構成をプログラマが作り込む時代がやってくる」でも次のように書いていました。
プログラマがアプリケーションに対して動作に必要なメモリを割り当てるように、ネットワークに対して必要な帯域を割り当てるようなプログラミングを行ったり、複数のサーバに対して意図したようなトラフィックの分散が行われるようにロードバランサのアルゴリズムを動的に変更する、セキュリティのために一時的にすべてのトラフィックを遮断する、といったことがプログラミング可能になる。
また、AmazonクラウドのCTOであるWerner Vogels氏も、クラウドの時代には「あらゆるものがプログラマブルなリソースになった」と強調しています。
アプリケーションプログラマがメモリを動的に割り当てるようのと同じように、クラウドに向かってサーバインスタンスを立ち上げたり、ネットワークの構成を制御できるようことを、技術的に可能にする環境が整っていくことは間違いないでしょう。
それを必要とする、もしくは活用するアプリケーションとはどういうものなのか。今度はアプリケーション側の新たなアーキテクチャーが求められていくことになります。例えばAmazonクラウドの「クラウドデザインパターン」などが、そういったものにあたるのかもしれません。