Lambdaに出来る事

はじめに

こんにちは、この記事に目を通してくださり、ありがとうございます。今回はAWS(Amazon Web Service)提供のLambdaについてご紹介していきます。読み方は「ラムダ」、サーバーレスでプログラムを実行できる環境を提供するサービスのことです。

メリット

プログラムの土台が不要

通常、プログラムを開発・実行するためには、サーバーOS環境、Webサーバー、Webアプリケーションサーバーを準備し、実行するためにサーバーやインスタンスを起動し続ける必要があります。こうした環境が全てあらかじめ準備されているのが、Lambdaです。セキュリティ設定、モニタリングといったサービスも含められているため、ユーザーは実行するプログラムを作成して登録するだけです。実行プログラムを動作させるための環境の準備も、その環境のパッチの提供といったメンテナンスやセキュリティ管理も必要ありません。ちなみにLambdaで実行するコードは「Lambda関数」と呼ばれ、Java、Node.js、C#、Pyhonなど様々な言語に対応しているので、プログラミングは馴染みのある言語で開発すれば大丈夫です。

耐障害性

組込み式の耐障害性を備えています。世界中のAWSが管轄する地域に存在する、複数のアベイラビリティゾーン全体でコンピューティング機能を維持し、個別のマシンやデータセンター設備の故障から、コードを守ります。メンテナンス目的のサーバー停止や定期的なダウンタイムも無く、高品質のサービスの提供を実現できます。

料金

サーバーの管理費などは必要ないことはもちろん、リクエストがあったその時間の分だけが課金対象となります。つまり、待機時間中の課金はない、ということです。しかも、100万リクエストにつき0.2ドルでの換算なので大変お値打ちです。待機時間が多く、一気に処理を行う場合などにはうってつけです。

どんなことが出来るの?

ここではLambdaで何が構築できるのか、ご紹介していきます。

1.リアルタイムファイル処理

Amazon S3に画像をアップデートしたことを引き金に、Lambdaが画像リサイズ処理を実行し、Web、モバイル向けに画像がリサイズされます。

2.リアルタイムストリーム処理

Amazon Kinesisにソーシャルメディアのデータが流れ込んだことを引き金に、Lambdaがデータ加工・判定処理を実行し、Amazon Dynamo DBにて処理結果を記録、タイムリーに実績を見えるようにし、アクションを起動させます。

3.抽出・変換・ロード

各拠点のPOS売上データが確定し、S3に配置されたらSQL経由で引き金となります。すると、Lambdaがデータ検証、変換、ロードを段階的に実行し、S3+Athenaによる分析データへと変換されたものから分析を実施します。変換されたデータは別のデータストアにロードすることも可能です。

4.IoTバックエンド

センサーデータをAWS IoTまたは、Kinesisへ送信し、取得・受信したことを引き金に、Lambdaのコードを実行してセンサーデータの集計や特異データの検出、典型的な失敗処理を推測します。そしてアウトプット、例を挙げますと、交換部品の発注処理を自動で実行出来たりします。

5.モバイルバックエンド

Amazon API Gatewayを利用して、APIリクエスト認証と処理のためのバックエンドを構築できます。例として、利用者がキャンペーンに反応するとAPI GatewayのREST API処理を呼び出したことを引き金に、Lambdaが関連データを参照したのち、状態の変更処理を行います。そして、バックエンドのシステムにある情報を参照、更新し、サイトの画面に適応される、ということが出来ます。

6.ウェブアプリケーション+機能API

まず、静止コンテンツはS3にホスティングされています。「利用者がリンクをクリックするとアプリがAPI Gatewayを呼び出す」ことが引き金となり、LambdaがDynamo DBに保持してあるアプリ用のデータを取得してユーザーに返すコードを実行します。

顧客の声

ここまで、サッとご紹介させて頂きましたが、「結局何がいいの?」「もっと具体的に何が出来るのか知りたい」と、お考えの方もいらっしゃるのではないでしょうか。ここではAWSの顧客の声をご紹介致します。実際の導入例をご覧いただくこで、より理解を深めることが出来るかと存じます。

株式会社 スクウェア・エニックス

多人数同時参加型オンラインロールプレイングゲームである「ドラゴンクエスト10」ではゲーム内のメールのやり取り、買い物、キャラクター管理などの他に、ゲーム内で写真を撮影できる機能がついています。この写真撮影機能は好評で、クリスマスや大晦日などのイベントになるとプレイヤー達が撮影する写真の量は膨大になり、サーバーの処理が追い付かず、プレイヤーが写真を閲覧できるようになるには3、4時間掛かることがあるという課題がありました。しかし、年に数回のスパイクの為に高価なサーバーを導入するのは難しいと考え、AWSの利用に踏み込んだというわけです。

データの流れは画像のバイナリデータはS3に置かれ、Lambdaが画像を処理し、AWS SQSから出される画像のバイナリデータを含むキューをオンプレミスサーバー側で取り込むことで、加工済みの画像データが保存され、ユーザーが閲覧できるというものです。移行後、大晦日イベントでは1分間に6,000枚を超える写真撮影がありましたが、今まで数時間掛かっていたものが10数秒で処理できるという驚きの性能を発揮しています。コスト面でもオンプレミスで行う場合と比べて1/20のコストで実現できている他、運用や管理においてサーバーの入れ替えの手間が掛からない為、人的リソースの削減にもつながっています。

おわりに

最後まで読んでいただき、ありがとうございます。いかがでしたでしょうか、AWS EC2というサーバーマシンを必要としない画期的なレンタルサーバーが世に出ていたことにも驚きましたが、それすら必要としないサービスが現れているとは思いませんでした。しかし、Lambdaは使うにあたって単体では作動しないうえ、AWSのサービスは多様過ぎて何と組み合わせたら良いか混乱するかもしれません。もちろん、他のサービスを使うにしてもコストが掛かるので、社内でしっかりと打ち合わせをし、AWSのソリューションアーキテクトとすり合わせをして、自社にぴったりなサービスを組み合わせていく事が大切です。以上、お付き合いいただき、ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です