Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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.2k
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
870
BLEA v3.0.0の新しいベストプラクティスを取り入れた効率的なAWS CDK開発/jawsug_cdk16
mhrtech
3
610
あなたのアプリケーションをレガシーコードにしないための実践Pytest入門/pyconjp2024_pytest
mhrtech
6
2.5k
静的サイトのCI/CDでも侮るなかれ!Docs as Codeに沿ったセキュアな開発プロセスの実践/secure-docsascode-cicd-for-static-sites
mhrtech
12
2.8k
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.8k
そのリファレンス誰のため?ユーザ活用に向き合う/finjaws31
mhrtech
0
640
AWS CDKにテストは必要?試行錯誤したスクラム開発事例を紹介!/CdkConJp2023
mhrtech
5
6.1k
Other Decks in Technology
See All in Technology
心が動くエンジニアリング ── 私が夢中になる理由
16bitidol
0
110
OS 標準のデザインシステムを超えて - より柔軟な Flutter テーマ管理 | FlutterKaigi 2024
ronnnnn
1
300
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
310
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
230
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
330
CysharpのOSS群から見るModern C#の現在地
neuecc
2
3.6k
あなたの知らない Function.prototype.toString() の世界
mizdra
PRO
2
430
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
130
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
130
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
200
The Role of Developer Relations in AI Product Success.
giftojabu1
0
150
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
720
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Building an army of robots
kneath
302
43k
Six Lessons from altMBA
skipperchong
27
3.5k
A designer walks into a library…
pauljervisheath
204
24k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Raft: Consensus for Rubyists
vanstee
136
6.6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
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