お問い合わせ

常時起動しない処理はどう動く?-Lambdaによるサーバーレス実行-【Luxucomを支える技術 #19】

こんにちは、かびらです。

今回は、Lambdaについて解説します。

Lambdaとは?

Lambdaとは、AWSが提供するサーバーレス実行サービスです。

サーバーを常時起動せず、必要なときにだけ処理を実行することができます。

サーバーレスとは?

では、その「サーバーレス」とは、具体的にどういう仕組みなのでしょうか。

従来型のアプリケーションでは、サーバーを常時起動し、いつでもリクエストを処理できる状態にしておきます。

そのため、リクエストが来ていない時間も、常にコストが発生します。

一方、サーバーレスでは、イベントが発生したときだけ実行され、処理が完了すると停止します。

つまり、実行している時間だけコストが発生する仕組みです。

Lambdaを採用した理由

次に、LuxucomでLambdaを採用した理由についてです。

Luxucomでは、メールのバウンス・苦情やLive通知などの要件がありました。

それらのイベント発生時に、処理を実行できる仕組みが必要でした。

これらはECSを常時起動させることでも対応できます。

しかし、Lambdaを使えば、より低コストでシンプルに実現できます。

Lambdaと関連するアーキテクチャ

次に、LuxucomでのLambdaと関連するアーキテクチャを見ていきましょう。

まず、メール配信サービスであるSESや、ライブ配信サービスであるIVSからイベントが発生します。

そのイベントをEventBridgeが受け取り、ルールに従ってLambdaを起動します。

起動されたLambdaは必要な処理を行い、DynamoDBの更新などを実行します。

このように各サービスが連携することで、イベント駆動型のサーバーレス処理が実現されています。

Lambdaを使って良かった点

次に、LuxucomでLambdaを使って良かった点です。

Lambdaを使って良かった最大のポイントは、何といってもイベント駆動の処理を低コストで実現できたことです。

ECSを常時起動する場合、処理していない時間もコストが発生します。

しかし、Lambdaは実行した分だけ課金される仕組みのため、大きくコストを抑えることができました。

Lambdaを使って難しかった点

最後に、LuxucomでLambdaを使って難しかった点です。

Lambdaは低コストで便利な一方、実行環境にいくつか制約があります。

特に、実行環境の制約によって使えるライブラリが限られる点は、設計時に苦労しました。

また、ECSとは異なるデプロイ方法にも最初は苦戦しました。

さいごに

今回は、Luxucomのインフラを支える仕組みの中から、Lambdaについて解説しました。

イベント発生時に処理を実行する、サーバーレスの実行モデルが理解できたと思います。

次回は、Lambdaを裏側で支えているEventBridgeについて解説します。