Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
あのプロジェクトは今。 / kichijojipm
Search
soudai sone
PRO
May 17, 2019
Technology
2.7k
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
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
2
550
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
5
640
医療の現場を変革に挑戦した半年間の軌跡 - PythonとAIで現場を変える / From Code to Care
soudai
PRO
1
690
形骸化しない社内勉強会の取り組み - オーナーシップの作り方 / In-house study session
soudai
PRO
1
290
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
1
320
AI時代における具体と抽象の往復 - 日常にチャンスがある / Moving Between the Concrete
soudai
PRO
9
4.3k
制約を設計する - 非決定性との境界線 / Designing constraints
soudai
PRO
6
4.6k
APMの世界から見るOpenTelemetryのTraceの世界 / OpenTelemetry in the Java
soudai
PRO
2
820
失敗できる意思決定とソフトウェアとの正しい歩き方_-_変化と向き合う選択肢/ Designing for Reversible Decisions
soudai
PRO
16
7.2k
Other Decks in Technology
See All in Technology
2026_devsumi_ozono.pdf
o3
3
520
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
あけおめLINE 傾向とその対策
nasa9084
0
120
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
110
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
4
260
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
4
650
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
130
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
31
27k
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
160
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.1k
What the customer really needed
kawaguti
PRO
3
210
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
25
16k
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.7k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
500
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Odyssey Design
rkendrick25
PRO
2
810
The Language of Interfaces
destraynor
162
27k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.8k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
240
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
まとめ ここで一句
まとめ 改善は 今日の一歩が 道になる
ご清聴ありがとうございました