事業スピードを落とさずPHP→Kotlinリプレイスに挑戦している話Cake.jp Co.Ltd.@Server-Side Kotlin Meetup vol.1
View Slide
アジェンダ- 自己紹介- 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 + Coroutine20そこでKotlinですよ
現在は、一部機能のリプレイスが完了したところ(出荷日やお届け日にまつわる機能群)※ 注文を受けてから製造する店舗も多いため、条件が複雑Kotlinリプレイスの感触21
- 型安全!Null安全!- 表現が簡潔!- Data Classべんり- ExceptionHandlerべんり(Spring)- 「どこからでも何でも呼べちゃう」が防げる- マルチモジュールでモジュラーモノリスを体現- テストが書きやすい- mockkべんり- ドメインモデルに属性と振る舞いをもたせ、検証対象が明確に- まずはSpring MVCから- 今後WebFluxも積極導入していきたい22Kotlinリプレイスの感触
事業計画(開発計画)に絡めながら進めているので、総じていい感じ🥳- マイナスをゼロにしている感が少なく、モチベーションを維持しやすい- リプレイス先が風化しにくい- ダブルメンテが起きにくい- トレードオフ:リプレイス完了までの時間><23Kotlinリプレイスの感触
時間がなくて盛り込めなかった内容もたくさんあるので、詳細は懇親会で!- 直面している課題- 今後取り入れたい周辺技術- パッケージ・モジュールの粒度と狭義のアーキテクチャ24おわりに
We’re Hiring!!!Meetyもやってます🙌 お気軽にどうぞ25おわりに