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
リアーキテクチャのアンチパターンとその対策 〜ラクスルの場合〜
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yusuke Kishino
June 18, 2024
Programming
340
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
リアーキテクチャのアンチパターンとその対策 〜ラクスルの場合〜
Yusuke Kishino
June 18, 2024
More Decks by Yusuke Kishino
See All by Yusuke Kishino
RAKSULに見るアーキテクチャの変遷 - 複数サービス展開への道
yusukekishino
2
620
ROSCAFE TECH NIGHT #2 〜今、CTO / VPoEに求められる事とは?〜
yusukekishino
0
340
Other Decks in Programming
See All in Programming
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
480
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
130
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
160
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
200
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
330
残高管理から台帳サービスへの進化
artoy
1
210
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3k
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
930
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
11
6k
Vue Fes Japan の “作る側”に関わってみて
naokihaba
1
190
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
7k
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
1.3k
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Design in an AI World
tapps
1
370
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
580
The Curious Case for Waylosing
cassininazir
1
580
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
How to build a perfect <img>
jonoalderson
1
6.2k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Transcript
リアーキテクチャのアンチパターンとその対策 〜ラクスルの場合〜 ラクスル株式会社 ラクスル事業本部 CTO 岸野 友輔 2024.06.18 Ver.1.0.0
© 2021 RAKSUL, inc. All rights reserved. 社外秘 Confidential これまでの経歴
• 2017年:東京工業大学卒 • 2017-2020年: ラクスル サーバーサイドエンジニア • 2021-2023年: ダンボールワン サーバーサイドエンジニア/CTO • 2023年-現在: ラクスル事業本部CTO ◦ 共通基盤プロダクト構築の推進など これまでやってきた技術 • Ruby/Go/PHP 岸野 友輔(Kishino Yusuke) サーバーサイドエンジニア 趣味:ゲーム, 自転車, 料理
© RAKSUL, inc. All rights reserved. 今日のテーマ 3 本日のイベントの前身となる 5/22に行われたイベントで語りきれなかったことを中心に、ラクスル
のアーキテクチャの変遷と踏んでしまったアンチパターンについてお話しします 前回のイベントレポートはこちら!
© RAKSUL, inc. All rights reserved. ラクスルってどんなサービス? 4
© RAKSUL, inc. All rights reserved. 5 ラクスル事業について 印刷EC事業に始まり『広告(集客支援)事業』『ノベルティ・グッズ事業』 『ダンボール・梱包材事業』『アパレル・ユニフォーム事業』などを展開している事業体
ダンボール・梱包資材の 受発注プラットフォーム ノベルティ・グッズの 受発注プラットフォーム +非公開の事業群 アパレル・ユニフォームの 受発注プラットフォーム
© RAKSUL, inc. All rights reserved. ラクスル事業のサービス・アーキテクチャの変遷 6
© RAKSUL, inc. All rights reserved. 印刷のラクスルの始まり - 1サービス・ 1プロダクト
サービス 2013年 印刷ECである「ラクスル 」リリース 7 アーキテクチャ PHPで作られたモノリシックなシステム DB
© RAKSUL, inc. All rights reserved. 複数サービスの始まり - 複数サービス・ 1プロダクト
サービス 2015年 印刷ECサイトのラクスルを拡張 する形で集 客支援サービス (新聞折込やポスティング )開始 8 アーキテクチャ モノリスを拡張 しながらサービスを拡大 設計が苦しく なり始めマイクロサービス化を検討 DB New
© RAKSUL, inc. All rights reserved. マイクロサービス化の始まり - 複数サービス・ 1プロダクト
サービス 2015年 印刷ECサイトのラクスルを拡張 する形で集 客支援サービス (新聞折込やポスティング )開始 9 アーキテクチャ 一部マイクロサービス化 を開始(DBを共有するアン チパターンを踏む) DB New
© RAKSUL, inc. All rights reserved. マルチプロダクトの始まり - 複数サービス・複数プロダクト サービス
紙への印刷から大きく異なる「 ノベルティ 」や「アパレ ル」のECを展開 10 アーキテクチャ 印刷ECが拡張の限界 を迎えたため新規でのサービス を別プロダクト として構築していく方針へ 共通基盤 として決済基盤 が構築される 共通の認証機能 は印刷ECにくっついたまま 認証 決済基盤 認証 New New New
© RAKSUL, inc. All rights reserved. M&Aの発生 - 複数サービス・複数プロダクト・ M&A
サービス 梱包材ECの「ダンボールワン 」と ハンコECの「ハンコヤドットコム 」がM&Aによりグ ループイン シナジーの創出 が求められる アーキテクチャ M&Aを想定していなかった アーキテクチャに対してシナ ジー創出の戦略の元に ID連携や決済の連携 が求めら れる このままでは耐えられない ... 11 認証 決済基盤 認証 New New IDはどうする? 決済は繋げられる?
© RAKSUL, inc. All rights reserved. ラクスル事業のサービス・アンチパターン 12
© RAKSUL, inc. All rights reserved. マイクロサービス化の始まり - 複数サービス・ 1プロダクト
サービス 2015年 印刷ECサイトのラクスルを拡張 する形で集 客支援サービス (新聞折込やポスティング )開始 13 アーキテクチャ 一部マイクロサービス化 を開始(DBを共有するアン チパターンを踏む) DB New
© RAKSUL, inc. All rights reserved. もう少し詳細に 14 EC DB
EC機能本体 旧 新 印刷発注 API 印刷原価 計算 原価 DB 切り出し 切り出し
© RAKSUL, inc. All rights reserved. 抱えている課題 15 EC DB
EC機能本体 旧 新 印刷発注 API 印刷原価 計算 原価 DB DBを共有 同一テーブルを複数 のアプリケーションか ら参照 実際に切り出せたのは 一部商材のみ
© RAKSUL, inc. All rights reserved. モノリスからマイクロサービス化へのパターン 16 DB アプリケーションを先に分ける
モノリス 新 DB DBを先に分ける モノリス 新DB DB 同時に分ける モノリス 新DB 新 メリット ・短期的にはマイクロサービス化の恩恵を 受けやすい デメリット ・DBを共有したままにすると徐々に辛くなる ・テーブルスキーマの変更に複数のアプリ ケーションが追従しなくてはならない メリット ・データを軸に切り分け方を探索し易い ・比較的切り戻しし易い デメリット ・短期的なメリットは薄い メリット ・切り分け方が明確であれば一度に理想状 態に移行できる デメリット ・難易度が高い ・一発できれいに切り分けられない ・設計・開発に時間がかかるので最初に恩恵 を受けられるまでの時間軸が長い
© RAKSUL, inc. All rights reserved. 課題にどう向き合っているか 17 EC DB
EC機能本体 旧 新 印刷発注 API 印刷原価 計算 原価 DB 印刷発注基盤 DB 印刷発注 基盤 廃止する方針 一定辛みを伴うが再度責務を切り直し印刷のラクスルだけでなく他サービスからも利用できるような形でリアーキテクチャ 以前のマイクロサービス化で得られた知見を元にあるべき姿で作り直し中 → もともとのマイクロサービス化は無駄では無かった 移行のやりきり
© RAKSUL, inc. All rights reserved. まとめ・学び • 当時の判断としては必ずしも間違っているわけではなかった ◦
拡張の難しいレガシーコードに変更を加えるより、コードを切り出したほうが短期的にはリリー スが速かった ◦ ベンチャーにおいて速さは重要 • アンチパターンとしては共有DBをそのままにし続けてしまったこと ◦ 2重メンテ、3重メンテが頻発する結果に • マイクロサービス化を進めるのであればゴール設定は重要 ◦ 中途半端になってしまうと事態は悪化する ◦ あるべき姿を描き、あるべきに向けたステップを明確化してからスタートすべし 18
© RAKSUL, inc. All rights reserved. WE ARE HIRING!