"๋‚ด ์ž…์žฅ์—์„œ ๊ฑท๊ธฐ" - ์ž ๊น, ํ‘œ์‹œ๊ฐ€ ๋˜์–ด ์žˆ๋‚˜์š”?

2019๋…„๋ถ€ํ„ฐ ๋Ÿฌ์‹œ์•„์—๋Š” ์˜๋ฌด ๋ผ๋ฒจ๋ง์— ๊ด€ํ•œ ๋ฒ•๋ฅ ์ด ์ œ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ•์€ ๋ชจ๋“  ์ƒํ’ˆ ๊ทธ๋ฃน์— ์ ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์ƒํ’ˆ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์˜๋ฌด ํ‘œ์‹œ์˜ ๋ฐœํšจ์ผ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์˜๋ฌดํ‘œ์‹œ ๋Œ€์ƒ ํ’ˆ๋ชฉ์€ ๋‹ด๋ฐฐ, ์‹ ๋ฐœ, ์˜์•ฝํ’ˆ์ด ์šฐ์„ ์ด๊ณ , ํ–ฅ์ˆ˜, ์„ฌ์œ , ์šฐ์œ  ๋“ฑ๋„ ์ถ”ํ›„ ์ถ”๊ฐ€๋  ์˜ˆ์ •์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ž…๋ฒ• ํ˜์‹ ์œผ๋กœ ์ธํ•ด ์ตœ์ข… ์†Œ๋น„์ž์˜ ์ƒ์‚ฐ๋ถ€ํ„ฐ ๊ตฌ๋งค๊นŒ์ง€ ์ œํ’ˆ์˜ ์ „์ฒด ๋ผ์ดํ”„ ์ฒด์ธ์„ ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ์ฐธ์—ฌ์ž(๊ตญ๊ฐ€ ์ž์ฒด ๋ฐ ์ œํ’ˆ์„ ํŒ๋งคํ•˜๋Š” ๋ชจ๋“  ์กฐ์ง ๋ชจ๋‘)๊นŒ์ง€ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด IT ์†”๋ฃจ์…˜์ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ๋ผ๋ฒจ๋ง.

X5์—์„œ๋Š” ๋ผ๋ฒจ์ด ๋ถ™์€ ์ƒํ’ˆ์„ ์ถ”์ ํ•˜๊ณ  ์ฃผ ๋ฐ ๊ณต๊ธ‰์—…์ฒด์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ์‹œ์Šคํ…œ์„ "Marcus"๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ, ๋ˆ„๊ฐ€ ๊ฐœ๋ฐœํ–ˆ๋Š”์ง€, ๊ธฐ์ˆ ์Šคํƒ์€ ๋ฌด์—‡์ธ์ง€, ์šฐ๋ฆฌ๊ฐ€ ์ž๋ž‘์Šค๋Ÿฌ์›Œํ•  ๋งŒํ•œ ์ด์œ ๊ฐ€ ์žˆ๋Š”์ง€ ์ˆœ์„œ๋Œ€๋กœ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

"๋‚ด ์ž…์žฅ์—์„œ ๊ฑท๊ธฐ" - ์ž ๊น, ํ‘œ์‹œ๊ฐ€ ๋˜์–ด ์žˆ๋‚˜์š”?

์‹ค์ œ ๊ณ ๋ถ€ํ•˜

