BLOG

2020/01/09

【AWS Lambdaとは?】初心者にもわかりやすく解説

【目次】

1. はじめに
  a) FaaSとは?
  b) サーバレスとは?
  c) AWS Lambdaとは?初心者にもわかりやすく解説
2. AWS Lambdaのいいところ
  a) 設計面のいいところ
  b) 構築面のいいところ
  c) 運用面のいいところ
  d) 豊富な使い道
3. まとめ

 

  1. 1. はじめに
    AWS LambdaはAWSで利用できるサービスの中でも、非常に多く利用されているものの一つで、素晴らしいサービスです。AWS Lambda(ラムダ)とは、世界で最も利用されているクラウドであるAWSで利用できる、サーバレスのFaaS(Function as a Service:ファース、エフアース)です。なお、まずはFaaSとサーバレスは何のことかを見ていきましょう。

    1. a) FaaSとは?
      FaaSとは、クラウドの利用形態の1つです。クラウドの利用形態は、インターネットを通じてサーバなどを利用するIaaS(Infrastructure as a Service:イアース、アイアース)や、アプリケーションを利用するSaaS(Software as a Service:サーズ )などがあります。FaaSは、インターネットを通じて、プログラミングで作成した処理を定義・実行するクラウドの利用形態です。
       
    2. b) サーバレスとは?
      サーバレスとは、文字通りサーバがいらない、ということです。今までのWebサービスなどは、サーバを購入し、その上にミドルウェアを購入してインストールし、その上にアプリケーションを稼働させてサービスを提供していました。したがって、Webアプリケーションを運用管理するためには、サーバやミドルウェアも運用管理しなければなりませんでした。しかしながら、「サーバレス」は、ミドルウェアも、サーバもAWSなどのクラウドサービス提供者が管理します。つまり、サーバやミドルウェアの運用管理が不要です。Webアプリケーションを作りたい人は、アプリケーションやプログラムコードだけを作成すれば、Webアプリケーションを公開できるようになります。
       
    3. c) AWS Lambdaとは?初心者にもわかりやすく解説
      先ほど記載したように、AWS Lambdaは『サーバレスのFaaS』です。整理すると、AWS Lambdaとは以下のようなサービスです。
       ・クラウド上にプログラムを定義しておき、インターネットを通じて実行できるサービス
       ・サーバやミドルウェアの管理はAWSがしてくれるので、プログラムだけを考えればいいという素晴らしいサービス

      実際に関数を定義した画面を見てみましょう。以下のような画面に、実行させる関数を書いておき、好きなタイミングで実行することができます。実際の画面を見ることで、イメージしやすいと思います。

     

  2. 2. AWS Lambdaのいいところ
    では、AWS Lambdaの何が良くて、どうして世界中で利用されているのでしょうか。詳しく見ていきます。

    1. a) 設計面のいいところ
      AWS Lambdaは実行トリガーとなる関数が非常に豊富です。実際のLambda構築画面で、どのようなものが実行トリガーにできるのか見てみましょう。

      なお、これはほんの一部分を表示しているにすぎません。

      このほかにも、S3(ストレージサービス)やSNS(通知サービス)と連携を行うことができます。また、サードパーティのサービスとも連携が可能です。例えばSugarCRMといった顧客管理サービスや、DataDogといった監視サービスを実行トリガーに選択することもできます。

      ところで、実行トリガーを豊富に選択できるとどのようなメリットがあるのでしょうか。簡単に説明すると、アプリケーション同士の関連性を薄くして、サービスの改善を簡単にしたり障害の範囲を抑えたりすることができます。アプリケーション同士の関連性が高いと、サービスを改善するたびに、動かなくなってしまうアプリケーションはないか、膨大なテストをすることになります。これでは、時間もコストもかかってしまいます。しかし、アプリケーション同士の関連性が低ければ少ないテストでアプリケーションの改善を行うことができます。
       

    2. b) 構築面のいいところ
      AWS Lambdaでは、選択できるプログラミング言語が豊富です。以下が、プログラミング言語を実際に選択する画面です。

      このように、JavaやRubyなど、一般的に流用しているプログラミング言語が選択することが可能です。ここにないプログラミング言語を使いたい場合でも、「カスタムランタイム」という機能を使えば可能です。例えば、「カスタムランタイム」を使えばbashをAWS Lambdaの関数として実行できます。

      また、環境変数やタイムアウトの時間など、上限はありますが設定することができます。アプリケーションの処理に関する設定は一通りできるようになっています。したがって、関数を構築する際に不足する設定はないと考えていいでしょう。

      加えて、もし仮に、作成した関数の動作が遅くても、簡単にチューニングやデバッグができます。AWS Lambdaの関数を実行するために、メモリの割り当てが行われるのですが、割り当てられるメモリは数クリックでチューニングが可能です。デバッグについても、AWS LambdaはAWSの監視サービスであるCloudWatchと連携しているので、実行ログをすぐに確認することができます。
       

    3. c) 運用面のいいところ
      AWS Lambdaを利用するとどのような運用面のいいところがあるのでしょうか。最大のいいところは、障害がほとんど起きないということです。サーバ上でアプリケーションを運用する場合は、アプリケーションの障害のほかにも、サーバやミドルウェアの障害にも気を付けなければいけません。アプリケーションを動かしているサーバが夜中や休日にストップしてしまうと、急いで会社に駆け付けなければいけない、といったこともあります。しかし、AWS Lambdaはサーバレスなので、その心配は一切不要です。

      また、AWS Lambdaの最大のいいところはなんといっても安さです。毎月、1,000,000 件の実行は無料で利用できます。個人で利用するのであれば、ほとんど無料で利用できるといっても過言ではありません。
       

    4. d) 豊富な使い道
      AWS Lambdaは様々な使い道があります。データ処理やファイル連携といった、アプリケーションに必要なことは当然可能です。また、認証やアクセス権監査の実行、ログの抽出といったセキュリティ関連の処理も可能です。EC2などのサービス利用料を抑えたいときに、一定の利用料を超えたら全EC2を停止させるといった、運用面での利用もできます。EC2などを利用するよりも圧倒的に料金が低いため、要件に合わせて、様々なことに利用していきましょう。

     

  3. 3. まとめ
    AWS Lambdaとはサーバなしで利用できる、関数置き場と考えていいでしょう。豊富な開発手段や設定が用意されています。用途も、データ処理や認証、自動的な運用など、ありとあらゆる使い道を考えることができます。また、障害が起きにくいため安定してアプリケーションを動かすことができます。AWS Lambdaをうまく利用して、安く、安定したWebアプリケーションを作れるようにしましょう。

 

※下記のブログもご覧ください。
1. 【AWS IAMとは?】初心者にもわかりやすく解説

2. 【AWS Security Hubとは】初心者にもわかりやすく解説