今回は、lambdaの基本的な知識から、導入前に知っておくべきポイントを深く掘り下げていきましょう。
lambda とは(lambda 読み方)
lambdaの読み方は?
ラムダと読みます。あまり馴染みがない言葉ですが、ギリシア文字の11番目(アルファベットでL)Λ(ラムダ)が由来とされています。
ではAWS lambdaとは?
サーバレスコンピューティングサービスです。文字通り、サーバ不要で、クラウド上で必要な時のみプログラムコードを呼び出し、実行、処理してくれます。
Node.js・Python・Ruby・Java・C#などの言語をサポートしており、様々なバックエンド処理ができます。
AWSのほとんどのサービスに対応し、様々な関数を呼び出し、処理をしてくれます。
コードのリクエストが処理されたときのみ、料金が発生するのも大きな特徴です。
lambdaはどんなところで利用されている?
リアルタイムの高速処理が得意なlambdaは、報道・通信・金融など刻々と増え続ける情報を扱う大手企業や、ゲーム・広告・ECモールなど膨大な画像データを必要とする分野で幅広く利用されています。lambdaとpython
GoogleやInstagramやDropboxなどが主要な開発言語として使用しているPythonは、機械学習やデータ解析、数値解析、スクレイピングなど幅広い場面で利用される人気の言語です。特に、AI分野においてはPython一択と言われるほど汎用性が高く、将来性が注目されています。
lambdaでは人気のPythonもサポートしています。実際、コードの記述や開発で行き詰まった場合でも人気が高い言語であれば、すぐに調べることができる点もメリットではないでしょうか。
ちなみに、無名関数というコードをシンプルに扱うための技法がありますが、Pythonの無名関数にもAWSと同じlambdaというキーワードが使われて(ラムダ式と呼ばれたりして)います。
lambda 料金
lambdaの料金は、AWSの他のサービスと同様に従量課金制です。基本的には、リクエスト回数(イベント発生によりlambdaが起動した回数)とコードの実行時間(lambda起動から終了までの時間、設定したメモリ数によって異なる)に対して料金が発生します。
リクエスト回数:100万件のリクエストに対して0.2USD(※11円)
実行時間:1GB/1秒あたり0.0000166667USD(※0.0018円)
(※1USD=110円で算出)
それぞれ月ごとに無料利用枠が設定されており、12ヶ月のAWS初回無料枠に関わらず付与されます。
リクエスト回数:毎月100万件までは無料。
実行時間:毎月40万GB/秒まで、最大320万秒まで無料。
lambda 使い方・選び方
ここではlambdaの使い方・選び方を簡単に説明します。1.「関数の作成」からはじめます。
「一から作成する」:自身で関数を作成する方法
「設計図」:テンプレートを選択する方法
「AWS Serverless Application Repository」:今回は省略します
の中から選択します。今回は「一から選択する」を説明します。
2.関数名、ランタイム(言語)、ロール名を入力して「関数の作成」を選択します。
3.次に「トリガーの追加」でリストから選択し、用途にあったトリガーを設定し、「追加」します。
4.「保存」する。
5.関数を作成し、「保存」し、テストしてみましょう。
AWSには様々なチュートリアルも用意されています。実際に動かしてみるとよりわかりやすいです。
https://aws.amazon.com/jp/lambda/resources/#Workshops_.26_Tutorials
lambda 効果
AWSとlambdaを組み合わせると、どのような効果があるのか。実際に企業が使用しているケースを参考に効果を検証してみましょう。ケース1 NIKKEI
日経新聞社では、画像処理機能をlambdaに変更したことで、大幅なコスト削減を実現できたようです。もともと、100以上のEC2インスタンスを運用していた同社ですが、同様の構成をEC2でlambdaで比較した場合、10分の1のコストで実現できるといいます。
さらに、負荷に応じた運用管理も簡単に行えるため、管理の手間と時間の削減にも寄与。浮いた時間を、新しいサービスの開発に利用することで好循環が産まれています。
ケース2 LIXIL
LIXILでは、IoT製品の開発を加速し、国内外向けに様々なサービスを展開しています。さらに、社会問題の一つに掲げる宅配便の再配達を解消するために、スマートフォンを利用して荷受け管理、集荷依頼・管理ができる『スマート宅配ポスト』の開発をはじめました。
そこで、AWSのIoT Coreをベースに、lambda、API Gateway、DynamoDBなどを採用してサーバーレスアーキテクチャを実現しました。
当時の開発担当者は、「IoT プラットフォームを構築するうえで、必要な技術要素がフルマネージドで利用できるサービスとしては、ほぼ AWS 一択でした。」と語っており、超スマート社会に向けた、IoTセキュリティ、IoTサービスの進化に向けた取り組みを進めています。
ケース3 DAISO
100円ショップ「ダイソー」を国内外で展開するDAISOでは、2012年からAWSを用いた社内システムの内製化し、マイクロサービス化に移行しています。発注システムから始まり、翌年には自動発注システムを完成。さらにサーバレス化のためlambdaを採用します。
その後、POS データ集中処理システムの構築にもlambdaが利用され、各店舗から約7万点 にも及ぶ商品の売上データを処理しています。
膨大なPOSデータが集中しても、ピーク時間でも関係なく安定した稼働が実現しており、また、インフラ管理では90%、アプリケーション実装では20%の労力削減に成功。セキュリティ対策も不要のため、ビジネスに安心して取り組めるようになったといいます。
lambda メリット・デメリット
ここでは、lambdaのメリットとデメリットについてみていきます。メリット
・サーバレスの実現。(利用シーンによってはEC2もいらない)・従量制課金のため、利用分だけでよい。
・毎月、特定の無料枠がある。
・イベント時に必要分のリソースが自動で割り振られる。
・他のサービスとの高い連動性。
デメリット
・AWSに高く依存する。(ベンダロックインの可能性)・利用シーンによってはEC2の方が割安になる場合もある。
・関数実行時間の上限(最大15分)がある。(2019年7月現在)
・上記以外にも関数設定に様々な制限がある。
まとめ
今回は、AWS lambdaに関して基本的な部分から深く掘り下げてきました。lambdaで実現できるサーバレス環境と、多様な開発言語、他との高い連動性は、規模や予算にとらわれない柔軟な開発を実現できる大きな武器になることでしょう。