/images/profile.png

๊ทธ๋Ÿฐ ๊ฐœ๋ฐœ์ž๋กœ ๊ดœ์ฐฎ์€๊ฐ€ - '๋กœ๊ทธ & ๋ชจ๋‹ˆํ„ฐ๋ง' ํŽธ

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

๋นŒ๋“œ/ํ…Œ์ŠคํŠธ๋Š” ๋‚ด๊ฐ€ ํ•ด์ค„๊ฒŒ. ๋„ˆ๋Š” ์ฝ”๋”ฉ์— ์ง‘์ค‘ํ•ด (by GitHub Pull Request Builder)

git ์€ ๋ถ„์‚ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ์ค‘ ๊ฐ€์žฅ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ๋‹ค๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹ ์ •๋„๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฅผ ์›น์„œ๋น„์Šค์—์„œ ๋ณด๋‹ค ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ์‹œ์Šคํ…œ์ด Github. Github ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์ค‘์— ๊ฐ€์žฅ ํฐ ์ด์œ ๋ฅผ ํ•˜๋‚˜๋งŒ ์ด์•ผ๊ธฐํ•ด๋ณด์ž๋ฉด ๋ฐ”๋กœ ์˜จ๋ผ์ธ์ƒ์—์„œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” pullRequest๋ผ๋Š” ๊ธฐ๋Šฅ ๋•Œ๋ฌธ์ด ์•„๋‹๊นŒ ์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐ์„ ํ•ด๋ณธ๋‹ค. ใ€€pullRequest๋Š” work branch์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ base branch๋กœ merge ์ „ ๊ผญ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ์ž‘์—…ํ•œ ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ ๋‹ค์–‘ํ•œ ๊ฒ€์‚ฌ๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ๋“ค์ด ๋งŽ๋‹ค.

๋ฒŒ์จ 2๋…„ (feat. ํ† ์ดํ”„๋กœ์ ํŠธ ํšŒ๊ณ ,๊ฐ€์น˜,์ˆ˜์ž…)

์ •ํ™•ํžˆ 2018๋…„ 07์›” 12์ผ ํ•„์ž์˜ ์ฒซ ํ† ์ด ํ”„๋กœ์ ํŠธ์ธ โ€˜๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ ๊ตฌ๋… ์„œ๋น„์Šคโ€™๋ฅผ ์˜คํ”ˆํ•˜๊ฒŒ ๋œ๋‹ค. ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ๊ตฌ๋…(๊ฐ€์ž…) ํ•˜๊ฒ ์–ด ํ•˜๋Š” ์ƒ๊ฐ์ด ๋ถ€๋„๋Ÿฌ์šธ ๋งŒํผ 6๊ฐœ์›”์ด ์ง€๋‚˜ ๊ตฌ๋…์ž ์ˆ˜๋Š” 1,000๋ช…์„ ๋„˜๊ธฐ๊ณ  1๋…„์ด ์ง€๋‚˜ 2,000๋ช….์–ด๋Š๋ง ๋‹ฌ๋ ฅ์„ ๋ณด๋‹ˆ ์˜ค๋Š˜์ด ์ •ํ™•ํ•˜๊ฒŒ ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์„œ๋น„์Šคํ•œ์ง€ ๋ฒŒ์จ 2๋…„์ด ๋˜๋Š” ๋‚ . ๊ตฌ๋…์ž ์ˆ˜๋Š” ์–ด๋Š๋ง 3,000๋ช…์„ ๋„˜์–ด์„ ๋‹ค. ๋ญ”๊ฐ€ ๋ฟŒ๋“ฏํ•˜๋ฉด์„œ๋„ ์„œ๋น„์Šค๋ฅผ ์ข€ ๋” ๋””๋ฒจ๋กญ ํ•˜์ง€ ๋ชปํ•œ ํ•„์ž ์ž์‹ ์„ ๋Œ์•„๋ณด๋‹ˆ ๊ดœํžˆ ๋งˆ์Œ์ด ๋ฌด๊ฑฐ์›Œ์ง€๊ณ . ๋ญ”๊ฐ€ ํ•ด์•ผํ•˜๋Š”๋ฐ… ๊ดœํžˆ ๋ˆˆ์น˜๋งŒ ๋ณด์ด๋„ค…์ถœ์ฒ˜ : http://egloos.zum.com/nievess/v/657827" ๋ญ”๊ฐ€ ํ•ด์•ผํ•˜๋Š”๋ฐ… ๊ดœํžˆ ๋ˆˆ์น˜๋งŒ ๋ณด์ด๋„ค…

๊ทธ๋Ÿฐ ๊ฐœ๋ฐœ์ž๋กœ ๊ดœ์ฐฎ์€๊ฐ€ - '์ž๊ธฐ๊ณ„๋ฐœ' ํŽธ

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

๊ทธ๋Ÿฐ ๊ฐœ๋ฐœ์ž๋กœ ๊ดœ์ฐฎ์€๊ฐ€ - '๋ฌธํ™”' ํŽธ

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

์Šคํ”„๋ง ๋ถ€ํŠธ์— ํ•„ํ„ฐ๋ฅผ '์กฐ์‹ฌํ•ด์„œ' ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

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

์กฐ๊ธˆ ๋” ๊ดœ์ฐฎ์€ Rest Template 2๋ถ€ - Circuit-breaker