"Marcus"๋Š” ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฌธ์ œ๋Š” X5 ์ •๋ณด ์‹œ์Šคํ…œ๊ณผ ๋ผ๋ฒจ๋ง๋œ ์ œํ’ˆ์— ๋Œ€ํ•œ ์ƒํƒœ ์ •๋ณด ์‹œ์Šคํ…œ(GIS MP) ๊ฐ„์˜ ํ†ตํ•ฉ ์ƒํ˜ธ์ž‘์šฉ์œผ๋กœ ๋ผ๋ฒจ๋ง๋œ ์ œํ’ˆ์˜ ์ด๋™์„ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”Œ๋žซํผ์€ ๋‹น์‚ฌ๊ฐ€ ์ˆ˜์‹ ํ•œ ๋ชจ๋“  ๋ผ๋ฒจ๋ง ์ฝ”๋“œ์™€ ๊ฐœ์ฒด ๊ฐ„ ์ด๋Ÿฌํ•œ ์ฝ”๋“œ ์ด๋™์˜ ์ „์ฒด ๋‚ด์—ญ์„ ์ €์žฅํ•˜๊ณ  ๋ผ๋ฒจ๋ง๋œ ์ œํ’ˆ์˜ ๋“ฑ๊ธ‰ ์žฌ์ง€์ •์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ผ๋ฒจ ์ œํ’ˆ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋‹ด๋ฐฐ ์ œํ’ˆ์˜ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋‹จ ํ•œ ํŠธ๋Ÿญ ๋ถ„๋Ÿ‰์˜ ๋‹ด๋ฐฐ์—๋Š” ์•ฝ 600๊ฐ‘์ด ๋“ค์–ด ์žˆ์œผ๋ฉฐ ๊ฐ ๋‹ด๋ฐฐ์—๋Š” ๊ณ ์œ ํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ ์‹œ์Šคํ…œ์˜ ์ž„๋ฌด๋Š” ์ฐฝ๊ณ ์™€ ๋งค์žฅ ๊ฐ„ ๊ฐ ํŒฉ์˜ ์ด๋™์— ๋Œ€ํ•œ ํ•ฉ๋ฒ•์„ฑ์„ ์ถ”์ ํ•˜๊ณ  ํ™•์ธํ•˜๋ฉฐ ๊ถ๊ทน์ ์œผ๋กœ ์ตœ์ข… ๊ตฌ๋งค์ž์—๊ฒŒ ํŒ๋งค๊ฐ€ ํ—ˆ์šฉ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์‹œ๊ฐ„๋‹น ์•ฝ 000๊ฑด์˜ ํ˜„๊ธˆ ๊ฑฐ๋ž˜๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ๊ฐ ํŒฉ์ด ์–ด๋–ป๊ฒŒ ๋งค์žฅ์— ๋“ค์–ด์™”๋Š”์ง€๋„ ๊ธฐ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌผ์ฒด ๊ฐ„์˜ ๋ชจ๋“  ์›€์ง์ž„์„ ๊ณ ๋ คํ•˜๋ฉด ์—ฐ๊ฐ„ ์ˆ˜๋ฐฑ์–ต ๊ฑด์˜ ๊ธฐ๋ก์ด ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

MํŒ€

