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
CDNの自動割当ドメインをすべて独自ドメインに移行したよ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
wind-up-bird
November 28, 2024
26
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CDNの自動割当ドメインをすべて独自ドメインに移行したよ
yabaibuki.dev #3
wind-up-bird
November 28, 2024
More Decks by wind-up-bird
See All by wind-up-bird
いつもみてるよ、エラーもその先も
w1ndupb1rd
0
120
Teachme Biz で利用するドメインを統合して安心安全に静的コンテンツを取得する
w1ndupb1rd
0
170
studist tech talk #1
w1ndupb1rd
1
210
トレタの大規模バックエンドを移行するまでの道のりと舞台裏
w1ndupb1rd
1
120
トレタを支える技術(インフラ編)
w1ndupb1rd
0
100
Featured
See All Featured
A designer walks into a library…
pauljervisheath
211
24k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
Code Review Best Practice
trishagee
74
20k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Skip the Path - Find Your Career Trail
mkilby
1
150
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
480
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
430
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
The Cult of Friendly URLs
andyhume
79
6.9k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Transcript
やってやったぜ!技術的負債解消 LT会 CDNの⾃動割当ドメインをすべて独⾃ドメインに移⾏したよ yabaibuki.dev #3 株式会社スタディスト CREグループ 柳楽瑛
⾃⼰紹介 2 名前: 柳楽瑛 (X: @_windupbird_) 所属: 株式会社スタディスト CREグループ 仕事:
Ruby, Rails, AWS, kubernetes, Terraform etc… 趣味: 筋トレ、散歩
Teachme Biz 3 画像や動画中⼼を中⼼としたオンラインマニュアル を作成、共有、管理できるサービスです。 Teachme Biz is 何?
Teachme Biz の全体構成 4 1⃣API: ALB + EKS + Aurora
2⃣CDN: Amazon CloudFront + S3 Teachme Biz は AWS を主に使⽤
Teachme Biz の全体構成 5 1⃣API経由でマニュアル表⽰に必要な情報を取得する https://teachme.jp/api/manual/1 { "title": "TMB:Ctrl +
Vで画像貼り付けする⽅法", "text": "", "image": "https://xxx.cloudfront.net/path/to/image.png", "steps": [ { "id": 1, "title": "操作の動画はこんな感じ", "text": "windowsの標準機能が録画対象になってないのでわかり にくいかも..." }, … ] … } id manual_id url 1 1 https://xxx.cloudfront.net/path/to/image.png 2 1 https://xxx.cloudfront.net/path/to/image2.png 3 2 https://xxx.cloudfront.net/path/to/image3.png images テーブル マニュアル表⽰までの流れ
Teachme Biz の全体構成 6 https://xxx.cloudfront.net/path/to/image.png 1⃣API経由でマニュアル表⽰に必要な情報を取得する 2⃣CDNから画像や動画を取得する マニュアル表⽰までの流れ https://teachme.jp/api/manual/1
Teachme Biz の全体構成 7 1⃣API経由でマニュアル表⽰に必要な情報を取得する 2⃣CDNから画像や動画を取得する 3⃣表⽰ https://teachme.jp/api/manual/1 https://xxx.cloudfront.net/path/to/image.png マニュアル表⽰までの流れ
Amazon CloudFront の⾃動割り当てドメイン 8 Amazon CloudFront のディストリビューションを起動すると特定のドメインが使えるようになる → 例: d111111abcdef8.cloudfront.net
S3と連携しておくと、S3に画像や動画などのファイルをアップロードするだけでアクセス可能 → https://d111111abcdef8.cloudfront.net/path/to/image.png 過去、Teachme Bizではこの⾃動割り当てドメインを使っていた... 負債が⽣まれる背景
技術的な負債 9 1⃣他のCDNサービスへ移⾏できない 2⃣もし間違って消してしまったら戻せない ※他にもあるけど割愛 3⃣ドメインの信頼性 4⃣ユーザーがアクセス制限でホワイトリストを運⽤している
技術的な負債 10 1⃣他のCDNサービスへ移⾏できない →将来CDNを他のクラウドサービスやCDNサービスに移⾏することはありえる。 →その時に cloudfront.net を使ったままだと移⾏ができない。 負債レベル: 低
技術的な負債 11 負債レベル: ⾼ https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html 2⃣もし間違って消してしまったら戻せない 引⽤: CloudFront ドメイン名は⼀意です。 ディストリビューションのドメイン名は
以前のディストリビューションで使⽤されて おらず、今後の別のディストリビューション でも再利⽤されません。
技術的な負債 12 負債レベル: ⾼ 2⃣もし間違って消してしまったら戻せない つまり、、、 もしディストリビューションを削除 してしまうと、同じドメインは取得できない。 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html
技術的な負債 13 2⃣もし間違って消してしまったら戻せない ディストリビューションを再作成しても、 images テーブルに存在する古いURLを 参照し続けてしまう。(障害の発⽣) ちなみに、動画と画像のテーブルには 合計数千万レコードが存在している。 (障害の⻑期化)
id manual_id url 1 1 https://xxx.cloudfront.net/path/to/image.png 2 1 https://xxx.cloudfront.net/path/to/image2.png 3 2 https://xxx.cloudfront.net/path/to/image3.png images テーブル 負債レベル: ⾼
代替ドメインを利⽤する 対策 14 独⾃ドメインを利⽤してアクセスが可能。 https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html
代替ドメインを利⽤する 対策 15 独⾃ドメインを利⽤してアクセスが可能。 例: →データベース上のレコードもすべて独⾃ドメインで書き換える ⽤途 旧(⾃動割り当てドメイン) 新(独⾃ドメインを利⽤) 画像
https://xxx.cloudfront.net/path/to/image.png https://image.teachme.jp/path/to/image.png 動画 https://yyy.cloudfront.net/path/to/video.mov https://video.teachme.jp/path/to/video.mov
まとめ 16 1⃣他のCDNサービスへ移⾏できない → ドメインの向き先を変えることで容易に移⾏が可能になる。 2⃣もし間違って消してしまったら戻せない → Amazon CloudFront を再作成して、新しいディストリビューションにDNSを向け直せばよい。
→ もちろんDB上のレコード書き換えも不要。
https://studist.jp/