LoginSignup
1
3

More than 3 years have passed since last update.

AWS Lambdaのオンラインセミナー受けてみた Part1

Last updated at Posted at 2019-04-17

AWS Black Belt Online Seminar Let’s dive deep into AWS Lambda Part1」の自分向けメモ
Lambda使ったことない......レベルの人向け

サーバーレス概要

アプリケーション開発者の目的はなにか

  • 価値を届けること(価値=差別化)
  • 価値を生み出すところに集中したいが現実では……

アプリを動かすためにはサーバーが必要だった

以下、オンプレで必要な作業

  • サーバーのセットアップ
  • スペックの管理
  • 冗長化
  • セキュリティパッチの適用
  • 差別化につながらない機能の実装
    • スロットリング
    • 認証認可の実装
  • サーバーの見積もり、購入といった手続きで時間も必要

サーバーレスとは

差別化につながらない重労働を削減できる

  • 物理マシン:ハード、ソフトともに管理が必要
  • 仮想マシン:マシンスペックの制限内での管理が必要
  • コンテナ:サーバーの設定周りの管理は必要
  • サーバーレス:ビジネスロジックのみ管理すればよい!

特徴

  • インフラの供給、管理が不要
  • シームレスに上限なくオートスケール可能
  • 実際の処理量に対する課金(価値に対する支払い)
  • メンテナンスやダウンタイムなし

(参考)AWSのComputeサービス

AWSでアプリを動かす場合、よく比較されるサービスがEC2とLambda
まずはLambdaで検討し、厳しい場合は自由度の高いEC2を検討していく流れがよい

  • EC2は自由度が高いが、管理の手間が多い
  • Lambdaは自由度が低いが、管理の手間が少ない

サーバーレスなアプリケーションモデル

  • イベントソース
    • サービスの状態が変化する
  • ファンクション
    • 処理内容
  • サービス
    • 処理の実行先(AWSや他サービス)

Lambdaを中心に数多くのサービスと組み合わせが可能

イベントソース

  • AWSサービスまたはアプリケーションを指定可能

ファンクション

  • 実行されるアプリケーション
  • 隔離されたコンテナ内で実行され、1つのコンテナで複数イベント処理はしない

Lambda関数基本設定

メモリ

  • メモリ容量にCPUの能力も比例する
  • マルチコアの利用可能

タイムアウト

  • 最大15分まで秒単位で設定可能

実行ロール

  • IAMロールで制御
  • 最低限CloudWatchへのアクセス許可が必要

Lambda関数の制限

  • サーバーのようにリクエストを待ち続けるような使い方はできない
  • 利用できるアウトバウンドはTCP/IPとUDP/IPだけ

Lambdaの種類

3つに分類される

ポーリングベース それ以外
ストリームベース それ以外
Kinesis、DynamoをイベントソースとしてLambda自身がポーリングする SQSをイベントソースとしてLambda自身がポーリングする 他AWSサービス(S3など)をイベントソースとして他AWSサービスがLambdaを呼び出す

呼び出しタイプ

2つに分類される

  • 非同期呼出し:リクエストが正常に受け付けられたかどうかのみレスポンスする
  • 同期呼出し:レスポンス内容を実装し、Lambda実行完了時に返却される

ライフサイクル

  • コールドスタート:1.から実行
  • ホットスタート :1.~3.を再利用して4.を実行
  1. ENI作成
  2. コンテナ作成、パッケージのロード、展開
  3. ランライム起動。初期化
  4. 関数実行
  5. コンテナの破棄

Lambdaの実行環境

Lambdaの実行環境は、最新バージョンのOSやSDKが使われていて、開発者が意識する必要はない
ただし以下の場合は、Lambdaの実行環境のバージョンを気にする必要がある

  • 任意のOSやSDKバージョンを利用したい
  • DBドライバーを利用する

同時実行数

  • 1000で制限されているが実績に応じて制限緩和申請することが可能
  • 関数単位で任意の割合で割り振ることが可能
  • 実行数の見積もりはイベントソースの種類によって異なる
    • ポーリングベースでストリームベース:シャード数
    • ポーリングベースでそれ以外:自動スケールアップ
    • それ以外:秒間呼び出し×平均実行時間

リトライ

Lambdaの種類と呼び出しタイプによって挙動が異なる

ポーリングベース それ以外
ストリームベース それ以外 非同期呼出し 同期呼出し
データの有効期限が切れるまでリトライを行う
リトライ時はブロックされる
一度イベントソースに処理がもどる
リトライ時はブロックされない
自動的に3回までリトライされる エラー内容が返却される

バックグラウンドプロセスの凍結と再開

  • 再度実行されたときに再開する

サービス

EC2の場合

  • アクセス権限にVPCサブネットおよびセキュリティグループの指定が可能
    • AZごとに複数のサブネットを指定しておくとIPアドレス枯渇時やAZ障害時も耐えうる
  • EC2はインターネットアクセスができなくなる
  • EC2のリクエスト数でIP枯渇の可能性

Part1はここまで。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3