Architecture 및 Integration

Table of Contents

Architecture

SonarQube 플랫폼은 4개의 컴포넌트로 구성됩니다:

  1. 하나의 SonarQube Server는 3개의 메인 프로세스로 구성됩니다:
    1. 하나의 Web Server: 개발자 및 관리자들은 품질 스냅샷을 확인하고, SonarQube 인스턴스를 설정할 수 있습니다.
    2. 하나의 Search Server: 엘라스틱 서치(Elasticsearch)에 기반한 검색 엔진을 통해 UI에서 검색을 수행합니다.
    3. 하나의 Compute Engine Server: 코드 분석 보고를 담당하며, SonarQube 데이터베이스에 분석 결과를 저장합니다.
  2. 하나의 SonarQube Database는 다음을 저장합니다:
    • SonarQube 인스턴스 환경 설정(보안, 플러그인 설정 등).
    • project, view 등의 품질 스냅샷.
  3. 서버에 설치된 다양한 SonarQube Plugins, 언어, SCM, 통합, 인증 및 가버넌스 플러그인
  4. 빌드 및 지속적인 통합 서버에서 프로젝트 분석을 위해 실행하는 하나 혹은 그 이상의 SonarQube Scanner

Integration

다음 스키마는 SonarQube를 다른 ALM  도구와 어떻게 통합하는지, SonarQube의 다양한 컴포넌트들을 어디에서 활용할 수 있는지 기술합니다.

  1. 개발자들은 선호하는 IDE로 코드를 작성하고, SonarLint를 활용해 로컬 분석을 수행합니다.
  2. 개발자들은 코드를 선호하는 SCM에 푸시합니다(gitm SVN, TFVC ...).
  3. 지속적인 통합 서버는 자동 빌드를 트리거링하고, SonarQube Scanner를 실행해 SonarQube 분석을 수행합니다.
  4. 분석 보고서는 SonarQube Serve에 전달되어 처리됩니다.
  5. SonarQube Server는 분석 보고 결과를 처리하고 SonarQube Database에 저장합니다. 결과는 UI에 표시합니다.
  6. 개발자들은 SonarQube UI를 통해 이슈 리뷰, 코멘트, 이슈 분석들을 수행해 기술 부채를 관리하고 완화합니다.
  7. 관리자들은 분석 결과 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 관련 문의 : 이메일 :::