Marcus๋Š” X5 ๋‚ด์˜ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ„์ฃผ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ œํ’ˆ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ€์€ Scrum์— ๋”ฐ๋ผ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” ์ง€๋‚œ ์—ฌ๋ฆ„์— ์‹œ์ž‘๋˜์—ˆ์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ๊ฒฐ๊ณผ๋Š” 16์›”์—์•ผ ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํŒ€์€ ์™„์ „ํžˆ ๊ตฌ์„ฑ๋˜์—ˆ๊ณ  ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ ์žฅ๋น„๋ฅผ ๊ตฌ์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํŒ€์€ XNUMX๋ช…์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ทธ ์ค‘ XNUMX๋ช…์€ ๋ฐฑ์—”๋“œ ๋ฐ ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ ์ค‘ XNUMX๋ช…์€ ์‹œ์Šคํ…œ ๋ถ„์„์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋™, ๋กœ๋“œ, ์ž๋™ ํ…Œ์ŠคํŠธ ๋ฐ ์ œํ’ˆ ์œ ์ง€ ๊ด€๋ฆฌ์— XNUMX๋ช…์˜ ์ธ๋ ฅ์ด ๋” ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ SRE ์ „๋ฌธ๊ฐ€๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํŒ€์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๋“ค๋งŒ์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์ž๋™ ํ…Œ์ŠคํŠธ, ๋กœ๋“œ ์Šคํฌ๋ฆฝํŠธ ๋ฐ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๊ณ  ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ œํ’ˆ ์ง€์›์—๋„ ๋†’์€ ์ˆ˜์ค€์˜ ์ž๋™ํ™”๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์ด์— ํŠน๋ณ„ํ•œ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฒฝํ—˜์ด ์—†๋Š” ๋™๋ฃŒ๋“ค์—๊ฒŒ ์กฐ์–ธ๊ณผ ๋„์›€์„ ์ฃผ๊ณ ์ž ๋…ธ๋ ฅํ•˜๋ฉฐ, ๊ทธ๋“ค์—๊ฒŒ ์ž‘์€ ์ž‘์—…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋กœ๋‚˜๋ฐ”์ด๋Ÿฌ์Šค ํŒฌ๋ฐ๋ฏน์œผ๋กœ ์ธํ•ด ์šฐ๋ฆฌ๋Š” ํŒ€ ์ „์ฒด๋ฅผ ์›๊ฒฉ ์ž‘์—…์œผ๋กœ ์ „ํ™˜ํ–ˆ์œผ๋ฉฐ, ๊ฐœ๋ฐœ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ชจ๋“  ๋„๊ตฌ์˜ ๊ฐ€์šฉ์„ฑ, Jira ๋ฐ GitLab์˜ ๊ตฌ์ถ•๋œ ์›Œํฌํ”Œ๋กœ ๋•๋ถ„์— ์ด ๋‹จ๊ณ„๋ฅผ ์‰ฝ๊ฒŒ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ์œผ๋กœ ๋ณด๋‚ธ ๋ช‡ ๋‹ฌ ๋™์•ˆ ๊ฒฐ๊ณผ์ ์œผ๋กœ ํŒ€์˜ ์ƒ์‚ฐ์„ฑ์€ ์ €ํ•˜๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ง์žฅ์—์„œ์˜ ํŽธ์•ˆํ•จ์€ ์ฆ๊ฐ€ํ–ˆ์ง€๋งŒ ๋ˆ„๋ฝ๋œ ์œ ์ผํ•œ ๊ฒƒ์€ ์‹ค์‹œ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์›๊ฒฉ ํŒ€ ํšŒ์˜

"๋‚ด ์ž…์žฅ์—์„œ ๊ฑท๊ธฐ" - ์ž ๊น, ํ‘œ์‹œ๊ฐ€ ๋˜์–ด ์žˆ๋‚˜์š”?

์›๊ฒฉ ๊ทผ๋ฌด ์ค‘ ํšŒ์˜

"๋‚ด ์ž…์žฅ์—์„œ ๊ฑท๊ธฐ" - ์ž ๊น, ํ‘œ์‹œ๊ฐ€ ๋˜์–ด ์žˆ๋‚˜์š”?

์†”๋ฃจ์…˜์˜ ๊ธฐ์ˆ  ์Šคํƒ

X5์˜ ํ‘œ์ค€ ์ €์žฅ์†Œ ๋ฐ CI/CD ๋„๊ตฌ๋Š” GitLab์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ์ฝ”๋“œ ์ €์žฅ, ์ง€์†์ ์ธ ํ…Œ์ŠคํŠธ, ํ…Œ์ŠคํŠธ ๋ฐ ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„ ๋ฐฐํฌ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ์— ์ ์šฉํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ตœ์†Œ 2๋ช…์˜ ๋™๋ฃŒ๊ฐ€ ์Šน์ธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ ๊ฒ€ํ†  ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ •์  ์ฝ”๋“œ ๋ถ„์„๊ธฐ์ธ SonarQube์™€ JaCoCo๋Š” ์ฝ”๋“œ๋ฅผ ๊นจ๋—ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ํ•„์š”ํ•œ ์ˆ˜์ค€์˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ ์šฉ ๋ฒ”์œ„๋ฅผ ๋ณด์žฅํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ด๋Ÿฌํ•œ ๊ฒ€์‚ฌ๋ฅผ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋Š” ์ดํ›„์— ์ž๋™ํ™”๋ฉ๋‹ˆ๋‹ค.

