インフラを気にしないですむ、Lambdaを利用するサーバーレスの世界って?

インフラを気にしないですむ、Lambdaを利用するサーバーレスの世界って?

物理的に、それぞれの会社がサーバーやネットワーク回線などを、オンプレミスで用意していた過去。そこから、AWSやFirebaseなどのクラウド型のインフラサービスが登場して、クラウド上のサーバーリソースを自由に利用できるようになった今。

そして、未来(というか今、これから)はAWSのLambdaやAPI Gateway、S3を利用することにより、サーバーの可用性やセキュリティなどインフラを気にすることなく、アプリケーションの開発に注力できるようになること。

もちろん、利用できる言語やOSの細かい設定ができないなどたくさんの制約はあるけれど、利用した分だけ課金されるシステムにより、大幅にコストを抑えられるなど、メリットもたくさん。

しかし、こうしてAmazonへの依存が突き進んでいくと、ほんと、電力会社や水道会社などと同じレベル。というかそれらを遥かに超えるレベルで、Amazonという会社が社会インフラ化していくことに、ちょっとだけ、恐怖も感じたりします。

ありがとうございました!

本のまとめ

▼読んだ本は?

■AWSによるサーバーレスアーキテクチャ
■長尾 高弘 (著)

▼サーバーレスってなに?

■サーバーに直接アクセスしなくても、コードを用意して渡すだけで、実行できるインフラ
■サーバーのプロビジョニング、ソフトウェアインストール、コンテナ用意などが不要になる
■AWSLambda・AmazonAPIGatewayなどのサービスを利用して、実現する

▼サーバーレスのメリット・デメリットは?

■メリット
└サーバーが不要になり、アプリケーションの開発に全力を注げる
└ステートレスでスケーラビリティが高いため、CRUDアプリケーションや電子商取引システムなど、並列処理が必要なシステムに有効
└利用に応じた額にだけ支払いを抑えられるので、システム稼働率がピークのときに備える必要がなく、インフラコストが下がる

■デメリット
└AWSのパブリッククラウドで関数が実行されるため、大量のトランザクションや、ミッションクリティカルなアプリケーションには向かない
└AWSには、SLAを用意しているサービスと、用意していないサービスがある
└RAMの容量やタイムアウトの時間変更はできるが、OSやインスタンスの細かな調整はできない

▼サーバーレスが使われるのはどんなとき?

■アプリケーションのバックエンド構築
└例えばYouTubeのような動画アプリ、認証認可の存在するアプリのバックエンドの構築

■データ処理
└CSV・JSON形式のファイル処理、イメージサイズの変更、フォーマット変更などのデータ処理に利用される

■リアルタイム分析
└Amazon Kinesisなどを利用し、リアルタイムで取得した各種データの処理

■スケジューリングサービス
└データのバックアップ、インポートとエクスポート、アラートなどのスケジュール化されたサービス

▼サーバーレスを取り入れている企業は?

■ConnectWise(ITサービス企業)
└インバウンドログ処理のため、AWS Lambdaを利用

■Netflix(オンライン動画サービス)
└バックアップ完了のチェック、メディアのエンコーディングプロセスを自動化

▼AWS Lambdaってなに?

■AWSのインフラストラクチャのひとつ
■JavaScript(Node.js)・Python・C#・Javaのコードを実行できる
■ソースコードはZipにまとめられ、周囲から切り離されたコンテナにデプロイされる
■ソースコード・設定・依存ファイルの組み合わせ全体を「Lambda関数」と呼ぶ
■リクエストの数、実行時間、割り当てられるメモリのサイズにより料金が決まる
■最初の100万リクエストは無料、その後100万リクエストごとに0.2ドル課金
■通常Lambda関数の呼び出しは、AmazonAPIGatewayを利用する

▼Lambda関数を使ったサーバーレスの処理の流れは?

■例えば、動画をアップロードし、トランスコードするためのサービスを作成する場合の流れ
【1】動画をS3バケットにアップロード
【2】アップロードをトリガーにイベントが発生し、Lambda関数が実行される
【3】Lambda関数が、動画ファイルを作成するElasticTranscoderジョブを返す
【4】トランスコードサービスが動画をトランスコード
【5】トランスコードされた動画が、S3に保存される
【6】保存をトリガーにイベントが発生し、Lambda関数が実行される
【7】Lambda関数が、動画のメタデータの生成とデータベースへの保存を行う
【8】データベース保存をトリガーにイベントが発生し、Lambda関数が実行される
【9】Lambda関数が、アップロードユーザーに通知を返すサービスを起動する

▼Amazon API Gatewayってなに?

■他のHTTPエンドポイントに対して、リクエストを発行できるサービス
■RESTfulなインターフェースを作り、HTTPリクエストを行える
■使えるのは、JSON変換だけですむ、ごく初歩的なユースケースだけ
■複雑な処理では、データの変換、リクエストの発行、レスポンス処理のためにLambda関数と組み合わせての利用が必要

▼IAMユーザーってなに?

■利用者としてのユーザー、アプリケーション、サービスを識別するためのもの
■IAMユーザーを作れば、アクセスキーを使って、AWSサービスのAPIにアクセスできる
■アクセスキーはIDと、シークレットアクセスキーの2つからなる
■認証情報とアクセス権限(一部のリソースへの認可権限)をもつ
■人が認識するための名前と、AWSシステムとして認識するためのARN(AmazonResourceName)の2つの名前をもつ

▼IAMロールってなに?

■ユーザー・アプリケーション・サービスに一定期間だけ与えられる、アクセス権限(認可情報)
■特定のユーザーに属さず、パスワードやアクセスキーといった認証情報ももたない

▼Amazon Cognitoってなに?

■Amazonの認証をサポートするサービス
■Cognitoを通過するユーザーには、IAMロールが与えられる
■ロールが与えられたユーザーには、AWSのリソースやサーバーにアクセスすることができる
■ログイン・新規登録システム構築のときに、利用される
■エンドユーザーのデータを保存することもできる
■パスワードリセットなどは手作業となり、Touch IDなどには使えない

関連する記事