2023. 6. 2. 11:38ใSystem ์์ ์ค/DevOps
๐ SonarQube ์ค์น
๐ฝ ๊ฐ์
๐ฆ ์๊ฐ
์ด๋ฒ์๋ Docker๋ฅผ ์ด์ฉํ์ฌ SonarQube๋ผ๋ ๊ฒ์ ์ค์นํด ๋ณด๋ ค๊ณ ํด์.
๋จผ์ SonarQube๋ ๋ฌด์์ผ๊น์?
์๋์์ค๊ฐ ๊ฐ๋ฐํ ์๋ํ๋ธ๋ ์ฝ๋ ๋ฒ ์ด์ค์ ์ฝ๋ ํ์ง ๋ฐ ๋ณด์์ ์ง์ํด์ ๊ฒ์ฌํ๊ณ , ์ฝ๋ ๊ฒํ ์ค์ ๊ฐ๋ฐํ์ ์ข์ ์ฝ๋๋ก ์ธ๋ํ๋ ์๋ด์ ์ญํ ์ ํ๋ ๋๊ตฌ์์.
ํ์ฌ 27๊ฐ์ Programming Language๋ฅผ ์ง์ํ๊ณ , ๊ธฐ์กด Software Pipeline๊ณผ ์ฐ๊ฒฐ๋๋ ๋์ ์๋ํ๋ธ๋ ๊ฐ๋ฐ์๊ฐ ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ , ์์ ํ๊ณ , ํ ์ ์ฒด๊ฐ ๋ ์ฐ์ํ๊ณ , ์์ ํ ๊ฐ๋ฐ์ ํ ์ ์๋๋ก ๋ช
ํํ ์์ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ์ด๋๋ผ์ธ์ ์ ๊ณตํด ์ฃผ๋ ์น์ ํ ๊ฐ๋ฐ ๋๋ฐ์์์.
170,000๊ฐ ์ด์์ ๋ฐฐํฌ๋ฅผ ํตํด ์๊ท๋ชจ ๊ฐ๋ฐํ๊ณผ ๊ธ๋ก๋ฒ ์กฐ์ง์ ์ง์ํ๋ ์๋ํ๋ธ๋ ์ ์ธ๊ณ์ ๋ชจ๋ ํ๊ณผ ํ์ฌ๊ฐ ์ฝ๋ ํ์ง ๋ฐ ๋ณด์์ ์์ ํ๊ณ ์ํฅ์ ๋ฏธ์น ์ ์๋ ์๋จ์ ์ ๊ณตํ๊ณ ์์ด์.
์๋ํ๋ธ๋ 20๊ฐ ์ด์์ Programming Language์์ Bug, Code smell, ๋ณด์ ์ทจ์ฝ์ ์ ๋ฐ๊ฒฌํ ๋ชฉ์ ์ผ๋ก ์ ์ ์ฝ๋ ๋ถ์์ ํตํด ์๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํํ๊ธฐ ์ํ ์ง์์ ์ธ ์ฝ๋ ํ์ง ๊ฒ์ฌ์ฉ ์คํ ์์ค ํ๋ซํผ์ด์์.
์๋ํ๋ธ๋ ์ค๋ณต ์ฝ๋, ์ฝ๋ฉ ํ์ค, ์ ๋ ํ
์คํธ, ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง, ์ฝ๋ ๋ณต์ก๋, ์ฃผ์, ๋ฒ๊ทธ ๋ฐ ๋ณด์ ์ทจ์ฝ์ ๊ด๋ จ ๋ณด๊ณ ์ ๋ํ ์ ๊ณตํด ์ฃผ๋ ์น๊ตฌ์์. ๋ํ, ๊ฐ์ข
Plugin์ ์ ๊ณตํ์ฌ ๋ณด๋ค ๋ง์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ฃผ๋ฉฐ, IDE ํ์ฅ Plugin์ผ๋ก ์๋๋ฆฐํธ๋ฅผ ํตํด ๋ค์ํ ์ฝ๋ ํ์ง ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๊ณ , ์์ ํ ์ ์๋๋ก ๋์์ฃผ๊ณ ์์ด์.
์๋ํ๋ธ๋ ์ปค๋ฎค๋ํฐ ๋ถํฐ ๋ฐ์ดํฐ ์ผํฐ๊น์ง ๋ค์ํ Edtion์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , ๊ทธ ์ค ์ฃผ๋์ฐ๊ฐ ๊ตฌ์ถํ Communication Edition์ ๋ฌด๋ฃ ๋ฒ์ ์ด์์.
์ฐธ๊ณ ๋ก ๊ทธ ์ธ Edition์ ์ธ์คํด์ค ๋น ์ฝ๋ ๋ผ์ธ ์๋ก ๊ฐ๊ฒฉ์ด ์ฑ
์ ๋๊ณ , ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ๋ ์ด์ฉํ ์ ์๋ต๋๋ค.
์๋ํ๋ธ์ ๋ถ์ ๊ธฐ์ค์ ์๋์ ๊ฐ์์.
๋ถ์ ๊ธฐ์ค ์ข ๋ฅ | ์์ธ ๋ด์ฉ |
์ฝ๋ ์ ์ทจ(Maintainability) | ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ, ๋ชจ๋์ฑ, ์ดํด ๊ฐ๋ฅ์ฑ, ํ ์คํธ ์ฉ์์ฑ, ์ฌ ์ฌ์ฉ์ฑ ๋ฑ ์ฌ๊ฐํ ๋ฌธ์ ๋ ์๋๋, ์ฌ์ํ ๋ฌธ์ ๋ค |
Bug | ์ ์ฌ์ ๋ฒ๊ทธ ํน์ Runtime ๋น์ ์์๋๋ ๋์ํ์ง ์๋ Code |
์ทจ์ฝ์ | Cracker์๊ฒ ์ ์ฌ์ ์ฝ์ ์ด ๋ ์ ์๋ ๋ณด์์ ๋ฌธ์ . SQL Injection, Cross Site Script ๊ณต๊ฒฉ๊ณผ ๊ฐ์ ๋ณด์ ์ทจ์ฝ์ฑ์ ์ฐพ๋๋ค. |
์ค๋ณต | ์ฝ๋ ํ์ง ์ ํด ์ํค๋ ๊ฐ์ฅ ํฐ ์์ธ ์ค ํ๋ |
๋จ์ ํ ์คํธ | ๋จ์ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ๊ธฐ๋ฅ์ ํตํด ํ ์คํธ์ ์ฑ๊ณต / ์คํจ ์ ๋ณด ์ ๊ณต |
๋ณต์ก๋ | ์ํ ๋ณต์ก๋ ์ธก์ , ์ฝ๋ ๋ ผ๋ฆฌ์ ํ๋ฆ ์ ์กด์ฌํ๋ ์ธ์ง ๋ณต์ก๋ ์ธก์ |
์ฌ์ด์ฆ | ์ฝ๋ ๋ผ์ธ ์ ์ฒด ๋ผ์ธ ์ ๊ตฌ๋ฌธ, ํจ์ / ํด๋์ค, Directory, ์ฃผ์ ์, ์ฝ๋ฉํธ ๋น์จ ๋ฑ ์ฝ๋ ํฌ๊ธฐ์ ๊ด๋ จ๋ ๋ค์ํ ์งํ ์ ๊ณต |
๐ฝ ๊ตฌ์ฑ
๐ฆ ์ค์น
์ฃผ๋๊ฐ ์ค์น ๋ฐ ๊ตฌ์ถํ๋ ค๋ ์๋ํ๋ธ์ ๋ํด ์ด๋์ ๋ ์์์ผ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ค์น ์งํํด ๋ณผ๊ฒ์.
Docker ์์ ์๋ํ๋ธ ๊ด๋ จํ Image๋ ๊ต์ฅํ ๋ค์ํ๊ฒ ์กด์ฌํด์.
ํ์ง๋ง, ์ฃผ๋๋ PR Decoration์ ๋ณด๋ค ํธ๋ฆฌํ๊ฒ ์ด์ฉํ ์ ์๋ mc1arke/sonarqube-with-community-branch-plugin Image๋ฅผ ํตํด ์ค์น๋ฅผ ์งํํด ๋ณด๋ ค๊ณ ํด์.
์ต์ด ์๋์ ๊ฐ์ด max virtual memory areas ์ค์ ์ vm.max_map_count ๊ฐ์ ๋์ปค ํธ์คํธ ์๋ฒ์์ ์ฌ๋ ค์ฃผ์ด์ผ ํด์.
# max virtual memory areas์ vm.max_map_count ๊ฐ ํ์ธ ๋ช
๋ น์ด
sysctl vm.max_map_count
๋งจ ์๋ซ์ค์ ์์ ๊ฐ์ด ์ถ๊ฐํด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค ์ ์ฅํ๊ณ ๋์ต๋๋ค.
์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ์
๋ ฅ์์ผ ์ฃผ์์ด์.
์ต์ด ์์ ๊ฐ์ด Image๋ฅผ ๋ด๋ ค ๋ฐ์ ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด Container ๊ตฌ๋์ฉ Shell Script๋ฅผ ๋ง๋ค์ด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค ๋ง๋ค์ด์ค Shell Script์ ๊ถํ์ ๋ณ๊ฒฝํด ์ฃผ์์ด์.
ํด๋น Shell Script๋ฅผ ์๋ ์์ผ Container๋ฅผ ๊ตฌ๋ ์์ผ ์ฃผ์์ด์.
๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ํด๋น Docker Container Host OS IP์ฃผ์์ Container์ ์ค์ ํ Port ๋ฒํธ๋ฅผ ํตํด ์ ์ํ ์ ์์ด์.
์ต์ด ์ ์์ ์๋ํ๋ฉด ์์ ๊ฐ์ด ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๊พธ๋ผ๊ณ ํ ๊ฑฐ์์.
๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํด ์ค๊ฒ์.
Plugin์ด ๋ฐ๊ฒฌ ๋์๋ค๋ ๊ฒฝ๊ณ ์์.
์ด๋ ๊ณต์์ ์ผ๋ก ์๋ํ๋ธ๊ฐ ์ ๊ณตํ์ง ์๋ Plugin์ธ sonarqube-with-community-branch-plugin์ด ์ค์น๋ ์๋ํ๋ธ๋ฅผ ์ค์นํ๊ธฐ ๋๋ฌธ์ ๋์ค๋ ๊ฒ์ด์์.
I understand the risk๋ฅผ ๋๋ฅด๊ณ ๋์ด ๊ฐ๋๋ค.
์ ์์ ์ผ๋ก ์ค์น๊ฐ ์๋ฃ ๋์์ด์.
๐ฆ ๋ถ๊ฐ ์ค์
์ด๋ฒ์๋ ๋ณด๋ค ํธ๋ฆฌํ ์ฌ์ฉ์ ์ํด ํ๊ธํฉ์ ์ค์นํด ๋ณด๋๋ก ํ ๊ฒ์.
์์ ๊ฐ์ด ์ค์น๋ฅผ ์งํํด ์ค๋๋ค.
์ค์น๊ฐ ์๋ฃ๋๋ฉด Restart Server๋ฅผ ๋๋ฌ ํด๋น Container๋ฅผ ์ฌ๋ถํ
ํด ์ค๋๋ค.
์ด ๋, Container๊ฐ ์ฌ ๋ถํ
๋๋ ๊ฒ์ด์ง Host ์ฅ๋น๊ฐ ์ฌ๋ถํ
๋๋ ๊ฒ์ ์๋์์.
์ฌ๋ถํ
์ด ๋๊ณ ๋๋ฉด ์ด๋ ๊ฒ Login์ฐฝ์ด ๋ค์ ๋ณด์ผํ
๋ฐ, ๋ฒ์จ ํ๊ธ์ด ๋ณด์ด๋ ๊ฑฐ ๋ณด์ด์๋์?
์ด๋ ๊ฒ ํ๊ธํฉ๊น์ง ์ด๊ธฐ ์ค์ ์ ๋ชจ๋ ๋ง๋ฌด๋ฆฌ ํ์์ด์.
๐ง ์ฐธ๊ณ ์๋ฃ
https://junyharang.tistory.com/368