このような疑問にこたえます。
- Lambda とは
- Lambda の利点
- ユースケース紹介
- Lambda の学習方法
本記事を読むことでLambdaの業務導入を検討できるレベルを目指せる記事になっています。
知識定着のため、インプット、アウトプットのバランスを考えてまとめています。
筆者はAWS経験5年程度です。AWS資格は5冠達成しました。
現在は大規模ECサイトのAWS運用を任されるようになっています。
【AWS初心者向け】AWS Lambda とは【サーバレスの業務導入を目指す】
Lambda とは
lamdaはビジネスの価値を生み出すビジネスロジックに集中するためのサービスです。
環境構築や管理が不要でいきなりコードがかけます。
このようなサービスをFaaS(=サーバレス)といいます。サーバレスの普及を進めようという流れがあるのでこれを理解しておくことは重要です。
AWSのコンピュートサービスの種類
↑【AWS Black Belt Online Seminar】 AWS Lambda Part1より抜粋
コンピュートサービスは大きく分けてインスタンス、コンテナ、サーバレスの3種類があります。
AWSは基本的にはサーバレスを推奨していますが、それぞれのメリット・デメリットを見極めてリソースを選択します。
※EC2についてはこちらにまとめています
【AWS初心者向け】 EC2 運用担当者が知っておくべきこと
Lambda の普及率
下記の記事によると2025年までにグローバル企業の50%がFaas導入するといわれ、今後必須スキルとなってきそう。
(2020年では普及率は20%程度といわれる)
Lambda の利点
ここではLambdaのメリットをお伝えします。AWS Lambda公式ページに沿って解説します。
サーバ管理が不要
サーバの管理業務が不要になります。サーバ管理業務には主に構築(OSやミドルウェアの設計、インストール、設定)や運用(監視、障害対応)などがあります。
できるならやりたくない、面倒な作業のことですね。
継続的スケーリング
日本全国で利用されている大手サイトを運用していますが、ピーク時でも秒間500リクエスト以下くらいです。(秒間20~30PV程度)
数十万リクエストに対応できれば、大体のサイトはボトルネックとなることなく運用できるのではないかと思います。
※デフォルトでは同時実行数はアカウント全体で1000が最大。AWSに申請することで数十万まで引き上げが可能。
ミリ秒計測でコストの最適化
実行回数、実行時間課金となるため、余剰なリソース料金を払う必要がありません。
Savings Plansは電車の定期みたいなもので、月額で定額支払うことでコストメリットを出せます。契約期間は1年か3年。
あらゆる規模で一貫したパフォーマンス
コードごとにどれだけのメモリを利用するか選択できる。メモリ量2倍にして実行時間半分以下になればコストメリットがでる。
最適なメモリ量を確認した方がよい。
Lambda ユースケース紹介
AWS Lambdaの公式ページに紹介されている利用用途からピックアップして紹介します。
AWS Lambda公式ページ
データ処理
一番多いパターンと思われるデータ処理の利用用途を紹介します。
リアルタイムファイル処理
S3にファイルがアップされたことをトリガーにLambdaを起動することができる。
サムネ作成がよく聞く処理。
リアルタイムストリーム処理
Kinesisでデータ収集しLambdaで成形、分析基盤に格納という流れ
キューについては下記が理解しやすい
参考:基本情報技術者平成26年春期 午前問7 キューとスタック
キューを挟むことでバックエンドのサービスと疎結合化される
バックエンド
バックエンドでのLambdaの利用パターンを紹介します。
フロントエンドの開発で利用する言語は主に、HTMLやCSS、JavaScript。
バックエンドの開発で利用する言語には、JavaやJavaScript、PHP、Python、Rubyがある。
ウェブアプリケーション
S3にJavaScriptを置いて、API Gatewayを通して裏側(バックエンド)でLambdaを利用する。
例:S3にJavaScriptを置いて、裏側(バックエンド)でLambda(Node.js)を利用といった構成。
↑は AWS SDK for JavaScript より引用
詳細は下記のサイトが分かりやすかったです。
REST入門 基礎知識
モバイルバックエンド
iOSやAndroidネイティブアプリからの利用。
React Native:ワンソースで複数のプラットフォーム(iOS、Android、UWP、Web)に対応したアプリケーションを開発することができるオープンソースのアプリケーションフレームワーク。Facebook 社が開発している。Web フロントエンドのフレームワークである React をベースに開発。Javascript、JSX、CSS を使って開発する。
Lambda の学習方法
AWS ハンズオン資料
AWS Hands-on for Beginners Serverless #1(サーバーレスアーキテクチャで翻訳 Web API を構築する)がおすすめです。1~2時間程度で完了できると思います。
サーバーレスアーキテクチャで翻訳 Web API を構築する
下記のようなアプリケーションが簡単に作れることが分かります。
Lambda を導入する方向け【運用時の注意事項】
運用していて気を付けた方が良いと思ったことを書いておきます。
コールドスタート
Lambdaにはコールドスタートという特性があり、初回アクセスが異常に遅いなど性能への影響が大きいです。Webアプリのバックエンドで使う場合などは注意が必要です。(この特性が原因でLambda化を見送ったサービスがあると聞いたことがあります)
しかしこれはお金で解決できるようになったようです。
※コールドスタートの懸念は2019年に解決
[速報]コールドスタート対策のLambda定期実行とサヨナラ!! LambdaにProvisioned Concurrencyの設定が追加されました
非同期呼び出しのエラーハンドリング
LambdaのDLQという機能を使うと呼び出し元に成功応答しか返さない非同期呼び出しの場合でも、関数実行の失敗をSQSやSNSに送信してエラー監視できます。
DLQの機能については下記が参考になりました。
Lambdaで利用できるDead Letter Queue(DLQ)とはどんな機能であるか調べてみた
※非同期呼び出しと同期呼び出しとは
blackbeltがわかりやすい
元AWSJapanの西谷さんの動画が分かりやすいので、見ておきましょう。
※合計4時間くらいあります。
【AWS Black Belt Online Seminar】 AWS Lambda Part1
【AWS Black Belt Online Seminar】 AWS Lambda Part2
【AWS Black Belt Online Seminar】 AWS Lambda Part3
【AWS Black Belt Online Seminar】AWS Lambda Part4
さいごに
性能、セキュリティ、運用、コストなど実際に導入してみないと分からないことが多いと思います。
まずは影響の少ないところから少しずつ導入してみるのが良いのではないでしょうか。
本記事を参考にサーバレス導入をしようと思えていただけたら幸いです。
コメント