tva
← コラム

CRMのセルフホスティング:SaaSをやめた理由

SaaS型CRMには豊富な選択肢があります。Salesforce、HubSpot、Pipedrive、Zohoには、それぞれ料金プラン、機能の比較表、そして上位プランがなぜ事業に必要なのかを説明する担当者がいます。当社はこれらのツールをいくつか長年使ってきましたが、ある段階を超えると、得られる価値に対して負担が大きくなることに気づきました。

最も分かりやすいのはコストです。Pipedriveは手頃な料金で始められますが、ユーザー数に応じて費用が増えます。HubSpotの無料プランは十分に使えるものの、機能が足りなくなると、有料プランへの移行で料金が大きく跳ね上がります。Salesforceはそもそも別のカテゴリーです。企業向けソフトウェアとして相応の価格が設定され、設定・保守には専任の管理者が必要です。数百件の連絡先と少数の進行中案件を管理するコンサルティング会社にとって、どの料金体系も費用対効果が高いとは言えません。

ただし、費用の検討はサブスクリプション料金だけの話ではありません。実際に何を購入しているのかも問う必要があります。

ロックインの問題

SaaS型CRMのベンダーが売るのは利便性です。その代わり、データを預かり、インターフェースを管理し、自社の裁量で料金を変更する権限を持ちます。これは批判的な見方ではなく、サービスの仕組みそのものです。Salesforceは何度も値上げを行い、HubSpotは各プランで利用できる機能を組み替え、Pipedriveはプラン構成を見直して名称を変更しました。いずれもベンダーの権利の範囲内ですが、以前の条件に合わせて業務を組み立てた顧客には負担を生みます。

データの移行しやすさは、一般に論じられる以上に重要です。主要なCRMはすべて、通常CSV形式でのエクスポート機能を備えています。しかし、連絡先のCSVを書き出すことと、CRMデータ全体を取り出すことは同じではありません。連絡先と会社の関連、活動履歴、案件の時系列、カスタムフィールドなどは、エクスポートでそのまま保持されることがほとんどありません。実際には、SaaS型CRMからの移行で、業務履歴のかなりの部分を一から再構築する必要があります。データは形式上は自社のものでも、使える形で取り戻すには相当な労力がかかります。

Twenty CRMとセルフホスティングの選択肢

Twenty(twenty.com)は、商用製品の有力な代替として登場したオープンソースのCRMです。コードベースの開発は活発で、データモデルは整理され、インターフェースも実用的です。PostgreSQL上で動作するため、標準的なデータベースツールをそのまま使えます。趣味で作られたリポジトリではなく、資金調達済みのチームと明確なロードマップを持つプロジェクトです。

当社は既存のHetznerインフラにデプロイしました。ウェブサイトや他のサービスをTraefik経由で運用しているのと同じCX53インスタンスです。Twentyが提供するDocker Compose設定は分かりやすく、主要なサービスはAPIサーバー、フロントエンド、PostgreSQLデータベース、キャッシュとキュー管理を担うRedisです。小規模チームでのリソース負荷は小さく、アイドル時のスタック全体のRAM使用量は2GB未満です。

構築には、DNS設定と既存のTraefikリバースプロキシによるSSL終端を含め、約2時間かかりました。TwentyのドキュメントにはDockerでのデプロイ手順が明確に記載されています。環境変数の説明は充実し、ヘルスチェックは期待どおりに動作し、初期のデータ移行は初回起動時に自動で実行されました。大きな問題はありませんでした。

コスト分析が実際に示すもの

すでに運用しているインフラでTwentyをセルフホストする場合、追加費用は事実上かかりません。専用のインフラを用意する場合は、月額のサーバー料金が費用になります。当社のHetzner CX53は月額約30ユーロで、複数のサービスをホストしています。CRMは共有環境の1つのテナントであり、CRMのためにサーバーを用意したわけではありません。

