AWS Lambdaを活用したサーバレスアーキテクチャの実現
はじめに
「AWSでサーバレスを選ぶ理由」では、サーバレスが従来型に比べて何が新しく、我々のようなクラウドを利用する開発者にどんなメリットを与えるのかを解説した。
AWSにおけるサーバレスの具体例の1つが、AWS Lambdaである。
TISでは、ユーザ企業の業務システムをAWSに移行する支援を「AWSマイグレーション」サービスとして提供するが、移行時にシステムをサーバレスで再構築することがあり、AWS Lambdaは多くのケースで選択肢となるサービスでもある。
本記事では、AWS Lambdaの特徴と、TISが提供するAWS Lambdaを活用したマイグレーションサービスを紹介する。
AWS Lambdaの特徴
AWS Lambda (以下 Lambda) は、イベント駆動型のコンピューティングサービスであり、サーバを起動して管理することなく、アプリケーションのコードを実行できる。
イベント駆動とは、外部で発生したイベントを契機としてコンピューティングを実行することであり、例えばAmazon EC2の仮想サーバインスタンスが起動したことを契機として、インスタンスのタグ付けを行うAPIを呼び出すLambda関数を実行できる。
AWSでは、200以上のサービスやサードパーティ製SaaSアプリケーションのイベントを契機にLambda関数を実行でき、利用料は使用した分だけ支払うコストモデルとなっている。
Lambdaを使い始めるには、まず実行したいプログラムのコードをLambda関数としてサービスに登録する。
Lambdaでは、Java、Go、PowerShell、Node.js、C#、Python、Ruby のプログラミング言語のコードがサポートされており、他のプログラミング言語のコードを実行するためのカスタムランタイムと呼ばれる仕組みも提供されている。
開発者もしくは運用者が、クライアントからLambda関数を実行するコマンドをLambdaサービスに送信すると、Lambdaサービスがコンピューティング基盤上でプログラムのコードを実行し、実行結果をクライアントに返す。
Lambda関数を実行するコンピューティング基盤は全てAWSによって管理されるため、開発者はアプリケーション (Lambda関数として登録するプログラムのコード) の開発に注力できる。
同じくコンピューティングの実現手段であるAmazon EC2では、オペレーティングシステム (OS) の更新およびセキュリティパッチの適用、サーバ台数の追加またはインスタンスタイプ変更などを、管理タスクとして考慮する必要があるが、Lambdaでは不要となる。
Lambdaのコンピューティング基盤を成すサーバの追加は自動で行われるため、数千から数万という大規模なリクエスト数に対して柔軟かつ俊敏に対応できるアプリケーションの提供が可能となる。
Lambdaが利用される場面
LambdaはAWSの様々なサービスのイベントを契機に実行できるため、その用途は多岐に及ぶが、以下に代表的なものを紹介する。
(1) Webアプリケーションのバックエンド
Lambdaは、動的に表示内容を変えるWebアプリケーションのバックエンドとして利用される。
Amazon S3バケットに保存したHTMLファイルからJavaScriptでAPI を実行し、Lambda関数の実行結果をHTMLファイルに表示する。
(2)定期的に実行する処理
毎日定刻に処理を実行し、実行結果を保存するか、または別のサービスに送信するといった場面が考えられる。
Lambdaではプログラムのコードを登録すれば処理を実行できるため、例えば下図のように業務システムの連携先となるサービスのAPIを呼び出すだけの簡易なコードを登録して、Amazon EventBridgeのTime-basedトリガーで定期的に実行する仕組みをシンプルに実現できる。
同様に、定期的に実行したい処理がある場合、Lambda とAmazon EventBridgeのTime-basedトリガーを組み合わせることで実現できる。
(3)任意のイベントを契機に実行する処理
AWSの任意のサービスまたはサードパーティ製SaaSアプリケーションの操作をトリガーとして処理を実行し、実行結果を保存するか、または別のサービスに送信するといった場面が考えられる。
例えば下図のようにAWS CloudTrailに記録されたサービスの操作を契機として、Amazon EventBridgeのEvent-basedイベントトリガーでLambda関数を実行し、Amazon SESを呼び出してEメールを送信する処理を実現できる。
同様に、イベントを契機にして実行したい処理がある場合、Lambda とAmazon EventBridgeのEvent-basedトリガーを組み合わせることで実現できる。
AWS Lambdaの活用を支援するTISのマイグレーションサービス
こんな課題をお持ちではありませんか?
- Amazon EC2 (仮想サーバ) 以外の移行方法が分からない。
- 現在Amazon EC2を利用中で、より柔軟なコスト削減に踏み込みたい。
- AWSのマネージドサービスを出来る限り活用し、運用チームの作業負荷と責任範囲を軽減したい。
「AWSマイグレーション」
オンプレミスの物理または仮想サーバ環境で実行中のアプリケーションを、AWS Lambdaなどのサービスを活用したサーバレスアーキテクチャで実行することを前提に再設計します。
現行の環境やドキュメントを調査し、移行完了までの具体的なプランを提案します。
事例紹介
スマホアプリのリリースサイクル向上のため、内製化によるクラウドネイティブなアプローチを採用
TISでは、運動や食事を管理し、普段の買い物にも活用できるスマートフォン向け健康管理アプリ「ASTARI」を提供 している。
ASTARIはアマゾン ウェブ サービス(AWS)上で構築されており、従来は外部の開発会社に依頼して開 発運用を進めていたが、いち早くユーザーに新機能を届け、ユーザー体験の向上を目指すために、開発を社内チーム に拡げ、よりクラウドネイティブなアプローチでアジャイルな開発を進める必要があった。
ASTARI開発の中心となって いる2人に、新たな取り組みへのチャレンジについて聞いた・・・
TISはAWSに関する高い技術力を証明する各種認定を取得しています
著者紹介
横井 公紀
IT基盤技術事業本部 IT基盤技術事業部
IT基盤ビジネス推進部 主査
AWS東京リージョン開設当初から、数々のAWS移行プロジェクトに担当者・プロジェクトリーダーとして参画。
2019年にはAWS Ambassadorsの選出を受け、現在はTIS社内のAWS CCoEリーダーとして、全社AWS技術者コミュニティ運営、AWS利用促進によるビジネスの拡大と、エンジニアの先鋭化を目指した育成を推進している。