
์ฐ๋ฆฌ๋ National Settlement Depository์ DPO ์์คํ (Alameda ์ํ์ ๋ฐ ์ฒญ์ฐ ํ๊ณ ์์คํ ์ ์ถ๊ฐ)์ ๊ธฐ์กด ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๋ํ ์ฝ๋ ํ์ง์ ์ง์์ ์ธ ๋ถ์ ๋ฐ ์ธก์ ์ ์ํด SonarQube ํ๋ซํผ์ ๊ตฌํํ ๊ฒฝํ์ ๊ณต์ ํ๊ณ ์ถ์ต๋๋ค.
๊ตญ๋ฆฝ๊ฒฐ์ ์ํ์(๋ชจ์คํฌ๋ฐ ๊ฑฐ๋์ ๊ธฐ์ ๊ทธ๋ฃน)๋ ๊ธ์ต ์ธํ๋ผ์ ํต์ฌ ๊ธฐ์ ์ค ํ๋๋ก 50์กฐ ๋ฃจ๋ธ์ด ๋๋ ๋ฌ์์ ๋ฐ ์ธ๊ตญ ๋ฐํ์ธ์ ์ฆ๊ถ์ ๋ณด๊ดํ๊ณ ํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค. ์์คํ ์์ ์ํ๋๋ ์์ ๋์ด ์ฆ๊ฐํ๊ณ ๊ธฐ๋ฅ์ด ์ง์์ ์ผ๋ก ํ์ฅ๋จ์ ๋ฐ๋ผ ์์คํ ์ ๊ณ ํ์ง ์์ค ์ฝ๋๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค. ์ด ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํ ํ ๊ฐ์ง ๋๊ตฌ๋ SonarQube ์ ์ ๋ถ์๊ธฐ์ ๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ์ฐ๋ฆฌ ๋ถ์์ ๊ธฐ์กด ๊ฐ๋ฐ ํ๋ก์ธ์ค์ SonarQube ์ ์ ๋ถ์๊ธฐ๋ฅผ ์ํํ๊ฒ ๊ตฌํํ ์ฑ๊ณต์ ์ธ ๊ฒฝํ์ ์ค๋ช ํฉ๋๋ค.
ํ๊ณผ์ ๋ํด ๊ฐ๋ตํ๊ฒ
์ฐ๋ฆฌ์ ์ญ๋์๋ NSD ๊ณ ๊ฐ์ ๋ํ ์ง๋ถ, ์ ์ ๋ฌธ์ ๊ด๋ฆฌ(EDF), ๊ฑฐ๋ ์ ์ฅ์ ๋ฉ์์ง ์ฒ๋ฆฌ(์ฅ์ธ ๊ฑฐ๋ ๋ฑ๋ก), ๊ณ ๊ฐ๊ณผ NSD ๊ฐ์ ์ ์ ์ํธ ์์ฉ ์ฑ๋ ๋ฑ์ ๋ชจ๋์ด ํฌํจ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด์ ํ๋์ ๊ธฐ์ ์ ์ธก๋ฉด์์๋ ์ํํด์ผ ํ ์์ ์ด ๋ง์ต๋๋ค. ์ฐ๋ฆฌ๋ ์์ฒญ์ ๋ฐ๋ผ ์์ ํฉ๋๋ค. ์ด์ ๋ด๋น์์ ์ ์ฒญ์๋ ๋ถ์๊ฐ์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ถ์๊ฐ๋ ๊ณ ๊ฐ์ ์๊ตฌ ์ฌํญ์ ์์งํ๊ณ ์ด๋ฅผ ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ ์ ์ฉํด์ผ ํ๋์ง์ ๋ํ ๋น์ ์ ์ ์ํฉ๋๋ค. ๋ค์์ ํ์ค ๊ณํ์ ๋๋ค. ์ฝ๋ ๊ฐ๋ฐ โ ํ ์คํธ โ ์ํ ์ด์ โ ์์ฐ ํ๋ก์ ๋ํ ์ฝ๋๋ฅผ ์ง์ ๊ณ ๊ฐ์๊ฒ ์ ๋ฌํฉ๋๋ค.
์ SonarQube์ธ๊ฐ?
์ด๋ ์ฝ๋ ํ์ง ๊ด๋ฆฌ๋ฅผ ์ํ ํ๋ซํผ์ ๊ตฌํํ๋ ์ฐ๋ฆฌ ๋ถ์์ ์ฒซ ๋ฒ์งธ ๊ฒฝํ์ ๋๋ค. ์ด์ ์๋ ์ฝ๋ ๊ฒํ ๋ง ์ํํ์ฌ ์๋์ผ๋ก ์ํํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ ๋์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ด ํ๋ก์ธ์ค์ ์๋ํ๊ฐ ํ์ํฉ๋๋ค. ๋ํ ํ์๋ ๋ด๋ถ ๊ฐ๋ฐ ๊ท์ ์ ์ ์์ง ๋ชปํ๊ณ ์ค์๋ฅผ ๋ ๋ง์ด ํ๋ ๊ฒฝํฅ์ด ์๋ ๊ฒฝํ์ด ๋ถ์กฑํ ์ง์๋ ํฌํจ๋์ด ์์ต๋๋ค. ์ฝ๋ ํ์ง์ ์ ์ดํ๊ธฐ ์ํด ์ ์ ๋ถ์๊ธฐ๋ฅผ ๊ตฌํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. SonarQube๋ ์ด๋ฏธ ์ผ๋ถ NSD ์์คํ ์์ ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ๊ธด ์ ํ์ ์ฌ์ง๊ฐ ์์์ต๋๋ค. ์ด์ ์๋ ๋ค๋ฅธ ๋ถ์์ ๋๋ฃ๋ค์ด ์ด๋ฅผ ์ฌ์ฉํ์ฌ Alameda ์์คํ (NSD์ ์์ฒด ์ํ ๋ฐ ์ฒญ์ฐ ํ๊ณ ์์คํ ), CFT(ํ๊ณ ์ ์ง ๊ด๋ฆฌ, ๋์ฐจ๋์กฐํ, ํ์ ๋ฐ ๋ด๋ถ ๋ณด๊ณ ์ค๋น๋ฅผ ์ํ ์ ๋ณด ์์คํ ), ๋ค๋ฅธ ์์คํ . ์คํ์ ์ํด SonarQube ๋ฌด๋ฃ ๋ฒ์ ๋ถํฐ ์์ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ทธ๋ผ ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ๋ก ๋์ด ๊ฐ์๋ค.
๊ตฌํ ํ๋ก์ธ์ค
์ฐ๋ฆฌ๋ ๊ฐ์ง๊ณ ์๋ค.:
- TeamCity์ ์๋ ์์คํ ์กฐ๋ฆฝ;
- GitLab์ ๊ธฐ๋ฅ ๋ธ๋์น์์ ๋ง์คํฐ ๋ธ๋์น๋ก MergeRequest๋ฅผ ํตํด ์ฝ๋๋ฅผ ์ ๋ก๋ํ๋ ํ๋ก์ธ์ค๊ฐ ๊ตฌ์ฑ๋์์ต๋๋ค(GitHub Flow์ ๋ฐ๋ฅธ ๊ฐ๋ฐ ํ๋ก์ธ์ค).
- ์ผ์ ์ ๋ฐ๋ผ DPO ์์คํ ์ ์ฝ๋๋ฅผ ๋ถ์ํ๋๋ก ๊ตฌ์ฑ๋ SonarQube.
์ฐ๋ฆฌ์ ๋ชฉํ: DPO์ CI/CD ํ๋ก์ธ์ค์ ์๋ ์ฝ๋ ๋ถ์์ ๊ตฌํํฉ๋๋ค.
๊ตฌ์ฑํด์ผ ํจ: ๋ฉ์ธ ๋ธ๋์น์ ๋ํ ๊ฐ MergeRequest์ ํจ๊ป ์ ์ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์๋์ผ๋ก ํ์ธํ๋ ํ๋ก์ธ์ค์ ๋๋ค.
์ ๊ฒ๋ค. ๋์ ๊ทธ๋ฆผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ฅ ๋ถ๊ธฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๋ก๋ํ์๋ง์ ์ฝ๋์ ์๋ก์ด ์ค๋ฅ์ ๋ํ ์๋ ๊ฒ์ฌ๊ฐ ์์๋ฉ๋๋ค. ์ค๋ฅ๊ฐ ์์ผ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ์น์ธ๋๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅ๋ฅผ ์์ ํด์ผ ํฉ๋๋ค. ์ด๋ฏธ ์ด๊ธฐ ๋จ๊ณ์์ ์ฐ๋ฆฌ๋ ์ฝ๋์์ ํน์ ์์ ์ค๋ฅ๋ฅผ ์๋ณํ ์ ์์์ต๋๋ค. ์์คํ ์๋ ๋งค์ฐ ์ ์ฐํ ์ค์ ์ด ์์ต๋๋ค. ๊ฐ๋ฐ์์ ํน์ ์์ , ๊ฐ ์์คํ ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ์ ๋ง๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
SonarQube์์ QualityGate ์ค์
QualityGate ๋ถ์์ ์ฐ๋ฆฌ๊ฐ ์ธํฐ๋ท ๊น์ด์์ ์ฝ์ ๋ด์ฉ์ ๋๋ค. ์ฒ์์ ์ฐ๋ฆฌ๋ ๋ ๋ณต์กํ๊ณ ์ด๋ค ๋ฉด์์๋ ์์ ํ ์ ํํ์ง ์์ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ต๋๋ค. ๋จผ์ SonarQube๋ฅผ ํตํด ์ค์บ์ ๋ ๋ฒ ์คํํ์ต๋๋ค. ๊ธฐ๋ฅ ๋ธ๋์น์ ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ๋ณํฉํ ๋ธ๋์น๋ฅผ ์ค์บํ ํ ์ค๋ฅ ์๋ฅผ ๋น๊ตํ์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์์ ์ ์ด์ง ์์์ผ๋ฉฐ ํญ์ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป์ง ๋ชปํ์ต๋๋ค. ๊ทธ๋ฌ๋ค๊ฐ SonarQube๋ฅผ ๋ ๋ฒ ์คํํ๋ ๋์ ์ค๋ฅ ์์ ์ ํ์ ์ค์ ํ๊ณ (QualityGate) ์ ๋ก๋ํ ๋ธ๋์น๋ง ๋ถ์ํ์ฌ ๋น๊ตํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.

