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

20221022-Kaigi_on_Rails_LT.pdf

Avatar for negocia, Inc. negocia, Inc.
November 01, 2022
18

 20221022-Kaigi_on_Rails_LT.pdf

Avatar for negocia, Inc.

negocia, Inc.

November 01, 2022
Tweet

Transcript

  1. Copyright © negocia corporate philosophy|2 pp self • id: kunitoo

    • name: Kunihiko Ito • livein: Toyama • role: programmer and scrum master
  2. Copyright © negocia corporate philosophy|4 Vision/Mission 「うれしい広告」 の実現へ バナー広告や動画広告などのデジタル広告は、時に「煩 わしい」「鬱陶しい」存在として語られることが多々あ

    ります。 広告自体は決して悪ではなく、個人の嗜好やコンディ ションに即したものが表示されれば、それは新たな 気づきとなる存在であるはずです。 我々はAIを中心としたテクノロジーを駆使し、最適化 を究極まで追求。受け手が必要だと思う広告のみが届く 世界を実現することで、広告との出会いを良い体験に変 化させる、そのようなプロダクト提供を実現していきま す。 OUR VISION.
  3. Copyright © negocia corporate philosophy|5 Vision/Mission Now Vision 「広告って鬱陶しい」と思われる世界観から、 「こんないい商品あるんだ!」「こんな便利なサービスあったんだ!」と

    消費者が広告を有益な情報源として活用するのが 当たり前の世界観への変容を「うれしい広告」と表現しています。 AD AD うれしい広告とは?
  4. Copyright © negocia corporate philosophy|6 Commerce Flow 国内初、Amazon広告に特化した AI広告運用ツールです。 AIが業務の自動化や広告効果の向上を

    サポートします。 Commerce Flow コマースフロー ※2020年10月1日現在 ※ 1. AIによる広告運用業務自動化(工数削減) 2. AIによる広告の最適化(広告効果向上) 3. 広告運用のプロに向けた、洗練されたUI (使いやすさ)
  5. Copyright © negocia corporate philosophy|7 やりたいこと • DB: Amazon Aurora

    MySQL • table: daily_keywords(広告の実績値) ◦ レコード数は数億 • db:migrate でカラムの追加、削除、index 追加を実施したい • 実施すると数時間(数日?)実行が完了しない • 具体的にはbidding_price(入札額)を保存しているカラムを削除した かった ◦ チームがドメイン知識を獲得したことにより、このテーブルにこの 情報があるのはデータのライフサイクルとして間違っていること に気付いたため
  6. Copyright © negocia corporate philosophy|8 DDL による影響 まったく影響のないもの(一瞬で終わる) • index

    の削除 • index 名の変更 • カラム名の変更 • テーブル名の変更 オンラインで実行でき、更新をブロックしないもの データ量に応じて実行時間が長くなる可能性があり、レプリケーション遅延を引き起す可能性があるもの • カラム追加・削除 • カラム の NULL 可・不可の設定 • セカンダリインデックスの追加
  7. Copyright © negocia corporate philosophy|9 移行手順 1. カラムがない前提のアプリケーションをデプロイする 2. 該当テーブル構成から削除したいカラムを除いたテーブルを作成す

    る 3. 該当テーブルのレコードを移行後テーブルにコピーするスクリプトを 実行する 4. 旧テーブル名をリネーム、新テーブルを旧テーブル名にリネームす る 5. 旧テーブルのindexを削除する 6. 旧テーブルのデータを削除するスクリプトを実行する 7. 旧テーブルを削除する
  8. Copyright © negocia corporate philosophy|10 まとめ • 数億レコードが入ったテーブルは気がるにマイグレートできない • いくつかのステップを踏む必要がある

    • 今回は実績データは定期的に取得し、かつ遡ってサービスから取得 できるため、データの整合性はその取得にたよった • データをコピーしテーブルをリネームすることで新しいテーブルに入 れ替えを行った • 大変だが構造のリファクタリングは大切