๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‘พ Server/๐Ÿญ ๋ฐฐํฌ4

[์˜์‚ฌ ๊ฒฐ์ •] SonarCloud๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ์— ์ •์  ๋ถ„์„์„ ํ•˜๊ธฐ๊นŒ์ง€ ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด๋‚˜ ์˜๊ฒฌ ์žˆ๋‹ค๋ฉด ํŽธํ•˜๊ฒŒ ๋ง์”€ํ•ด์ฃผ์„ธ์š” ๐Ÿ™๐Ÿป ์ƒํ™ฉ, ์‚ฌ๊ฑด์˜ ๊ฐœ์š” ์ƒํ™ฉ 5๋ช…์ด ๋ชจ์—ฌ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ€์›์ด ํ•จ๊ป˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ˆ ๋ฌธ์ œ๋“ค์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ 1. ์ž‘์€ ์‹ค์ˆ˜(์˜คํƒ€, ์ œ๊ฑฐํ•˜์ง€ ๋ชปํ•œ ์ธ๋ผ์ธ ์ฃผ์„...)๋Š” ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•œ๋‹ค. 2. ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ–ˆ์Œ์—๋„ ์ฝ”๋“œ ์Šคํƒ€์ผ, ์ปจ๋ฐด์…˜ ํ†ต์ผ์ด ์ž˜ ์•ˆ ๋œ๋‹ค. 3. ์ฝ”๋“œ ๋ฆฌ๋ทฐ์—์„œ ๋ฐœ๊ฒฌํ•˜์ง€ ์ž‘์€ ์‹ค์ˆ˜๋“ค์ด ๋ชจ์—ฌ Code Smells์ด ๋” ์ง™์–ด์ง„๋‹ค. 4. ์ž‘์„ฑํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋‚˜ ๋” ์ข‹์€ ํŒจํ„ด์ด ์กด์žฌํ•œ๋‹ค. ์žฌ๋ฐœ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ์กฐ์น˜ ํ•ญ๋ชฉ ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์€ ์–ด๋–จ๊นŒ? ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์ž๋™ํ™”ํ•ด๋ณด์ž! ์ •์  ์ฝ”๋“œ ๋ถ„์„์ด๋ž€? ์ •์  ์ฝ”๋“œ ๋ถ„์„(static code analysis)์€ ๋ง ๊ทธ๋Œ€๋กœ ์ •์ ์œผ๋กœ ์ฝ”.. 2022. 8. 7.
Git Submodules๋ฅผ ํ™œ์šฉํ•œ secret, config ํŒŒ์ผ ๊ด€๋ฆฌ, ๋ฐฐํฌ (feat. SpringBoot, GitHub Actions) ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด๋‚˜ ๋‹ค๋ฅธ ์˜๊ฒฌ ์žˆ๋‹ค๋ฉด ํŽธํ•˜๊ฒŒ ๋ง์”€ํ•ด์ฃผ์„ธ์š” ๐Ÿ™๐Ÿป ์ด์ „ ๊ธ€ secret, config ํŒŒ์ผ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ• ์†Œ๊ฐœ(feat. SpringBoot์˜ application.*) ์—์„œ ์†Œ๊ฐœํ•œ ๋ฐฉ๋ฒ• 3 : Git Submodules๋ฅผ ํ™œ์šฉํ•œ ๋ฐฉ๋ฒ• ์˜ˆ์ œ๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค. Git Submodules Git Submodules๋ž€ ์ €์žฅ์†Œ ์•ˆ์— ๋‹ค๋ฅธ ์ €์žฅ์†Œ๋ฅผ ์›ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณต์ œํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด A,B ํ”„๋กœ์ ํŠธ์—์„œ ๊ณตํ†ต๋˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์„ค์ • ๊ฐ’ ๋“ฑ) C๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. A,B,C ๋ชจ๋‘ ์ €์žฅ์†Œ์ด๋‹ค. ์ด๋•Œ A, B ์ €์žฅ์†Œ์— C ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ A,B ์ €์žฅ์†Œ์— C๋ฅผ ์„œ๋ธŒ ๋ชจ๋“ˆ๋กœ ๋‘์–ด ๊ณตํ†ต๋˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. C๊ฐ€ ์ˆ˜์ •๋˜๋ฉด A,B ๋ชจ๋‘ ์ˆ˜์ •๋œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (์ƒํ™œ ์ฝ”๋”ฉ : .. 2022. 7. 2.
secret, config ํŒŒ์ผ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ• ์†Œ๊ฐœ(feat. SpringBoot์˜ application.*) ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด๋‚˜ ๋‹ค๋ฅธ ์˜๊ฒฌ ์žˆ๋‹ค๋ฉด ํŽธํ•˜๊ฒŒ ๋ง์”€ํ•ด์ฃผ์„ธ์š” ๐Ÿ™๐Ÿป ๋“ค์–ด๊ฐ€๋ฉฐ SpringBoot ํ”„๋กœ์ ํŠธ๋ฅผ GitHub public repo์—์„œ ์ž‘์—… ํ›„ ๋ฐฐํฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. SpringBoot์˜ ์„ค์ • ํŒŒ์ผ์€ application.* ๋˜๋Š” DB ์ดˆ๊ธฐ ์„ค์ •์„ ์œ„ํ•œ. sql ๋“ฑ์ด ์žˆ๋‹ค. application.* ํŒŒ์ผ์—๋Š” DB ์ ‘์† ์ •๋ณด(url, username, password)๋‚˜ secret key ๊ด€๋ฆฌ ๋“ฑ ๋งŽ์€ ํŒŒ์ผ์ด ๋“ค์–ด์žˆ๋‹ค. ์ด๋ฅผ public repo์— ๊ณต๊ฐœํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์™ธ๋ถ€ ๋…ธ์ถœ์„ ๋ง‰๊ณ  ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž ๋ฐฉ๋ฒ• ๋ฐฉ๋ฒ• 1 : ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ application.* ์„ค์ • ํŒŒ์ผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์™ธ๋ถ€ ์ €์žฅ์†Œ ๋…ธ์ถœ์„ ๋ง‰๊ธฐ ์œ„ํ•ด. gitignore ์„ค์ •, ๋ฐฐํฌ ์‹œ application.yml.. 2022. 7. 1.
Mockup API Server ํ™œ์šฉ๊ณผ Postman Mock server ์‚ฌ์šฉ (๋„์ž… ์ด์œ ์™€ ๊ธฐ์ˆ  ๋น„๊ต) Mockup API Server Mockup(๋ชจํ˜•) API Server(Mock API๋ผ๊ณ ๋„ ํ•จ)๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ€์งœ API ์„œ๋ฒ„์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ์‹ค์ œ ์„œ๋ฒ„์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๋ฏธ๋ฆฌ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ๋Œ๋ ค์ฃผ๋Š” ํ˜•ํƒœ์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด ์ด๋Š” ๊ฐ€์งœ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด ์‹ค์ œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. Mockup API ๋„์ž… ์ด์œ  ์ƒํ™ฉ Todo App ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ธฐํš์„œ๋งŒ ์ฃผ์–ด์กŒ๋‹ค. API, DB ์„ค๊ณ„ํ•  ์‹œ๊ฐ„ ์—†์ด ๋™์‹œ์— ํด๋ผ์ด์–ธํŠธ(์•ˆ๋“œ๋กœ์ด๋“œ), ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ด ์‹œ์ž‘๋๋‹ค. ๋ฌธ์ œ API, DB ์„ค๊ณ„์•ˆ ์—†์ด ์‹œ์ž‘ํ•˜๋‹ค ๋ณด๋‹ˆ ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ์ž๋Š” ๋‹จ์ˆœ view, ๋””์ž์ธ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. API ์„œ๋ฒ„๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฐฑ์—”๋“œ ์ž…์žฅ์—์„œ ๋‹น์žฅ API ์„œ๋ฒ„๋ฅผ ์ œ.. 2022. 4. 5.