2021/03/17

AWSでサーバレス開発の導入|特徴や具体的なサービスについて紹介

 
  

AWSサーバレスってどんなサービス?

AWSではサーバレスでの開発を行うためのサービスが提供されています。 サーバレスを利用することで、サーバにとらわれることなく、アプリケーションの構築や実装が可能となります。サーバレスでの開発は、さまざまな面でメリットがありますが、もちろんデメリットもあります。 本記事では、これからサーバレス開発の導入を検討している方に向けて、AWSのサーバレスの特徴や具体的なサービス、およびサーバレスアーキテクチャ構築について紹介していきます。

サーバレスとは?

サーバレスについて、従来のアプリケーション運用と、サーバレスでの運用との違いから説明していきます。 まず、従来のアプリケーション運用では、プログラムを実行するために、実行環境のサーバ構築やメンテナンスを行う必要がありました。そしてサーバには、リクエストが集中してもクラッシュしないために、必要なCPUやメモリ、ストレージをそろえておき、リクエスト数に応じてメンテナンスを行う必要があります。 一方、サーバレスでは、これらのサーバのプロビジョニングやメンテナンスが不要となります。AWSのサーバレスを提供するAWS Lambdaでは、プログラムの実行をAWSがすべて管理してくれます。そのため、開発者はコードをアップするだけで、あとはAWSが適切な実行環境を用意し、プログラムを実行します。 次の章では、AWS Lambdaとは具体的にどのようなサービスなのか、紹介していきましょう。

AWS Lambdaとは

AWS Lambdaは、コードを書いてアップロードすることで、自動的にプログラムを実行してくれるサービスです。サーバの準備やメンテナンスは必要ありません。このプログラム実行に関わることは、すべてAWS Lambdaが行ってくれます。 次の章では、AWS Lambdaメリットを、従来のサーバ環境であるEC2と比較しながら、紹介していきます。

AWS Lambdaのメリット3つ

サーバのメンテナンスが不要となる

AWS Lambdaでは、サーバのメンテナンスが不要となります。しかし、サーバレスといっても、サーバがなくなったわけではありません。AWS Lambdaでは、プログラムが実行されるために必要なサーバをインスタンスという形で提供します。そのインスタンスは、必要な時に、必要な数、必要なスペックで作成されます。 例えば、リクエストの数が増えた場合を考えてみましょう。 従来のサーバ構築環境であったEC2では、リクエスト数の増加に伴い、メモリの増築などのメンテナンスが必要でした。一方、AWS Lambdaではリクエスト毎にインスタンスが生成され、自動的にスケーリングされます。そのためメモリの増築などの作業は必要ありません。

稼働コストを最適化することができる

AWS Lambdaでは、稼働コストを最適化し、コストを最小限に抑えることができます。それは、AWS Lambdaのコストは、コードが実行された時間に応じて発生するためです。 このことは、従来のサーバ構築環境であったEC2と比較することで顕著となります。 EC2を利用していた場合では、EC2を稼働させていた時間に応じてコストが発生していました。それ対し、AWS Lambdaでは、サービスにアクセスがきた分だけがコストとして計算されます。そのためAWS Labdaでは、コードが実行されていない時間はコストが発生せず、無駄な稼働コストを削減することができます。

他のAWSサービスと連携することが可能

AWS Lambdaは、他のAWSサービスと連携することで、最小限のプログラミングでシステム構築することができます。 例えば、Amazon API GatewayへのAPIリクエストをトリガーにLambda関数を実行できたり、Amazon S3バケットへのファイルアップロードをトリガーにLambda関数を実行できたりします。 このように、AWS Lambdaでは他のサービスを組み合わせて開発を行っていきます。

AWS Lambdaのデメリット3つ

ここまで、AWS Lambdaを利用するメリットを挙げてきました。しかし、AWS Lambdaの利用には一部制限があるため、注意しなくてはなりません。AWS Lambdaでは、それらを理解した上で利用する必要があります。 さっそく紹介していきましょう。

Lambda関数の実行時間が限られている

Lambda関数の実行時間には上限15分までという制限があります。もし、上限時間以上に処理に時間がかかった場合、その処理は強制終了されます。 そのため、AWS Lamdbaで開発を行う際には、1つのLambda関数で、処理が15分以上かからないようにする必要があります。 この特性上、AWS Lamdbaは1回の処理が長時間となるワークロードには向いていません。 もし長時間となるワークロードを、AWS Lamdbaで実装する場合には、処理を細かく分割し個別でLambda関数を作成するなどの工夫が必要となります。

Lambda関数の同時実行数には上限がある

Lambda関数の同時実行なインスタンスの数には上限があります。もしこの上限を超えたリクエスト数が同時に集中した場合には、プログラム実行エラーとなります。 この同時実行数はリージョンによって異なりますが、アジアパシフィック(東京)では、1000インスタンスまで保証されています。 もし、1000インスタンス以上の実行が必要となった場合は、必要なリクエスト数に達するまで、毎分500インスタンスずつ追加されます。ここで、リクエストに入ってくる数が、インスタンスのスケールスピードを追い越した場合に、プログラムエラーとなります。 この同時実行数の初期値は、サポートセンターコンソールへリクエストを送ることで、制限を上げてもらうことができます。

他のAWSサービスについての勉強コストがかかる

AWS Lambdaでは、AWS Lambda以外のAWSサービスについても勉強が必要となります。それは、AWS Lambdaは、他のAWSサービスと連携して、アプリケーションを作り上げるためです。 例えば、Amazon API Gateway、Amazon S3、Amazon DynamoDBなどのサービスについても勉強する必要があります。 次の章では、具体的にどのようなAWSサービスと連携を行うことで、どのようなサーバレスアーキテクチャを構築するのかについて、紹介していきます。

サーバレスアーキテクチャ構築

ここまで、AWS Lambdaの特徴について紹介してきました。これらの特徴を踏まえた上で、実際にどのようなサーバレス設計とするのがよいのか分からないという方も多いのではないでしょうか。 そのような方は、Amazon公式サイトの「形で考えるサーバレス設計」をご覧になると、ユースケースごとの利用パターンについて紹介されているため、参考になります。 本記事では、こちらで紹介されているパターンの内のひとつを紹介します。

動的Web/モバイルバックエンドのためのサーバレスアーキテクチャ構築

動的Web/モバイルバックエンドとしてサーバレスアーキテクチャを構築するためには、AWS Lambda、Amazon API Gateway、Amazon DynamoDBを使用します。 この構成では、APIアクセスをAmazon API Gatewayで受け取り、それをトリガーにAWS Lambdaの処理を実行します。そして、AWS Lambdaの処理内でAmazon DynamoDBにアクセスすることでデータを参照します。 このように構成することで、従来ではEC2にサーバをたてていたものを、サーバレスに置き換えることができます。

まとめ

本記事では、AWSでのサーバレス開発について、AWS Lambdaを中心に紹介してきました。 AWS Lambdaのメリットとして、「サーバのメンテナンスが不要となる」「稼働コストを最適化することができる」「他のAWSサービスと連携することが可能」であることを挙げました。 そしてデメリットとして、「Lambda関数の実行時間が限られている」「Lambda関数の同時実行数には上限がある」「他のAWSサービスについての勉強コストがかかる」であることを挙げました。 サーバレスアーキテクチャ構築では、これらのAWS Lambdaの特性をよく理解しておく必要があります。これらを踏まえた上で、ユースケースにあわせたサーバレスアーキテクチャ構築を行っていきましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】