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