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

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

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

hiroshi.muto

March 07, 2023
Tweet

Other Decks in Programming

Transcript

  1. AWS移行を通して

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

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

    View full-size slide

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

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

    View full-size slide

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

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

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  6. 移行手順

    View full-size slide

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

    View full-size slide

  8. DB移行
    (DMS)

    View full-size slide

  9. VM移行
    Application Migration Service (MGN)

    View full-size slide

  10. Memcached移行

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  14. gateway
    application
    infra

    View full-size slide

  15. AWS移行とリビルド

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  20. VPCとALBの注意点

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide