AWS Lambdaを活用したサーバーレスアーキテクチャのメリットをざっくり理解する

By • 2016-09-15 • Cloud

はじめに

AWSのクラウドサービスがエンタープライズで利用されるようになり、Amazon EC2による仮想サーバーとしての利用からさらに進み、サーバーレスアーキテクチャを採用する場面が増えてきました。

サーバーレスアーキテクチャは適材適所で大きなメリットがあります。

サーバーのコストを削減する方法・少しでも減らすための設計が必要ですか?

Amazon EC2などのクラウドサーバーは、時間単位の課金のため、一見料金が安く見えます。しかし長時間稼働させるサービスでは、たとえリクエストが1時間に1回しかなくても起動時間分の料金を支払わなくてはいけません。これはかなり非効率ですね。結局、クラウドサーバーにしても料金が高くついてしまうことはよくあります。サーバーのコストに悩まされているなら、「AWS Lambda」の導入を検討してみましょう。

この記事では、サーバーのコストを削減したいエンジニアの方のために、AWS Lambdaの概要や特徴、料金体制などについてお伝えしていきます。ぜひご一読して、サーバーのコストダウンに役立ててください。

AWS Lambdaはどんなサービスなのか?

公式サイト:https://aws.amazon.com/jp/lambda/

AWS Lambdaは、Amazon Web Services(AWS)のひとつで、コードを実行することに特化したサービスです。類似のサービスには、Google Cloud FunctionsやMicrosoft Azure Functionsなどがあります。実行するコードは、AWS Lambdaのプログラミングモデルに合わせて、Node.js(JavaScript)やJava、Pythonで記述します。後は記述したコードをアップロードするだけで、自動的にサーバーをプロビジョニングして実行してくれます。Lambda(ラムダ)という名前の通り、実行できるのはステートレスな(状態を持たない)関数です。状態は、Amazon S3やDynamoDBなど他のAWSサービスに保存します。

AWS Lambdaの特徴

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

Amazon EC2のように、自分でサーバーをプロビジョニングしたり、管理したりする必要はありません。コードを実行するサーバーは、AWS Lambdaが自動的に作成し、リクエスト数に応じて自動的にスケールしてくれます。これにより、エンジニアはコードを書くことに集中でき、サーバーの心配をする必要がありません。

AWS Lambdaではリクエスト数と実行時間に応じて課金される

EC2では、サーバーの起動時間に応じて1時間単位で課金されるため、数分使用するだけでも1時間分として請求されます。また、リクエストが少ないサービスであっても、リクエストを待ち受けるために、常に起動しておかなければならずムダが生じてしまいます。AWS Lambdaは、リクエスト数とコードの実行時間に応じた料金体制になっており、本当に必要なリソースだけに料金を支払えます。サービスによっては、大幅なコストダウンが望めることでしょう。

AWSの各サービスと簡単に連携できる

AWS Lambdaは、一般的に他のAWSサービスと組み合わせて使われます。そのため、各AWSサービスと簡単に連携できるようになっています。たとえば、S3やDynamoDB、Kinesisなどです。他のAWSサービスの状態の変化やリクエストに反応して、AWS Lambdaのコードが実行されます。コードが実行される条件は、AWSの管理コンソールから設定します。

AWS Lambdaはいつ実行されるのか?

プルイベントモデル

プルイベントモデルは、AWS Lambdaがイベントソースをポーリングして、イベントを検出しコードを実行する方式です。イベントソースには、KinesisやDynamoDB Streamsなどが指定できます。たとえば、Kinesisストリームにレコードが書き込まれたときに、AWS Lambdaのコードを実行するように設定できます。

プッシュイベントモデル

プッシュイベントモデルは、他のAWSサービスからAWS Lambdaにイベントを発行してコードを実行する方式です。イベントソースには、S3やSNS、Cognito、Echoなどが使えます。たとえば、S3のバケットに書き込みがあったときに、対象のオブジェクトに対してAWS Lambdaのコードを実行できます。

また、Amazon API Gatewayと組み合わせると、REST API呼び出しに反応して、コードを実行しレスポンスを返すようにできます。活用方法としては、APIサーバーの置き換えが考えられます。

サーバーレスアーキテクチャにも活用されている

AWS Lambdaが注目を集めている理由のひとつには、「サーバーレスアーキテクチャ」があります。サーバーレスアーキテクチャは、運用コストがかかるサーバーをなくしてしまおうという考え方です。とはいえ、現実問題なんらかのサーバーは必要不可欠です。ではどうするかというと、EC2の代わりにAWS Lambdaを使って、管理が必要なサーバーをなくします。これで運用コストを削減できます。

AWS Lambdaの料金体系と無料枠


(Photo by:Viaggio Routard)

AWS Lambdaの料金体系は無料枠が充実しており、小規模なサービスであれば無料枠だけでもまかなえます。しかも、12ヶ月の制限がないため、いつまでも無料枠を使い続けることが可能です。課金は、次の2つの要素によって行われます。

リクエスト数による課金

100万リクエスト当たり0.2ドルが課金されます。つまり、1リクエスト当たり0.0000002ドルです。月当たり100万リクエストまでは無料で利用できます。

コードの実行時間(メモリ割り当て量)による課金

AWS Lambdaでコードを実行する際には、割り当てるメモリのサイズを128MB~1536MBの範囲で設定できます。課金はメモリの割当量に対して行われるため、メモリの割当を増やすと、必然的に時間当たりの料金が高くなります。メモリ1GB-秒当たりの料金は、0.00001667ドルです。月当たり400,000GB-秒までは無料で利用できます。つまり、128MBのメモリ割り当て設定でコードを実行する場合、320万秒分が無料になります。

まとめ

あなたのサービスにAWS Lambdaは活用できそうでしょうか?多くはアーキテクチャの変更を必要とするため、既存のサービスを簡単には移行できないかもしれません。影響の少ない部分から徐々に移行していくとよいでしょう。また、新規サービスを設計する際に、AWS Lambdaを活用できないか検討してみることをおすすめします。慣れたアーキテクチャよりも開発コストは増えますが、最終的な運用コストで取り戻せるでしょう。あなたのサービスをAWS Lambdaでよりモダンにしてみませんか?


本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。

開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!

「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。

クラウド型バグ管理・バージョン管理ソフトの「tracpath(トラックパス)」を提供しているオープングルーヴが運営しています

You Might Also Like