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
事業スピードを落とさずにPHP→Kotlinリプレイスに挑戦している話
Search
ar_tama
February 10, 2022
Programming
1
970
事業スピードを落とさずにPHP→Kotlinリプレイスに挑戦している話
ar_tama
February 10, 2022
Tweet
Share
More Decks by ar_tama
See All by ar_tama
プロダクトの価値を最大化する「言語化筋トレ」のすすめ / "Verbalizing muscle training” to maximize the value of products
ar_tama
13
4.9k
理想の組織も自分たちで作ろう! ―LayerXの「全員採用」を支える文化 / How to create our own ideal team
ar_tama
7
2.7k
新任エンジニアリングマネージャーのための「ぼうけんのしょ」
ar_tama
23
11k
行動指針アンチパターンから学ぶ 越境のすすめ
ar_tama
17
8.5k
2023年振り返り ご縁繋ぎ編
ar_tama
1
940
「成長サイクル」でVUCAの時代を乗りこなす
ar_tama
1
950
あの日ハッカーに憧れた自分が、「ハッカーの呪縛」から解き放たれるまで
ar_tama
27
34k
「自律型開発組織」を目指すCTOの、試行錯誤の記録
ar_tama
3
25k
LTE-M Buttonで始める簡単IoT対応 〜「混雑ランプ」の事例から〜
ar_tama
0
730
Other Decks in Programming
See All in Programming
Ruby GitHub Packages
bkuhlmann
0
630
Semantic search with Django and pgvector
pauloxnet
0
240
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
120
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.7k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.3k
ONE WEDGE_company_guide
1wedge_one
0
470
Rubyでたのしむクリエイティブコーディング/Enjoy Creative coding with Ruby
chobishiba
1
180
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
230
Elm Form Validation
bkuhlmann
0
510
Ruby Function Composition
bkuhlmann
1
330
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
730
SwiftUIで使いやすいToastの作り方 / How to build a Toast system which is easy to use in SwiftUI
lovee
3
140
Featured
See All Featured
Designing Experiences People Love
moore
136
23k
Learning to Love Humans: Emotional Interface Design
aarron
267
39k
Agile that works and the tools we love
rasmusluckow
325
20k
GitHub's CSS Performance
jonrohan
1025
450k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
Typedesign – Prime Four
hannesfritz
36
2.1k
Web development in the modern age
philhawksworth
202
10k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Debugging Ruby Performance
tmm1
70
11k
Done Done
chrislema
178
15k
The Brand Is Dead. Long Live the Brand.
mthomps
49
28k
Transcript
事業スピードを落とさず PHP→Kotlinリプレイスに 挑戦している話 Cake.jp Co.Ltd. @Server-Side Kotlin Meetup vol.1
アジェンダ - 自己紹介 - Cake.jp システムの - これまで - これから
- Kotlinリプレイスの感触 - おわりに 2
🙇 コード1行も出てきません🥺 3
自己紹介 あらたま/@ar_tama - 株式会社Cake.jp CTO - ex ロコガイド, セオ商事, DeNA
- 日本もちもち協会 代表 - サウナ好き 4
Cake.jpについて 会員数100万人突破! 国内最大級のケーキ・スイーツ総合通販サイト 5
Cake.jp システムのこれまで ※入社当初のあらたまさん 6
Cake.jp システムのこれまで - 2回のピボット - 足掛け10年ほどのコードベース - 定着しないメンテナ - どんどん生まれる関連事業&機能
- 目まぐるしく変わる業務フロー そして九龍城へ… 7
- 2回のピボット - 足掛け10年ほどのコードベース - 定着しないメンテナ - どんどん生まれる関連事業&機能 - 目まぐるしく変わる業務フロー
そして九龍城へ… Cake.jp システムのこれまで 8 あるある
Cake.jp システムのこれまで =技術的投資がされてこなかった? 9
Cake.jp システムのこれまで =技術的投資がされてこなかった? No! 結果として、技術的投資以外の判断が優先されてきただけ 10
PMFは見えてきた🎂 Cake.jp システムのこれから 11
技術的投資に(も)力を入れよう → 九龍城を解きほぐして、新しいアプリケーションに載せ替えよう - 事業成長のボトルネックをなくすため - システムの寿命を延ばすため - 開発者生産性と楽しさを増幅させるため Cake.jp
システムのこれから 12
3年先の開発組織を考える - 組織規模をどの程度拡大させるか? - メインシステムに殆ど絡まない新規事業が乱立するか? - 既存事業を5以上のチームに分割する可能性はあるか? Cake.jp システムのこれから 13
コンウェイの法則※ に従う 先の問いに… - YES→チームを細かく分割し、マイクロサービスアーキテクチャで - NO→チームを分割しすぎず、モジュラーモノリスアーキテクチャで ※ “組織の設計するシステムには ...
その組織のコミュニケーション構造をそのまま反映した設計になるという制約が ある” Cake.jp システムのこれから 14
コンウェイの法則※ に従う 先の問いに… - YES→チームを細かく分割し、マイクロサービスアーキテクチャで - NO→チームを分割しすぎず、モジュラーモノリスアーキテクチャで ※ “組織の設計するシステムには ...
その組織のコミュニケーション構造をそのまま反映した設計になるという制約が ある” Cake.jp システムのこれから 15
先人の知恵を積極的に借りる Cake.jp システムのこれから 16
- まずは既存の業務フローを洗い出し、あるべき姿とのギャップを知る - あるべき業務フローから業務ロジック(≒ドメインモデル)に落とし込む - Cake.jpは「マーケットプレイス型のECサイト」 - =ECサイトとしての基本機能は固く - 理想形がわからないところは柔軟に
Cake.jp システムのこれから 17
- まずは既存の業務フローを洗い出し、あるべき姿とのギャップを知る - あるべき業務フローから業務ロジック(≒ドメインモデル)に落とし込む - Cake.jpは「マーケットプレイス型のECサイト」 - =ECサイトとしての基本機能は固く - 理想形がわからないところは柔軟に
Cake.jp システムのこれから 18
そこでKotlinですよ 19
- 型安全!Null安全! - 表現が簡潔 - 「どこからでも何でも呼べちゃう」が防げる - アプリケーション特性によって使い分けができる - Spring
MVC / Spring WebFlux + Coroutine 20 そこでKotlinですよ
現在は、一部機能のリプレイスが完了したところ (出荷日やお届け日にまつわる機能群) ※ 注文を受けてから製造する店舗も多いため、条件が複雑 Kotlinリプレイスの感触 21
- 型安全!Null安全! - 表現が簡潔! - Data Classべんり - ExceptionHandlerべんり(Spring) -
「どこからでも何でも呼べちゃう」が防げる - マルチモジュールでモジュラーモノリスを体現 - テストが書きやすい - mockkべんり - ドメインモデルに属性と振る舞いをもたせ、検証対象が明確に - まずはSpring MVCから - 今後WebFluxも積極導入していきたい 22 Kotlinリプレイスの感触
事業計画(開発計画)に絡めながら進めているので、総じていい感じ🥳 - マイナスをゼロにしている感が少なく、モチベーションを維持しやすい - リプレイス先が風化しにくい - ダブルメンテが起きにくい - トレードオフ:リプレイス完了までの時間>< 23
Kotlinリプレイスの感触
時間がなくて盛り込めなかった内容もたくさんあるので、詳細は懇親会で! - 直面している課題 - 今後取り入れたい周辺技術 - パッケージ・モジュールの粒度と狭義のアーキテクチャ 24 おわりに
We’re Hiring!!! Meetyもやってます🙌 お気軽にどうぞ 25 おわりに