一般的なSaaS製品と比較してみましょう(定価は2026年10月時点)。Pipedriveは年間契約での支払いの場合、プランによって1ユーザーあたり月額14〜79ドルです。3人のチームなら月額42〜237ドル、年額504〜2,844ドルになります。自動化とカスタムレポートを利用できるHubSpotのSales Hub Professionalは、年間契約での支払いの場合、1ユーザーあたり月額90ドルに加え、初回のみ1,500ドルの導入支援料金がかかります。Salesforceの入門プランであるStarter Suiteは1ユーザーあたり月額25ドルですが、多くの営業チームが実際に必要とする機能は、1ユーザーあたり月額100ドルのPro Suiteに含まれます。

CRMの導入が営業案件の測定可能な価値向上に直結する大規模な営業組織なら、こうした料金は不合理ではありません。しかし、CRMを主に連絡先データベースと支援案件の履歴として使うテクノロジーコンサルティング会社では、計算が変わります。セルフホスト型環境の運用工数は、週に何時間ではなく、年に何時間という水準です。損益分岐点にはすぐに達します。

実際のデータ所有権

CRMデータを自社で管理するPostgreSQLデータベースに保存すると、運用面で具体的な違いが生まれます。バックアップには標準的なデータベースダンプを使います。当社は毎日pg_dumpでHetzner Object Storageへエクスポートし、30日間保持しています。月次スナップショットは1年間保持します。クエリに制限はありません。CRMのテーブルを自社データと結合し、元のスキーマに対して独自レポートを作成し、エクスポートのレート制限やAPI呼び出し数の上限を気にせず連絡先データを他の社内システムへ渡せます。

この点は、最初に思う以上に重要です。SaaS型CRMのAPIレート制限は、規模が大きくなるとアーキテクチャ上の制約になります。HubSpotのFreeおよびStarterプランでは、プライベートアプリ全体で1日250,000件、10秒あたり100件のリクエスト上限を共有しており(2026年10月時点)、Pipedriveの制限はプランによって異なります。請求ツール、プロジェクト管理、独自ダッシュボードなどとCRMデータを同期する場合、これらの制限が実現可能な連携の構成を左右します。セルフホスト型のPostgreSQLデータベースにはベンダーが定める利用枠はありません。実際の制約は、サーバーの容量、自社のアクセス制御、そしてTwentyのスキーマの変化に合わせて連携の互換性を保つことになります。

ベンダーが買収されたり、契約条件を変更したり、事業を終了したりしたときに、データがどうなるかも問題です。大手ベンダーでは可能性は低くても、ゼロではありません。データを所有するとは、リスクの扱いを他社に任せず、自社で管理することです。

開発パートナーなしのカスタマイズ

Twentyは、メタデータ駆動のデータモデルを持つGraphQL APIを基盤としています。どのエンティティにも、画面から数秒でカスタムフィールドを追加できます。フィールドの型を定義すると、UIとAPIスキーマにすぐ反映されます。設定のエクスポート、サンドボックスへのデプロイ、サポートへの問い合わせ、上位プランへの変更は不要です。

これはSaaS型CRMの提供機能とは性質が異なります。Salesforceは幅広いカスタマイズに対応しますが、その仕組みは、専門サービス業界が成り立つほど複雑です。Pipedriveではほとんどのオブジェクトにカスタムフィールドを追加できますが、画面のカスタマイズには制限があります。HubSpotのカスタマイズ機能は、契約プランに大きく左右されます。

Twentyの、オープンなスキーマを自社で管理する方式では、支援案件で標準データモデルにない情報を追跡する必要が生じたとき、直接拡張できます。特殊な案件構造や顧客固有のメタデータを扱うことがあるコンサルティング会社にとって、この柔軟性は実際に役立ちました。

バックアップ戦略

バックアップ構成は意図的にシンプルにしています。TwentyのPostgreSQLデータベースを毎日自動でpg_dumpし、圧縮してHetzner Object Storageへアップロードします。プロフィール画像や添付ファイルなどのアプリケーションデータはDockerボリュームに保存し、同じスケジュールでresticを使ってバックアップします。保持期間は日次スナップショットが30日、月次スナップショットが12か月です。

