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

Más contenido relacionado

La actualidad más candente

AWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツールAWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
Amazon Web Services Japan
 

La actualidad más candente (20)

Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
 
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツールAWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
 
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用CloudFront経由でのCORS利用
CloudFront経由でのCORS利用
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
 
AWS BlackBelt AWS上でのDDoS対策
AWS BlackBelt AWS上でのDDoS対策AWS BlackBelt AWS上でのDDoS対策
AWS BlackBelt AWS上でのDDoS対策
 
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
AWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct ConnectAWS Black Belt Online Seminar AWS Direct Connect
AWS Black Belt Online Seminar AWS Direct Connect
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
 
AWS Black Belt Online Seminar 2017 AWS WAF
AWS Black Belt Online Seminar 2017 AWS WAFAWS Black Belt Online Seminar 2017 AWS WAF
AWS Black Belt Online Seminar 2017 AWS WAF
 
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイントVPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
 
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
 

Similar a サーバーレスで ガチ本番運用までやってるお話し

20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説
Yukihiro Kikuchi
 
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうけるcf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
Takeshi Morikawa
 
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
Abe Junichiro
 
Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019
昌桓 李
 

Similar a サーバーレスで ガチ本番運用までやってるお話し (20)

技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介
 
20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説20140404 vyatta users Group / REST API解説
20140404 vyatta users Group / REST API解説
 
AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
 
10th jan 2013_miyazaki
10th jan 2013_miyazaki10th jan 2013_miyazaki
10th jan 2013_miyazaki
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016
 
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
 
IBM Developer Dojo Online 2019 #11 OpenShift
IBM Developer Dojo Online 2019 #11 OpenShift IBM Developer Dojo Online 2019 #11 OpenShift
IBM Developer Dojo Online 2019 #11 OpenShift
 
Web サービス インフラの近未来
Web サービス インフラの近未来Web サービス インフラの近未来
Web サービス インフラの近未来
 
CloudSpiral 2014年度 Webアプリ講義(2日目)
CloudSpiral 2014年度 Webアプリ講義(2日目)CloudSpiral 2014年度 Webアプリ講義(2日目)
CloudSpiral 2014年度 Webアプリ講義(2日目)
 
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうけるcf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
 
Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2
 
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
 
Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019
 
【HackerWars 】ニフティクラウドmobile backend
【HackerWars 】ニフティクラウドmobile backend【HackerWars 】ニフティクラウドmobile backend
【HackerWars 】ニフティクラウドmobile backend
 
S&B Summit2015 SOFTLAYERクラウドデザインパターン
S&B Summit2015  SOFTLAYERクラウドデザインパターンS&B Summit2015  SOFTLAYERクラウドデザインパターン
S&B Summit2015 SOFTLAYERクラウドデザインパターン
 
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
Idcfクラウドで始める構築自動化
Idcfクラウドで始める構築自動化Idcfクラウドで始める構築自動化
Idcfクラウドで始める構築自動化
 

Último

Último (11)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

サーバーレスで ガチ本番運用までやってるお話し

  • 2. Page: 2 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved. 自己紹介 株式会社サーバーワークス 京都事業所(自称)
  • 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版だったので不採用
  • 8. Page: 8 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved. みんな大好きEC2で構築したほうが 無難ちゃうん・・
  • 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
  • 20. Page: 20 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved. 3. Lambdaのあれこれ バージョン管理
  • 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
  • 27. Page: 27 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved. 枯れてないし、制約も多い
  • 28. Page: 28 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved. 運用では、手間要らず
  • 29. Page: 29 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved. 5. 最後に サーバーワークスは開発しない!? AWSインフラに特化したCI業から、 AWS専業屋にしかできない新しいCI業へ。
  • 30. Page: 30 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved. サーバーレスで構築してみたら ええんちゃう!?
  • 31. Page: 31 CONFIDENTIALCopyright © Serverworks Co.,Ltd. All Rights Reserved. END