ํ์ฌ ์ฐ๋ฆฌ๋ ์ฌ์ ํ ๋ค์ ์์์ ์ธ ์ฝ๋ ๊ฒํ ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. SonarQube๋ Delphi๋ฅผ ํฌํจํ ์ผ๋ถ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํธํ๋์ง ์์ต๋๋ค. ํ์ฌ๋ ์ฐ๋ฆฌ ์์คํ ์ PLSql ์ฝ๋๋ง ๋ถ์ํฉ๋๋ค.
๊ทธ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค :
- ์ฐ๋ฆฌ๋ ํ๋ก์ ํธ์ PL/SQL ์ฝ๋๋ง ๋ถ์ํฉ๋๋ค.
- SonarQube์๋ ์ปค๋ฐ์ผ๋ก ์ธํด ์ค๋ฅ ์๊ฐ ์ฆ๊ฐํ์ง ์๋๋ก QualityGate๊ฐ ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
- ์ฒซ ๋ฒ์งธ ์คํ ์ ์ค๋ฅ ์๋ 229์์ต๋๋ค. ์ปค๋ฐ ์ค์ ๋ ๋ง์ ์ค๋ฅ๊ฐ ์์ผ๋ฉด ๋ณํฉ์ด ํ์ฉ๋์ง ์์ต๋๋ค.
- ๋ํ, ์ค๋ฅ๊ฐ ์์ ๋๋ฉด QualityGate๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ง๋๋ค.
- ํ ์คํธ๋ฅผ ํตํ ์ฝ๋ ์ ์ฉ ๋ฑ ๋ถ์์ ์ํ ์๋ก์ด ํฌ์ธํธ๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
์ ๋ฌด ๊ณํ :

