MENU

【AWS CLF学習6日目その①】AWS Lambdaとは?サーバーレスってなに?

どうもPナッツです!

AWS学習6日目、今日は公式テキストP155~P184まで読みました。

どれも重要な内容だったので、今回は3つの記事に分けてまとめていこうと思います。

本記事はその①、AWS Lambdaについてです。

AWSのサービスを調べていると頻繁に登場するので、「名前だけは知ってる」という人も多いかもしれません。

私もその一人でした(笑)

今回はLambdaがどんなサービスなのか、自分なりに整理してみます。

目次

AWS Lambdaとは

ソースコードさえ用意すればプログラムを実行できるサーバーレスサービスです。

ちなみに読み方は「ラムダ」です。

最初は「プログラムを実行するだけのサービス?」と思ったのですが、学習を進めるとサーバーレスという部分が大きな特徴みたいです。

サーバーレスって?

4日目の記事でサーバーについて、

「サービスを実行するための土台のような存在」

と書きました。

そこで疑問に思ったのが、

サーバーレスってことはサーバーが無いってこと?

ということでした。

でも実際はそうではありませんでした。

サーバーレスとは、

ユーザーがサーバーを管理する必要がない

という意味です。

サーバー自体は存在していますが、その管理をAWS側が担当してくれるんですね。

EC2のようにOSを選んだり、インスタンスタイプを設定したり、運用したりする必要がありません

利用者はプログラムを書くことに集中できます。

正直、自分でサーバー管理するよりAWSが面倒を見てくれる方が安心感があります(笑)

今のところは「EC2じゃないとダメな理由が無いならLambdaを使いたくなるな」という印象です。

Lambdaの特徴

公式テキストではLambdaの特徴として以下が挙げられていました。

・サーバーの構築が不要
・サーバーの管理が不要
・一般的な言語サポート
・並行処理とスケーリング
・柔軟なリソース設定
・ミリ秒単位の無駄のない課金
・他のAWSサービスとの連携

正直最初は「多いな…」と思いました(笑)

ただ、一つずつ見ていくとLambdaが人気な理由が見えてきました。

最初の2つは先ほど説明したので、それ以外を見ていきます。

一般的な言語サポート

Lambdaでは幅広いプログラミング言語が利用できます。

対応しているのは以下の言語です。

・C#
・PowerShell
・Go
・Java
・Node.js
・Python
・Ruby

最初は「Lambda用の新しい言語を覚えるのかな?」と思ったのですが、そんなことはありませんでした。

普段使っている言語をそのまま使えるので、開発を始めやすそうです。

また、対応していない言語でもカスタムランタイムを利用することで実行できます

カスタムランタイムとは、「AWSが標準で用意していないプログラミング言語や実行環境を、自分でLambda上に持ち込んで動かす仕組み

並行処理とスケーリング

Lambdaは実行指示がないと動きません

AというLambda関数を作っても、どこかから呼び出されて初めて実行されます。

そこで気になったのが、

同時にたくさん呼ばれたらどうなるんだろう?

ということでした。

もし1つ目の処理が終わるまで待つ仕組みだったら、アクセスが集中した時に困りますよね。

調べてみると、Lambdaはデフォルトで1000並列まで同時実行できます

しかも同じ関数が頑張るわけではなく、必要に応じて実行環境自体が増える仕組みになっています。

EC2だとAuto Scalingを設定しないと負荷に耐えられないことがありますが、LambdaではAWS側が自動で対応してくれるんですね。

この辺りはサーバーレスらしい便利さを感じました。

柔軟なリソース設定

Lambdaで設定する主な性能はメモリです。

設定できる範囲は128MB~10240MBです。

※CPUはメモリ量に応じて自動で割り当てられます。

メモリを机の広さだとすると、処理に必要な本や資料を広げるスペースのようなイメージです。

また、メモリを増やすとCPU性能も上がるため、処理速度が改善する場合もあります。

ちなみにLambdaには実行時間の制限があります

最大15分でタイムアウトするため、長時間動き続ける処理には向いていないようです。

ミリ秒単位の無駄のない課金

Lambdaは実行されていない時間は課金されません

さらに、

・40万GB秒まで無料
・100万リクエストまで無料

という無料枠もあります。

正直かなり太っ腹だと思いました(笑)

使った分だけ支払う仕組みなので、小規模なサービスならかなり相性が良さそうです。

他のAWSサービスとの連携

前述の通り、Lambdaはトリガーが無いと実行されません