"Marcus"์˜ ์„ฑ๊ณต์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ๊ตฌํ˜„์„ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ธฐ์ˆ ์  ๋ฌธ์ œ๋ฅผ ๊ฐ๊ฐ ์ˆœ์„œ๋Œ€๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ณผ์ œ 1. ์‹œ์Šคํ…œ์˜ ์ˆ˜ํ‰์  ํ™•์žฅ์„ฑ์˜ ํ•„์š”์„ฑ

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์„œ๋น„์Šค์˜ ์ฑ…์ž„ ์˜์—ญ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์ด๋ฅผ ๋น„์ฆˆ๋‹ˆ์Šค ์šด์˜์œผ๋กœ ๋‚˜๋ˆ„๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฐฝ๊ณ ์—์„œ์˜ ์ธ์ˆ˜๋Š” ๋นˆ๋ฒˆํ•˜์ง€ ์•Š์ง€๋งŒ ๋งค์šฐ ๋Œ€๊ทœ๋ชจ ์ž‘์—…์ด๋ฏ€๋กœ ํ•œ ๋ฒˆ์˜ ๋ฐฐ์†ก์œผ๋กœ 600000์— ๋„๋‹ฌํ•˜๋Š” ์Šน์ธ๋˜๋Š” ์ƒํ’ˆ ๋‹จ์œ„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ฃผ ๊ทœ์ œ ๊ธฐ๊ด€์œผ๋กœ๋ถ€ํ„ฐ ์‹ ์†ํ•˜๊ฒŒ ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. , ์ด ์ œํ’ˆ์„ ์ฐฝ๊ณ ์— ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ฐฝ๊ณ  ์ž๋™ํ™” ์‹œ์Šคํ…œ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฐฝ๊ณ ์—์„œ์˜ ๋ฐฐ์†ก์€ ํ›จ์”ฌ ๋” ๊ฐ•๋„๊ฐ€ ๋†’์ง€๋งŒ ๋™์‹œ์— ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋กœ ์šด์˜๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ๋ฌด์ƒํƒœ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ฌ์ง€์–ด Kafka ์ž์ฒด ์ฃผ์ œ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ถ€ ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์ž์‹ ์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค ์ง‘์•ฝ์ ์ธ ์ž‘์—…์— ๋Œ€ํ•œ ๋กœ๋“œ ๊ท ํ˜•์„ ๋งž์ถ”๊ณ  ์ œํ’ˆ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‚˜์ค‘์— ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•œ ๋ชจ๋“ˆ์„ ๋ณ„๋„์˜ ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์„œ๋น„์Šค์— ๊ฑฐ์˜ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์˜ API๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

"๋‚ด ์ž…์žฅ์—์„œ ๊ฑท๊ธฐ" - ์ž ๊น, ํ‘œ์‹œ๊ฐ€ ๋˜์–ด ์žˆ๋‚˜์š”?

๋ชจ๋“  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” OpenShift ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌ๋˜์–ด ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™•์žฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ํƒ€์‚ฌ ์„œ๋น„์Šค ๊ฒ€์ƒ‰ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

