常時稼働のサーバーを持たずにシステム基盤を構築する「サーバーレスアーキテクチャー」の採用が、ユーザー企業の間で広がりつつある。特にIoT(Internet of Things)やモバイルのシステムで採用が目に付く。主な三つの課題に、サーバーレスアーキテクチャーの特徴が効果を発揮しやすいためだ。

 サーバーレスアーキテクチャーは、常時稼働のサーバー(仮想マシン)無しでシステムを構築する設計手法。サーバーの処理が必要な何らかの「イベント」が発生すると、その都度サーバーを生成して対応する仕組みである。軽量のサーバー生成技術であるコンテナー型仮想化で実現する。

 ユーザー企業が実際にシステムを構築する際には、コンテナー型仮想化技術を応用した「イベント駆動型コード実行サービス」と呼ばれるクラウドサービスを利用することが多い。同サービスは米Amazon Web Services(AWS)の「AWS Lambda」が先行していたが、最近になって選択肢が広がっている。2016年11月に米Microsoftの「Azure Functions」が、同年12月には米IBMの「OpenWhisk」がそれぞれ正式サービスになった。

 ユーザー企業の採用も着実に増えている。AWSでは、中古車売買の「ガリバー」を展開するIDOMなどが活用する。さらに正式サービスとなってから日が浅いAzure FunctionsやOpenWhiskでも既に、「採用した国内企業がある」(日本IBM クラウド事業統括 コンサルティング・アーキテクト 平山 毅氏)という。

 特に、IoTやモバイルのシステムでの採用が目に付く。サーバーレスアーキテクチャーの特徴が、IoTやモバイルのシステムに生じがちな課題の解決に役立つためと考えられる。

設計・監視の手間なし、しかも安い

 IoTやモバイルのシステムで課題になりやすい点は三つある。(1)性能を見積もりにくい、(2)利用料金がかさむ、(3)運用監視の負荷が掛かる、だ(図1)。すべてバックエンドのサーバーに関する課題だ。大量のIoTデバイスやスマートデバイスが不定期にデータを書き込み、それに応じてサーバーがデータを収集・加工するシステムを考えると分かりやすい。

図1●IoTやモバイルのシステムでよく見られる課題にフィットする
図1●IoTやモバイルのシステムでよく見られる課題にフィットする
[画像のクリックで拡大表示]

 (1)は、大量のデバイスからの同時書き込みを見越した設計が求められるためだ。IaaSやPaaSでは自動スケールアウトの設定が可能だが、その場合もスケールの上限を設定するなど、性能を意識せざるを得ない。

 (2)の利用料金は、不定期の書き込みに備えるためにサーバーを常時稼働させなければいけないことが原因の課題。クラウドの仮想マシンの利用料金は一般に、処理の有無にかかわらず稼働した時間に応じてかかる。

 サーバーを常時稼働させるために(3)の運用監視の負荷も発生する。サーバーの稼働を監視したり、障害に備えて冗長化したりする必要がある。