クラウドサポーター 中山 桂一
nakayama@chara-web.co.jp
サーバレス × AWS SAM × DR
におけるTIPS
1
自己紹介
名前: 中山 桂一
@k1nakayama
所属: 株式会社キャラウェブ
クラウドソリューショングループ
ソリューションアーキテクト
好きなAWSサービス:
・AWS Lambda
・AWS CloudFormation
・Amazon API Gateway
2
モバイルバックエンドのサーバレス化
■プロジェクトの概要
・iOS/Android向けアプリ、Webサイトにて提供
を行うEC系サービス(デジタルコンテンツ配信
系)
・出来る限りサーバレス(マネージドサービス
を活用し)で構築する
・RTO:24時間以内、RPO:原則として障害発
生直前 を目標とする
・原則としてDRサイトへの切り替えは自動的
に行われるようにする
・プロジェクトの規模、今後の拡張性を考慮し
て、全体的にマイクロサービスアーキテクチャ
で構築する
・商用/ステージング/開発向けそれぞれに環
境を分けて運用(環境毎にアカウントを分離)
・CI/CDパイプラインを回してデプロイ ap-northeast-1 us-west-2
Amazon
Route 53Amazon CloudFront AWS Certificate ManagerIAM
Amazon API Gateway
Amazon
DynamoDB
AWS
Lambda
AWS
CloudFormation
Amazon
Cognito
Amazon
SES
Amazon
SNS
Amazon ES
Amazon
S3
Amazon API Gateway
Amazon
DynamoDB
AWS
Lambda
AWS
CloudFormation
Amazon
Cognito
Amazon
SES
Amazon
SNS
Amazon ES
Amazon
S3
■現状の開発規模(8月キックオフされたばかり)
・サービス数: 28サービス
・LambdaFunction数: 90ファンクション(もっと増える)
・DynamoDBテーブル数:50テーブル(もっと増える)
・CloudFormationテンプレート: 約45,000行(YAMLベー
ス、もっと増える)
3
開発上の原則(最低限考慮するもの)
「The Twelve Factor App」を原則として考える
• コードベース:CloudFormation等のコードで定義・構築を行えるようにすること
• 設定:環境毎に異なる設定は環境変数等を用いて、ソースコードは1ソースに保つこと
• バックエンドサービス:関連リソースについてソースコードを変更せずアタッチして使えるように
CI/CDパイプラインを構築しテスト・デプロイを行う
• CodePipeline+CodeCommit + CodeBuild + CloudFormationでCI/CDパイプラインを構築しテスト・デ
プロイが行なえます。(もちろん他のサービスを使用しても良いと思います)
IAMロールは原則として使いまわさず、
使用目的・サービス等のオーナー毎に最小限の
権限に絞って作成する
• リソースセクションは可能な限り必要なターゲット
に限定する
• リソース定義時に当該リソースに必要な権限
のみの専用ロールを定義して割り当てる
出来るだけコレオグラフィで構築する
• 主にDynamoDBへの書き込みをトリガーに
DynamoDB Streamsをサブスクライブし振る舞いを
構成するとDR等も考えやすい
AWS
CodeCommit
AWS
CodePipeline
AWS
CodeBuild
AWS
CloudFormation
AWS SAM
Git push
・ユニットテスト
・package
デプロイ
管理アカウント 各ステージ用アカウント
4
ハマリポイントと解決策
CodePipeline+AWS SAMでデプロイするときはテンプレートを50KB以下に制限される
CodePipelineでCloudFormationを実行する際のテンプレートパスはArtifact内のパスを指定する必
要がある→S3URLが指定できないため、50KB制限がある
対策:
・ネストしたスタックを使用し、スタックを分けていく
・JSONに変換し、jq等で圧縮をする(1ライナーに変換する)
aws cloudformation --region ${AWS_DEFAULT_REGION} package --template-file template.yaml --s3-
bucket ${S3_BUCKET} --use-json | sed -e '1d' | jq -c . > outputTemplate.json
YAMLで記述したテンプレートのMappingsセクション(だけではないと思うが)のキー名に、
アカウントIDにより条件を定義する場合、アカウントIDが0から始まるIDだとエラーとなる
aws cloudformation packageを実行する際、内部で使用しているPythonのYAMLライブラリにバグ
があり、0から始まるIDの場合クオートされずエラーとなる
対策: --use-json を付加してJSON出力する → 副作用として更にテンプレートの容量が増える
クロスリージョンレプリケーション機能がほとんどのサービスにない
対策:
DynamoDB: DynamoDB Streamsを使用し、dynamodb-cross-region-libraryかLambdaなどを使用
各リソース定義: DR側リージョンにもCI/CDパイプラインを作りメインリージョンのCI/CD実行時にDR
側Gitにpushする
その他データ: DynamoDB Streamsをトリガーにコレオグラフィを構成しLambda等で同期
5
API Gatewayのカスタムドメイン切り替え
DRを考慮してメイン/DRそれぞれのリージョンに作ったAPI Gatewayにカスタムドメインを充て、
アクセスを行うことを検討した
→問題発生:
API GatewayのカスタムドメインはCloudFrontの仕様上、複数リージョンに同一ドメインを設
定できない!!
AWSサポート回答:
→現時点の解決策:
・リージョン毎にカスタムドメインを分け、API接続元からリクエストがタイムアウトする場合、
DRリージョン用APIへリクエストを行うようにする。。。
・API Gatewayの前にCloudFrontを置き、1ディストリビューションにそれぞれのオリジンを設定
し、DR切替時にBehavior設定にて向け先オリジンを変更する
→IAM認証等のAPI Gatewayの認証が使えなくなる → Lambda@Edge等でどうにかする?
→プロジェクトがローンチする前までにAWSさんが対応してくれることを祈ります!!
6

