SonarCloudまたはSonarQube、あなたのチームに最適なのはどちら?

Robert Curlee profile picture.

Robert Curlee

Product Marketing Manager

このブログは元々2020年4月28日に公開されました。それ以来、2024年8月に追加された新機能を含む更新された内容でリフレッシュされています。

TL;DR 概要

  • このガイドは、データ主権要件、インフラ所有の好み、メンテナンス能力などの要因に基づいて、SonarQube Server(セルフマネージド)とSonarQube Cloud(SaaS)のどちらを選ぶべきかを組織が判断するのを助けます。
  • SonarQube Cloudは、ほとんどのチームにとって推奨される出発点であり、自動更新、インフラ管理不要、GitHub、GitLab、Bitbucket、Azure DevOpsなどのクラウドベースのDevOpsプラットフォームとのネイティブ統合を提供します。
  • SonarQube Serverは、厳格なデータ居住要件、複雑な企業ネットワーク環境、または分析インフラストラクチャの深いカスタマイズとセルフマネージド制御が必要な組織に適しています。
  • 両製品は同じ基本的なコード品質とセキュリティ分析機能を提供するため、選択は主に展開モデルと運用上のトレードオフに関するものであり、機能の違いではありません。

SonarQube CloudとSonarQube Serverはどちらも、プロジェクトのためにクリーンで高品質なコードを書くのに役立つ貴重なツールです。では、どのソリューションがあなたとあなたのチームに最適でしょうか?

選択は、セルフマネージドソリューションを望むか、管理されたクラウドベースのSaaSサービスを望むかにかかっています。どちらのソリューションも、小さなチームでも大企業でも、各エディションレベルで基本的に同じ機能を提供します。このブログでは、情報に基づいた決定を下せるようにオプションを案内します。

基本: 30以上の言語に対する静的解析

両製品は同じ30以上の言語とフレームワークをカバーしています。バグ、脆弱性、コードの臭いを引き起こす問題を検出し、貴重なコード品質メトリクスを生成するための同じ基盤となる静的コード解析エンジンを共有しています。本質的な違い: あなたの既存のソフトウェア開発パイプライン

違い: あなたのCI/CDパイプラインはどこにありますか?

主な違いの1つは、各製品がどのようにホストされ、管理されるかに関するものです。SonarQube Cloudは完全なSaaS提供であり、Sonarがクラウドでソフトウェアをホストし、管理します。あなたのチームがすでにクラウドDevOpsプラットフォームで運用しており、コードとワークフローが完全にクラウドベース(例:GitHub.com+Travis)である場合、SonarQube Cloudは適しています。

SonarQube Cloudは、GitHub.com、GitHub Enterprise Cloud、Azure DevOps Services、Bitbucket Cloud、GitLab.comなどのクラウドベースのDevOpsプラットフォームと容易に統合されます。SonarはAWSでSonarQube Cloudを運営しており、数分でコードのスキャンを開始する最も簡単な方法です。SonarQube Cloudを使用すると、インストール、アップグレード、メンテナンスを心配する必要がなく、Sonarがすべての重労働を行います。SaaS提供として、SonarQube Cloudは新機能や機能がリリースされた瞬間に即座にアクセスできます。

SonarQube Cloudは、30以上の言語に対する自動解析を特徴としており、迅速に始めることができます。この自動スキャン機能は、ツールの設定の負担なしに実用的なコード品質メトリクスを求めるチームに最適です。いくつかのユースケースでは、解析設定を完全にセットアップすることで、より良い開発者体験を提供し、より多くのSonarQube Cloud機能を「アンロック」することができます。 

Serverをサポートされているデータベースと共に自分のサーバーまたはセルフマネージドクラウド環境にデプロイします。インストール後、SonarQube Serverは、GitHub、GitLab、Azure DevOps、またはBitbucketのセルフホストインスタンスと容易に統合されます。クラウドにコードを保存し、ローカルで管理されたCI/CDパイプラインに依存するハイブリッド環境を持っている場合、SonarQube ServerはこれらすべてのDevOpsプラットフォームのクラウドバージョンとも統合できます。

SonarQube Serverルートを選ぶと、インストール、アップグレード、環境のメンテナンスを自分の条件で行うことになります。平均して、SonarQube Serverの新バージョンを2か月ごとにリリースしています。新機能、機能性、セキュリティアップデート、バグ修正を最新に保つために、新バージョンがリリースされた際にアップグレードすることをお勧めします。バージョンについて言えば、SonarQube Serverは長期アクティブ(LTA)バージョンを提供しています。Sonarは約18か月ごとにSonarQube Server LTAバージョンをリリースします。LTAの焦点は、ドットリリースのすべての機能を安定したバージョンにパッケージ化し、大企業が大規模なアップグレードをスケジュールできるようにすることです。重要なバグ修正とセキュリティアップデートも必要に応じてLTAにパッチとしてリリースされます。

企業のニーズに対しては、SonarはSonarQube Cloud EnterpriseプランとSonarQube Server Enterprise Edition(EE)を推奨しており、組織の特定のユースケースに合わせた高度な機能を提供しています。この機能は、認証、ガバナンス、エグゼクティブレポート、複数のリポジトリサポート、拡張性の5つの主要カテゴリに分類されます。