復旧テストは四半期ごとに実施します。バックアップをステージング環境のデータベースへ復元し、行数を確認して、データの整合性を抜き取りで検証します。バックアップからTwentyを稼働可能な状態へ完全に復元するには約15分かかります。リアルタイムの業務処理を左右するツールではないため、許容できる時間です。Hetzner Object Storageは月額6.49ユーロ(VAT別、2026年10月時点)で1TBのストレージを含み、CRMのバックアップが使うのはその容量のごく一部です。

必要な運用管理の負担は大きくありません。バックアップジョブをホスト上のcronタスクとして実行し、結果を監視システムに記録し、失敗時にアラートを出します。サーバー上でワークロードを運用するチームなら、すでに備えているべき標準的な仕組みです。

セルフホスティングが合理的な場合

CRMのセルフホスティングが最も有利になるのは、いくつかの条件が揃う場合です。チームにDockerコンテナの運用とPostgreSQLデータベースの管理を実際に担える能力があること。これは形式的な条件ではなく、必須要件です。すでに余力のあるサーバーインフラを運用していること。そして、CRMの用途が比較的安定し、次の四半期に必要な機能をベンダーのロードマップに依存していないことです。

コストとデータ所有権の利点は確かですが、運用能力の有無が先に来ます。セルフホスティングは、費用の代わりに時間と専門知識を投入する選択です。チームの運用時間の費用がSaaSの料金を上回るなら、移行は経済的に有利とは限りません。損益分岐点は金額だけでなく、チームが実際に持つスキルと業務の余力にも左右されます。

合理的でない場合

高度な企業システム連携が必要なら、セルフホスティングは適しません。例えば、CRMをマーケティング自動化プラットフォーム、CDP、データウェアハウスに接続し、専任のRevOps部門が保守する場合です。商用CRMの連携基盤が充実しているのは、ベンダーが何年もかけて構築してきたからです。セルフホスト型のTwentyはGraphQL APIまたはデータベースへの直接アクセスで連携します。あらかじめ用意された500個のコネクターを揃えたライブラリはありません。

同様に、障害のあるDockerコンテナを診断し、PostgreSQLのログを読み、データベースのバックアップを復元できる人がチームにいなければ、運用負荷はすぐにコスト削減効果を上回ります。セルフホスティングには基本的なインフラ運用能力が必要ですが、すべてのチームが備えているわけではありません。その能力を身につけることにも費用がかかります。

コンプライアンス要件によっても判断は変わります。SOC 2の証明やISO 27001の監査など、技術ベンダーによる認証済みのデータ処理を求める規制のもとで事業を行う場合、セルフホスト型ではCRMベンダーの証明を根拠にすることはできず、CRMは自社の管理策と監査の対象範囲に含まれます。利点になるか負担になるかは、現在のコンプライアンス体制によります。

実際に運用していること

当社の本番環境のTwentyは数か月にわたり、大きなインシデントなく稼働しています。連絡先管理、会社情報、案件の追跡、活動の記録は、すべて期待どおりに動いています。画面は分かりやすく、導入時に正式な研修は不要でした。GraphQL APIは、CRMの情報を他の社内ツールへ取り込むのに役立っています。具体的には、SaaSの追加機能として購入するのではなく、自社で構築した顧客向けレポートと支援案件の管理に使っています。

保守の負担は予想より少なく済んでいます。Twentyは一定のペースで更新をリリースし、導入は新しいDockerイメージを取得してサービスを再起動するだけです。通常は5分未満で完了します。PostgreSQLは、定期的なバックアップ確認以外に手作業での対応を必要としていません。

この判断は思想に基づくものではありません。SaaS自体が間違っている、あるいはセルフホスティング自体が優れているという理由で移行したわけではありません。当社の用途では、セルフホスト型の方がシンプルで安く、自社のデータをより適切に管理できるという運用上の判断です。営業チームが大きい、連携要件が高度、インフラの運用能力が限られるなど、制約が異なる組織では結論も変わるでしょう。大切なのは、最も手間が少ないからとサブスクリプションを当然の選択にせず、明示的に計算することです。


関連記事

関連記事