サーバレスの特徴
キム氏は、サーバレスの機能や特徴について次のように説明する。
「サーバレス」はサーバインフラの抽象化の一つであるという。抽象化にはプロビジョニング、スケーリング、パッチ適用なども含まれ、サーバOS、ミドルウェア、ネットワーク部分をまとめただけではない。この点はPaaSとの相違点となる。サーバレスでは代わりに「FaaS(Function as a Service)」という言葉を使う。ここでのFunctionは小さい独立したプログラム。サーバが持つ演算機能の単位ということになる。サービス部分にプロビジョニングやスケーリングといった機能維持のしくみが含まれる(ユーザーはこの部分を気にする必要はない)。またインフラだけでなく、使いたい機能も抽象化されているので、開発が容易だ。
![ファンクションとFaaSの説明](http://ez-cdn.shoeisha.jp/static/images/article/11026/11026_fig02.png)
[画像クリックで拡大表示]
オラクルでは、Fn Functionを「Oracle Functions」というサービスで提供している。重要な点は、Oracle Functionsはオープンソースプロジェクト「Fn Project」をベースにしていることである。そのため、プラットフォーム、クラウド、オンプレミスなど環境を選ばない(ベンダーロックインなし)。もちろんオラクルらしく、エンタープライズユースを考えてセキュリティ、管理が適用されている。Fn Project自体にもオラクルは深くコミットしている。
![Oracle Functions](http://ez-cdn.shoeisha.jp/static/images/article/11026/11026_fig03.png)
[画像クリックで拡大表示]
さらにキム氏によれば、サーバレスが支持されるのは、課金がファンクションが呼び出されて実行される時間単位であることも大きいという。Oracle Functionsの場合、100ミリ秒単位での課金となっている。
Fn Functionの使い方とユースケース
Fn Functionの実体はコンテナなので、利用する場合には何らかのレジストリにコンテナをプッシュする必要がある。呼び出しは「指定のファイルが読み込まれた」といったイベントをトリガーとする。
![ファンクションの利用方法](http://ez-cdn.shoeisha.jp/static/images/article/11026/11026_fig04.png)
[画像クリックで拡大表示]
実行時課金ということを考慮すると、Fn Functionのユースケースは、イベントベースの処理や、負荷に季節変動がある処理、バッチ系の定期・定時処理、予測不能なピークや突発的イベントの対応、短時間の処理など、「一時的に(時には大量に)発生する処理」になるだろう。
例えば、画像データをデバイスごとの解像度に加工する処理や、ログデータなどのストリーム処理(ユーザーコメントなどの傾向分析)などだ。バッチ系では、月次の請求処理やポイント計算処理が例示された。モバイルアプリのバックエンドでは、REST APIをトリガーとして、認証処理、DBサービスのエージェントなどにも使える。IoTでは、センサーネットワークの監視、ダッシュボード機能の処理が可能だ。
![ユースケース1(リアルタイム画像処理など)](http://ez-cdn.shoeisha.jp/static/images/article/11026/11026_fig05.png)
[画像クリックで拡大表示]
![ユースケース2(リアルタイムソーシャル分析など)](http://ez-cdn.shoeisha.jp/static/images/article/11026/11026_fig06.png)
[画像クリックで拡大表示]
![ユースケース3(請求処理・バッチ処理)](http://ez-cdn.shoeisha.jp/static/images/article/11026/11026_fig07.png)
[画像クリックで拡大表示]
![ユースケース4(モバイルアプリのバックエンド)](http://ez-cdn.shoeisha.jp/static/images/article/11026/11026_fig08.png)
[画像クリックで拡大表示]
![ユースケース5(IoTセンサー群の処理)](http://ez-cdn.shoeisha.jp/static/images/article/11026/11026_fig09.png)
[画像クリックで拡大表示]