Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS移行を通して得られた知見と教訓

 AWS移行を通して得られた知見と教訓

hiroshi.muto

March 07, 2023
Tweet

Transcript

  1. AWS移行を通して

    得られた知見や教訓
    エキサイト株式会社

    メディアプラットフォーム事業部
    武藤 寛

    View Slide

  2. 自己紹介
    • 武藤 寛
    • エキサイト株式会社 

    メディアプラットフォーム事業部
    • レシピサイトを担当
    • PHP / Android / Flutter App
    • Twitter @mthiroshi_4o

    View Slide

  3. 料理のプロが作る簡単レシピサイト

    「E・レシピ」
    - 複数レシピを組み合わせた「献立」を提案
    - 旬食材、季節イベントに合わせたレシピや

    トレンドの食ニュースも発信
    - Web, iOS, Androidで提供

    View Slide

  4. AWS移行が完了
    - エキサイトは2019年から移行開始、2022年6月末に完了
    - E・レシピは2021年に着手、2022年6月下旬に完了

    View Slide

  5. E・レシピのシステム概要

    View Slide

  6. View Slide

  7. AWS構成

    View Slide

  8. View Slide

  9. 移行手順

    View Slide

  10. VPC構築とDirect Connect接続
    オンプレ
    社内ネットワーク
    AWS
    E・レシピ VPC
    専用線を確保

    View Slide

  11. DB移行
    (DMS)

    View Slide

  12. VM移行
    Application Migration Service (MGN)

    View Slide

  13. Memcached移行

    View Slide

  14. イメージサーバー移行

    View Slide

  15. 知見や教訓
    • Terraformの運用
    • AWS移行とリビルド
    • VPCとALBの注意点

    View Slide

  16. Terraformの運用
    • 社内、チーム内で採用している
    • ディレクトリ構造には様々なパターンがある

    View Slide

  17. gateway
    application
    infra

    View Slide

  18. AWS移行とリビルド

    View Slide

  19. 主要テーブルの不要カラムを削除
    • レシピデータを管理する主要なテーブルに50個の不要なカラム
    • 従来の新規データ定義をカラム追加で対応の積み重ね
    – 削除時にリスクがある運用
    • 不要カラムの参照がコードに残ることが負債化が進む

    View Slide

  20. カラム整理から得たこと
    • 変更に強いテーブル設計をする
    – テーブルを適切に正規化する
    • 不要なコードは削除する
    – コード内検索のノイズが減る

    View Slide

  21. APIのリビルド(現在進行中)
    • PHP → Java / SpringBoot で再実装
    • APIパラメータを整理し、用途に応じてエンドポイントの分割
    – 内部の分岐を減らして、見通しを良くする
    • SQLの見直し
    – Explainを確認し、必要に応じてIndex作成

    View Slide

  22. リビルドを通して
    - 複雑なことをシンプルにすること
    - 負債を生まないために、良い設計と実装を続ける

    View Slide

  23. VPCとALBの注意点

    View Slide

  24. VMの移行作業中
    - DB移行完了後、サーバの移行に着手したフェーズ
    - EC2、ALBの構築と挙動確認を繰り返していた
    - 全ての挙動確認を終えてから本番移行を予定

    View Slide

  25. _人人人人人人人人_
    > 突然のIP枯渇 <
     ̄^Y^Y^Y^Y^Y^Y^ ̄

    View Slide

  26. ALBを構築するVPCサブネットの要件
    • サブネットに未割り当てのIPが8個以上必要
    • 負荷に応じて自動的にスケールアウトするため

    View Slide

  27. 当初のVPC
    • VPC : /24 (256IP)
    • 3AZ
    – private subent : /26 (64IP)
    – public subnet : /28 (16IP)
    • public subnetに16個あれば、ALBが足りる見積もり

    View Slide

  28. VPCサブネットのIP仕様
    - サブネットごとに5個の予約アドレス
    - 実質的に使用可能なIPは3個 (16 - 5 - 8 = 3)
    - ALBは5個必要...オワタ...

    View Slide

  29. VPCの再構築とDBの再移行
    • VPC: /22 (1024IP)
    • 3AZ
    – private subnet /24(256IP)
    – public subnet /26 (64IP)
    • 2度目のDB移行

    View Slide

  30. 失敗の要因と対策
    • 仕様に対する理解が足りなかった
    • インフラチームと初期から連携しておくべきだった

    View Slide

  31. 終わりに
    AWS移行を通して得たこと
    • Terraformの運用
    – 運用しやすいディレクトリ構造に挑戦。しかし、正解がない。
    • リビルドへの取り組み
    – 一部負債を解消した。技術負債を生まない設計と実装を目指す。
    • ALBとVPCの注意点
    – 仕様の理解が足りず失敗。
    – チームの連携を強化、個人のスキルも伸ばす。

    View Slide