【AWS入門】Lambdaとは?できること、メリット、注意点を解説

  • 2023.07.05
       
【AWS入門】Lambdaとは?できること、メリット、注意点を解説

AWSやAzure、GCPといったパブリッククラウドサービスの利用が拡がるなか、「サーバレス」でのシステム設計・開発が注目されています。このようなサーバレスな開発環境を提供するクラウドサービス形態を「FaaS」といい、これはサービスプロバイダが用意・管理するサーバ上でユーザはサーバを意識せずにプログラムの実行やデータ管理といったサーバ機能を利用できるというサービスです。本記事では、サーバレス開発に欠かせないFaaSの代表格「AWS Lambda(ラムダ)」について解説します。

AWS Lambdaとは?

AWS Lambdaとは、AWSが提供するFaaSです。サーバレスのプログラム実行環境です。サーバレスといっても、サーバが存在しないというわけではなく、AWSが管理するサーバをインターネット経由で利用する、サーバの所有・管理が不要という意味です。Lambdaを実行すると、その間だけAWS側のサーバが立ち上がり、プログラムを実行するため、ユーザ側ではサーバを構築しなくても、クラウド上でプログラムを設定しておくことで、インターネットを通じてプログラムを実行できるといった感じです。

Lambdaでできることは?

Lambdaは、なんらかのイベントが起きた場合に、あらかじめ設定しておいたプログラム(関数)を実行する環境です。Lambdaは関数単位でプログラムを管理し、処理も関数単位で実行します。Lambdaは単体では使えないので、ほかのAWSサービスと組み合わせて利用します。ほかのサービスとの連携によって幅広く活用できます。トリガーと同期して関数を起動する場合とトリガーを検知してから非同期で関数を実行する場合がありますが、具体的には以下のようなことができます。

  • S3でイベントが発生時(ファイルアップロードなど)のデータ処理
  • データ加工処理(ログ関連や画像加工)
  • リアルタイムでのストリーミングデータ処理
  • データの抽出・変換・ロード
  • バックエンド処理
  • メール送信

FaaS(Function-as-a-Service)とは?

FaaS(Function as a Service)とは、サーバレスな開発環境を提供するクラウドサービスのことです。

Lambdaのメリットは?

障害の影響を抑えられる

Lambdaには、AWSサービス間を疎結合にしやすいという特徴があります。疎結合とは、システムの構成要素ごとの独立性が高い状態を指します。これにより、いずれかのトラブルが発生した場合でもほかのサービスへの影響を最小限に抑えられます。

サーバ構築・運用の手間がかからない

Amazon EC2などを用いてシステム開発する場合、各種ミドルウェアなど、さまざまな環境構築をしなくてはなりません。

その点、AWS Lambdaを利用すれば、このような環境構築や初期設定の必要がなく、コードの入力のみでサーバを構築できるため、ビジネススピードを早められます。また、サーバのメンテナンスもサービスプロバイダが行ってくれるので、開発者はそこに時間を割かなくてもよくなり、本来の業務に集中できます。

セキュア・高可用性

AWS管理のもと、ユーザはセキュアな実行環境で自身のコードにのみ責任を持てばいいのです。また、複数のAZを跨いで関数が実行されるため、高可用性、高耐障害性を保っています。

多くの言語に対応している

Lambdaは、Python、Ruby、Java、C#、Go、Node.js(JavaScript)、PowerShellといった複数の言語を標準でサポートしています。

また、それ以外にもカスタムランタイムという機能を利用することで上記以外のプログラミング言語も使用可能です。

言語特徴
Python機械学習やデータ処理に適している
RubyWebアプリケーション開発に適している
Railsフレームワークを利用できる
Java初期からサポートされている
C#Windowsアプリケーションの開発に適している
.NET Frameworkを利用できる
Go高速処理が可能で実行時間を短縮できる
Node.jsWebアプリケーション開発に適している
JavaScriptを使った開発ができる
PowerShellWindows環境での利用に適している

柔軟なオートスケーリング

サーバの使用量に応じて柔軟にスケールアップ・ダウンさせることができます。そのため、あらかじめ使用量を予測してリソースを決めたり余分なリソースを確保しておく必要がなく、変動する需要に対して自動で対応してくれます。

導入費用を抑えられる・省スペース

オンプレミスと違い、物理サーバを必要としないので、導入費用や維持費がかかりません。また、サーバを設置する場所も不要なため、省スペースです。

従量課金制

サーバの使用量に応じて料金が発生する従量課金制であるため、無駄なコストが発生しません。Lambdaでは、リクエストがあって、サーバが動いたら、その分だけが課金対象になっており、100万上リクエストにつき0.2USドルと、ほかのパブリッククラウドに比べても破格の安さで提供されています。その上、毎月100万リクエストおよびメモリ1GBで40万秒実行まで無料となっています。