์ž‘์—… 2. ํ”Œ๋žซํผ ์„œ๋น„์Šค ๊ฐ„ ๋†’์€ ๋กœ๋“œ์™€ ๋งค์šฐ ์ง‘์ค‘์ ์ธ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ํ•„์š”์„ฑ: ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ๋‹จ๊ณ„์—์„œ๋งŒ ์ดˆ๋‹น ์•ฝ 600๊ฐœ์˜ ์ž‘์—…์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์†Œ๋งค์ ์ด ์šฐ๋ฆฌ ํ”Œ๋žซํผ์— ์—ฐ๊ฒฐ๋˜๋ฉด ์ด ๊ฐ’์ด 5000ops/sec๋กœ ์ฆ๊ฐ€ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” Kafka ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ํ”Œ๋žซํผ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ๋™๊ธฐ์‹ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ฑฐ์˜ ์™„์ „ํžˆ ํฌ๊ธฐํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž‘์—…์ด ๋น„๋™๊ธฐ์‹์ผ ์ˆ˜๋Š” ์—†์œผ๋ฏ€๋กœ ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์‹œ์Šคํ…œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋งค์šฐ ์‹ ์ค‘ํ•˜๊ฒŒ ๋ถ„์„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ๋ธŒ๋กœ์ปค๋ฅผ ํ†ตํ•ด ์ด๋ฒคํŠธ๋ฅผ ์ „์†กํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•„์š”ํ•œ ๋ชจ๋“  ๋น„์ฆˆ๋‹ˆ์Šค ์ •๋ณด๋ฅผ ๋ฉ”์‹œ์ง€๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”์‹œ์ง€ ํฌ๊ธฐ๋Š” ์ˆ˜๋ฐฑ ํ‚ฌ๋กœ๋ฐ”์ดํŠธ์— ์ด๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Kafka์˜ ๋ฉ”์‹œ์ง€ ํฌ๊ธฐ ์ œํ•œ์€ ๋ฉ”์‹œ์ง€ ํฌ๊ธฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์˜ˆ์ธกํ•ด์•ผ ํ•˜๋ฉฐ, ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ถ„ํ• ํ•˜์ง€๋งŒ ๋น„์ฆˆ๋‹ˆ์Šค ์šด์˜๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ถ„ํ• ์€ ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์ž๋™์ฐจ์— ๋„์ฐฉํ•œ ๋ฌผํ’ˆ์„ ์ƒ์ž๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ๋™๊ธฐ์‹ ์ž‘์—…์˜ ๊ฒฝ์šฐ ๋ณ„๋„์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ํ• ๋‹น๋˜๊ณ  ์ฒ ์ €ํ•œ ๋กœ๋“œ ํ…Œ์ŠคํŠธ๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. Kafka๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜ ๋‹ค๋ฅธ ๊ณผ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Kafka ํ†ตํ•ฉ์„ ๊ณ ๋ คํ•˜์—ฌ ์„œ๋น„์Šค ์šด์˜์„ ํ…Œ์ŠคํŠธํ•˜๋ฉด ๋ชจ๋“  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ๋น„๋™๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Embedded Kafka Broker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์ฒด ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๊ฐœ๋ณ„ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง€์ง€๋Š” ์•Š์ง€๋งŒ Kafka๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์‚ฌ๋ก€๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์šด์˜ ์ค‘ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ Kafka ๋ฐฐ์น˜ ์ž‘์—… ์‹œ TraceId๊ฐ€ ์†์‹ค๋˜์ง€ ์•Š๋„๋ก ์ถ”์  ๋กœ๊ทธ์— ๋งŽ์€ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์˜€์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์— ํŠน๋ณ„ํ•œ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋ฉด ๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” ์ผ๊ด„ ์ฒ˜๋ฆฌ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๋ชจ๋“  TraceId๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์ถ”์ ์„ ๊ณ„์†ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์›๋ž˜ TraceId๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ์–ด๋–ค ์ถ”์ ์ด ๊ณ„์†๋˜์—ˆ๋Š”์ง€ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—… 3. ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ํ•„์š”์„ฑ: ๋‹ด๋ฐฐ์—๋งŒ ์—ฐ๊ฐ„ 1์–ต ๊ฐœ ์ด์ƒ์˜ ๋ผ๋ฒจ์ด X5์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ง€์†์ ์ด๊ณ  ๋น ๋ฅธ ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด์ ์œผ๋กœ ์‹œ์Šคํ…œ์€ ์ด๋Ÿฌํ•œ ๋ผ๋ฒจ์ด ๋ถ€์ฐฉ๋œ ์ƒํ’ˆ์˜ ์ด๋™ ๊ธฐ๋ก์— ๋Œ€ํ•œ ์•ฝ 10์–ต ๊ฐœ์˜ ๊ธฐ๋ก์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ธ ๋ฒˆ์งธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค MongoDB๊ฐ€ ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 5๊ฐœ์˜ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ์ƒค๋“œ๋ฅผ ๊ตฌ์ถ•ํ–ˆ์œผ๋ฉฐ ๊ฐ ๋…ธ๋“œ์—๋Š” 3๊ฐœ์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋œ ๋ณต์ œ๋ณธ ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์„ ์ˆ˜ํ‰์œผ๋กœ ํ™•์žฅํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์— ์ƒˆ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ์ˆ˜ํ‰์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•˜์—ฌ mongo ํด๋Ÿฌ์Šคํ„ฐ์˜ ํŠธ๋žœ์žญ์…˜์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹น์‚ฌ ์‹œ์Šคํ…œ์˜ ์ž‘์—… ์ค‘ ํ•˜๋‚˜๋Š” ๋™์ผํ•œ ๋ผ๋ฒจ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œํ’ˆ์„ ์žฌํŒ๋งคํ•˜๋ ค๋Š” ์‹œ๋„๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” ๊ณ„์‚ฐ์›์˜ ์ž˜๋ชป๋œ ์Šค์บ”์ด๋‚˜ ์ž˜๋ชป๋œ ์กฐ์ž‘์œผ๋กœ ์˜ค๋ฒ„๋ ˆ์ด๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์ค‘๋ณต์ด ์ฒ˜๋ฆฌ ์ค‘์ธ ํ•˜๋‚˜์˜ Kafka ๋ฐฐ์น˜ ๋‚ด์—์„œ์™€ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๋ฐฐ์น˜ ๋‚ด์—์„œ ๋ชจ๋‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฟผ๋ฆฌํ•˜์—ฌ ์ค‘๋ณต์„ ํ™•์ธํ•ด๋„ ์•„๋ฌด ๊ฒƒ๋„ ์ œ๊ณต๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์ด ์„œ๋น„์Šค์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฌธ์ œ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ˆ˜ํ‘œ์˜ ๊ฒฝ์šฐ ๋ฐฐ์น˜ ๋‚ด๋ถ€์— ์ˆ˜ํ‘œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‚ฝ์ž… ์‹œ ์ค‘๋ณต์ด ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋ณ„๋„ ์ฒ˜๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž์˜ ์šด์˜ ๋‚ด์—ญ ์ž‘์—…์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ, ์ฆ‰ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค์˜ ๊ธฐ๋Šฅ์— ์–ด๋–ค ์‹์œผ๋กœ๋“  ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋‚ด์—ญ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋Š” ๋ณ„๋„์˜ ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ–ˆ์œผ๋ฉฐ, ์ด๋Š” Kafka๋ฅผ ํ†ตํ•ด ์ •๋ณด๋„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. . ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ์ž๋Š” ์ง€์†์ ์ธ ์ž‘์—…์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๊ฒฉ๋ฆฌ๋œ ์„œ๋น„์Šค๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—… 4: ๋Œ€๊ธฐ์—ด ์žฌ์ฒ˜๋ฆฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง:

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋Œ€๊ธฐ์—ด, ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์†Œ์Šค์˜ ๊ฐ€์šฉ์„ฑ ๋ฌธ์ œ์™€ ์˜ค๋ฅ˜๊ฐ€ ํ•„์—ฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Marcus์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜์˜ ์›์ธ์€ ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ์˜ ํ†ตํ•ฉ์ž…๋‹ˆ๋‹ค. ์ง€์ •๋œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ž˜๋ชป๋œ ์‘๋‹ต์— ๋Œ€ํ•œ ๋ฐ˜๋ณต ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๋Š” ๋™์‹œ์— ๊ธฐ๋ณธ ๋Œ€๊ธฐ์—ด์—์„œ ์„ฑ๊ณต์ ์ธ ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ์ค‘๋‹จํ•˜์ง€ ์•Š๋Š” ์†”๋ฃจ์…˜์„ ์ฐพ์•„์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์†Œ์œ„ "์ฃผ์ œ ๊ธฐ๋ฐ˜ ์žฌ์‹œ๋„" ๊ฐœ๋…์ด ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ธฐ๋ณธ ์ฃผ์ œ์— ๋Œ€ํ•ด ์ž˜๋ชป๋œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์žฌ์‹œ๋„ ์ฃผ์ œ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๋™์‹œ์— ๊ธฐ๋ณธ ์ฃผ์ œ์˜ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ์ง€์—ฐ์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ƒํ˜ธ ์ž‘์šฉ ๋ฐฉ์‹ -

