🎏はじめに
こんにちは、ローテが一巡して順番が回ってきました、三週間ぶりの社畜Sです。
現在、私たち社畜SMLの3人は
「AWS Certified Solutions Architect - Associate(通称SAA)」
の合格を目指して勉強を続けています。
というわけで、今回のローテではSAAの学習成果のアウトプットも兼ねて
「AWSのサービスを初心者目線でまとめてみた。」
をテーマに書いていこうと思います!
まずは私、社畜Sが初回を飾り AWS Lambda についてまとめていきます!
初心者の視点からの解説ですので、間違いなどがあればコメントで指摘していただけると幸いです。
それではやっていきましょう!
🎏そもそもLambdaって何?
公式の開発者ガイドでは
AWS Lambda はサーバーのプロビジョニングや管理をする必要がなく、コードを実行できるコンピューティングサービスです。
Lambda は可用性の高いコンピューティングインフラストラクチャでコードを実行し、コンピューティングリソースに関するすべての管理を行います。これには、サーバーおよびオペレーティングシステムのメンテナンス、容量のプロビジョニングおよび自動スケーリング、さらにログ記録などが含まれます。Lambda で必要なことは、サポートするいずれかの言語ランタイムにコードを与えることだけです。Lambda サービスは、必要な場合にのみ関数を実行し、自動的にスケーリングします。消費したコンピュート時間に対してのみ課金されます。コードが実行されていない間は料金は発生しません。
…と定義されています。
初心者の私からしたら横文字が多すぎてなんのこっちゃって感じですね。とりあえず
- サーバーの管理不要でコードを実行できる(サーバー、OS、リソースなどの管理を自動化する)
- 高い可用性を持つ
- 自動的にスケーリングする
- 使った分だけお金がかかる(従量課金制)
という点を把握しておけばSAA範囲内では大丈夫だと思います(多分)。
ここだけ見ると全部に使えるような完璧なサービスと思えますが…もちろんメリットだけでなくデメリットも存在します。よくLambdaが使われる事例と合わせて紹介しようと思います。
🎏Lambdaを活用できる/できない事例
できる!
・イベント駆動型アプリケーションの開発
イベント駆動型アプリケーションは、簡単にいうと「特定のイベントがあったときに指定された処理を自動的に行うアプリケーション」のことです。
複数のAWSサービスからのイベントに反応できるのに加え、自動スケーリングと従量課金制によって低コストで高可用性を実現できるという点がよくつかわれる理由のようです。
・APIのバックエンド処理
APIのバックエンド処理とは、クライアントなどからのHTTPリクエストを受け取り、それに応じてデータを処理し、適切なレスポンスを生成する処理のことです。
先ほどと同じように低コストで高可用性を実現できるのはもちろん、API Gatewayというクライアントとバックエンドのサービスとの間の通信を仲介するサービスと組み合わせることでAPIのバックエンド処理を簡単に実装し、公開することができる点が優れているようです。
できない...
・長時間実行が必要な処理
Lambdaには、最大実行時間が15分までという制限があり、この時間を超えてしまうとLambdaの実行を強制的に中断してしまいます。そのため、長時間実行が必要なバッチ処理やデータ処理など、実行時間が15分を超える処理をLambda単体で行うには向いていません。
15分以上かかる処理を実行したい場合はAWS Step Functions等と組み合わせたり、代わりにAmazon EC2などを使うこともあるようです。(EC2については来週投稿予定!)
・外部のサーバー等との直接的な連携が必要な処理
LambdaはAWS内のサービスとの連携が得意であり、APIなどを介して他のAWSサービスと直接的な連携を行いますが、外部のサーバー等との連携はプロキシ制約やネットワーク制約など様々な制約がある関係上向いていないようです。
一応他のサービスと組み合わせることで連携できなくはないようですが、管理の手間が増加したり、コストが増加したりするので十分な検討が必要になるようです。
この場合はAmazon ECS(こっちは再来週投稿予定!)などを使うこともあるようです。
🎏まとめ
ということで、AWS Lambdaについて私が調べてみたことをまとめてみました。
まとめる前から様々な用途に使うみたいでまとめるのが難しそうだなー…と思っていましたが、いざ調べてみると想定よりも情報量が多く、今回の投稿ではまとめ切れていない部分も多く出てきてしまいました。
基礎的な部分のみになってしまいましたが、この記事が私たちのようにこれからAWSについて学習する人の手助けに少しでもなってくれればと思います。
来週の「AWSのサービスを初心者目線でまとめてみた。」もお楽しみに!