第9回:クラウドサービスのサーバーレスは銀の弾ではない|経営者のためのクラウド講座
- TAG : Garbage in Big “X” Out | クラウドサービス | 経営者のためのクラウド講座
- POSTED : 2018.03.19 11:40
f t p h l
目次
サーバーレスは需要に合わせて複数のサービスを組み合わせる事が重要
前回の連載から1年半も経ち、クラウド業界にも新たなトレンドが生まれています。そして、相変わらずトレンドキーワードだけが独り歩きして、良い側面ばかりクローズアップして「落とし穴」が見えなくなっている気がします。そのため、不定期ではありますが本連載を再開したいと思います。
今回は一時期の「ビックデータ」と同様に響きが良い「サーバーレス」について、細かい技術情報は省いて、良い側面だけでなく、悪い側面もお伝えしたいと思います。(今回もAmazon社の「Amazon Web Services(通称:AWS)」、Microsoft社の「Azure」、Google社の「Google Cloud Platform(通称:GCP)」のサービスを中心に説明します)
サーバーレスの定義とは?
サーバーレス(Serverless)は文字通り、サーバーを意識しないクラウドサービス、またはアーキテクチャのことを指します。クラウドサービスではクラウドサーバー以外のクラウドストレージ、クラウドデータベースなど殆どの提供サービスがサーバーレスサービスと言っても過言ではありません。
そして、サーバーレスとペアで考えなくてはいけないキーワードが「マネージド」です。「サーバーレス」という形でサービス提供するためには、クラウドベンダー側で動作基盤を準備する必要があります。例えばクラウドデータベースの場合、データベース環境を構築した状態でサービス提供しています。そして利用者はデータベースの環境構築するスキルがなくても優れたデータベース環境を利用可能です。その様に自分でサーバー環境を構築することなく提供しているサービスがマネージドサービスと言われています。
「サーバーレスサービスとマネージドサービスの違いは?」と思われる方も多いと思いますが、具体的な線引きはないように思えます。私の場合は勝手にサーバーレスサービスは概念的な思想やサービス形態。そして、マネージドサービスはサーバーレスサービスを実現するための技術のように解釈しています。
ご存知の通り、クラウドサービスには多くの種類があり、そのため、「サーバーレス」と言っても非常に適用範囲が広く、一般的にはマネージドの適用範囲によって、PaaS(Platform as a Service)やSaaS(Software as a Service)という区分けをしていることが多いですが、今回はサーバーレスの特徴を説明するために以下の図を使って説明します。
サーバーレスによって運用コストが削減できるとは限らない
「サーバーレス = 運用コスト」のように運用コスト削減の極みがサーバーレスのような認識になっていることがありますが、使用するサーバーレスサービスによっては運用コスト削減に直結しないものもあります。
サーバーレスサービスはサーバーが動いていないと誤解される方も多いですが、裏側ではクラウドサーバーなどのマシンリソースの上にマネージドサービスでミドルウェアなどを構築してサービス提供いるものもあります。(上記の図の右半分)
分かりやすい例ですとクラウドデータベースはグレードによって、CPU、メモリ、記憶容量などが割り振られ、データベースサーバーとして稼働している時間によって課金が発生します。
紛らわしい例ですとコンテナやHadoopなどのサービスです。コンテナサービスはデータベースと異なり、アプリ実装・稼働させることで初めて意味を成します。しかし、アプリを実行していない間でもコンテナサービス自体が起動していれば、サーバーリソースを占有していたことによる時間課金が発生します。そのため、複数のアプリを同時実行しない限り、コンテナサービスは割高になってしまう事があります。
サーバーレスは何でもできるわけではない
サーバーレスサービスはマネージドサービスによって最初から非常に安定、かつ高性能な機能が整えられています。オンプレミス環境にデータベース環境を構築しようとした場合、OSのインストールからデータベースソフトのインストールやチューニング、そして、もしもの時のバックアップやフェイルオーバー(障害時に代替え機に自動的に切換えする機能)などやることは非常に多く、高度なスキルが必要です。しかし、クラウドデータベースならブラウザの管理画面から必要事項を入力するだけですので1時間も掛からずに環境構築できます。
この様にマネージドサービスによって、簡単になった反面、やれる事が制限されてしまっています。クラウドデータベースの場合、データベース環境が決められているため、データベースのバージョン変更や拡張機能追加はサポート外の事は出来ません。また、Functionサービス(AWS Lambda、GCP Cloud Functions、Azure Functionsなど)の場合、プログラムを書くだけで実行環境ができますが、スペックやプログラム言語、実装できる機能の制限があります。
クラウドサービスのSaaSが熱い
ここまでサーバーレスサービスのマイナスイメージが多めに記載していましたが、SaaSのサーバーレスサービスには多くの優れたサービスがあります。データ送受信サービスの中にはメッセージを送受信だけしかしないサービスもありますが、確実にメッセージを送受信できますので、高負荷システムや複数の処理サービスで並列処理するようなシステムでは重宝します。
特に必要な時にだけ起動し、マネージドサービスで特化した機能を提供しているサービスはクラウドベンダーのアップデートが頻繁で、毎週のように新しい機能が追加されています。(上記の図の左上) 例えば、AWSのFunctionサービスであるAWS Lambdaは「クラウドストレージにファイルがアップロードされた」などのAWS内の他クラウドサービスの処理イベントを検知して、イベントに連動した処理をプログラムで追加できます。また、Google Cloud Platform には、自然言語翻訳や画像解析などの Machine Learning 系を中心に非常に多くの優れたAPIが揃っています。
これらの必要な時にだけ指導するSaaSサービスは、一定の使用量まで無料、または非常に安く使えるため、企業側としてはコスト削減につながり、また、エンジニア側としては最新のトレンドに触れられるため興味がある領域であるといえます。
サーバーレスは銀の弾にはなれないがマシンガンにはなれる
この様にサーバーレスサービスは機能特化はしているが、1つのサーバーレスサービスで全てが解決するような一撃必殺のサービスではありません。また、サービス提供範囲外の機能拡張は難しく、複数のサービスを組み合わせる必要があり、クラウドサービスの専門スキルは必要になる場合もあります。
そのため、最初から100%のサーバーレスではなく、クラウドサーバーを使いながら部分的に優れたサーバーレスサービスを必要に応じて取り入れて行けばいいと思います。サーバーレスサービスの1つ1つは小さな機能でも、安定稼働や機能特化という特徴があり、他のクラウドサービスと組合せやすいため、複数組み合わせれば強い武器になることは間違いありません。
連載:経営者のためのクラウド講座
- クラウドを使えない大企業は、ベンチャー企業と戦えるのか
- クラウドサービスの課金体系・支払方法は複雑
- クラウドサービスのシステムリリースの早さと安さの秘密
- クラウドサービスのシステム開発に求められる技術者とは
- クラウドストレージによって安く・安全にデータを保存する
- クラウドサーバーはアイディア次第で使用用途は無限大
- クラウドデータベースは高ければ良いって物ではない! 特徴を見極める必要がある
- AWS × Azure × Google Cloud Platform を様々な角度から評価 ~AWSは絶対王者なのか?~
- クラウドサービスのサーバーレスは銀の弾ではない (本編)
- クラウドサービスの機械学習サービスの整理
f t p h l