"๋‚ด ์ž…์žฅ์—์„œ ๊ฑท๊ธฐ" - ์ž ๊น, ํ‘œ์‹œ๊ฐ€ ๋˜์–ด ์žˆ๋‚˜์š”?

์ด๋Ÿฌํ•œ ์ฒด๊ณ„๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์ด ์†”๋ฃจ์…˜์„ Spring๊ณผ ํ†ตํ•ฉํ•˜๊ณ  ์ฝ”๋“œ ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์›น์„œํ•‘์„ ํ•˜๋˜ ์ค‘ Spring BeanPostProccessor๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์œ ์‚ฌํ•œ ์†”๋ฃจ์…˜์„ ๋ฐœ๊ฒฌํ–ˆ์ง€๋งŒ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฒˆ๊ฑฐ๋กœ์›Œ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํŒ€์€ ์†Œ๋น„์ž ์ƒ์„ฑ์„ ์œ„ํ•ด Spring ์ฃผ๊ธฐ์— ํ†ตํ•ฉํ•˜๊ณ  ์ถ”๊ฐ€๋กœ Retry Consumer๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋” ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Spring ํŒ€์— ์šฐ๋ฆฌ ์†”๋ฃจ์…˜์˜ ํ”„๋กœํ† ํƒ€์ž…์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ ์—ฌ๊ธฐ์—. ์žฌ์‹œ๋„ ์†Œ๋น„์ž ์ˆ˜์™€ ๊ฐ ์†Œ๋น„์ž์— ๋Œ€ํ•œ ์‹œ๋„ ํšŸ์ˆ˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑ๋˜๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•˜๋ ค๋ฉด org.springframework.kafka.annotation.KafkaListener ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋“  Spring ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์นœ์ˆ™ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์žฌ์‹œ๋„ ํ›„์—๋„ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์œผ๋ฉด Spring DeadLetterPublishingRecoverer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DLT(๋ฐ๋“œ ๋ ˆํ„ฐ ์ฃผ์ œ)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ง€์› ์š”์ฒญ์— ๋”ฐ๋ผ ์šฐ๋ฆฌ๋Š” ์ด ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ณ  DLT, stackTrace, TraceId์— ํฌํ•จ๋œ ๋ฉ”์‹œ์ง€ ๋ฐ ์ด์— ๋Œ€ํ•œ ๊ธฐํƒ€ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ณ„๋„์˜ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ชจ๋“  DLT ์ฃผ์ œ์— ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์•Œ๋ฆผ์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ, ์ด์ œ ์‹ค์ œ๋กœ DLT ์ฃผ์ œ์— ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์€ ๊ฒฐํ•จ์„ ๋ถ„์„ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์ œ ์ด๋ฆ„์„ ํ†ตํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์–ด๋Š ๋‹จ๊ณ„์—์„œ ์ฆ‰์‹œ ์ดํ•ดํ•˜๋ฏ€๋กœ ๊ทผ๋ณธ ์›์ธ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ํฌ๊ฒŒ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

