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

新規事業におけるGORM+SQLx併用アーキテクチャ

 新規事業におけるGORM+SQLx併用アーキテクチャ

【増枠】Go Night Talks – After Conference
11社合同開催!Goエンジニア交流LTイベント

新規事業におけるgorm+sqlx併用アーキテクチャ
~ 開発速度と柔軟性を両立する ~ もりた
hacomono株式会社

https://mercari.connpass.com/event/367075/

Avatar for hacomono Inc.

hacomono Inc. PRO

October 14, 2025

More Decks by hacomono Inc.

Other Decks in Technology

Transcript

  1. 3 Product 会員管理・予約・振替・キャンセル・決済・請求管理・売上管理・債権管理 入退館・EC・POS・本人認証カメラ・QRリーダー・ ・総合フィットネスクラブ ・ヨガ・ピラティス ・ブティックジム ・パーソナルジム ・24時間ジム フィットネスクラブ

    ・屋外運動場 ・屋内運動場 ・体育館 ・水泳プール ・学校 ・レジャー施設 公共運動施設 ・Jリーグ(サッカー) ・Bリーグ(バスケットボール) ・野球チーム・サッカーチーム etc スポーツチーム ・スイミングスクール ・ダンス・バレエスクール ・ゴルフスクール ・テニススクール ・カルチャースクール ・空手・体操スクール ・サッカースクール 運動スクール ウェルネス施設の運営や UXを向上させる B2B2C SaaSを提供 ウェルネス産業を、新次元へ。
  2. 統合 ID 基盤
 新規マルチプロダクト 
 イベントバス 
 データ基盤 
 AI

    基盤
 会員管理 
 予 約
 会 計
 EC
 決 済
 入退 館
 分 析
 CRM
 ジョブ基盤 
 Coming Soon
 マルチテナント基盤 

  3. 10 開発スピード vs コード品質 スピード重視 • 早期リリースして運用しながら改善 • シンプルな設計で素早く実装 品質・拡張性重視

    • 既存顧客向けに一定の信頼性を確保 • パフォーマンス問題やバグを最小限に抑える • 将来的なスケール拡大に対応できる設計 ジレンマ 両方を同時に満たすのは困難、優先度つけて、バランスを保つのが必要
  4. 11 データアクセス設計の重要性 品質やパフォーマンスへの影響が大きく、慎重な設計が求められる ORM(GORM等) • 開発速度の向上 • ORM固有の記法により、後から別ツールへの移行が困難 • 複雑なクエリの実装可否が不透明

    生SQL • パフォーマンスチューニングの自由度が高い • SQLの知識があれば柔軟な実装が可能 用途に応じて使い分けることができるように 最初からORMと生SQLの両方を扱う前提で設計を行いました
  5. 13 前提3: リポジトリ層で CommandとQueryを分離している repository/ ├─ order_repository.go ← Command (GORM)

    │ ├─ Create() │ ├─ Update() │ └─ Delete() │ └─ order_query_repository.go ← Query (SQLx) ├─ Search() └─ Get() Command Query 目的 データ変更 データ取得 頻度 低〜中 高 複雑度 シンプル 複雑 ツール GORM sqlx
  6. 14 実装ルール 1. デフォルトはGORM a. まず型安全に実装 2. ボトルネック発見時にsqlx化 a. 計測してから最適化

    3. 最初から複雑な場合はsqlx a. 検索・集計・レポート機能 4. 迷ったらGORM。チューニングでsqlx
  7. 19 1. 状況に合わせて、最適なツールを選べる ◦ 書き込み: シンプルに型安全に(GORM) ◦ 読み込み: 柔軟にパフォーマンス重視(sqlx) 2.

    後から最適化しやすい ◦ Query側だけをチューニングすればOK 3. メンテナンス負荷 ◦ 2ツールについてキャッチアップが必要 4. リポジトリ層のコード量やファイル数は、増加する GORM+SQLx併用の所感