SonarQube 서비스 구축
사용 서버 : Rocky 8 OS Server 1대
난이도 : ★
내용 요약 : SonarQube 설치
참고 링크 :
https://brunch.co.kr/@joypinkgom/207
https://blog.naver.com/sonmh79/223087106904
목차 :
01. SonarQube?
02. SonarQube 설치
03. 구축 확인
01. SonarQube?
SonarQube는 소프트웨어 개발 프로젝트의 코드 품질과 보안을 자동으로 분석하는 오픈소스 플랫폼입니다.
SonarQube는 코드에서 발생할 수 있는 버그, 코드 스멜, 보안 취약성 등을 탐지하고, 개발자가 이를 수정할 수 있도록 보고서를 제공합니다.
지속적 통합/지속적 배포(CI/CD) 파이프라인과 쉽게 통합할 수 있으며, 다양한 프로그래밍 언어를 지원합니다.
▶ 주요 기능
코드 분석 : SonarQube는 정적 코드 분석을 통해 코드의 품질과 보안을 평가합니다. 코드 스멜, 복잡도, 중복, 테스트 커버리지, 버그, 보안 문제 등을 분석하여 개발자가 개선할 수 있도록 지표를 제공합니다.
멀티 언어 지원 : Java, JavaScript, C#, Python, PHP, Ruby 등 25개 이상의 프로그래밍 언어를 지원하여 다양한 프로젝트에 적용할 수 있습니다.
지속적 통합(CI) 지원 : Jenkins, GitLab CI/CD, Azure DevOps 등과 같은 CI 도구와 통합하여 빌드 단계에서 자동으로 코드 분석을 수행할 수 있습니다.
품질 게이트 : SonarQube는 프로젝트의 품질 기준을 정의할 수 있는 품질 게이트 기능을 제공합니다. 품질 게이트는 빌드 프로세스에서 코드가 품질 기준을 충족하지 못할 경우 실패하게 할 수 있습니다.
보안 분석 : OWASP Top 10 등과 같은 보안 기준에 따라 코드의 보안 취약성을 분석하고, 이를 해결할 수 있는 방법을 제안합니다.
확장성 : 플러그인 시스템을 통해 기능을 확장할 수 있으며, 다양한 언어, 규칙, 보고서 형식을 지원하는 플러그인을 사용할 수 있습니다.
추가적인 특징
-
사용자 정의 규칙:
- SonarQube는 기본 제공 규칙 외에도 사용자 정의 규칙을 설정할 수 있습니다. 팀의 특정 코딩 표준이나 규칙을 적용하여 분석할 수 있습니다.
-
대시보드와 보고서:
- 직관적인 대시보드를 통해 프로젝트의 코드 품질을 시각적으로 확인할 수 있습니다. 보고서 기능을 통해 코드 품질을 문서화하여 팀원들과 공유할 수 있습니다.
-
코드 커버리지 통합:
- 코드 커버리지 도구(예: JaCoCo, Cobertura)와 통합하여 테스트 커버리지 정보를 SonarQube에 포함시킬 수 있습니다. 이를 통해 코드의 테스트 품질을 함께 평가할 수 있습니다.
-
멀티 프로젝트 지원:
- 여러 프로젝트를 하나의 SonarQube 인스턴스에서 관리할 수 있으며, 프로젝트 간의 코드 품질 및 보안 상태를 비교할 수 있습니다.
-
커스터마이징 가능한 대시보드:
- 대시보드를 사용자가 원하는 대로 구성할 수 있습니다. 필요한 지표나 정보를 대시보드에 맞춤 설정하여 편리하게 확인할 수 있습니다.
-
개발자 피드백 제공:
- 코드 검토 과정에서 실시간으로 피드백을 제공하며, 코드 커밋 및 풀 리퀘스트와 통합되어 개발자에게 문제를 즉시 알려줍니다.
-
다양한 플러그인 지원:
- 다양한 언어 및 도구를 지원하는 플러그인을 통해 SonarQube의 기능을 확장할 수 있습니다.
장점
-
정적 코드 분석:
- SonarQube는 정적 분석을 통해 코드의 잠재적인 문제를 사전에 발견할 수 있습니다. 이를 통해 코드 리뷰 과정에서 놓치기 쉬운 문제를 예방할 수 있습니다.
-
CI/CD 통합:
- Jenkins, GitLab, Azure DevOps 등과의 통합을 통해 자동화된 빌드와 배포 파이프라인에 코드 분석을 통합할 수 있습니다.
-
언어 다변성:
- Java, C#, JavaScript, Python 등 25개 이상의 프로그래밍 언어를 지원하여 다양한 프로젝트에 적용할 수 있습니다.
-
사용자 정의 가능성:
- 사용자 정의 규칙, 품질 게이트 설정 등으로 팀의 코딩 표준에 맞출 수 있습니다.
-
보안 취약성 분석:
- OWASP Top 10 등 보안 기준에 따라 코드의 보안 취약성을 분석하여 개발자에게 개선 방안을 제시합니다.
-
커뮤니티 및 지원:
- 활발한 오픈소스 커뮤니티와 공식 문서, 포럼을 통해 지원을 받을 수 있습니다.
단점
-
리소스 요구:
- 대규모 프로젝트나 다수의 프로젝트를 분석하는 경우, SonarQube는 상당한 시스템 자원을 요구할 수 있습니다. 성능이 중요한 환경에서는 서버 사양을 충분히 고려해야 합니다.
-
설정 복잡성:
- 초기 설치 및 설정이 복잡할 수 있으며, 특히 대규모 환경에서 여러 프로젝트를 관리할 경우 설정이 복잡해질 수 있습니다.
-
플러그인 의존성:
- 특정 기능이나 언어 지원을 위해 플러그인에 의존할 수 있으며, 플러그인 버전이 업데이트되지 않거나 호환성 문제가 발생할 수 있습니다.
-
유료 기능:
- 기본적인 기능은 무료로 제공되지만, 더 고급 기능이나 추가적인 지원이 필요한 경우 유료 에디션(Developer, Enterprise, Data Center)으로 업그레이드해야 합니다.
-
성능 문제:
- 대규모 코드베이스를 분석할 때 성능 문제가 발생할 수 있으며, 이로 인해 분석 시간이 길어질 수 있습니다.
활용 방법
-
CI/CD 통합:
- SonarQube를 CI/CD 파이프라인에 통합하여 코드가 커밋될 때마다 자동으로 분석을 수행하고, 품질 기준에 맞지 않는 경우 빌드를 실패하게 할 수 있습니다.
-
품질 게이트 설정:
- 프로젝트에 맞는 품질 게이트를 설정하여 코드 품질 기준을 정의하고, 기준을 충족하지 못할 경우 코드 변경을 방지할 수 있습니다.
-
리포트 및 대시보드 활용:
- 대시보드와 보고서 기능을 통해 팀원들에게 코드 품질 정보를 제공하고, 개발 과정에서 지속적인 품질 관리를 수행할 수 있습니다.
-
교육 및 코드 리뷰:
- 코드 분석 결과를 활용하여 팀원들에게 코드 품질에 대한 교육을 실시하고, 코드 리뷰 시 유용한 참고자료로 사용할 수 있습니다.
SonarQube는 코드 품질을 관리하고 향상시키기 위한 강력한 도구로, 다양한 기능과 유연한 설정 옵션을 제공하여 개발팀의 효율성을 높일 수 있습니다.
02. SonarQube 설치
01. 필수 패키지 설치 및 유저 생성
# dnf update -y # dnf install java-17-openjdk-devel -y # java -version openjdk version "17.0.12" 2024-07-16 LTS OpenJDK Runtime Environment (Red_Hat-17.0.12.0.7-1) (build 17.0.12+7-LTS) OpenJDK 64-Bit Server VM (Red_Hat-17.0.12.0.7-1) (build 17.0.12+7-LTS, mixed mode, sharing) # wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.0.65466.zip # unzip sonarqube-9.9.0.65466.zip -d /usr/local/src/ # mv /usr/local/src/sonarqube-9.9.0.65466 /usr/local/src/sonarqube # useradd -r -s /bin/false sonarqube # chown -R sonarqube:sonarqube /usr/local/src/sonarqube
02. 부팅 시 자동 실행 설정
# vi /etc/systemd/system/sonarqube.service [Unit] Description=SonarQube service After=syslog.target network.target [Service] Type=forking ExecStart=/usr/local/src/sonarqube/bin/linux-x86-64/sonar.sh start ExecStop=/usr/local/src/sonarqube/bin/linux-x86-64/sonar.sh stop User=sonarqube Group=sonarqube Restart=always LimitNOFILE=65536 [Install] WantedBy=multi-user.target # systemctl daemon-reload # systemctl start sonarqube # systemctl enable sonarqube
명령어를 활용하여 확인 시, 정상적으로 서비스가 실행되어 있으며 포트 또한 정상적으로 올라온 것을 볼 수 있습니다.
03. 구축 확인
서비스 구축 후에는 브라우저에 http://서버 IP(혹은 도메인 주소):9000 으로 서비스 홈페이지에 접근할 수 있습니다.
서비스 접근 시, SonarQube Service Starting… 이라는 문구가 지나간 후, 이와 같은 화면을 확인할 수 있습니다.
첫 로그인 시 기본 관리자 계정은 admin
, 비밀번호는 admin
입니다. 로그인 후 비밀번호를 변경하라는 메시지가 표시됩니다.
패스워드를 변경 해준 후에 재 접속 합니다.
서비스 접근 시 초기 대시 보드 화면 입니다.
System 탭에서 서버 내 환경에 대한 확인도 가능합니다.
이로써 SonarQube 설치 및 구축에 대한 글을 마치겠습니다.
감사합니다.