์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” Retryable ๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ฐ„ํ—์ ์ธ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๋ฅผ “์žฌ์‹œ๋„"๋ฅผ ํ•จ์œผ๋กœ์จ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. ์‹ค์ œ๋กœ ํ•„์ž๊ฐ€ ์šด์˜ํ•˜๋Š” ์„œ๋น„์Šค ์—์„œ๋„ Retryable ๋ฅผ ์ด์šฉํ•˜๊ธฐ ์ „๊ณผ ํ›„๋ฅผ ๋น„๊ตํ•ด๋ณด๋ฉด ๊ฐ„ํ—์ ์ธ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜์˜ ๋นˆ๋„์ˆ˜๊ฐ€ ํ™•์‹คํžˆ ์ค„์–ด๋“ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ “์žฌ์‹œ๋„"๋ฅผ ํ•ด์„œ ์š”์ฒญํ–ˆ์„๋•Œ ์„ฑ๊ณต ์‘๋‹ต์„ ๋ฐ›์„ ๊ฒฝ์šฐ์—” ๋ฌธ์ œ๊ฐ€ ์•ˆ๋˜์ง€๋งŒ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹Œ ์‹ค์ œ๋กœ ํ˜ธ์ถœ์„ ๋ฐ›๋Š” ํ•ด๋‹น ์„œ๋ฒ„์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ? ์˜ˆ์ปจ๋Œ€, ํ•ด๋‹น ์„œ๋ฒ„์—์„œ DB๋ฅผ ์กฐํšŒํ•˜๋Š” API๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„๋•Œ DB ์ž์ฒด์—์„œ ์–ด๋– ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋ฉด.

๋งค๋‹ˆ์ €๋Š” ์ •๋ง ๊ฐœ๋ฐœ์ž์˜ ๋ฌด๋ค์ผ๊นŒ? (๋ฆฌ๋ทฐ - ๊ฐœ๋ฐœ์ž 7๋…„์ฐจ, ๋งค๋‹ˆ์ € 1์ผ์ฐจ)

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

์กฐ๊ธˆ ๋” ๊ดœ์ฐฎ์€ Rest Template 1๋ถ€ - Retryable

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๋ฉด์„œ ๊ผญ ํ•œ๋ฒˆ ์ฏค ๋งŒ๋‚˜๊ฒŒ ๋˜๋Š” “RestTemplate”. ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์™ธ๋ถ€ HTTP URL(๋ณดํ†ต API)์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์ค‘์— ํ•˜๋‚˜๋กœ springframework ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋ชจ๋“ˆ์ด๋‹ค. ํŠนํžˆ ํฐ ํ•œ๋ฉ์–ด๋ฆฌ๋กœ ๊ด€๋ฆฌ๋˜๋˜ Monolithic Architecture ์—์„œ ์š”์ฒญ์„ ํ•˜๊ณ (client) ์‘๋‹ต์„ ์ฃผ๋Š”(server) ์ฆ‰, Endpoint๊ฐ€ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ๋˜๋Š” Microservice Architecture ๋กœ ๋ฐ”๋€Œ๋ฉด์„œ ๊ฐ ์„œ๋น„์Šค๊ฐ„ ํ˜ธ์ถœ๋ฐฉ์‹์ด HTTP ์ผ ๊ฒฝ์šฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๊ณค ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. (webClient ๋“ฑ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ํ˜ธ์ถœ ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ๋‹ค.) ๋งŒ์•ฝ, ์š”์ฒญ์„ ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ž…์žฅ์—์„œ ์‘๋‹ต์„ ์ฃผ๋Š” ์„œ๋ฒ„์˜ ์ƒํƒœ๊ฐ€ ๋ถˆ์•ˆ์ • ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„๋•Œ, ์–ด๋–ค์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ๊นŒ?

SpringRestDocs๋ฅผ SpringBoot์— ์ ์šฉํ•˜๊ธฐ

API๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” API ๋ช…์„ธ๋ฅผ ์ž‘์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์— ์ „๋‹ฌํ•˜๊ฒŒ ๋œ๋‹ค. ์–ด๋–ค URL์— ์–ด๋–ค ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์–ด๋–ป๊ฒŒ ์š”์ฒญ์„ ํ•˜๋ฉด ์–ด๋–ค ๊ฒฐ๊ณผ๋ฅผ ์‘๋‹ต์œผ๋กœ ๋‚ด๋ ค์ฃผ๋Š”์ง€์— ๋Œ€ํ•œ ๊ด€๋ จ ์ •๋ณด๋“ค. ์ด๋Ÿฌํ•œ “API ๋ฌธ์„œ” ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ์‹์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณค ํ•œ๋‹ค. API ์ฝ”๋“œ์™€ ํ•ด๋‹น ๋ฌธ์„œ์˜ ๋™๊ธฐํ™”๊ฐ€ ์ž๋™์œผ๋กœ ๋˜์–ด์•ผ ์กฐ๊ธˆ ํŽธํ•ด์งˆ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์ถœ์ฒ˜ : https://dribbble.com/shots/3386291-API-Documentation" API ์ฝ”๋“œ์™€ ํ•ด๋‹น ๋ฌธ์„œ์˜ ๋™๊ธฐํ™”๊ฐ€ ์ž๋™์œผ๋กœ ๋˜์–ด์•ผ ์กฐ๊ธˆ ํŽธํ•ด์งˆ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์ถœ์ฒ˜ : https://dribbble.com/shots/3386291-API-Documentation ํ•„์ž๋Š” ์ฃผ๋กœ “์œ„ํ‚ค”(๋˜๋Š” ์ผ๋ฐ˜ ๋ฌธ์„œ)๋ฅผ ํ™œ์šฉํ•ด์„œ ์ „๋‹ฌํ•˜๊ณค ํ–ˆ์—ˆ๋Š”๋ฐ API์˜ ํ˜•ํƒœ๊ฐ€ ๋‹ฌ๋ผ์งˆ ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์œ„ํ‚ค๋ฅผ ์ˆ˜์ •ํ•ด์•ผ๋งŒ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์—ˆ๋‹ค.