$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS CDKでデータリストアの運用、どのように設計する?~Aurora・EFSの実践事例を紹...
Search
みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
November 01, 2024
Technology
6
1.3k
AWS CDKでデータリストアの運用、どのように設計する?~Aurora・EFSの実践事例を紹介~/aws-cdk-data-restore-aurora-efs
「クラスメソッドのCDK事情大公開スペシャル#1」での登壇資料です。
イベントURL:
https://classmethod.connpass.com/event/332020/
みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
November 01, 2024
Tweet
Share
More Decks by みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
See All by みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
Azure Verified Moduleを触って分かった注目ポイント/azure-verified-module-begin
mhrtech
1
980
BLEA v3.0.0の新しいベストプラクティスを取り入れた効率的なAWS CDK開発/jawsug_cdk16
mhrtech
3
650
あなたのアプリケーションをレガシーコードにしないための実践Pytest入門/pyconjp2024_pytest
mhrtech
6
2.8k
静的サイトのCI/CDでも侮るなかれ!Docs as Codeに沿ったセキュアな開発プロセスの実践/secure-docsascode-cicd-for-static-sites
mhrtech
13
2.9k
Kubernetes でワークフローを組むなら cdk8s-argoworkflow がよさそう!/ cdk8s-argoworkflow is great!
mhrtech
3
1.3k
IaCでセキュリティを強化しよう!~IAMが苦手な開発者でも簡単に権限を絞れる。そう、AWS CDKならね!~/secjaws32
mhrtech
5
2.7k
AWS Control Towerを2年弱運用して得たエッセンスと展望/securityjaws31
mhrtech
1
1.9k
そのリファレンス誰のため?ユーザ活用に向き合う/finjaws31
mhrtech
0
650
AWS CDKにテストは必要?試行錯誤したスクラム開発事例を紹介!/CdkConJp2023
mhrtech
5
6.2k
Other Decks in Technology
See All in Technology
Azure DevOps REST API活用とセキュリティのベストプラクティス-Workload Identity Federationのメリット
yutakaosada
0
100
Kubernetesトラフィックルーティング徹底解説/Kubernetes-traffic-deep-dive
oracle4engineer
PRO
3
350
宇宙最速のランチRecap LT会(開発者ツール&運用監視編)
nnydtmg
1
180
リクルートのデータ基盤 Crois 年3倍成長!1日40,000コンテナの実行を支える AWS 活用とプラットフォームエンジニアリング
recruitengineers
PRO
1
220
[GDG DevFest Bangkok 2024] - The Future of Retail E-commerce with Gemini AI
punsiriboo
0
300
12/2(月)のBedrockアプデ速報(re:Invent 2024 Daily re:Cap #1 with AWS Heroes)
minorun365
PRO
2
310
属人化したE2E自動テストを ひも解く
honamin09
1
110
pmconf2024_UPSIDER
upsider_tech
0
7.5k
データパイプラインをなんとかした話 / Improving the Data Pipeline in IVRy
mirakui
0
110
プロダクトの爆速開発を支える、 「作らない・削る・尖らせる」技術
applism118
10
8.7k
同一クラスタ上でのFluxCDとArgoCDのリソース最適化の話
kumorn5s
0
130
つくってあそぼ! ユビキタス言語作文の紹介
ndadayo
1
150
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
The Language of Interfaces
destraynor
154
24k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
110
49k
Building Better People: How to give real-time feedback that sticks.
wjessup
365
19k
A better future with KSS
kneath
238
17k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
160
Embracing the Ebb and Flow
colly
84
4.5k
Rails Girls Zürich Keynote
gr2m
94
13k
Transcript
© 2024 Mizuho Research & Technologies, Ltd. クラスメソッドのCDK事情大公開スペシャル#1 0 技術開発本部
先端技術研究部 AWS CDKでデータリストアの運用、どのように設計する? ~Aurora・EFSの実践事例を紹介~ 2024年11月1日
© 2024 Mizuho Research & Technologies, Ltd. 1 氏名:松尾 優成(Matsuo
Yusei) 所属:先端技術研究部 兼 プロジェクト推進部 役割:社内向けAWSプラットフォームの構築・運用 活動:社内コミュニティ「コクリエ」運営 少しずつですが情報発信を増やしています! 自己紹介
© 2024 Mizuho Research & Technologies, Ltd. 2 社内向け AWS
プラットフォームの概要 • 社内へセキュアなAWSアカウントを迅速に提供するプラットフォーム • マルチアカウント管理に AWS Control Tower と AWS CDKを活用 • 詳細な構成は builders.flash で公開中! https://aws.amazon.com/jp/builders-flash/202405/mizuho-service-catalog/ https://aws.amazon.com/jp/builders-flash/202406/mizuho-account-automation/
© 2024 Mizuho Research & Technologies, Ltd. プラットフォームに関する問合せ・申請の受付方法 • サポート窓口として、セルフホストした
Redmine 環境を AWS 上に構築 • 利用者と運用者は Redmine 上で各種問合せ・申請をやり取り 3 WAF CloudFront ELB 利用者 自社拠点 問合せ/申請 Fargate Aurora EFS VPC Backup 確認/回答 運用者 Entra AWS CDK で構築!
© 2024 Mizuho Research & Technologies, Ltd. 4 予期せぬデータ喪失!? AWS
CDK 構築後、復旧で慌てないために何をする?
© 2024 Mizuho Research & Technologies, Ltd. 5 AWS CDK
はシステム開発をコードで効率化するが アプリケーションのデータはコード管理されない! 案件メンバーに聞いた話 ✓ AWS CDK で作るのは簡単なのに、リストアが絡むと煩雑… ✓ DB を手動リストアすると運用で AWS CDK の恩恵が…
© 2024 Mizuho Research & Technologies, Ltd. 6 システム開発・運用では… 思わぬ障害や操作ミスでデータ消失するリスクがある
✓ 開発環境での誤操作によるデータ削除 ✓ 本番環境での予期せぬ障害発生 ✓ ステージング環境から本番環境へのデータ移行失敗
© 2024 Mizuho Research & Technologies, Ltd. 7 リストア手順を事前に準備していないと… 時間とコストの損失!?サービス継続性に深刻な影響が!
リストア要件を明確にし、適切な復旧戦略を立てておくことで 安心したインフラ運用につながる! バックアップ要件も重要ですが 今回はリストア手法のみに着目してご紹介!
© 2024 Mizuho Research & Technologies, Ltd. 8 AWS CDK
で構築したデータリソースのリストア考慮事項 コンソールでのリストアはお手軽そうだけど CloudFormation スタックの管理から外れる… どこまで自動化する? 手動リストア後に cdk import ? アプリ側の向き先切替も手間… リストア手順を 整理しないと…
© 2024 Mizuho Research & Technologies, Ltd. そこで、AWS CDK で構築した
Aurora ・ EFS について リストア実践事例を紹介します! 9 WAF CloudFront ELB Fargate Aurora EFS VPC Backup リストア対象
© 2024 Mizuho Research & Technologies, Ltd. 10 リストアの方針 ⚫
ダウンタイムを許容できるため、必要以上に自動化しない (Redmine は社内用で代替の連絡手段もあるため RTO に余裕あり) ⚫ リストア後もリソースの CFn スタック管理を維持したい →スタックの保守で CDK の更新などが実行しやすい ⚫ AWS CDK 初心者でも簡単に実行できる手順にしたい
© 2024 Mizuho Research & Technologies, Ltd. 11 まずは Aurora
のリストアを紹介! 以後は AWS CDK v2.162.1 (TypeScript)で紹介します
© 2024 Mizuho Research & Technologies, Ltd. 12 DatabaseClusterFromSnapshot でお手軽にリストア!
• DatabaseClusterFromSnapshot は AWS CDK の便利な L2 Construct • スナップショット ARN を指定するだけで CFn 管理下の DB クラスターを復元 • ECS タスクの DB 向き先は既存定義を流用できるので切替を意識する必要なし Aurora のリストア https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_rds.DatabaseClusterFromSnapshot.html ここにリストアしたい断面の スナップショット ARN を指定 API リファレンスのサンプルコード
© 2024 Mizuho Research & Technologies, Ltd. 実装では条件分岐で通常の DatabaseCluster と使い分け!
どちらの L2 も Construct Props は殆ど同じ! 13 Aurora のリストア 初期構築や開発用途などで スナップショット ARN が 渡されない場合、新規作成 スナップショット ARN の受け渡しによる DB クラスター生成の切替
© 2024 Mizuho Research & Technologies, Ltd. 14 リストアで一度指定したスナップショット ARN
は取扱注意! 再度リストアするまで、スナップショット ARN を変更しない! (スナップショット ARN は Git Commit して 変更管理する) Aurora のリストア https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbcluster.html CFn ユーザーガイドを機械翻訳 SnapshotIdentifierプロパティを指定してDBクラスタをリストアした後、今後DBクラスタを更 新する場合は、同じ SnapshotIdentifier プロパティを指定する必要があります。更新時にこの プロパティを指定すると、DBクラスタはDBクラスタスナップショットから再度リストアされ ず、データベース内のデータは変更されません。ただし、SnapshotIdentifierプロパティを指定 しないと、空のDBクラスタが作成され、元のDBクラスタは削除されます。前回のスナップ ショットリストアプロパティと異なるプロパティを指定すると、指定した SnapshotIdentifier プロパティから新しいDBクラスタがリストアされ、元のDBクラスタは削除されます。
© 2024 Mizuho Research & Technologies, Ltd. 15 次に EFS
のリストアを紹介! 本事例では EFS の匿名アクセスを 許可しているのでご留意ください
© 2024 Mizuho Research & Technologies, Ltd. 16 AWS CDK
で EFS を直接リストアできない? • EFS に DatabaseClusterFromSnapshot のような L2 Construct なし • 外部 EFS を取り込むメソッドはあるが、リストア観点だと考慮事項が多そう? EFS のリストア API リファレンスのサンプルコード https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_efs.FileSystemAttributes.html リストアに活用するのが 難しそうだったので見送り
© 2024 Mizuho Research & Technologies, Ltd. 17 CloudShell から
AWS Backup の リストアジョブを手動実行することに! シンプルな方法を模索した結果… EFS のリストア インシデント調査など様々なケースを考慮して 新規 EFS へのリストア手順を紹介します
© 2024 Mizuho Research & Technologies, Ltd. 採用した EFS リストア手順(1/3)
1. AWS Backup でリカバリポイントの ARN をメモし、 リストア先として別スタックを CDK デプロイ(EFS 含めて新規作成) 18 EFS のリストア cdk deploy New Stack ELB Fargate Aurora EFS VPC Backup 事前にスナップショット ARN を指定 CloudFront EFS は空 デプロイ時間の大半は Aurora リストアに依存 Aurora/EFS の 復旧断面を保持
© 2024 Mizuho Research & Technologies, Ltd. 採用した EFS リストア手順(2/3)
2. VPC プライベートサブネット内に CloudShell を起動し、 新規 EFS に対して AWS Backup のリストア API を手動実行 19 EFS のリストア EFS VPC Backup CloudShell NAT gateway リストア API 実行 起動 リストア パブリックサブネット内の CloudShell ではデフォルトだと パブリック接続不可なので注意 復旧元 EFS の バックアップ Vault
© 2024 Mizuho Research & Technologies, Ltd. 採用した EFS リストア手順(3/3)
3. CloudShell に EFS を マウントし、 リストアされた EFS のディレクトリ階層を手動修正 20 EFS のリストア EFS VPC CloudShell EFSをマウント ディレクトリ階層の修正
© 2024 Mizuho Research & Technologies, Ltd. 21 (補足)EFS をリストアする際の留意点
EFS リストア後に、バックアップ元とディレクトリの階層がずれる! EFS のリストア root 2023 11 12 2024 1 root aws-backup- restore_xxxx 2023 11 12 2024 1 リストア後の階層 バックアップ元の階層 リストアで階層が自動追加されるため ディレクトリ階層変更の考慮が必要
© 2024 Mizuho Research & Technologies, Ltd. 22 本リストア手順の嬉しい点を 3
つ紹介!
© 2024 Mizuho Research & Technologies, Ltd. 23 AWS CDK
コードの EFS はシンプルで凝った作りこみ不要! 採用した EFS リストア手順の嬉しい点(1/3) 条件分岐なしでシンプル! CFn スタック管理も継続 L2 Construct により マウントターゲットや セキュリティグループが自動作成される
© 2024 Mizuho Research & Technologies, Ltd. 24 踏み台サーバ不要で、CloudShell からコマンドが完結!
CloudShell の VPC 対応前は踏み台を準備していたので嬉しい! 採用した EFS リストア手順の嬉しい点(2/3) EFS VPC CloudShell 起動 ディレクトリ階層の修正 2024/6/25: AWS CloudShell now supports Amazon Virtual Private Cloud (VPC) - AWS Backup NAT gateway リストア API 実行 リストア 復旧元 EFS の バックアップ Vault
© 2024 Mizuho Research & Technologies, Ltd. 25 VPC 内の
CloudShell から実行するコマンドも簡単! 1. AWS Backup のリストアジョブ実行 2. EFS のマウント 3. ディレクトリ階層修正 ⇒ 3 つのステップでリストア可能! 採用した EFS リストア手順の嬉しい点(3/3) $ aws backup start-restore-job --recovery-point-arn xx -metadata xx ~ $ mkdir efs && sudo yum install -y nfs-utils && sudo mount -t nfs4 –o xx ~ $ sudo mv efs/aws-backup-restore_YYYY-MM-DDxxx/* efs/ Aurora に加えて EFS も ECS タスクの切替不要!
© 2024 Mizuho Research & Technologies, Ltd. 26 より迅速なリストアが求められるケースでは StepFunctions
や SSM で自動化を検討するのもよいかも? 本事例は手動実行ですが…
© 2024 Mizuho Research & Technologies, Ltd. 27 まとめ •
AWS CDK で構築したデータリソースのリストア手順整備は重要! • Aurora のリストアは DatabaseClusterFromSnapshot でお手軽! • EFS のリストアでは VPC 対応した CloudShell が便利! (リストアのために AWS CDKのコードを複雑にしすぎない) • 各プロジェクトの要件・状況に合わせて 適切な手法を選択することが大事!
28