Architecture 및 Integration
SQ Official Doc Link: SONAR/Architecture+and+Integration
Table of Contents
Architecture
SonarQube 플랫폼은 4개의 컴포넌트로 구성됩니다:
- 하나의 SonarQube Server는 3개의 메인 프로세스로 구성됩니다:
- 하나의 Web Server: 개발자 및 관리자들은 품질 스냅샷을 확인하고, SonarQube 인스턴스를 설정할 수 있습니다.
- 하나의 Search Server: 엘라스틱 서치(Elasticsearch)에 기반한 검색 엔진을 통해 UI에서 검색을 수행합니다.
- 하나의 Compute Engine Server: 코드 분석 보고를 담당하며, SonarQube 데이터베이스에 분석 결과를 저장합니다.
- 하나의 SonarQube Database는 다음을 저장합니다:
- SonarQube 인스턴스 환경 설정(보안, 플러그인 설정 등).
- project, view 등의 품질 스냅샷.
- 서버에 설치된 다양한 SonarQube Plugins, 언어, SCM, 통합, 인증 및 가버넌스 플러그인
- 빌드 및 지속적인 통합 서버에서 프로젝트 분석을 위해 실행하는 하나 혹은 그 이상의 SonarQube Scanner
Integration
다음 스키마는 SonarQube를 다른 ALM 도구와 어떻게 통합하는지, SonarQube의 다양한 컴포넌트들을 어디에서 활용할 수 있는지 기술합니다.
- 개발자들은 선호하는 IDE로 코드를 작성하고, SonarLint를 활용해 로컬 분석을 수행합니다.
- 개발자들은 코드를 선호하는 SCM에 푸시합니다(gitm SVN, TFVC ...).
- 지속적인 통합 서버는 자동 빌드를 트리거링하고, SonarQube Scanner를 실행해 SonarQube 분석을 수행합니다.
- 분석 보고서는 SonarQube Serve에 전달되어 처리됩니다.
- SonarQube Server는 분석 보고 결과를 처리하고 SonarQube Database에 저장합니다. 결과는 UI에 표시합니다.
- 개발자들은 SonarQube UI를 통해 이슈 리뷰, 코멘트, 이슈 분석들을 수행해 기술 부채를 관리하고 완화합니다.
- 관리자들은 분석 결과 Reports를 받습니다.
운영자(Ops)는 API를 활용해 SonarQube 설정을 자동화하고, SonarQube로부터 데이터를 추출합니다.
운영자(Ops)는 JMX를 활용해 SonarQube Server 상태를 모니터링합니다.
머신 및 머신의 위치
- SonarQube 플랫폼은 하나의 SonarQube Server 및 하나의 SonarQube Database로 구성됩니다.
- 최적의 성능을 위해, 각 컴포넌트(server, dataabase, scanner)는 별도의 머신에 설치할 것을 권장합니다. 또한 서버 머신에서는 SonarQube Server 서비스만을 운영하여야 합니다.
- SonarQube Scanner는 머신을 추가해 스케일링 할 수 있습니다.
- 각 머신은 시간적으로 동기화되어 있어야 합니다(동일 timezone 사용).
- SonarQube Server, SonarQube Database는 동일한 네트워크 영역에 위치해야 합니다.
- SonarQube Scanner는 SonarQube Server와 동일한 네트워크 영역에 존재하지 않아도 됩니다.
- SonarQube Scanner, SonarQube Database 사이에는 어떠한 커뮤니케이션도 이루어지지 않습니다.
© 2017-2018 Moses Kim.
별도의 언급이 없는 한, 이 스페이스의 컨텐츠는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
SONARQUBE는 SonarSource SA의 트레이드 마크입니다. 모든 트레이트 마크 및 저작권은 각 소유자의 소유물입니다.
::: SonarQube 관련 문의 : 이메일 :::