こんにちは、湖山です。
今回のテーマは『サーバーレス』です。
近年、「サーバーレス」という単語がバズワード化しており、触ったことはないけど耳にしたことはあるよって方も多いと思います。実際、「サーバーレス」ってどうなの?使いやすいの?という方へ。
私自身の理解の整理も兼ねて、できるだけ分かりやすくイメージ図も添えてまとめてみました。
※絵師様:イラスト提供ありがとうございます!
はじめに
まず、はじめにWebアプリケーションとはどのように動いているのでしょうか?
また、その構成とはどのようになっているのでしょうか?
大前提として、Webアプリケーションを動かす「サーバー」が必要となります。
このサーバー上で様々なプログラムが動いています。
ただ、このサーバーの管理が割と大変なのです。。
サーバー構築、ネットワーク設定、必要なミドルウェアの準備、セキュリティパッチ適用、負荷対策、CPU・メモリの増設、ストレージ空き容量確保・・・などなど。
これらの作業は必要ではありますが、本当にアプリ開発者が時間を割きたいところは、サーバーの管理ではなくプログラムを作るところにあります。
そこで生まれたのが「サーバーレス」というものです。
サーバーレスについて
サーバーレスとは?
「サーバーレス」と聞くと、”サーバーが無い(レス)??” と思われるかもしれませんが、実はそうではありません。
実際にはサーバーは存在します。
ただ、そのサーバーの構築や保守、セキュリティ、負荷対策などのサーバーの管理をサービス提供元(ベンダー)が請け負ってくれます。
そのため、アプリ開発者としてはサーバーの管理から解放される(サーバーの管理が無くなる)ことから「サーバーレス」と呼ばれています。
- 「サーバーレス」でも、サーバーは実在する!
- ただし、そのサーバーの管理はしなくてもよい!
Function as a Service (FaaS)
ここで「サーバーレス」と深くかかわってくる用語「Function as a Service (FaaS)」を確認しておきます。
「Function as a Service (FaaS)」とは、
プログラム = 関数(Function) の実行環境を提供するクラウドサービスのことです。
先ほどご説明したようにベンダーがサーバーを保有しております。
このサーバーをいい感じに管理してくれて、利用者へ実行環境を提供してくれます。
ここにアプリ開発者が作成した関数(Function)をアップロードするだけで、サーバーを準備することなくプログラムを実行することができます。
「サーバの管理はベンダー」⇔「プログラムの管理は開発者」と役割が分かれるのでアプリ開発者はプログラミングに専念することができるのです!!
- 「Function as a Service (FaaS)」= “関数を実行できるサービス“
- アプリ開発者はプログラミングに専念することができる
サーバーレスのメリット
サーバーレスのメリットは以下のとおりです。
インフラ運用の簡素化
アプリ開発者はサーバー関連の作業が不要となる!
それによりプログラム作成に専念することができます。
従量課金制
サーバーレスは、プログラムが実行された回数・時間に対して課金されるためコストパフォーマンスに優れている!
従来のサーバーの場合は、いつアクセスがくるのか分からないため常に起動しておく必要がありました。そのため、電気代などのランニングコストが無駄にかかってしまいます。
スケーラビリティ(拡張性)の向上
サーバーにアクセスが集中し負荷が増大した場合、自動的に性能が拡張される!
利用者は何もしなくてもよい。
高可用かつ安全
複数のデータセンターでサービスを提供しており、予期せぬ障害(落雷によるサーバーのショート、地震津波等による物理的破損など)が発生してもユーザーへの影響はほとんど無くなる!
サーバーレスのデメリット
メリットばかり目が行ってしまいがちですが、デメリットもしっかりと押さえておく必要があります。
サーバーレスのデメリットは以下のようなところにあります。
レイテンシー問題
ネットワークを介して処理が実行されるため、多少なりとも通信の遅延時間が発生します。
メリットの従量課金制と表裏一体ですが、アクセスが来ない間はサーバーレスは休止状態(コールド)になっています。そのため、アクセスが来てからコンテナ起動や初期化などに数ミリ秒~数秒の遅延が発生します。
※ホットスタンバイ設定を入れておくことで起動時のオーバーヘッドを減らすことは可能
長時間の処理には不向き
現在提供されているサーバーレスは実行時間や消費可能なリソースに制限が設けられています。
例えば、日次バッチのような長時間かかる処理には向いていません。
サーバーレスの種類
サーバーレスはどのような種類があるのでしょうか?
有名なところでは以下のようなサービスが提供されています。
公開日 | サービス提供元 | サービス |
---|---|---|
2014年11月 | Amazon Web Services(AWS) | AWS Lambda(ラムダ) |
2016年3月 | Microsoft | Azure Functions |
2017年3月 | Google Cloud Functions |
現時点で世界で最も利用されているのは、「AWS Lambda(ラムダ)」です。
いち早くサービス公開したという一日の長があり事例が豊富なこと、AWSの他サービスとの連携が容易なことなどから、世界中の開発者から評価されています。
サーバーレスの導入事例
導入事例①:iRobot
iRobot は、消費者向けロボットの開発で世界をリードする企業であり、Roomba (インターネットに接続されたロボット掃除機) のメーカーです。サーバーレスアーキテクチャを活用して、スマートホーム向けの次世代のコネクテッドデバイスを構築しています。
iRobot のプラットフォームは AWS Lambda と AWS IoT を基盤としており、管理するエンジニア数はわずか 10 人足らずです。
「AWS のサーバーレスアーキテクチャと、その内部における AWS のサービスの使いやすさにより、開発者はビジネス価値の創出に時間を使うことができる」
Ben Kehoe
iRobot、クラウドロボティクスリサーチサイエンティスト
導入事例②:NETFLIX
Netflix は、世界最大のオンラインメディアストリーミングプロバイダーの 1 つです。同社では、AWS Lambda を使用してルールに基づいたセルフマネジメントインフラストラクチャを構築し、非効率的なプロセスを置き換えることで、エラーの発生率を減らし、貴重な時間を節約する予定です。
「AWS Lambdaを使用してルールベースの自己管理インフラストラクチャを構築し、非効率的なプロセスを置き換えて、エラーの発生率を減らし、貴重な時間を節約することを計画」
Neil Hunt
Netflix’s Chief Product Officer
導入事例③:PhotoVogue
PhotoVogue は、Vogue Italia の一部であるオンライン写真投稿プラットフォームを提供する会社です。AWS Lambda と Amazon API Gateway を使用することで、PhotoVogue は IT コストを削減しながらカスタマー体験を向上させることができました。
「Amazon API GatewayとAWS Lambdaを使用すると、ユーザーエクスペリエンスが最大90%速くなります。これは、画像をアップロードする写真家と画像を編集する編集チームの両方が対象です。」
Marco Viganò
Head of Digital Development, PhotoVogue
ここまでのまとめ
ここまで、サーバーレスの基本的な事項を説明してきました。
一旦、ポイントを以下にまとめています。
- 「サーバーレス」とは、サーバーの管理から解放されることを意味する
- ベンダーがサーバの管理を担当
- アプリ開発者はプログラム作成に専念
- 世界の企業は既にサーバーレスを導入し始めている!
次回、「Amazon Web Services(AWS)」が提供している 「AWS Lambda(ラムダ)」を使って利用方法を説明していきます。