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
3
150
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
730
BLEA v3.0.0の新しいベストプラクティスを取り入れた効率的なAWS CDK開発/jawsug_cdk16
mhrtech
3
520
あなたのアプリケーションをレガシーコードにしないための実践Pytest入門/pyconjp2024_pytest
mhrtech
6
2k
静的サイトのCI/CDでも侮るなかれ!Docs as Codeに沿ったセキュアな開発プロセスの実践/secure-docsascode-cicd-for-static-sites
mhrtech
12
2.6k
Kubernetes でワークフローを組むなら cdk8s-argoworkflow がよさそう!/ cdk8s-argoworkflow is great!
mhrtech
3
1.2k
IaCでセキュリティを強化しよう!~IAMが苦手な開発者でも簡単に権限を絞れる。そう、AWS CDKならね!~/secjaws32
mhrtech
5
2.6k
AWS Control Towerを2年弱運用して得たエッセンスと展望/securityjaws31
mhrtech
1
1.7k
そのリファレンス誰のため?ユーザ活用に向き合う/finjaws31
mhrtech
0
630
AWS CDKにテストは必要?試行錯誤したスクラム開発事例を紹介!/CdkConJp2023
mhrtech
5
6k
Other Decks in Technology
See All in Technology
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
9
120k
AI Builder について
miyakemito
1
140
LeSSに潜む「隠れWF病」とその処方箋
lycorptech_jp
PRO
2
110
Autify Company Deck
autifyhq
1
39k
オニオンアーキテクチャで実現した 本質課題を解決する インフラ移行の実例
hryushm
13
2.9k
新卒1年目が挑む!生成AI × マルチエージェントで実現する次世代オンボーディング / operation-ai-onboarding
cyberagentdevelopers
PRO
1
140
【若手エンジニア応援LT会】AWSで繋がり、共に成長! ~コミュニティ活動と新人教育への挑戦~
kazushi_ohata
0
150
サイバーエージェントにおける生成AIのリスキリング施策の取り組み / cyber-ai-reskilling
cyberagentdevelopers
PRO
2
160
フルカイテン株式会社 採用資料
fullkaiten
0
36k
AWS re:Inventを徹底的に楽しむためのTips / Tips for thoroughly enjoying AWS re:Invent
yuj1osm
1
440
Figma Dev Modeで進化するデザインとエンジニアリングの協働 / figma-with-engineering
cyberagentdevelopers
PRO
1
410
CAMERA-Suite: 広告文生成のための評価スイート / ai-camera-suite
cyberagentdevelopers
PRO
3
250
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
39
2.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
3
360
Become a Pro
speakerdeck
PRO
24
5k
How STYLIGHT went responsive
nonsquared
95
5.1k
Navigating Team Friction
lara
183
14k
4 Signs Your Business is Dying
shpigford
180
21k
Agile that works and the tools we love
rasmusluckow
327
21k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Fashionably flexible responsive web design (full day workshop)
malarkey
404
65k
Being A Developer After 40
akosma
86
590k
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