SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

cloudpackサーバ仕様書(サンプル)
cloudpackサーバ仕様書(サンプル)cloudpackサーバ仕様書(サンプル)
cloudpackサーバ仕様書(サンプル)iret, Inc.
 
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Kazuto Kusama
 
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング勲 國府田
 
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析政雄 金森
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテストTakuto Wada
 
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05都元ダイスケ Miyamoto
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
Multicastが出来ないならUnicastすればいいじゃない
Multicastが出来ないならUnicastすればいいじゃないMulticastが出来ないならUnicastすればいいじゃない
Multicastが出来ないならUnicastすればいいじゃないKenta Yasukawa
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣Masahiro Nishimi
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南Mikiya Okuno
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。toshihiro ichitani
 
いまさら、AWSのネットワーク設計
いまさら、AWSのネットワーク設計いまさら、AWSのネットワーク設計
いまさら、AWSのネットワーク設計Serverworks Co.,Ltd.
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxShota Shinogi
 
いまさら学ぶMVVMパターン
いまさら学ぶMVVMパターンいまさら学ぶMVVMパターン
いまさら学ぶMVVMパターンYuta Matsumura
 
イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡NTT Communications Technology Development
 
設計・構築においてのドキュメントの重要性について
設計・構築においてのドキュメントの重要性について設計・構築においてのドキュメントの重要性について
設計・構築においてのドキュメントの重要性についてTakayuki Higashi
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 

Tendances (20)

cloudpackサーバ仕様書(サンプル)
cloudpackサーバ仕様書(サンプル)cloudpackサーバ仕様書(サンプル)
cloudpackサーバ仕様書(サンプル)
 
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
 
Google Cloud で実践する SRE
Google Cloud で実践する SRE  Google Cloud で実践する SRE
Google Cloud で実践する SRE
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング
 
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテスト
 
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
Multicastが出来ないならUnicastすればいいじゃない
Multicastが出来ないならUnicastすればいいじゃないMulticastが出来ないならUnicastすればいいじゃない
Multicastが出来ないならUnicastすればいいじゃない
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
 
いまさら、AWSのネットワーク設計
いまさら、AWSのネットワーク設計いまさら、AWSのネットワーク設計
いまさら、AWSのネットワーク設計
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
いまさら学ぶMVVMパターン
いまさら学ぶMVVMパターンいまさら学ぶMVVMパターン
いまさら学ぶMVVMパターン
 
イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡
 
設計・構築においてのドキュメントの重要性について
設計・構築においてのドキュメントの重要性について設計・構築においてのドキュメントの重要性について
設計・構築においてのドキュメントの重要性について
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 

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

技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Makoto Haruyama
 
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
 
AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤Godai Nakamura
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係Hiraku Komuro
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Godai Nakamura
 
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 Daisuke Hiraoka
 
Web サービス インフラの近未来
Web サービス インフラの近未来Web サービス インフラの近未来
Web サービス インフラの近未来Syuichi Murashima
 
CloudSpiral 2014年度 Webアプリ講義(2日目)
CloudSpiral 2014年度 Webアプリ講義(2日目)CloudSpiral 2014年度 Webアプリ講義(2日目)
CloudSpiral 2014年度 Webアプリ講義(2日目)Shin Matsumoto
 
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昌桓 李
 
【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クラウドデザインパターンMaho Takara
 
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3日本Javaユーザーグループ
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-Saki Homma
 
Idcfクラウドで始める構築自動化
Idcfクラウドで始める構築自動化Idcfクラウドで始める構築自動化
Idcfクラウドで始める構築自動化智之 大野
 

Similaire à サーバーレスで ガチ本番運用までやってるお話し (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クラウドで始める構築自動化
 

Dernier

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Dernier (8)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

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

  • 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