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
本番環境での等価比較がコスト削減に繋がった話/equivalence check cost r...
Search
Shun Uehara
December 08, 2024
Programming
2.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
本番環境での等価比較がコスト削減に繋がった話/equivalence check cost reduction
こちらで登壇させて頂く際の資料
https://findy.connpass.com/event/336975/
Shun Uehara
December 08, 2024
More Decks by Shun Uehara
See All by Shun Uehara
リプレイスを安心安全に 〜段階的リプレイスと等価比較〜/Safe and Secure Replacement ~ Phased Replacement and Equivalent Comparison ~
nikiiiii
3
7.4k
Other Decks in Programming
See All in Programming
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
210
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
360
Security issues being discussed on Web Platforms
petamoriken
0
1.3k
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
200
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
500
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
3k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
220
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
460
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
580
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.1k
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
160
iOSDC2026登壇資料.pdf
riofujimon
0
200
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Become a Pro
speakerdeck
PRO
31
6.3k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
550
Optimising Largest Contentful Paint
csswizardry
37
4k
Everyday Curiosity
cassininazir
0
330
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
420
We Have a Design System, Now What?
morganepeng
55
8.3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
950
Transcript
本番環境での等価比較が コスト削減に繋がった話 株式会社ZOZO 基幹システム本部 物流開発部 基幹リプレイスブロック 上原 駿 Copyright
© ZOZO, Inc. 1 そのリプレイスは最適解? -コストから見るプロダクト開発Tips
© ZOZO, Inc. 株式会社ZOZO 基幹システム本部 物流開発部 基幹リプレイスブロック 上原 駿 2023年2月に株式会社ZOZOに中途入社
前職のSESのベンチャー企業では、 上流工程からのリプレイスプロジェクト等に尽力。 現在は物流システムのリプレイスに従事。 趣味は、ゲーム(APEX)、野球、筋トレ。 2
© ZOZO, Inc. 3 アジェンダ ➢ はじめに ➢ 本番環境での等価比較で削減したコストについて ➢
本番環境での等価比較の仕組みついて ➢ まとめ
© ZOZO, Inc. https://zozo.jp/ 4 • ファッションEC • 1,600以上のショップ、9,000以上のブランドの取り扱い •
常時102万点以上の商品アイテム数と毎日平均2,600点以上の新着 商品を掲載(2024年9月末時点) • ブランド古着のファッションゾーン「ZOZOUSED」や コスメ専門モール「ZOZOCOSME」、シューズ専門ゾーン 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など
© ZOZO, Inc. 今回は、 その裏側を支える基幹システムのお話になります 5
© ZOZO, Inc. 既存システムの課題整理 • ビジネスロジックの複雑化に伴う機能追加の労力の増大 • 障害の分離が出来ず、単一障害点になってしまっている • Classic
ASPのサポート終了 6
© ZOZO, Inc. 色々言いましたが 一言で表すとめっちゃモノリスです。 7
© ZOZO, Inc. 8 基幹システムリプレイスの方針 (レガシー環境の) モノリス (モダンな環境の) モジュラモノリス マイクロサービス
Must Nice to have
© ZOZO, Inc. では、今回のLTではどんな話を? 9
© ZOZO, Inc. ・本番環境での等価比較で削減したコスト 10
© ZOZO, Inc. ・本番環境での等価比較で削減したコスト ・言語リプレイスで活躍した本番環境での等価比較について 11
© ZOZO, Inc. 本番環境での等価比較については、 後ほど詳しく説明させていただきます 12
© ZOZO, Inc. • 作業コスト ◦ [課題]テストデータの準備が非常に大変 • 参入コスト ◦
[課題]ドメイン知識を持っている人でないと任せられない • 心理的なコスト ◦ [課題]本番環境にリリースすることが不安 本番環境での等価比較で削減したコスト 13
© ZOZO, Inc. 本番環境での等価比較の仕組みについて 14
© ZOZO, Inc. 等価比較の仕組みを導入 言語リプレイスは、リファクタリングをすることであると私は考えています。 [書籍リファクタリング](https://www.ohmsha.co.jp/book/9784274224546/) では、以下のようにリファクタリングについて定義されています。 > リファクタリングとは、ソフトウェアの外部の振る舞いを保ったままで、内部の構造を改善して いく作業を指します。
※Martin Fowler 著「リファクタリング(第 2版)既存のコードを安全に改善する」 ,オーム社,2019 等価比較の仕組みは、本番環境での新旧の処理結果を使って機械的に振る舞いが変わっていないかど うか判断する自動テストです。 つまり、このテストが成功するとリプレイスができている状態と判断できます。 15
© ZOZO, Inc. 何をもって振る舞いが変わっていないとしたか 以下を満たす場合、処理が等価であると定義します。 1. 画面に表示される内容が一致している 2. DBなどの外部システムの状態が一致している これを機械的に判断するために、以下の指標を立てました。
1. HTMLテンプレートとそこに埋め込む変数の値が一致している 2. SQLなどの外部システムへのコマンドが一致している 上記の指標を満たしている場合、対応する等価の定義を満たしていると考えます。 16
© ZOZO, Inc. 自動テストなら入力値はどう準備した? 当然ながら自動テストには、テストデータなどの入力値が必要です。 等価比較の仕組みでは、本番環境のユーザー入力を使用します。 自動テストなので、検証期間中はユーザーがシステムをいつも通り利用するだけで、開発者は振る舞 いが変わっていないかどうかの確認ができます。 そのため、あっているかも正直感覚でしかわからなかったテストデータの準備が不要になります。 17
© ZOZO, Inc. • 作業コスト ◦ [課題]テストデータの準備が非常に大変 ▪ 本番環境のデータを使うので準備が不要になった。 •
参入コスト ◦ [課題]ドメイン知識を持っている人でないと任せられない • 心理的なコスト ◦ [課題]本番環境にリリースすることが不安 本番環境での等価比較で削減したコスト 18
© ZOZO, Inc. 等価比較API 等価比較の仕組み〜取得系処理図解〜 19 本番リクエスト 比較用ファサード 旧実装 (VBScript)
新実装 (Java) 期待値となる 処理結果 (JSON) 処理結果 (JSON) 本番リクエスト=自動テストの期待値(旧実装の値)となる 処理結果のペアで新実装の自動テストをしている Slack通知 DB登録 不等価
© ZOZO, Inc. 基幹DB 共通のIDと共にDBに履歴 を残す 等価比較の仕組み〜更新系処理図解〜 20 旧実装 (VBScript)
新実装 (Java) 旧実装のSQL文 発行履歴 (共通ID) 新実装のSQL文 発行履歴 (共通ID) 本番リクエスト 比較用ファサード ※新実装の更新処理はコミットせずにロールバックする 全実行履歴の 等価比較バッチ 比較処理 Slack通知 比較結果のDB登録 ※旧実装の更新処理はコミットする 新旧実行履歴
© ZOZO, Inc. • 作業コスト ◦ [課題]テストデータの準備が非常に大変 ▪ 本番環境のデータを使うので準備が不要になった。 •
参入コスト ◦ [課題]ドメイン知識を持っている人でないと任せられない ▪ 処理の等価性を機械的に判断するようになったのでドメイン知識をシステムが担保してくれるよ うになった。 • 心理的なコスト ◦ [課題]本番環境にリリースすることが不安 本番環境での等価比較で削減したコスト 21
© ZOZO, Inc. 比較期間 : 取得系 1週間くらい 更新系 2週間くらい 不具合が出たら修正する
等価比較の仕組み〜等価比較中〜 22 モジュラーモノリス モノリス BackOffice(VBScript) 基幹DB ユーザー 不等価 API(Java) 等価比較API (Java)
© ZOZO, Inc. 充分な検証が行われているので安心してAPI呼び出しのみに切り替えられる 等価比較の仕組み〜等価比較期間完了後〜 23 モジュラーモノリス モノリス BackOffice(VBScript) 基幹DB
ユーザー API(Java) 等価比較API (Java)
© ZOZO, Inc. • 作業コスト ◦ [課題]テストデータの準備が非常に大変 ▪ 本番環境のデータを使うので準備が不要になった。 •
参入コスト ◦ [課題]ドメイン知識を持っている人でないと任せられない ▪ 処理の等価性を機械的に判断するようになったのでドメイン知識をシステムが担保してくれるよ うになった。 • 心理的なコスト ◦ [課題]本番環境にリリースすることが不安 ▪ 充分な検証が行われるので安心してリリースできるようになった。 本番環境での等価比較で削減したコスト 24
© ZOZO, Inc. 等価比較の仕組み〜メリデメ〜 [メリット] • 自動テストの入力値が本番の値なので本番運用後の不具合が出づらい • 本番運用前に本番環境でテストができる •
充分な検証の後なので安心して本番運用に新実装を乗せられる • エビデンスの用意に手間がかからない • 入力値や期待値の準備がいらない [デメリット] • 等価比較を実施すると処理量は増えるので本番環境に高負荷がかかってしまうことがある • 処理量が最大2倍になるかつ非同期ではないのでレイテンシーが高くなる 25
© ZOZO, Inc. まとめ 26
© ZOZO, Inc. まとめ このように本番環境における等価比較の仕組みを導入した結果、以下三つのコスト削減に成功しまし た。 • 作業コスト • 参入コスト
• 心理的なコスト この仕組みが様々なリプレイスの手助けになれたら良いなと心から思っております。 こういった方法でのリプレイスも選択肢の一つとして検討してもらえると嬉しいです。 等価比較の仕組みについて詳細がもっと知りたいという方は、 テックブログを書いておりますのでこちらを見ていただけたら嬉しいです。 27
None