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

์ „์ฒด ๊ธ€

(39)
[CI/CD] ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ - CI/CD๋ฅผ ์œ„ํ•œ Dockerfile ์ž‘์„ฑํ•˜๊ธฐ ๐Ÿ“– ๋ชฉ์ฐจ ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ GitHub Actions๋ฅผ ํ™œ์šฉํ•ด CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•ด ๋ณด์•˜๋‹ค.[CI/CD] ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ - GitHub Actions๋ฅผ ํ†ตํ•œ CI/CD ๊ตฌ์ถ•ํ•˜๊ธฐ - (2) ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Dockerfile์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๐Ÿ“Œ Dockerfile์ด๋ž€? Dockerfile์€ Docker์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์ž‘์„ฑํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ(์„ค์ •ํŒŒ์ผ)์ด๋‹ค. FROM, RUN, COPY ๋“ฑ์˜ ๋ช…๋ น์–ด๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ์ด ๋ช…๋ น์–ด๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋‹ด์€ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•œ๋‹ค. Dockerfile์„ ์ž‘์„ฑํ•˜๊ธฐ ์ „์—, Dockerfile์„ ์ž‘์„ฑํ•˜๋ฉด ์–ด๋–ค ์žฅ์ ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์ž.1๏ธโƒฃ ์ด..
[Java] Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ObjectMapper ๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.
[Redis] ํ•ญ๊ณต ์˜ˆ๋งค ์„œ๋น„์Šค - ํ•ญ๊ณต๊ถŒ ์˜ˆ๋งค ๋™์‹œ์„ฑ ์ด์Šˆ ํ•ด๊ฒฐ์„ ์œ„ํ•œ Redisson ๋ถ„์‚ฐ ๋ฝ ์ ์šฉ ๐Ÿ“– ๋ชฉ์ฐจ Spring Boot MSA ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ญ๊ณต๊ถŒ ํ‹ฐ์ผ“ํŒ… ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋˜ ์ค‘, ํ•ญ๊ณต๊ถŒ ์˜ˆ๋งค ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋™์‹œ์„ฑ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐ์—ด ์„œ๋น„์Šค์— Redis์˜ Redisson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ๋ถ„์‚ฐ ๋ฝ์„ ์ ์šฉํ–ˆ๋‹ค. ์ดˆ๊ธฐ ๊ตฌํ˜„ ๋‹น์‹œ ๋Œ€๊ธฐ์—ด ์„œ๋น„์Šค๊ฐ€ ์‚ฌ์šฉ์ž ์š”์ฒญ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์žˆ์—ˆ์ง€๋งŒ,'๋Œ€๊ธฐ์—ด ์„œ๋น„์Šค์— ์ ์šฉ๋œ ๋™์‹œ์„ฑ ์ œ์–ด๊ฐ€ ํ•ญ๊ณตํŽธ ์„œ๋น„์Šค์—์„œ์˜ ์ขŒ์„ ์ˆ˜๊นŒ์ง€ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด์žฅํ•ด ์ค„ ์ˆ˜ ์žˆ์„๊นŒ?'๋ผ๋Š”์˜๋ฌธ์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉด์„œ ์„œ๋น„์Šค ๊ฐ„ ๋™์‹œ์„ฑ ์ œ์–ด์˜ ์ฑ…์ž„ ๋ถ„๋ฆฌ์— ๋Œ€ํ•œ ๋ฌธ์ œ์ ์„ ์ธ์‹ํ•˜์—ฌ ๊ฐœ์„ ํ•˜๋Š” ๊ณผ์ •์„ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค. ๐Ÿ“Œ ๋Œ€๊ธฐ์—ด ์„œ๋น„์Šค์—๋งŒ ์ ์šฉ๋œ ๋™์‹œ์„ฑ ์ œ์–ด์— ์˜๋ฌธ์„ ๊ฐ€์ง€๊ณ„ ๋œ ๊ณ„๊ธฐ ํ•ญ๊ณตํŽธ ์˜ˆ๋งค ์„œ๋น„์Šค์˜ ๊ธฐ๋ณธ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 1๏ธโƒฃ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ญ๊ณตํŽธ ์˜ˆ์•ฝ ์š”์ฒญ2๏ธโƒฃ ๋Œ€๊ธฐ์—ด ..
[Redis] Redis Cache ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™” ์˜ค๋ฅ˜์˜ ๋ฐœ์ƒ๊ณผ ํ•ด๊ฒฐ ๐Ÿ“– ๋ชฉ์ฐจ ํ•ญ๊ณต๊ถŒ ํ‹ฐ์ผ“ํŒ… ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋˜ ์ค‘, ํ•ญ๊ณต๊ถŒ ์กฐํšŒ ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด Redis Cache๋ฅผ ์ ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.ํ•˜์ง€๋งŒ, ์บ์‹œ๋ฅผ ์ €์žฅํ•ด์„œ ๊บผ๋‚ด์˜ค๋Š” ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.์–ด๋–ค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ๊ณผ์ •์„ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค. ๐Ÿ“Œ Redis Cache๋ฅผ ์ ์šฉํ•˜๊ฒŒ ๋œ ์ด์œ  ์šฐ์„  Spring Boot MSA ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜์œผ๋กœ ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์—๋„ ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ์˜€๊ณ , ๊ทธ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ํ•ญ๊ณต๊ถŒ ์˜ˆ๋งค ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ด๋•Œ, ๋Œ€๊ธฐ์—ด๊ณผ ์˜ˆ์•ฝ ์„œ๋น„์Šค ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ํ•ญ๊ณตํŽธ API(Amadeus API)๋ฅผ ์—ฐ๋™ํ•œ ํ†ตํ•ฉ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ฌธ์ œ์ ์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๐Ÿ’ก Jmeter๋ฅผ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณธ..
[Redis] ์Œ์‹ ์ฃผ๋ฌธ ๊ด€๋ฆฌ ํ”Œ๋žซํผ - Redis์™€ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํ™œ์šฉํ•œ ๋ฆฌ๋ทฐ ํ‰์  ๊ตฌํ˜„ ๐Ÿ“– ๋ชฉ์ฐจ Spring Boot๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ '์Œ์‹ ์ฃผ๋ฌธ ๊ด€๋ฆฌ ํ”Œ๋žซํผ'์„ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.์Œ์‹์ ๊ณผ ๋ฆฌ๋ทฐ ๋„๋ฉ”์ธ์„ ๋งก์•„ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ,๊ฐ€๊ฒŒ ์กฐํšŒ ์‹œ ๋ฆฌ๋ทฐ์˜ ํ‰์ ๊ณผ ๊ฐœ์ˆ˜๊ฐ€ ํ•จ๊ป˜ ์กฐํšŒ๋˜์–ด์•ผ ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ์—ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ๊ณ ๋ฏผ์„ ๊ฑฐ์ณ ๋ฆฌ๋ทฐ ํ‰์ ๊ณผ ๋ฆฌ๋ทฐ ๊ฐœ์ˆ˜๋ฅผ N+1 ๋ฌธ์ œ์—†์ด ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค.์–ด๋–ค ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋Š”์ง€์™€ ๊ทธ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ์š”๊ตฌ์‚ฌํ•ญ ์ด ํ”„๋กœ์ ํŠธ์˜ ํ•„์ˆ˜ ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณด๋ฉด, ๊ฐ€๊ฒŒ ๋ชฉ๋ก์„ ์กฐํšŒ ์‹œ ํ‰์ ์„ ๋…ธ์ถœํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋˜์–ด์žˆ๋‹ค.์ฒ˜์Œ์— ๊ธฐ๋Šฅ๋งŒ ์ƒ๊ฐํ•˜๊ณ  ๊ตฌํ˜„์„ ํ•˜๋‹ค ๋ณด๋‹ˆ ๊ฐ€๊ฒŒ๋ฅผ ์ƒ์„ธ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•ด์„œ ๊ฐ€๊ฒŒ ๋ชฉ๋ก์„ ์กฐํšŒํ•  ๋•Œ, ๋ฆฌ๋ทฐ ์ˆ˜์™€ ํ‰์ ์„ ๊ทธ๋•Œ๊ทธ๋•Œ ๊ณ„์‚ฐํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๋„๋ก ๋กœ์ง์„ ์ž‘์„ฑํ–ˆ๋‹ค.๐Ÿ’ก ๋ฆฌ๋ทฐ ๋ฐ ..
[CI/CD] ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ - GitHub Actions๋ฅผ ํ†ตํ•œ CI/CD ๊ตฌ์ถ•ํ•˜๊ธฐ - (2) ๐Ÿ“– ๋ชฉ์ฐจ    ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ CI/CD๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.[CI/CD] ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ - GitHub Actions๋ฅผ ํ†ตํ•œ CI/CD ๊ตฌ์ถ•ํ•˜๊ธฐ - (1)  ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ…๊ณผ ๋”๋ถˆ์–ด GitHub Actions๋ฅผ ํ™œ์šฉํ•ด ์ง์ ‘ CI/CD๋ฅผ ๊ตฌ์ถ•ํ•ด ๋ณด์ž.       ๐Ÿ“Œ  GitHub์—์„œ ์„ค์ •ํ•˜๊ธฐ  ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊นƒํ—ˆ๋ธŒ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์—ฐ๊ฒฐํ•ด ์ฃผ๊ฑฐ๋‚˜ ๊นƒํ—ˆ๋ธŒ์—์„œ ๋ฐ”๋กœ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ด๋„ ๋œ๋‹ค.  ๊นƒํ—ˆ๋ธŒ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋‚˜์˜ค๋Š” ํŽ˜์ด์ง€์—์„œ Actions ํƒญ์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ creating new file์„ ์„ ํƒ ํ›„ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€์ค€๋‹ค. Actions ํƒญ์„ ์„ ํƒํ•˜๋ฉด ํ…œํ”Œ๋ฆฟ์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ€๊ณ , creating n..
[CI/CD] ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ - GitHub Actions๋ฅผ ํ†ตํ•œ CI/CD ๊ตฌ์ถ•ํ•˜๊ธฐ - (1) ๐Ÿ“– ๋ชฉ์ฐจ    ๊ฐœ์ธ์ ์œผ๋กœ SpringBoot๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.์ด์ปค๋จธ์Šค ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์‹œ๊ฐ„ ์ƒ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด์ง€ ๋ชปํ–ˆ๋˜ ๋ถ€๋ถ„์„ ์œ„์ฃผ๋กœ ์ง„ํ–‰ํ•  ์˜ˆ์ •์ด๋‹ค.์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” CI/CD๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.       ๐Ÿ“Œ  CI/CD๋ž€?  CI/CD๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ธ ๋ฐฐํฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” Continuous Integration(์ง€์†์  ํ†ตํ•ฉ)๊ณผ Continuous Delivery/Deployment(์ง€์†์  ์ „๋‹ฌ/๋ฐฐํฌ)์˜ ์•ฝ์ž์ด๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ˆœ๊ฐ„๊นŒ์ง€์˜ ๋ชจ๋“  ๊ณผ์ •์„ ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค. โœ”๏ธ CI(์ง€์†์  ํ†ตํ•ฉ)๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ž์ฃผ ๋ณ‘ํ•ฉํ•˜๊ณ , ..
[Docker] Docker๋กœ Tomcat ์‹คํ–‰ํ•˜๊ธฐ ๐Ÿ“– ๋ชฉ์ฐจ    ์ง€๋‚œ๋ฒˆ ํฌ์ŠคํŒ…์—์„œ Docker์™€ Docker๋กœ MySQL์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.[Docker] Docker๋กœ MySQL ์‹คํ–‰ํ•˜๊ธฐ [Docker] Docker๋กœ MySQL ์‹คํ–‰ํ•˜๊ธฐ๐Ÿ“– ๋ชฉ์ฐจ   ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๊ฐ€ MySQL ์„ค์ •์„ ์ด๊ฒƒ์ €๊ฒƒ ๋ณ€๊ฒฝํ•ด ๋ณด์•˜๋‹ค.์ดํ›„, ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์„ค์ •์„ ๋‹ค์‹œ ๋ฐ”๊ฟ”์•ผ ํ•ด์„œ ๋ถˆํŽธํ–ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ๋‹ค.์„ค์ •์„ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•ด์•ผzzudev.tistory.com ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Docker๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์—,Docker๋ฅผ ์ด์šฉํ•˜์—ฌ ํ†ฐ์บฃ(Tomcat)์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.             ๐Ÿ“Œ  ํ†ฐ์บฃ(Tomcat) ๋ฒ„์ „ ํ™•์ธ  Docker๋Š” ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฐ€์ • ํ•˜์—, ํ†ฐ์บฃ(Tomcat) ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰..