コンテナネイティブなOSSのFaaS基盤を開発中、Oracle CloudでのFaaS提供は来年
オラクルのサーバーレス、FaaS基盤「Fn」の現状を担当VPに聞く
2018年06月06日 07時00分更新
昨年10月に米国で開催された「JavaOne 2017」および「Oracle Open World(OOW) 2017」において、オラクルはオープンソースのFaaS(Function-as-a-Service)基盤ソフトウェアである「Fn(エフエヌ)」を発表するとともに、このFn Projectを用いたFaaSをOracle Cloud上で提供する予定であることを明らかにした。
オラクルによると、Fnはオープンスタンダード技術をベースとした“コンテナネイティブ”なFaaS基盤であり、Javaを始めとするあらゆる開発言語に対応、ラップトップからオンプレミスデータセンター、パブリッククラウドまであらゆる環境で動作、ベンダーロックインの回避といった特徴を持つ。市場で先行するAmazon Web Services(AWS)のFaaS「AWS Lambda」で開発したファンクションを取り込み、実行することもできるという。
今回は、米オラクルでFnの開発を主導するサーバーレス担当VPのチャド・アリムラ氏に、オラクルが現在取り組んでいる“コンテナネイティブな”アプリケーション環境、Fnを含むオラクルのコンテナ関連サービスの特徴や戦略などを聞いた。
OOWで“コンテナネイティブな”アプリの開発基盤クラウドを発表
アリムラ氏は2011年からおよそ7年間、Iron.io(アイアンアイオー)というテクノロジースタートアップの共同創設者兼CEOを務めていた。Iron.ioは、バッチ処理プロセスのコンテナ管理システム「IronWorker」、分散メッセージキューシステム「IronMQ」などのソフトウェアプロダクトを開発し、3000社以上の顧客を持つ。そして同社が開発していたオープンソースソフトウェア(OSS)の「IronFunctions」が、現在のFnの前身となっている。アリムラ氏らIron.ioの一部開発者も昨年5月、オラクルに移籍した。
アリムラ氏は現在、Oracle Cloud Infrastructure Groupの配下にあるContainer-Native Group(CNG)に所属している。つまりOracle CloudのIaaS部門で「主に開発者(Developer)向けのサービス」(同氏)、DockerコンテナやKubernetes周辺のクラウドサービスを担当するチームである。
「コンテナネイティブなインフラに対するニーズが増えてきている」とアリムラ氏は語る。開発者はサーバーなどのインフラ管理を一切気にすることなく、コード開発だけに専念できる環境を求めており、その現実解のひとつとしてコンテナ技術が登場したからだ。「VM(仮想マシン)で展開するのではなく、コンテナでの展開を第一に考えるのが、コンテナネイティブなアプリケーションだ」(アリムラ氏)。
オラクルはOOW 2017において、次世代のアプリケーション開発プラットフォームとして「Oracle Container Native Application Development Platform」を発表した。これは、その名のとおりコンテナネイティブアプリケーションの包括的な開発基盤であり、具体的には、コンテナのライフサイクル管理+CI/CD(継続的インテグレーション/継続的デリバリ)ツールの「Oracle Container Pipelines」(昨年買収したWerckerを統合したもの)、コンテナイメージのプライベートレジストリ「Oracle Container Registry Service」、そしてKubernetesクラスタの管理ツール「Oracle Container Engine for Kubernetes」の3つを、マネージドサービスとして提供するものだ。
このうちContainer Engine for Kubernetesは、Oracle CloudコンソールからワンクリックでKubernetesクラスタを構築できるサービスだ。開発者が扱いやすいように、コマンドライン(CLI)やAPIからでもクラスタの構築/スケールアウト/管理といった操作ができる。マルチAD(Availability Domains)/Zoneをサポートし、クラスタプールの自己復旧機能も備える。
アリムラ氏は、CNGがこうしたサービス群の開発において重視しているのは、OSS採用や業界標準(Open Container Initiative)準拠による「オープン性」、Oracle Cloudスタックとの「統合性」、そして可用性/パフォーマンス/セキュリティのすべてにおける「エンタープライズグレード」の3点だと説明した。
コンテナネイティブなFaaS基盤「Fn」の特徴
これに加えてOOW 2017では、前述したFnのオープンソース化(Apache License 2.0)やクラウドサービスとしての提供計画も発表された(オラクルはFaaSの正式名称を発表していないが、アリムラ氏は「Oracle Functions」と呼んでおり、本稿でもそう表記する)。これらもCNGが担当するプロダクトだ。
Fnは、FaaS機能を提供するメインプラットフォームの「Fn Server」、開発者向けコマンドラインツールの「Fn CLI」、各言語に対応する「FDK(Function Development Kit)」と、大きく3つのコンポーネントで構成されている。Fn ProjectのGitHubを見ると、現在のところJava、Go、Python、Node.js、RubyのFDKが提供されているが、コンテナベースの技術であるため、ランタイムを格納してコンテナ化すればあらゆる言語でファンクションが開発できる。
Fn Serverは、開発したファンクション(=Dockerイメージ)をレジストリに配置し、トリガーを設定すれば、あとはトリガーに応じてファンクションのコードが実行される仕組みだ。その裏側では、ファンクションの実行状況に応じて自動的にインフラの分散やオーケストレーションが行われ「開発者から見れば完全にサーバーレスな環境」(アリムラ氏)が実現する。
アリムラ氏はFn CLIを使って簡単なデモを見せてくれた。詳細は公式ドキュメントを参照してほしいが、「fn start」コマンドでFn Serverを起動、「fn init」で指定した言語に対応する設定ファイルなどを生成し、「fn run」でファンクションのビルド(ランタイムを含むDockerコンテナイメージの生成)とローカル環境でのテスト、「fn deploy」で本番環境への展開、「fn call」(あるいはcurlやWebブラウザでのアクセス)でファンクションの実行といった具合だ。パイプを使って標準入力からJSONデータなどを渡すこともできる。
さらに現在開発中の「Fn Flow」では、マイクロサービスとして連続動作する複数のファンクション群を単一コードに組み込む形で書いたり、各ファンクションの実行ステータスをWeb GUIでリアルタイムにモニタしたりする機能が提供されるという。
「すばらしいデベロッパーエクスペリエンス」の実現が目標
アリムラ氏は、他のFaaS基盤ソフトウェアとの違いとして「オープン」「コンテナネイティブ」「他のシステムとの統合」「ベンダーフリー」といったFnの特徴を挙げた。特に、Dockerコンテナのエコシステムがそのまま生かせる点は強みだと語る。「たとえば継続的インテグレーション、脆弱性スキャンなど、コンテナをサポートするツールであればそのまま適用できる」(アリムラ氏)。またDocker環境があれば、開発者のローカルPCやオンプレミス、他社クラウドにも簡単に配置できるのも優位点だろう。
加えてアリムラ氏は、Fnの開発においては「すばらしいデベロッパーエクスペリエンス」にも注力してきたと語った。開発者が望む「コード開発だけに専念できる」FaaS基盤を提供するのがFn Projectの目標だという。
Fn Projectでは、正式版(GA)リリースを今年中に行う計画だ。またオラクルがOracle Functionsを提供するのは「来年のいつかの時点で、というのが正解だろう」とアリムラ氏は語った。市場ではすでに、AWS Lambda、Microsoft Azure Functions、Google Cloud Functions、IBM Cloud Functions(OpenWhisk)といった競合のFaaSが展開を始めており、かなり後発のサービスとなる。とはいえ、ここではオラクルのアドバンテージを生かして開発者を取り込んで行く戦略のようだ。
「デベロッパーエクスペリエンスを重視しており、どんな企業規模の開発者にも適している。ただ、やはりJava開発者やオラクルの既存顧客の開発者は大きな価値を見いだすのではないか」「エンタープライズのカスタマーベースを多く持つのがオラクルのアドバンテージであり、そうした顧客の声をしっかり聞いてFnやサービスに反映させていきたい」(アリムラ氏)