Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ビッグバンフルリプレイス/登壇資料(CTO戸井田)

Hacobu
July 19, 2023

 ビッグバンフルリプレイス/登壇資料(CTO戸井田)

ファインディ株式会社主催
「技術的負債、どうやって解消した?リアーキテクチャ・リファクタ事例から学ぶLunch LT」

2023/07/19(水)12:00 〜 13:15
https://findy.connpass.com/event/288877/

Hacobu

July 19, 2023
Tweet

More Decks by Hacobu

Other Decks in Programming

Transcript

  1. Copyright Hacobu, Inc. 3 自己紹介 戸井田 裕貴 • 2019年1月 株式会社Hacobu入社

    • 2019年2月 からテックリード • 2019年6月 から執行役員CTO(現職) Twitter:https://twitter.com/yuuukkku Facebook:https://www.facebook.com/yuki.toida
  2. Copyright Hacobu, Inc. 5 物流領域の社会課題を解決している会社 シェアNo.1※ の理由は 圧倒的な現場力とデータ活用の知見。 物流DXツールMOVO(ムーボ) ※トラック予約受付サービス「MOVO

    Berth」のシェア。 出典:デロイト トーマツ ミック経済研究所, 『スマートロジスティクス・ソリューション市場の実態と展望【2022年度版】』https://mic-r.co.jp/mr/02560/
  3. Copyright Hacobu, Inc. 9 今日話すこと / 話さないこと • Hacobuにおけるビッグバンフルリプレイスとは •

    プロダクトのフルリプレイスと開発組織の体制変更の2つのリプレイスを指す • 2019年1月〜2020年7月にかけて実施 • 話すこと • プロダクトのフルリプレイスの全体像 • 話さないこと(別の機会や、カジュアル面談で) • プロダクトのリプレイスの技術的課題解決の詳細 • 開発組織の体制変更の詳細 • 参考記事はこのあたりとかこのあたり
  4. Copyright Hacobu, Inc. 11 何をしたのか 2プロダクトのフルリプレイスと、1プロダクトのクローズ • 旧システムは、機能開発を止め、保守モードへ移行した(約1年) • AWSインフラを構築し直し、DBの構造も見直した

    • BEのソースコードを書き直し、共通部分を共通基盤として切り出した • FEのソースコードを書き直し、共通部分を共通UIコンポーネントとして切り出した • デザインをゼロから作り直した • 新システム完成後、旧システムからデータマイグレーションを行い、無停止移行した
  5. Copyright Hacobu, Inc. 12 何故したのか 最速で技術的負債を解消し、事業に集中したかった • プラットフォーム構想実現のため、アーキテクチャを見直す必要があった • マルチプロダクト戦略と物流標準定義

    • 事業成長に伴うDB負荷に耐えるため • N+1問題が顕著に現れ、AuroraのCPU負荷が線形に増加していった • 最終的に上から2番目のインスタンスサイズを使用する事態に陥っていた • 開発者に魅力的なDXを提供するため • 組織拡大フェーズに入る想定で、開発者を採用する必要があ
  6. Copyright Hacobu, Inc. 13 物流情報プラットフォームのイメージ MS MS MS 認証機能 GPS機能

    クラウド印刷機能 通知機能 UI UI UI BFF BFF BFF 車両形態データ 荷姿データ ボディ形状データ 商品データ 温度帯データ パレットデータ 納品書データ ・・・ 物流標準 MOVO HOGE MOVO FUGA MOVO PIYO 各物流ドメインと物流標準を定義したマイクロサービスアーキテクチャ
  7. Copyright Hacobu, Inc. 14 リプレイス前 MOVO Match MOVO Fleet MOVO

    Berth 車両形態データ 荷姿データ メール送信機能 Angular1.6 Go(Goji) PHP(Symfony) 車両形態データ 位置情報データ メール送信機能 Angular1.6 PHP(Symfony) Node.js(Express) 車両形態データ 荷姿データ SMS送信機能 Angular1.6 jQuery PHP(Slim) 共通認証機能 Go(Echo) プロダクトに閉じた共通機能とデータ & 複数の技術スタック ※それぞれコードベースは、約20万行 ※ドキュメントはあまりない状態
  8. Copyright Hacobu, Inc. 15 小さく行う選択肢はなかったのか 時間がかかりすぎるので、選択肢としては考えづらかった • 複数の言語とFWで構成されていた • 開発者が、それぞれ得意な言語やソフトウェアアーキテクチャで設計/実装しており、

    コードを紐解くのは容易ではなかった • N+1問題の根が深く、微修正で済む状態ではなかった • ドキュメントやテストがあまりなかった • 小さくリファクタするとしても時間がかかる状態だった • 開発者を採用できなそうだった • 小さく行ったとしても、すべての技術的負債を解消することは、考えづらかった
  9. Copyright Hacobu, Inc. 16 リプレイス後 ReactとGoで統一、共通基盤を構築 MS Go MS Go

    MS Go 認証サービス Go 共通データサービス Go クラウド機能サービス Go 通知サービス Go React React React BFF Go(Echo) BFF Go(Echo) BFF Go(Echo) MOVO Vista MOVO Fleet MOVO Berth
  10. Copyright Hacobu, Inc. 17 リプレイス いろんなモノをゼロベースで置き換えていった • AWSインフラ • コンテナ:EC2

    から EKSへ • CI/CD:Elastic Beanstalk から GitOps へ • IoT :Kinesiss×Lambda の Lambdaを書き換え • IaC :Terraform導入 • ・・・ • 共通コンポーネント • Storybookでゼロから設計 • デザイン • Figmaでゼロから構築
  11. Copyright Hacobu, Inc. 19 結果、開発効率爆上がり 2015年 株式会社Hacobuを設立 ベンチャーユナイテッド株式会社、YJキャピタル株式会社、株式会社オージス総研を引受先とした資金調達を実施 アスクル株式会社、Visionnaire Ventures、アーキタイプベンチャーズ株式会社、SMBCベンチャーキャピタル株式会社を引受先とした

    資金調達を実施 動態管理サービス MOVO Fleetの提供を開始 大和ハウス工業株式会社と業務提携契約を締結 大和ハウス工業株式会社、Sony Innovation Fundを引受先とした資金調達を実施 トラック予約受付サービス MOVO Berthの提供を開始 EY Innovative Startup 2018を受賞 三井不動産株式会社、日野自動車株式会社を引受先とした資金調達を実施 流通資材モニタリングサービス MOVO Seekの提供を開始 配送案件管理サービス MOVO Vistaの提供を開始 Logistics Cloud MOVO の利用拠点数が4000を突破 JICベンチャー・グロース・インベストメンツ株式会社、野村不動産グループ、豊田通商株式会社、Logistics Innovation Fundらを 引受先とした資金調達を実施 配車管理サービス MOVO Dispatchの提供を開始 cc Logistics Cloud MOVO の利用拠点数が9000を突破 トラックドライバーの利用者27万人以上、トラックドライバーの3人に1人が利用するサービスに cc 配車管理サービス MOVO Dispatchを、配送案件管理サービス MOVO Vistaに統合 三菱倉庫株式会社、IDATEN Venturesらを引受先とした資金調達を実施 ドライバー向けアプリ MOVO Driverの提供を開始 2016年 2017年 2018年 2019年 2020年 2021年 2022年 2023年 フルリプレイス中 2サービス新規立ち上げ フルリプレイス後 2サービス新規立ち上げ 1サービスを統合
  12. Copyright Hacobu, Inc. 20 何故実現できたのか 対話と納得と当事者意識 • ビッグバンフルリプレイスをやることの意義が全社に浸透していた • オープンでフラットな文化により、対話重視で進めることができた

    • なぜGo、なぜReact、なぜk8s等を技術投資の必要性を経営チームに説明し続けた • フルリプレイス中も事業は成長見込みだった • プロダクトがPMFしつつあり、機能開発を止めても一定成長していた • 機能要望に対して、ビジネスメンバーがお客様と根気強く対話してくれた • 開発組織とプロダクトを両方同時に行った • 良いプロダクトは良いチームから、良いチームは良い開発組織からうまれる
  13. Copyright Hacobu, Inc. 22 まとめ ビッグバンフルリプレイスはやめましょう!!! もしやることになったら、以下を見極める • 関係者が納得し、当事者として振る舞えるか •

    対話が何よりも大切、特に経営チームと開発&ビジネス間 • 事業ファーストで考え抜かれているか • 技術は手段、事業による社会課題解決が目的 • スタートアップにとって成長は酸素のようなもの、ないとしんどい • やりきる覚悟はあるか • ここが案外一番難しい、まじでしんどい、ネガティブケイパビリティ