The SonarQube Platform is made of 4 components:
- One SonarQube Server starting 3 main processes:
- a Web Server for developers, managers to browse quality snapshots and configure the SonarQube instance
- a Search Server based on Elasticsearch to back searches from the UI
- a Compute Engine Server in charge of processing code analysis reports and saving them in the SonarQube Database
- One SonarQube to store:
- the configuration of the SonarQube instance (security, plugins settings, etc.)
- the quality snapshots of projects, views, etc.
- Multiple SonarQube Plugins installed on the server, possibly including language, SCM, integration, authentication, and governance plugins
- One or more running on your Build / Continuous Integration Servers to analyze projects
The following schema shows how SonarQube integrates with other ALM tools and where the various components of SonarQube are used.
- Developers code in their IDEs and use SonarLint to run local analysis.
- Developers push their code into their favourite SCM : git, SVN, TFVC, ...
- The Continuous Integration Server triggers an automatic build, and the execution of the SonarQube Scanner required to run the SonarQube analysis.
- The analysis report is sent to the SonarQube Server for processing.
- SonarQube Server processes and stores the analysis report results in the SonarQube Database, and displays the results in the UI.
- Developers review, comment, challenge their Issues to manage and reduce their Technical Debt through the SonarQube UI.
- Managers receive Reports from the analysis.
Ops use APIs to automate configuration and extract data from SonarQube.
Ops use JMX to monitor SonarQube Server.
About Machines and Locations
- The SonarQube Platform cannot have more than one SonarQube Server and one SonarQube Database.
- For optimal performance, each component (server, database, scanners) should be installed on a separate machine, and the server machine should be dedicated.
- SonarQube Scanners scale by adding machines.
- All machines must be time synchronized.
- The SonarQube Server and the SonarQube Database must be located in the same network
- SonarQube Scanners don't need to be on the same network as the SonarQube Server.
- There is no communication between SonarQube Scanners and the SonarQube Database.