認証

SonarQube CloudとすべてのエディションのSonarQube Serverでは、既存のDevOpsプラットフォームの資格情報(GitHub、Bitbucket、Azure、GitLab)を使用して認証できます。SonarQube Serverは、SAMLおよびLDAPプロトコルをサポートするサードパーティツールを使用して認証することもできます。SonarQube Cloud EnterpriseはSAMLによるシングルサインオンを提供します。

さらに、SonarQube Server Enterprise Editionでは、クロスドメインアイデンティティ管理システム(SCIM)を通じてユーザーとグループの自動プロビジョニングが可能であり、OktaおよびAzure ADに対応しています。

ガバナンス

Sonarのソリューションには、プロジェクトをアプリケーション(SonarQube Server Developer Edition+)およびポートフォリオ(SonarQube Cloud EnterpriseプランおよびSonarQube Server Enterprise Edition+)に集約する機能も含まれており、ビジネス目標を追跡する方法でプロジェクトを整理するための視覚的なダッシュボードを提供します。アプリケーションを使用すると、完全なアプリとして一緒に出荷されるすべてのプロジェクトを一元的に表示できます。ポートフォリオは同様で、組織やビジネス目標に基づいて複数のアプリやプロジェクトを集約することができます。たとえば、すべてのフロントエンドプロジェクトや地理的なチームのすべてのプロジェクトを追跡するためのポートフォリオを作成できます。

エグゼクティブレポート

SonarQube Server Enterprise EditionおよびSonarQube Cloud Enterpriseプランでは、エグゼクティブレベルのレポート機能も利用できます。これらのレポートは、ポートフォリオと連携して、信頼性、保守性、リリース可能性などの主要なメトリクスに関する洞察を提供します。さらに、PCI DSS、OWASP ASVS、OWASP Top 10、CASA、STIG、CWE Top 25をカバーするセキュリティレポートもあります。

SonarQube Serverは10年以上前にその始まりを見ました。製品が成熟するにつれて、開発者を中心とした「コア」機能のユースケースとは異なる「エンタープライズ」ユースケースを特定しました。大規模な組織では、より広い視点と文脈からの測定を必要とする「非開発者」オーディエンスがいることが一般的です。この報告とビジネスKPIのニーズを満たすために、SonarQube Serverに「ガバナンス」機能のセットを追加しました。

顧客がクラウドを採用し始め、エンタープライズ機能を求めるようになったため、2024年夏にリリースされたエンタープライズプランでこれらの機能を提供し始めました。

DevOpsプラットフォームサポート

Sonarソリューションは、複数のDevOpsプラットフォームへの接続を必要とする組織に対応しています。

たとえば、単一のSonarQube Server Developer Editionインスタンスは、最大4つのDevOpsプラットフォーム(1x GitHub、1x Bitbucket、1x GitLab、1x Azure DevOps)にそれぞれ1つの接続を行うことができます。特定のDevOpsプロバイダーに対して複数の構成が必要な場合(例:2x GitHub Enterprise Serverと1x GitHub.com)、SonarQube Server Enterprise Editionが必要です。

SonarQube Cloudも複数のDevOpsプラットフォームをサポートしています。SonarQube Cloud Enterpriseを使用すると、いくつかの組織をエンタープライズの下にまとめることができます。エンタープライズの組織は異なるDevOpsプラットフォームに属している場合があります。つまり、どのDevOpsプラットフォームであっても、またはどれだけ多くても、すべての組織をエンタープライズに追加できます。

拡張性についての注意

最後に、拡張性について触れます。Sonarコミュニティは、SonarQube Serverプラグインの広範で堅牢なライブラリを開発し、維持しています。これらのプラグインは、Sonarがサポートする予定のない機能をカバーするために、SonarQube Serverの機能をよりフリンジな領域で拡張します。例として、追加のプログラミング言語サポート、あまり一般的でないSCMエンジンとの統合、地域言語のローカリゼーションなどがあります。

現時点では、SonarQube Cloudはコミュニティからのサードパーティプラグインの寄稿を受け付けていません。

まとめ

要約すると、あなたのチームが完全にクラウドベースで、メンテナンスの手間をかけたくなく、新機能への最速のアクセスを望む場合、SonarQube Cloudは優れた選択肢です。セルフホスティングとメンテナンスを許容できる場合や、管理機能に価値を見出す場合は、SonarQube Serverが理にかなっています。

選択した道を決めたら、ソリューション概要を訪れて、開始方法の詳細を確認することをお勧めします。

この記事の目的は、すべての製品の違いを網羅的にリストすることではありませんでしたが、各環境はユニークです。しかし、ほとんどのユースケースに関連する情報を提供しました。さらに質問がある場合は、コミュニティフォーラムにお問い合わせください。商業利用に関する支援が必要な場合は、チームに質問を送信することができます。

もっと知りたいトピックを選んでください:

悪いコードが開発者の速度を破壊する方法

クラウドネイティブアプリにおけるコード品質のガイド

チームのスキルを向上させる方法