Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

3,629 views

Published on

【大阪開催】【サバソニSP】『サーバーレス』の巻
https://serverworks.doorkeeper.jp/events/53980
の発表スライドです。

Published in: Technology
  • Be the first to comment

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

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

×