新たなクラウドサービスとして「FaaS (Function as a Service)」が注目される中、その代表格ともいえる「AWS Lambda」を採用する企業が増えています。AWS Lambdaはサーバーレス環境でプログラムの単体稼働が可能なことから、開発・運用効率の向上が期待できるサービスです。ここでは、AWSの知見を深めようとしているエンジニアに向け、FaaSおよびAWS Lambdaの概要やメリット、具体的な導入事例などを紹介しています。
AWS Lambdaとは
AWS Lambdaは、Amazonが提供しているFaaSです。FaaSの中でも特にメジャーなサービスとして知られています。
AWS Lambdaは、任意のプログラムを定義しておき、インターネットを通じてクラウド上からプログラムを実行できるようになっています。プログラムの実行は、Lambda上から設定する「実行トリガー」によって開始されます。実行トリガーにはさまざまな関数が登録できるようになっており、この関数の豊富さがAWS Lambdaの特徴のひとつです。
FaaSとは
FaaSは、サーバーレスコンピューティングの一種であり、プログラム実行に必要な環境や前後の処理をクラウド上から提供するサービスです。サーバーレスコンピューティングをさらに細かく突き詰め、純粋な処理実行以外のすべてをサービスとして提供しています。
サーバーレスコンピューティングサービスとは
サーバーレスコンピューティングとは、サーバーを管理することなく、特定の処理を実行できる環境を表しています。つまり「サーバーレス」とは、「サーバー自体が不要」という意味ではなく「サーバーの管理が不要」という意味で使われています。
サーバーレスコンピューティングでは、物理的なサーバー筐体のみならず、ミドルウェアの管理も不要です。したがって、ユーザーはプログラムの開発と実行のみを担当すれば良く、極めて小さいコストで開発が進められます。
FaaSの特徴
一般的にプログラムは、「1.何らかのリクエストを受信」「2.プログラムにリクエストが渡される」「3.プログラムがリクエストを受信して処理を実行する」「4.実行結果をレスポンスとして返信する」といった動きをします。
FaaSでは3以外のすべてをクラウドサービスとして提供します。つまりユーザー側は、純粋な処理の実行のみを負担すればよく、環境構築・管理・運用の手間から解放されます。
FaaSは、マイクロサービスアーキテクチャをサポートするサービスとして広まりました。
マイクロサービス・マイクロサービスアーキテクチャとは
マイクロサービスとは、アプリケーションが持つ機能を細かいサービスに分割したものです。マイクロサービスアーキテクチャは、マイクロサービスをいくつも組み合わせることで、サービスを連携してシステムを動かすという考え方です。アーキテクチャは直訳すると構造や構成といった意味合いです。
FaaSの強み
FaaSは、重厚長大な単体のプログラムを作るのではなく、関数レベルの機能のみを持ったマイクロサービスをいくつも組み合わせることで、開発・保守作業を単純化しようという狙いがあります。
ただし、マイクロサービスは使用頻度にばらつきがあり、個別に管理・運用するためには相応のコストが必要です。そこで、FaaSによるマイクロサービスの管理が普及していきました。FaaSを使用すれば、開発者は単純に機能の中身だけを実装すればよく、起動・レスポンスなど前後の処理はFaaSにすべて委託することができます。
AWS Lambdaでできること
AWS Lambdaは、サーバーやミドルウェアなどを管理することなく、純粋にプログラムのみを実行することができます。定義した機能、関数からリクエストがあったときだけ実行されるため、「常時起動するプログラム」よりも「頻繁には使われないが必ず備えておくべきプログラム」に適しているでしょう。
AWS Lambdaは、プログラムの定義さえ完了していれば、どのようなタイプの処理も実行可能です。さらに、プログラムの実行に必要なリソースの割り当てなども必要ありません。コードをZIPファイルやコンテナイメージでAWS Lambda上にアップロードするだけで準備が整います。
AWS Lambdaを使用するメリット
AWS Lambdaを使用することで、開発・保守・運用コストなどが低減されます。具体的には次のようなメリットが発生するでしょう。
サーバー管理コストが最小化される
開発用の実行環境構築では、専用のサーバーを用意することが多いです。このサーバー管理にかかるコストは意外に大きく、開発コストの増大を招く遠因になっています。AWS Lambdaを使用することで、こうしたコストをほぼ全てカットできる点がメリットのひとつです。
開発効率の向上が期待できる
サーバー管理の手間がなくなることで、コア業務(コーディングやテストなど)にリソースを集中することができます。
任意の処理を自動化し処理コストを削減できる
AWS Lambda上に定義されたプログラムは、前提となる関数などからのリクエストを受けて実行されます。また、処理が終了した後のレスポンスもLambdaから送信されるため、一連の処理を自動化することができます。さらに、実行回数に対しても自動スケールが働くため、実行回数の調節も必要ありません。
料金面でのコスト削減も期待できる
AWS Lambdaは、「定義された処理が実行された回数」と「処理が実際に動いた時間」で料金が決定します。処理が動かない限りはコストが発生しないことから、最小限のコストで維持できます。ちなみに、毎月100万リクエスト(実行回数100万回)および、40万GB/秒までの無料枠が設けられています。スモールスタートなサービスやテストフェーズ中のサービスであれば、無料枠の範囲内でも開発を進められそうですね。
AWS Lambda使用時の注意点
AWS Lambdaは利便性の高いツールですが、使いこなすのにはある程度の学習が必要です。特にLambda関数の使用経験がない場合、まずはツールに慣れる必要があるでしょう。またLambda関数の最大実行時間は5分という制限があります。
AWS Lambdaの使い方例
AWS Lambdaの使い方例をご紹介します。
電子版新聞における紙面ビューア表示処理
大手新聞社が運営している電子版サービスでは、PC・スマートフォンなどから記事を読むための「紙面ビューワ」を提供しています。この紙面ビューワに対しては、毎日膨大なアクセスがあるうえにアクセスの増減が激しく、負荷調整に手間がかかるのだそうです。そこでAWS Lambdaを導入した結果、負荷に応じたインスタンス増減の手間が小さくなり、コスト削減につながったとのことです。
オンラインゲーム内での特定の処理パフォーマンス改善
国内最大手のゲーム開発企業では、オンラインゲームの運営において、スマートフォンアプリとの連動時に発生する負荷処理への対策が課題だったそうです。具体的には、年に数回発生するスパイクアクセス(突発的なアクセス増)のために、高価なインフラ設備を投入すべきかどうか判断しかねていたとのこと。そこで、リクエストに応じて自動的に実行回数がスケールされるAWS Lambdaを導入しました。AWS Lambdaの導入後は、オンラインゲームとアプリケーションの連動にかかる時間が数時間から10数秒にまで短縮され、コストもオンプレミス比で20分の1程度にまで圧縮されたそうです。
まとめ
クラウドサービスの中でも、特に注目されているのが「FaaS (Function as a Service」であり、その代表格として挙げられるのが、「AWS Lambda」です。AWS Lambdaは、サーバーレス環境で迅速にプログラム単体を稼働させられることから、開発効率の向上に寄与します。今後AWS関連のプロジェクトに参画したいと考えているエンジニアは、ぜひ仕組みを理解しておくことをおすすめします。
ITエンジニアの転職ならレバテックキャリア
レバテックキャリアはIT・Web業界のエンジニア職を専門とする転職エージェントです。最新の技術情報や業界動向に精通しており、現状は転職のご意思がない場合でも、ご相談いただければ客観的な市場価値や市場動向をお伝えし、あなたの「選択肢」を広げるお手伝いをいたします。
「将来に向けた漠然とした不安がある」「特定のエンジニア職に興味がある」など、ご自身のキャリアに何らかの悩みを抱えている方は、ぜひ無料のオンライン個別相談会にお申し込みください。業界知識が豊富なキャリアアドバイザーが、一対一でさまざまなご質問に対応させていただきます。
「個別相談会」に申し込む
転職支援サービスに申し込む
※転職活動を強制することはございません。
レバテックキャリアのサービスについて