Más contenido relacionado
La actualidad más candente (20)
Similar a サーバーレスで ガチ本番運用までやってるお話し (20)
サーバーレスで ガチ本番運用までやってるお話し
- 3. Page: 3 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
自己紹介(コミュニティ)
メンター募集中!
http://coderdojo-nagaokakyo.doorkeeper.jp
3
CoderDojo高槻を設立したい人も
募集中!!
- 4. Page: 4 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
2. API Gatewayのあれこれ
本日お話ししたいこと
サーバーレスで本番サービスを開発・運用してみて、
• 事前に知っておきたかったこと
• (知ってたけど)あらためて痛感したこと
- 5. Content Index
Page: 5 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
SECTION 作ったサービス1
API Gatewayのあれこれ
Lambdaのあれこれ
本番運用での障害あれこれ
最後に
SECTION 2
SECTION 3
SECTION 4
SECTION 5
- 6. Content Index
Page: 6 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
SECTION 作ったサービス1
API Gatewayのあれこれ
Lambdaのあれこれ
本番運用での障害あれこれ
最後に
SECTION 2
SECTION 3
SECTION 4
SECTION 5
- 7. Page: 7 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
1. 作ったサービス
デジタルコンテンツ販売サービスの販売管理API
• 開発スピード、運用の省力化を追求するため、サーバーレスで開発
• アカウント管理 / 購入管理 / ライセンス管理等の機能をWEB-APIで提供
• Serverless Frameworkは当時Beta版だったので不採用
- 9. Content Index
Page: 9 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
SECTION 作ったサービス1
API Gatewayのあれこれ
Lambdaのあれこれ
本番運用での障害あれこれ
最後に
SECTION 2
SECTION 3
SECTION 4
SECTION 5
- 10. Page: 10 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
2. API Gatewayのあれこれ
認証の仕組みは自前で実装
• API Keyを認証に使うのはNG
• 自前で実装
• 接続元のIPアドレス制限
• これも自前で実装
- 11. Page: 11 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
2. API Gatewayのあれこれ
環境変数をどこにもつか
• 教科書どおり『Stage Variables』を使う
• RDS / Redisのエンドポイント、接続パスワード等の保持に利用
• 但し、Stage Variablesには利用文字制限あり。例えば、ランダムパ
スワード文字列がそのまま使えない!!
- 12. Page: 12 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
2. API Gatewayのあれこれ
30秒ルール
• API Gatewayのタイムアウトは30秒
• Lambdaのタイムアウトを延ばしても、API Gatewayで切られちゃう
• 但しLambdaは自身のタイムアウトまで走り続ける。更新系処理は
Lambdaのタイムアウトを最大まで延ばしておいたほうが無難
• 重い処理は非同期で
• Lambdaが最大のパフォーマンスを出せるようチューニングしておく
(後述)
- 13. Page: 13 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
2. API Gatewayのあれこれ
呼び出し元で、適切にリトライしてる??
https://docs.aws.amazon.com/apigateway/api-reference/handling-errors/
• API Gateway推奨のリトライ仕様がある
- 14. Page: 14 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
2. API Gatewayのあれこれ
第3者機関によるセキュリティ診断は不可
• API Gatewayに対する第3者機関によるセキュリティ診断は許可され
ていない!!
• 制限事項として、お客さまへ事前説明ができたら◎。
- 15. Content Index
Page: 15 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
SECTION 作ったサービス1
API Gatewayのあれこれ
Lambdaのあれこれ
本番運用での障害あれこれ
最後に
SECTION 2
SECTION 3
SECTION 4
SECTION 5
- 16. Page: 16 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
3. Lambdaのあれこれ
VPC使う??
• VPC内に構築されたLambdaファンクションはインターネットにアクセスできない
• つまり、、Lambdaファンクション内でAWS SDKが使えない
• 実行中のLambdaファンクションのDescriptionも取得できない
• 『NAT Gateway』or『NATインスタンス』が必要
- 17. Page: 17 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
3. Lambdaのあれこれ
デプロイどうする?
ServerlessFrameworkを採用できなかったのでスクリプトを実装
1. 開発環境用の設定ファイルを削除
2. pipパッケージをアプリケーションルート以下にインストール
pip install -r requirements.txt -t ./vendored/
3. デプロイ用のZipファイルを作成
4. S3バケットにZipファイルをアップロード
5. Lambdaファンクションにデプロイ(Aliasの参照先を変更)
- 18. Page: 18 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
3. Lambdaのあれこれ
API GWを使わないLambdaでは、環境変数をどこにもつか
• 案1)LambdaファンクションのDescriptionにConfigを値記載
• Lambdaファンクションが複数あると設定値が重複分散することに
• VPC内にLambdaファンクションがあると、インターネットアクセ
スができないためDescriptionがファンクションから参照できない
• 案2)S3に独自Configファイルを配置
• VPC内にLambdaファンクションがある場合、VPCエンドポイント
を利用することでS3アクセスを可能にした
• Lambdaファンクション起動の度にS3アクセスが発生してしまう
- 19. Page: 19 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
3. Lambdaのあれこれ
デプロイZipファイルのサイズと実行の遅延
ソースコードや、利用するライブラリ等が増えると、その分Zipファイルのサイズが大き
くなる。Lambdaファンクションは実行時にZipファイルを展開をするので、処理のスター
トがサイズと比例して遅くなる。
数分以内に再実行された際は、再利用されるので速い。
• 開発環境でしか使わないライブラリはZipに含めない
• nose
• python-lambda-local
- 21. Page: 21 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
3. Lambdaのあれこれ
ロググループと監視
• すべてのAliaseのログが、ひとつのロググループに出力されてしまう。
• LoggerにAliase名も出力させるよう改訂し、Aliase名+監視対象文字
列で検知させる。
- 22. Content Index
Page: 22 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
SECTION 作ったサービス1
API Gatewayのあれこれ
Lambdaのあれこれ
本番運用での障害あれこれ
最後に
SECTION 2
SECTION 3
SECTION 4
SECTION 5
- 23. Page: 23 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
4. 本番運用での障害あれこれ
軽い処理なのにタイムアウトエラーだと!?
軽い処理のLambdaファンクションなのに、30秒で終わらずに、API
GatewayがHTTPステータス502を返すことがある!?
• Lambdaファンクションは、コンテナの初回利用時、(特に、VPC内に設置された
Lambdaファンクションの場合にはENIの生成に)時間を要することがある。
• メモリの増加やパッケージサイズの縮小、クライアントからのリトライ等で対処する
しかない。
- 24. Page: 24 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
4. 本番運用での障害あれこれ
Lambdaファンクションが実行されない!?
Lambdaファンクションが実行されずに、API GatewayがHTTPステー
タス400を返すことがある!?
• リクエストのBODYのデータサイズが大きくて、API Gatewayでのマッピング処理に
時間がかかった場合に発生するらしい
- 25. Page: 25 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
4. 本番運用での障害あれこれ
予期せぬエラーな・・・
API Gateway から Lambda function の呼び出しにおいて「An error
occurred and the request cannot be processed.」が発生!?
- 26. Content Index
Page: 26 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved.
SECTION 作ったサービス1
API Gatewayのあれこれ
Lambdaのあれこれ
本番運用での障害あれこれ
最後に
SECTION 2
SECTION 3
SECTION 4
SECTION 5