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.1k
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
850
BLEA v3.0.0の新しいベストプラクティスを取り入れた効率的なAWS CDK開発/jawsug_cdk16
mhrtech
3
600
あなたのアプリケーションをレガシーコードにしないための実践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.2k
IaCでセキュリティを強化しよう!~IAMが苦手な開発者でも簡単に権限を絞れる。そう、AWS CDKならね!~/secjaws32
mhrtech
5
2.7k
AWS Control Towerを2年弱運用して得たエッセンスと展望/securityjaws31
mhrtech
1
1.8k
そのリファレンス誰のため?ユーザ活用に向き合う/finjaws31
mhrtech
0
630
AWS CDKにテストは必要?試行錯誤したスクラム開発事例を紹介!/CdkConJp2023
mhrtech
5
6.1k
Other Decks in Technology
See All in Technology
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
AIチャットボット開発への生成AI活用
ryomrt
0
170
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
1k
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
310
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
6
630
Lambdaと地方とコミュニティ
miu_crescent
2
370
OTelCol_TailSampling_and_SpanMetrics
gumamon
1
130
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
Featured
See All Featured
Docker and Python
trallard
40
3.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
For a Future-Friendly Web
brad_frost
175
9.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
BBQ
matthewcrist
85
9.3k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Teambox: Starting and Learning
jrom
133
8.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
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