More Related Content

PPTX
Cloud Formation + Code シリーズで行うマルチアカウント・マルチリージョンデプロイ
PDF
IoT(Bluetooth mesh) × サーバーレス
PDF
俺のLambda
PDF
【IVS CTO Night & Day】Networking Technology
PDF
Morning Session - AWS Serverless Ways
PDF
【IVS CTO Night & Day】DevOps on AWS 2017
PDF
AWS Introduction for Startups
PDF
Serverless AWS構成でセキュアなSPAを目指す
Cloud Formation + Code シリーズで行うマルチアカウント・マルチリージョンデプロイ
IoT(Bluetooth mesh) × サーバーレス
俺のLambda
【IVS CTO Night & Day】Networking Technology
Morning Session - AWS Serverless Ways
【IVS CTO Night & Day】DevOps on AWS 2017
AWS Introduction for Startups
Serverless AWS構成でセキュアなSPAを目指す

What's hot (19)

PDF
AWS SAMで始めるサーバーレスアプリケーション開発
PPTX
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
PDF
サーバーレス・アーキテクチャ概要
PDF
20170210 jawsug横浜(AWSタグ)
PPTX
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
PDF
SA プライムなう! - AWS IoT とロボットアームでお絵かき
PDF
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
PDF
今からおさえるクラウドとAWS活用のこれから2014
PPTX
re:Port 2017 #2 「AWS re:Invent 2017 参加レポート」
PDF
AWS管理を自動化する奥義
PPTX
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
PDF
Azure Application GatewayでオンプレDMZをクラウドへ拡張する
PDF
JAWSDAYS2017 新訳 とあるアーキテクトのクラウドデザインパターン目録 AMI Maintenance Environment
PDF
第18回 jaws ug札幌 勉強会 やってみたで終わらないlambdaな話
PPTX
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
PDF
【IVS CTO Night & Day】AWSにおけるビッグデータ活用
PPTX
成長していくサービスとAWS
PDF
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
PDF
NW-JAWS x Tech-on勉強会:AWS Transit Gateway で広がる ネットワークアーキテクチャ
AWS SAMで始めるサーバーレスアプリケーション開発
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
サーバーレス・アーキテクチャ概要
20170210 jawsug横浜(AWSタグ)
Raspberry Piを利用した顔の表情分析と感情を認識するシステム構築
SA プライムなう! - AWS IoT とロボットアームでお絵かき
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
今からおさえるクラウドとAWS活用のこれから2014
re:Port 2017 #2 「AWS re:Invent 2017 参加レポート」
AWS管理を自動化する奥義
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
Azure Application GatewayでオンプレDMZをクラウドへ拡張する
JAWSDAYS2017 新訳 とあるアーキテクトのクラウドデザインパターン目録 AMI Maintenance Environment
第18回 jaws ug札幌 勉強会 やってみたで終わらないlambdaな話
APIを叩くだけでない、Deep Learning on AWS で自分だけの学習モデルを作ろう! by JAWS-UG AI支部
【IVS CTO Night & Day】AWSにおけるビッグデータ活用
成長していくサービスとAWS
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
NW-JAWS x Tech-on勉強会:AWS Transit Gateway で広がる ネットワークアーキテクチャ
Ad

Similar to サーバレス × AWS SAM × DRにおけるTIPS (20)

PDF
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
PDF
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
PDF
FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...
PDF
What's new with Serverless
PDF
AWS クラウドで構築するスマホアプリ バックエンド
PDF
[要約] Building a Real-Time Bidding Platform on AWS #AWSAdTechJP
PPT
アマゾンクラウドの真価
PDF
20151030 オープンデータとセキュリティon aws
PDF
G tech2016 クラウド時代に必要とされる組織と人材育成について
PPTX
DevAx::connect はじめました
PPTX
re:invent2018 総ざらえ
PDF
Gaming cicd-pipeline gaming-technight-2
PPTX
メテオフォール型開発 X サーバーレス開発
PDF
Scala: Mobile Backend on AWS
PDF
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
PDF
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
PDF
20180710 AWS Black Belt Online Seminar AWS入門者向け: AWSで実現するウェブサイトホスティング
PDF
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
PDF
Amazon Web Services(AWS)とcloudpack について
PDF
Architecting on Alibaba Cloud - 超基礎編 -
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
FutureStack Tokyo 19 -[パートナー講演]アマゾン ウェブ サービス ジャパン株式会社: New Relicを活用したAWSへのアプリ...
What's new with Serverless
AWS クラウドで構築するスマホアプリ バックエンド
[要約] Building a Real-Time Bidding Platform on AWS #AWSAdTechJP
アマゾンクラウドの真価
20151030 オープンデータとセキュリティon aws
G tech2016 クラウド時代に必要とされる組織と人材育成について
DevAx::connect はじめました
re:invent2018 総ざらえ
Gaming cicd-pipeline gaming-technight-2
メテオフォール型開発 X サーバーレス開発
Scala: Mobile Backend on AWS
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
20180710 AWS Black Belt Online Seminar AWS入門者向け: AWSで実現するウェブサイトホスティング
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
Amazon Web Services(AWS)とcloudpack について
Architecting on Alibaba Cloud - 超基礎編 -
Ad

サーバレス × AWS SAM × DRにおけるTIPS