"๋‚ด ์ž…์žฅ์—์„œ ๊ฑท๊ธฐ" - ์ž ๊น, ํ‘œ์‹œ๊ฐ€ ๋˜์–ด ์žˆ๋‚˜์š”?

๊ฐ€์žฅ ์ตœ๊ทผ์—๋Š” ์›์ธ์„ ์ œ๊ฑฐ(์˜ˆ: ์™ธ๋ถ€ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ ๋ณต์›)ํ•˜๊ณ  ๋ถ„์„์„ ์œ„ํ•ด ํ•ด๋‹น ๊ฒฐํ•จ์„ ์„ค์ •ํ•œ ํ›„ ์ง€์›์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์‹œ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ž์ฒด ์ฃผ์ œ๊ฐ€ ์œ ์šฉํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค. ๊ธด ์ฒ˜๋ฆฌ ์ฒด์ธ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์›ํ•˜๋Š” ๋‹จ๊ณ„์—์„œ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๋‚ด ์ž…์žฅ์—์„œ ๊ฑท๊ธฐ" - ์ž ๊น, ํ‘œ์‹œ๊ฐ€ ๋˜์–ด ์žˆ๋‚˜์š”?

ํ”Œ๋žซํผ ์šด์˜

ํ”Œ๋žซํผ์€ ์ด๋ฏธ ์ƒ์‚ฐ์ ์œผ๋กœ ์šด์˜๋˜๊ณ  ์žˆ์œผ๋ฉฐ ๋งค์ผ ๋ฐฐ์†ก ๋ฐ ๋ฐฐ์†ก์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ƒˆ๋กœ์šด ์œ ํ†ต ์„ผํ„ฐ์™€ ๋งค์žฅ์„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ๋Ÿฟ์˜ ์ผํ™˜์œผ๋กœ ์‹œ์Šคํ…œ์€ "๋‹ด๋ฐฐ" ๋ฐ "์‹ ๋ฐœ" ์ œํ’ˆ ๊ทธ๋ฃน๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํŒ€ ์ „์ฒด๊ฐ€ ํŒŒ์ผ๋Ÿฟ ์ˆ˜ํ–‰์— ์ฐธ์—ฌํ•˜๊ณ , ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๊ณ , ๋กœ๊ทธ ๊ฐœ์„ ๋ถ€ํ„ฐ ํ”„๋กœ์„ธ์Šค ๋ณ€๊ฒฝ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์ œํ’ˆ ๊ฐœ์„ ์„ ์œ„ํ•œ ์ œ์•ˆ์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ํŒŒ์ผ๋Ÿฟ ๊ณผ์ •์—์„œ ๋ฐœ๊ฒฌ๋œ ๋ชจ๋“  ์‚ฌ๋ก€๋Š” ์ž๋™ํ™” ํ…Œ์ŠคํŠธ์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋‹ค์ˆ˜์˜ ์ž๋™ ํ…Œ์ŠคํŠธ ๋ฐ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋ช‡ ์‹œ๊ฐ„ ๋‚ด์— ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ•ซํ”ฝ์Šค๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์šฐ๋ฆฌ๋Š” ๊ณ„์†ํ•ด์„œ ํ”Œ๋žซํผ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๊ฐœ์„ ํ•˜๋ฉฐ ๋Š์ž„์—†์ด ์ƒˆ๋กœ์šด ๋„์ „์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ๋‹ค์Œ ๊ธฐ์‚ฌ์—์„œ ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€