์คํฌ๋ฆฝํธ์ ์ฃผ์์ ๊ธฐ๋ฅ ๋ถ๊ธฐ์ ์ค๋ฅ ์๊ฐ ์ฆ๊ฐํ์ง ์์์์ ๋ณด์ฌ์ค๋๋ค. ๊ทธ๋์ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ต๋๋ค.

๋ณํฉ ๋ฒํผ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.

์คํฌ๋ฆฝํธ์ ์ฃผ์์์ ๊ธฐ๋ฅ ๋ถ๊ธฐ์ ์ค๋ฅ ์๊ฐ ํ์ฉ ๊ฐ๋ฅํ ๊ฒ๋ณด๋ค ๋ง์์ก์์ ์ ์ ์์ต๋๋ค. ๊ทธ๋์ ๋ชจ๋ ๊ฒ์ด ๋์๋ค.

๋ณํฉ ๋ฒํผ์ ๋นจ๊ฐ์์ ๋๋ค. ํ์ฌ ์๋ชป๋ ์ฝ๋๋ก ์ธํ ๋ณ๊ฒฝ ์ฌํญ ์ ๋ก๋๋ฅผ ๊ธ์งํ๋ ๊ฒ์ ์๋์ง๋ง ์ด๋ ๋ด๋น ๊ฐ๋ฐ์์ ์ฌ๋์ ๋ฐ๋ผ ์ํ๋ฉ๋๋ค. ์์ผ๋ก๋ ์ด๋ฌํ ์ปค๋ฐ์ด ๊ธฐ๋ณธ ๋ถ๊ธฐ์ ์ถ๊ฐ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.

