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
あのプロジェクトは今。 / kichijojipm
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
soudai sone
PRO
May 17, 2019
Technology
2.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
あのプロジェクトは今。 / kichijojipm
吉祥寺pmの登壇資料です。
https://kichijojipm.connpass.com/event/128569/
soudai sone
PRO
May 17, 2019
More Decks by soudai sone
See All by soudai sone
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
1
280
AI時代における具体と抽象の往復 - 日常にチャンスがある / Moving Between the Concrete
soudai
PRO
9
3.9k
制約を設計する - 非決定性との境界線 / Designing constraints
soudai
PRO
6
4k
APMの世界から見るOpenTelemetryのTraceの世界 / OpenTelemetry in the Java
soudai
PRO
2
670
失敗できる意思決定とソフトウェアとの正しい歩き方_-_変化と向き合う選択肢/ Designing for Reversible Decisions
soudai
PRO
16
6.4k
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
16
6.8k
手を動かしながら学ぶデータモデリング - 論理設計から物理設計まで / Data modeling
soudai
PRO
45
11k
これからアウトプットする人たちへ - アウトプットを支える技術 / that support output
soudai
PRO
21
8.9k
コミュニティと計画的偶発性理論 - 出会いが人生を変える / Life-Changing Encounters
soudai
PRO
8
5.1k
Other Decks in Technology
See All in Technology
ウォーターフォール開発案件のPMとしてAI活用を模索している話
hatahata021
2
250
検索技術知識0のエンジニアが広告検索システムを内製化して運用するまで
lycorptech_jp
PRO
0
180
運用を犠牲にせずコストを制御し事業成長を支える B2B SaaS ID管理基盤におけるS3 Tableのログストレージ活用
kaminashi
1
130
Power Automateアップデート情報
miyakemito
0
290
SnowflakeCoCoでデータエンジニアリング!
foursue
0
100
AIエージェントに財布を渡す日 ― 承認付き"買い物エージェント"を作って実演
yama3133
0
110
セキュリティ研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
32
27k
AI工学特論: MLOps・継続的評価
asei
11
3.1k
組織にどうSREを根付かせるか?〜IVRyの場合〜
abnoumaru
0
210
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
2
110
AI研修(Day2)【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
1.6k
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
Featured
See All Featured
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Fireside Chat
paigeccino
42
4k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
780
Deep Space Network (abreviated)
tonyrice
0
240
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
430
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.2k
Unsuck your backbone
ammeep
672
58k
Exploring anti-patterns in Rails
aemeredith
3
450
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
480
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
600
Transcript
あのプロジェクトは今。 僕が考えた 最強のRDBリファクタリング 吉祥寺.pm #18
What is it? 吉祥寺.P(roject)M(anagement)
What is it? みなさん覚えていますか?
What is it?
What is it? RDBリファクタリングの話
What is it? あれから一年
What is it? そーだいなる物語が今、始まる
あじぇんだ 1 自己紹介 2 おさらい 3 技術で解決できたこと 4 技術で解決できなかった事 5
まとめ
あじぇんだ 1 自己紹介 2 おさらい 3 技術で解決できたこと 4 技術で解決できなかった事 5
まとめ
自己紹介 曽根 壮大(34歳) 株式会社オミカレ 副社長/CTO • 日本PostgreSQLユーザ会 勉強会分科会 座長 •
3人の子供がいます • 技術的にはWeb/LL言語/RDBが好きです そ ね た け と も
自己紹介 曽根 壮大(34歳) 株式会社オミカレ 副社長/CTO • 日本PostgreSQLユーザ会 勉強会分科会 座長 •
3人の子供がいます • 技術的にはWeb/LL言語/RDBが好きです そ ね た け と も
婚活といえばオミカレ https://party-calendar.net/
本を書きました https://www.amazon.co.jp/exec/obidos/ASIN/4297104083/maple036-22/
あじぇんだ 1 自己紹介 2 おさらい 3 技術で解決できたこと 4 技術で解決できなかった事 5
まとめ
おさらい オミカレは DBリファクタリングをしています
https://employment.en-japan.com/engineerhub/entry/2018/12/11/110000
おさらい なぜ 我々はリファクタリングするのか
リファクタリングをする理由 システム、三日会わざれば刮目して見よ
リファクタリングをする理由 いなかった時期
リファクタリングをする理由 わずか1年半 しかし成長するには充分な時間である
リファクタリングをする理由 とある日の出来事 「TABLEを眺める会をやろう!」
リファクタリングをする理由 このTABLEってなんですか? それな、俺も知らないんだ…
リファクタリングをする理由 誰も知らないTABLEの恐怖
謎のデータ mysql> SELECT gender FROM demo GROUP BY gender; +--------+
| gender | +--------+ | 0 | | 1 | | 女性 | | 男性 | +--------+ 4 rows in set (0.62 sec)
なるほど???
リファクタリングをする理由 8年目のWebサービス
リファクタリングをする理由 8年目のWebサービス ↓ 多くの変化によって、技術的負債が出来る 事業の成長のために優先順として仕方ないところもある
リファクタリングをする理由 有るモノを嘆いても何も変わらない
リファクタリングをする理由 有るモノを嘆いても何も変わらない ↓ 自分たちが技術で解決していくしか無い
あじぇんだ 1 自己紹介 2 おさらい 3 技術で解決できたこと 4 技術で解決できなかった事 5
まとめ
技術で解決できたこと 要件 • なるべく無停止で進めたい • 複数のWebサービスから参照される が同時には直せない • 工数は限られ、新規開発は止めない
リファクタリング方針 Aurora みんなの婚活 オミカレ party_detail party_open party 既存スキーマ 新スキーマ オミカレ
データベース トリガー
リファクタリング方針 Aurora みんなの婚活 オミカレ party_detail party_open party 既存スキーマ 新スキーマ オミカレ
データベース トリガー ① アプリケーション がデータを書き込む
リファクタリング方針 Aurora みんなの婚活 オミカレ party_detail party_open party 既存スキーマ 新スキーマ オミカレ
データベース トリガー ②書き込みをイベント にトリガーが起動
リファクタリング方針 Aurora みんなの婚活 オミカレ party_detail party_open party 既存スキーマ 新スキーマ オミカレ
データベース トリガー ③トリガーがそれぞれのテーブル に書き込みを行う
リファクタリング方針 Aurora みんなの婚活 オミカレ party_detail party_open party 既存スキーマ 新スキーマ PostgreSQL
トリガー 異種DB間の レプリケーションが必要
技術で解決できたこと AWS Database Migration Service
Amazon DMSの仕組み ソース エンドポイント (Aurora) タスク テーブル単位でのレプリケーションが可能 ターゲット エンドポイント (PostgreSQL)
レプリケーション インスタンス タスク
Amazon DMSの仕組み https://speakerdeck.com/takahashiikki/postgresqljapan2018
リファクタリング方針 Aurora みんなの婚活 オミカレ party_detail party_open party 既存スキーマ 新スキーマ PostgreSQL
トリガー 出来る!
技術で解決できたこと 運用での出来事
技術で解決できたこと 時々DMSが止まるッス! データの登録時のエラーを監視しよう
技術で解決できたこと RDSのログを PHP経由で定期的にチェックする
技術で解決できたこと 1. AWS SDK for PHPで downloadDBLogFilePortion関数を実行 2. Errorなどの特定のキーワードを拾ってalert 3.
Mackerelのチェック監視の仕組みで通知
技術で解決できたこと AWS php mackerel-agent Slack ① SDKを実行 ② ログを取得 ③
ログを確認 ④Mackerel経由で通知 Mackerel-agentが定期的に実行する
技術で解決できたこと 既存のコードテスト無いッス! REST APIでモデルを抽象化してそこにテストを加工
技術で解決できたこと https://employment.en-japan.com/engineerhub/entry/2018/12/11/110000
技術で解決できたこと 参照を切り替える
技術で解決できたこと 参照を切り替える ↓ API経由にすることでModel単位で対応
この方法のメリット • Model単位で移行が可能 – 対象のテーブル単位で対応できる – リスクの範囲を小さくできる • 既存の仕組みを止める必要が無い –
カナリヤリリース出来る – ロールバックしやすい • 以下のパターンで概ねリスク低く、対応出来る – 読み込みだけAPIにして書き込みはOLD • この場合はデータはAmazon DMSで連携 – 書き込みはAPIとOLDの両方に書き込み、 読み込みはOLD • この場合はAmazon DMSを使わない
実際に運用してわかったこと 1. 性別がintでは無く文字列のため表記揺れ 2. MySQLのZero Date問題(0000-00-00) 3. タイムゾーンがUTCでズレる
技術で解決できたこと 想定外のデータは意外とある
技術で解決できたこと 想定外のデータは意外とある ↓ 細かい制約と監視・観測で 1つ1つ潰して行く
あじぇんだ 1 自己紹介 2 おさらい 3 技術で解決できたこと 4 技術で解決できなかった事 5
まとめ
技術で解決できなかった事 全てを1回で捨てれなかった
技術で解決できなかった事 全てを1回で捨てれなかった ↓ 具体的には管理画面とか
技術で解決できなかった事 ユーザ画面変更に対する 画面リニューアルのリスク
技術で解決できなかった事 ユーザが本当に付いて来るか SEOは大丈夫か
技術で解決できなかった事 ビジネス的なメリットを 用意できなかった
技術で解決できなかった事 スケジュールと見積もり
技術で解決できなかった事 スケジュールと見積もり ↓ 無限にズレる
技術で解決できなかった事 デザイナーの採用
技術で解決できなかった事 デザイナーの採用 ↓ これ、もう運じゃね?
技術で解決できなかった事 売上の拡大
技術で解決できなかった事 売上の拡大 ↓ 技術的に優れているからと言って 売れるとは限らない
あじぇんだ 1 自己紹介 2 おさらい 3 技術で解決できたこと 4 技術で解決できなかった事 5
まとめ
まとめ まだ絶賛リファクタリング中なので 進捗を今後も報告していきます! (辛かったとこも含めて)
オミカレは仲間を募集中です デザイナやマーケやエンジニアを 絶賛 大募集中です https://party-calendar.net/corp/recruite
まとめ ここで一句
まとめ 改善は 今日の一歩が 道になる
ご清聴ありがとうございました