소개
정적 코드 분석(Static Code Analysis)은 소프트웨어 개발에 사용하는 기술로, 실제로 프로그램을 실행하지 않고 소스 코드의 품질을 평가합니다. 여기에는 코드의 구조, 구문 및 기타 특성을 분석하여 잠재적인 결함, 보안 취약점 및 개선점을 식별하는 작업이 포함됩니다.
정적 코드 분석 도구를 사용하여 개발 팀은 개발 프로세스 초기에 잠재적인 문제를 포착하여 코드 품질을 개선하고 유지 관리성을 높이며 소프트웨어 결함을 줄일 수 있습니다.
다양한 정적 코드 분석 도구가 있으나, Community Edition으로 무료로 사용할 수 있고 많은 기능을 제공하는 SonarQube를 설치합니다.
학습의 결과로 SonarQube를 Kubernetes 클러스터에 배포합니다. 이후 GitLab CI/CD 파이프라인에서 구축한 SonarQube와 연동하여 변경된 소스 코드를 분석함으로써 코드 품질과 보안을 유지할 수 있습니다.
SonarQube란?
SonarQube는 클린 코드(clean code)를 제공하도록 체계적으로 도와주는 자체 관리형 자동 코드 리뷰 도구입니다. Sonar 솔루션의 핵심 요소인 SonarQube는 기존 워크플로에 통합되고 코드의 문제를 감지하여 프로젝트의 지속적인 코드 검사를 수행할 수 있도록 지원합니다. 이 도구는 30개 이상의 다양한 프로그래밍 언어를 분석하고 CI 파이프라인 및 DevOps 플랫폼에 통합되어 사용할 수 있습니다.
SonarQube는 코드 스멜(Code Smell), 버그, 보안 취약점, 중복 코드, 코드 복잡도, 단위 테스트 등의 보고서를 제공합니다.
SonarQube의 대표적인 특징은 아래와 같습니다.
•
지속적인 보안 통합
•
중앙 관리
•
DevOps 플랫폼 통합
•
다양한 언어 분석
•
플러그인 통합
학습 내용
•
SonarQube Helm 차트 리포지터리를 구성하는 방법
•
SonarQube Helm 차트의 구성 정보를 배포 환경에 맞게 설정하는 방법
•
Helm 차트로 SonarQube를 배포하고 확인하는 방법
아키텍처
사전 준비사항
기본 요건
•
Kubernetes에 대한 기본 개념
•
Helm, kubectl에 대한 기본 개념
•
정적 코드 분석의 이해
필요 항목
•
SonarQube를 배포할 Kubernetes 클러스터가 구축되어 있어야 합니다.
•
TLS/SSL 인증서를 사용할 수 있도록 cert-manager가 구축되어 있어야 합니다.
•
SonarQube Ingress 리소스를 사용할 수 있도록 NGINX Ingress Controller가 구축되어 있어야 합니다.