์ค๋ฅ์ ๋ํ ๋ ๋ฆฝ์ ์ธ ์์
๋ค์์ผ๋ก, SonarQube๋ ์๊ฒฉํ ๊ธฐ์ค์ ๋ฐ๋ผ ๋ถ์ํ๊ธฐ ๋๋ฌธ์ ์์คํ ์์ ๊ฐ์ง๋ ๋ชจ๋ ์ค๋ฅ๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค. ๊ทธ๊ฐ ์ค๋ฅ๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ ์ค์ ๋ก ์ฐ๋ฆฌ ์ฝ๋์์๋ ์ค๋ฅ๊ฐ ์๋ ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ด ์ค์ ๋ก ์ค๋ฅ์ธ์ง, ์๋๋ฉด ๋น์ฌ์ ์กฐ๊ฑด์์ ์์ ํ ํ์๊ฐ ์๋์ง ํ์ธํ๊ณ ๋ฉ๋ชจํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ค๋ฅ ์๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์์คํ ์ ์ด๋ฌํ ๋์์ค๋ฅผ ์ดํดํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค.
์ฐ๋ฆฌ๋ ๋ฌด์์ ์๋๊ฐ
์ฐ๋ฆฌ์ ๋ชฉํ๋ ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ์ฝ๋ ๊ฒํ ๋ฅผ ์๋ํ๋ก ์ ํํ๋ ๊ฒ์ด ๋ฐ๋์งํ์ง ์ดํดํ๋ ๊ฒ์ด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ ๊ธฐ๋์ ๋ถ์ํ์ต๋๋ค. SonarQube๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ํ ์ธ์ด๋ก ์์ ํ ์ ์๊ณ ์๋นํ ์ ๋ฅํ ๋ถ์์ ์ํํ๋ฉฐ ๊ฐ๋ฐ์ ํ์์ ๋ฐฐ์ธ ์ ์๋ ์ ์ฌ๋ ฅ์ด ์์ต๋๋ค. ์ ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ SonarQube๋ฅผ ์ฌ์ฉํ ์ฒซ ๊ฒฝํ์ ๋ง์กฑํ๋ฉฐ ์ด ๋ฐฉํฅ์ผ๋ก ๋์ฑ ๋ฐ์ ํ ๊ณํ์ ๋๋ค. ์์ผ๋ก๋ ์ฝ๋ ๊ฒํ ์ ๋ ๋ง์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ ์ฝํ๊ณ ์ธ์ ์์๋ฅผ ์ ๊ฑฐํ์ฌ ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค. ์๋ง๋ ๊ทธ ๊ณผ์ ์์ ์ฐ๋ฆฌ๋ ํ๋ซํผ์ ๋จ์ ์ ๋ฐ๊ฒฌํ๊ฒ ๋ ๊ฒ์ด๊ณ , ๋ฐ๋๋ก ์ด๊ฒ์ด ํฐ ์ ์ฌ๋ ฅ์ ์ง๋ ๋ฉ์ง ์ผ์ด๋ผ๋ ๊ฒ์ ๋ค์ ํ๋ฒ ํ์ ํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ด ๋ฆฌ๋ทฐ ๊ธฐ์ฌ์์ ์ฐ๋ฆฌ๋ SonarQube ์ ์ ๋ถ์๊ธฐ์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค. ์ง๋ฌธ์ด ์์ผ์๋ฉด ๋๊ธ์ ์ ์ด์ฃผ์ธ์. ์ด ์ฃผ์ ์ ๊ด์ฌ์ด ์๋ค๋ฉด ์ ์ถํ๋ฌผ์์ ๋ชจ๋ ๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๊ณ ์ด๋ฌํ ๊ฒ์ฌ๋ฅผ ์ํํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์ค๋ช ํ ๊ฒ์ ๋๋ค.
ํ ์คํธ ์์ฑ์:
์ถ์ฒ : habr.com
