SonarQube | SonarCloud | SonarLint โ DevOps + ๋ณด์ + QA (๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์คํ ์์ค ๋๊ตฌ)
SonarQube๋ ์ฝ๋ ํ์ง์ ์ง์์ ์ธ ๊ฒ์ฌ๋ฅผ ์ํ ์ ๋์ ์ธ ์คํ ์์ค ํ๋ซํผ์
๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ์ฌ์ฉํ์ฌ 27๊ฐ ์ด์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ฒ๊ทธ, ์ฝ๋ ์ค๋ฉ(code smells), ๋ณด์ ์ทจ์ฝ์ ๋ฐ ์ ์ง๋ณด์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๋ ์๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํํฉ๋๋ค. ์ด ๊ณผ์ ์ ์ค์ต ์ค์ฌ(learn-by-doing) ๋ฐฉ์์ผ๋ก ์ค๊ณ๋์ด, SonarQube์ ๊ทธ ์ํ๊ณ์ ๋ํ ๊น๊ณ ์ค๋ฌด์ ์ธ ์ ๋ฌธ ์ง์์ ์ต๋ํ ์ ์๋๋ก ๋์ต๋๋ค.
๋์:
์ด ๊ณผ์ ์ ์ฝ๋ ํ์ง, ๋ณด์ ๋ฐ CI/CD ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ง์คํฐํ๊ณ ์ ํ๋ ์ ์
์ฌ์, ๊ฐ๋ฐ์, ํ๋ก์ ํธ ๋งค๋์ , ์ํคํ
ํธ, QA ์์ง๋์ด, ์ง์ ์์ง๋์ด, DevOps, DevSecOps, InfoSec ๋ฐ ํ๋ก์ธ์ค ์์ง๋์ด์๊ฒ ์ ํฉํฉ๋๋ค.
๊ธฐ์ด ๋ฐ ๊ฐ๋
SonarQube, SonarCloud ๋ฐ SonarLint ์๊ฐ
์ ์ ์ฝ๋ ๋ถ์์ ๋ชฉ์ ๊ณผ ์ด์
DevOps ๋ฐ DevSecOps ์ ์ค์ผ์ด์ค ์ดํด
SonarQube ์ํคํ
์ฒ, ์๋์
, ๋ฒ์ ๋ฐ ์ํ๊ณ
ํต์ฌ SonarQube ์ฉ์ด ๋ฐ ๋ฉํธ๋ฆญ
์ ์ง๋ณด์์ฑ, ์ ๋ขฐ์ฑ ๋ฐ ๋ณด์ ๊ฐ๋
์ค์น ๋ฐ ์ค์
Docker ๋ฐ Docker-Compose๋ฅผ ์ฌ์ฉํ SonarQube ์ค์น ๋ฐ ์ค์
Jenkins ์ค์น ๋ฐ ๊ตฌ์ฑ
Sonar Scanner ์ค์น ๋ฐ ๊ตฌ์ฑ
๋น๋ ๋๊ตฌ ์ค์ :
Ant, Maven, Gradle
NodeJS, Python
SonarQube UI ๋ฐ ํ์ ๊ฐ์
์ค์ต ์ฝ๋ ๋ถ์
SonarQube ๋ฐ CI ํ์ดํ๋ผ์ธ์ ํ๋ก์ ํธ ์จ๋ณด๋ฉ
์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ์ฝ๋ ๋ถ์ ์คํ
๋ถ์ ๊ฒฐ๊ณผ ๊ฒ์ ๋ฐ ํด์
์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง, ๋จ์ ๋ฐ ํตํฉ ํ
์คํธ ๊ฒฐ๊ณผ ๋ณด๊ณ
๋ค์ ์ฌํญ์ ๋ํ ์ดํด ๋ฐ ๋ถ์:
๋ฒ๊ทธ
์ทจ์ฝ์
์ฝ๋ ์ค๋ฉ
๊ธฐ์ ๋ถ์ฑ
๋ณต์ก๋
์ค๋ณต๋ ๋ผ์ธ, ํ์ผ ๋ฐ ๋ธ๋ก
SonarLint ๋ฐ IDE ํตํฉ
๋ค์ ํ๊ฒฝ์ SonarLint ์ค์น:
Eclipse
IntelliJ IDEA
VS Code
SonarLint ์ฐ๊ฒฐ ๋ชจ๋(Connected Mode) ๊ตฌ์ฑ
IDE์์์ ์ค์๊ฐ ์ฝ๋ ๋ถ์ ๋ฐ ์ด์ ๊ฐ์ง
ํ์ง ๊ด๋ฆฌ
ํ์ง ๊ฒ์ดํธ(Quality Gates) ๋ฐ ํ์ง ํ๋กํ(Quality Profiles)
์ปค์คํ
๊ท์น ๋ฐ ๊ท์น ํ
ํ๋ฆฟ ์์ฑ ๋ฐ ๊ด๋ฆฌ
ํ ์ ์ฒด์ ํ์ง ํ์ค ์ ์ฉ
ํ์ง ๊ฒ์ดํธ ์กฐ๊ฑด์ ๋ฐ๋ฅธ ๋น๋ ์คํจ ์ฒ๋ฆฌ
์๋ณ๋ ์ด์ ์ฒ๋ฆฌ ๋ฐ ์์
๊ด๋ฆฌ ๋ฐ ๊ตฌ์ฑ
ํ๋ก์ ํธ ๊ด๋ฆฌ
์ฌ์ฉ์, ๊ทธ๋ฃน, ๊ถํ ๋ฐ ํ ํฐ ๊ด๋ฆฌ
ํ๋ฌ๊ทธ์ธ ์ค์น ๋ฐ ๊ด๋ฆฌ
SonarQube ๋ณด์ ๊ตฌ์ฑ
SMTP ๊ตฌ์ฑ ๋ฐ ์ด๋ฉ์ผ ์๋ฆผ
ํ์ฌ ๋ก๊ณ ๋ฅผ ์ฌ์ฉํ SonarQube UI ๋ธ๋๋ฉ
SonarQube ๋ง์ผํ๋ ์ด์ค ๋ฐ ์์คํ
์ธ๋ถ ์ ๋ณด
๋ณด์ ๋ฐ SAST
SAST(์ ์ ์ ํ๋ฆฌ์ผ์ด์
๋ณด์ ํ
์คํธ) ๊ธฐ์ด
๋ณด์ ์ทจ์ฝ์ ๋ถ์
CI/CD ํ์ดํ๋ผ์ธ๊ณผ SAST ํตํฉ
CI/CD ๋ฐ DevOps ํตํฉ
Jenkins(Jobs ๋ฐ Pipelines)์ ํตํฉ
GitHub ๋ฐ GitHub Actions์ ํตํฉ
GitLab ๋ฐ GitLab CI/CD์ ํตํฉ
CI/CD ์ํฌํ๋ก์ฐ์์ ํ์ง ๊ฒ์ฌ ์๋ํ
SonarQube ํ์ง ๊ฒ์ดํธ์ ๋ฐ๋ฅธ CI/CD ํ์ดํ๋ผ์ธ ์คํจ ์ฒ๋ฆฌ
์ฌํ ์ฃผ์
์๋ํ, ๋ชจ๋ํฐ๋ง ๋ฐ ๋ฐ์ดํฐ ์ถ์ถ์ ์ํ SonarQube Web API ์ฌ์ฉ
์ํฐํ๋ผ์ด์ฆ๊ธ SonarQube ๋ฐฐํฌ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์ด ๊ณผ์ ์ ๋ง์น๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค:
ํ์ง ๊ฒ์ดํธ, ํ์ง ํ๋กํ ๋ฐ ๊ท์น ์ ์ ๋ฐ ๊ด๋ฆฌ
SonarLint๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ์์ ์ฝ๋ ๋ถ์
์์ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ ์ ์ฝ๋ ๋ถ์ ์ํ
SonarQube๋ฅผ GitHub, GitLab ๋ฐ Jenkins์ ํตํฉ
CI/CD ํ์ดํ๋ผ์ธ ์ ๋ฐ์ ๊ฑธ์ณ ์ฝ๋ ํ์ง ๋ฐ ๋ณด์ ํ์ค ์ ์ฉ
SonarQube ์ธ์คํด์ค๋ฅผ ์์ ์๊ฒ ๊ด๋ฆฌํ๊ณ ์ปค์คํฐ๋ง์ด์ง