例えば、

・特定の時間になった時
・S3にファイルがアップロードされた時
・Webページのボタンが押された時

などをトリガーにできます。

「何かが起きたら処理を実行する」

という使い方が得意なサービスなんですね。

また、トリガーとして利用できるAWSサービスも豊富です。

例えば、

・Amazon S3
・Amazon CloudWatch
・Amazon SNS

などがあります。

Lambdaとよく組み合わせて使われるサービスとしてAmazon API Gatewayもあります。

これがあると外部からのリクエストを受けて、その内容をもとにLambdaを実行できます。

最初は

それって直接Lambdaを呼べばよくない?

と思いました。

でも調べてみると、Lambda自体はWebサーバーではないので、ブラウザやアプリから直接HTTPリクエストを受け取るものではないようです。

そこでAPI Gatewayが受付窓口の役割を担当します。

イメージとしては、

ユーザー

API Gateway

Lambda

という流れです。

API Gatewayがリクエストを受け取り、それをLambdaへ渡して処理を実行させます。

さらに認証やアクセス制限なども担当できるため、サーバーレス構成では定番の組み合わせになっているそうです。

今の自分はまだ

Lambdaの前に置く受付係

くらいの理解ですが、Lambdaとセットでよく登場する理由は何となく分かりました。

最後に

今回はAWS Lambdaについて学びました。

正直なところ、「サーバーレス」という言葉を聞いたときは、

「サーバーが存在しない技術なのかな?」

と思っていました。

実際にはそうではなく、

「サーバーを意識せずに開発できる仕組み」

だったんですね。

また、API Gatewayについても

「なんで間にサービスを挟むんだろう?」

と思っていましたが、LambdaはWebサーバーではないことを知って少し納得できました。

CLF試験でも頻出のサービスらしいので、まずは

・サーバー管理が不要
・自動でスケーリングする
・使った分だけ課金される

この3つをしっかり覚えておこうと思います。

その②ではコンテナについてまとめます。

こちらも最初はかなり混乱したので、同じように悩んでいる人の参考になれば嬉しいです!

ではまた!

まとめ問題

問題1

ある企業はWebアプリケーションを開発しています。

開発者はアプリケーションコードの作成だけに集中したく、OSのパッチ適用やサーバー管理を行いたくありません。

最も適したAWSサービスはどれでしょうか?

A. Amazon EC2

B. AWS Lambda

C. Amazon EBS

D. Amazon VPC

問題2

AWS Lambdaについて正しい説明はどれでしょうか?

A. サーバーを必要としないサービスである

B. サーバー管理をAWSが担当するサービスである

C. EC2上でしか実行できないサービスである

D. 常時起動している必要があるサービスである

問題3

あるLambda関数に同時に多数のリクエストが送信されました。

Lambdaの標準的な動作として正しいものはどれでしょうか?

A. 1つの実行環境で順番に処理する

B. 新しいEC2インスタンスを作成する

C. 必要に応じて実行環境を増やして並列処理する

D. リクエストを拒否する

問題4

開発者はブラウザからHTTPリクエストを送信し、その内容に応じてLambda関数を実行したいと考えています。

この要件を満たすサービスはどれでしょうか?

A. Amazon S3

B. Amazon API Gateway

C. Amazon EBS

D. Amazon Route 53

問題5

AWS Lambdaの料金体系として正しいものはどれでしょうか?

A. インスタンスの稼働時間に対して課金される

B. 予約したCPU数に対して課金される

C. 実行時間とリクエスト数に応じて課金される

D. 保存したソースコード量に応じて課金される

問題の答えはコチラ

問題1:B

Lambdaはサーバーレスサービスであり、インフラ管理をAWSに任せることができます。

問題2:B

サーバーレスとは「サーバーが存在しない」のではなく、「サーバー管理が不要」という意味です。

問題3:C

Lambdaはアクセス量に応じて実行環境を自動的に増やし、並列処理を行います。

問題4:B

API GatewayはHTTP/HTTPSリクエストの受付窓口として利用でき、Lambdaとの組み合わせが非常によく使われます。

問題5:C

Lambdaは実行時間とリクエスト数に応じて課金される従量課金サービスです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

SE歴6年目。
看護学校を辞めてSEになったポンコツ。
現在はクラウドエンジニアを目指してAWS勉強中です。

「SE、わからん。」では、インフラ・AWS・資格勉強の記録をポンコツSE視点でゆるく発信しています。

コメント

コメントする

CAPTCHA


目次