AWS LambdaとAmazon EC2、どっちが安くすむ?

LambdaとEC2では、料金のシステムが異なります。EC2はサーバが起動している間はアクセス数に関わらず常に料金が発生します。何回リクエストがあって、プログラムが実行されても、発生する料金は変わりません。常にサーバを待機させておく必要がある処理に向いています。一方で、Lambdaはイベントの発生等で関数を呼び出したリクエスト回数とプログラムの実行時間(1ミリ秒単位)に課金されます。そのため、イベント発生回数が少ない場合や時間帯が限られている場合、1度の処理時間が短い場合などに有効です。反対に、イベントが常に発生している場合や1度の実行時間が長い場合にはEC2の方がコストを抑えられる場合があります。

AWS Lambdaの注意点は?

AWS Lambda単体では使えない

AWS Lambda単体では何もできないので、システムを運用するにはAmazon S3などの、ほかのAWSサービスを併せて利用することでシステムを構築する必要があります。
その場合、料金は利用したサービスすべての合計金額を支払うことになります。

非同期呼び出し時の重複起動に注意が必要

Lambda関数は単体では実行せず、ほかのサービスでトリガーを設定する必要があります。このとき、非同期で関数を実行するには重複処理が発生しないよう別途設定が必要です。

処理時間・同時実行数に制限がある

Lambdaには処理時間と同時実行数に制限があります。起動時間に関しては、1つの処理の実行時間の上限が15分に設定されています。15分を超えるとタイムアウトとなり、強制終了となってしまうため、処理時間が15分以上になる処理は分割して並列化する処理設計をするか別にEC2など、サーバを立てるといった対策が必要です。
また、複数の処理が必要な場合、自動拡張されますが、同一アカウントの同一リージョンでの処理の実行数に上限があります。アジアパシフィック (東京)の場合は、1,000が上限となっており、上限に達すると、関数の呼び出しに制限(スロットリング)がかかります。

スロットリングを回避する方法は?

リトライ処理を組み込む

同期処理の場合、スロットリングになった場合にLambda関数はエラーを返却しますが、そのエラーが返ってきたら関数の呼び出し元でリトライ処理を実行するようにする方法です。

上限緩和の申請をする

上限緩和の申請をすることで上限の引き上げが認められる場合があります。※必ず認められるとは限りません)

ほかのサーバレスサービスの制限にも考慮が必要
サーバレスアプリケーションの構築にはLambdaと併せてAPI Gatewayを組み合わせることが多いですが、その場合はAPI Gatewayの制限も考慮する必要があります。API Gatewayは29秒でタイムアウトになるという制限があるため29秒以内にLambda関数から値を返し、それ以降は非同期で処理を実行するといった施策をする必要があります。

システム稼働率がFaaSに依存する

サービスプロバイダの稼働率に依存するため、メンテナンス時などはシステムの稼働を一時的に停止しなくてはならない場合もあります。

AWS Lambdaの活用事例は?

日本経済新聞社

日本経済新聞社は、日経電子版の紙面ビューアにおける画像処理にAWS Lambdaを使用しています。

従来は、膨大なアクセスをどう捌くかが課題となっていましたが、画像処理を拡張性と柔軟性に優れたAWS Lambdaで行うことでサーバへのアクセス量に応じた柔軟な負荷分散が可能になり、同時に運用コストの削減にも成功しました。

スクウェア・エニックス

スクウェア・エニックスのゲーム商品「ドラゴンクエストX」における、ゲーム内で撮影された写真の画像加工処理にAWS Lambdaが用いられました。

この写真撮影機能はゲーム内でも人気があり、特にイベント時には、処理が増大してしまうため、処理を高速化する必要がありました。AWS Lambdaを活用したことで、画像処理も想定の3倍のスピードで完了し、コストもオンプレミスの20分の1程度に削減できるなど、多大な効果を得られたようです。

Netflix

動画配信サービスNetflixにおける、メディアファイルのエンコードプロセスなどにAWS Lambdaが用いられています。

iRobot

ロボット掃除機Roombaを提供するiRobotは、AWS IoTとAWS Lambdaをベースにサーバレスのアーキテクチャを採用したことで、運用管理に関する人的リソースの削減につながりました。

三菱UFJ銀行

三菱UFJ銀行(旧 三菱東京UFJ銀行)の音声応答による残高・入出金照会サービス「三菱東京UFJ銀行Voice Banking for Alexaβ版」にもAWS Lambdaが用いられました。※本サービスは2019年12月に終了しました。

AWS Lambdaの勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、AWS Lambdaに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Otherカテゴリの最新記事