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移行を通して得られた知見と教訓
Search
hiroshi.muto
March 07, 2023
Programming
0
790
AWS移行を通して得られた知見と教訓
hiroshi.muto
March 07, 2023
Tweet
Share
Other Decks in Programming
See All in Programming
The Price of Micro Frontends… and Your Alternatives @bastacon 2025 in Frankfurt
manfredsteyer
PRO
0
300
「個人開発マネタイズ大全」が教えてくれたこと
bani24884
1
310
dbt Pythonモデルで実現するSnowflake活用術
trsnium
0
290
CDK開発におけるコーディング規約の運用
yamanashi_ren01
2
270
❄️ NixOS/nixpkgsにSATySFiサポートを実装する
momeemt
1
110
[JAWS DAYS 2025] 最近の DB の競合解決の仕組みが分かった気になってみた
maroon1st
0
200
技術を改善し続ける
gumioji
0
190
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
21
4.4k
Rails 1.0 のコードで学ぶ find_by* と method_missing の仕組み / Learn how find_by_* and method_missing work in Rails 1.0 code
maimux2x
1
280
CloudRun, Spanner に対する負荷試験の反省と オブザーバビリティによるアプローチ
oyasumipants
1
210
バッチを作らなきゃとなったときに考えること
irof
2
570
From the Wild into the Clouds - Laravel Meetup Talk
neverything
0
190
Featured
See All Featured
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
How GitHub (no longer) Works
holman
314
140k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Visualization
eitanlees
146
15k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Optimizing for Happiness
mojombo
377
70k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Designing for Performance
lara
605
68k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
115
51k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Transcript
AWS移行を通して 得られた知見や教訓 エキサイト株式会社 メディアプラットフォーム事業部 武藤 寛
自己紹介 • 武藤 寛 • エキサイト株式会社 メディアプラットフォーム事業部 • レシピサイトを担当
• PHP / Android / Flutter App • Twitter @mthiroshi_4o
料理のプロが作る簡単レシピサイト 「E・レシピ」 - 複数レシピを組み合わせた「献立」を提案 - 旬食材、季節イベントに合わせたレシピや トレンドの食ニュースも発信 - Web, iOS,
Androidで提供
AWS移行が完了 - エキサイトは2019年から移行開始、2022年6月末に完了 - E・レシピは2021年に着手、2022年6月下旬に完了
E・レシピのシステム概要
None
AWS構成
None
移行手順
VPC構築とDirect Connect接続 オンプレ 社内ネットワーク AWS E・レシピ VPC 専用線を確保
DB移行 (DMS)
VM移行 Application Migration Service (MGN)
Memcached移行
イメージサーバー移行
知見や教訓 • Terraformの運用 • AWS移行とリビルド • VPCとALBの注意点
Terraformの運用 • 社内、チーム内で採用している • ディレクトリ構造には様々なパターンがある
gateway application infra
AWS移行とリビルド
主要テーブルの不要カラムを削除 • レシピデータを管理する主要なテーブルに50個の不要なカラム • 従来の新規データ定義をカラム追加で対応の積み重ね – 削除時にリスクがある運用 • 不要カラムの参照がコードに残ることが負債化が進む
カラム整理から得たこと • 変更に強いテーブル設計をする – テーブルを適切に正規化する • 不要なコードは削除する – コード内検索のノイズが減る
APIのリビルド(現在進行中) • PHP → Java / SpringBoot で再実装 • APIパラメータを整理し、用途に応じてエンドポイントの分割
– 内部の分岐を減らして、見通しを良くする • SQLの見直し – Explainを確認し、必要に応じてIndex作成
リビルドを通して - 複雑なことをシンプルにすること - 負債を生まないために、良い設計と実装を続ける
VPCとALBの注意点
VMの移行作業中 - DB移行完了後、サーバの移行に着手したフェーズ - EC2、ALBの構築と挙動確認を繰り返していた - 全ての挙動確認を終えてから本番移行を予定
_人人人人人人人人_ > 突然のIP枯渇 <  ̄^Y^Y^Y^Y^Y^Y^ ̄
ALBを構築するVPCサブネットの要件 • サブネットに未割り当てのIPが8個以上必要 • 負荷に応じて自動的にスケールアウトするため
当初のVPC • VPC : /24 (256IP) • 3AZ – private
subent : /26 (64IP) – public subnet : /28 (16IP) • public subnetに16個あれば、ALBが足りる見積もり
VPCサブネットのIP仕様 - サブネットごとに5個の予約アドレス - 実質的に使用可能なIPは3個 (16 - 5 - 8
= 3) - ALBは5個必要...オワタ...
VPCの再構築とDBの再移行 • VPC: /22 (1024IP) • 3AZ – private subnet
/24(256IP) – public subnet /26 (64IP) • 2度目のDB移行
失敗の要因と対策 • 仕様に対する理解が足りなかった • インフラチームと初期から連携しておくべきだった
終わりに AWS移行を通して得たこと • Terraformの運用 – 運用しやすいディレクトリ構造に挑戦。しかし、正解がない。 • リビルドへの取り組み – 一部負債を解消した。技術負債を生まない設計と実装を目指す。
• ALBとVPCの注意点 – 仕様の理解が足りず失敗。 – チームの連携を強化、個人のスキルも伸ばす。