/images/profile.png

๊ณต๋ชจ์ฃผ ์•Œ๋ฆฌ๋ฏธ ๊ฐœ๋ฐœ ํ›„๊ธฐ - 3๋ถ€

๏ปฟ๊ณต๋ชจ์ฃผ ์•Œ๋ฆฌ๋ฏธ๋ผ๋Š” ํ† ์ด ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ๊ธฐ์˜ ๋งˆ์ง€๋ง‰ ํฌ์ŠคํŒ…์ด๋‹ค. ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์™œ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ  ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•˜๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ค ์‹์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ณ  ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ธฐ๊นŒ์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด์ œ๋Š” ์ด๋Ÿฌํ•œ ์ผ๋ จ์˜ ‘ํŒŒ์ดํ”„๋ผ์ธ’์„ ์ž๋™ํ™”ํ•ด์•ผ ํ•  ์‹œ๊ฐ„์ด๋‹ค. ์‚ฌ๋žŒ์ด ์ง์ ‘ ์ˆ˜๋™์œผ๋กœ ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ ์œ„ ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณ„๋„์˜ ์„œ๋ฒ„์— ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋“ฑ๋ก๋˜์–ด ์žˆ๊ณ  ์ด๋ฅผ ์–ด๋–ค ๋ฌด์–ธ๊ฐ€์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋ง์„ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ง์ด๋‹ค.๏ปฟ 1๋ถ€ : ํ”„๋กœ์ ํŠธ ์„ค๊ณ„, ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ 2๋ถ€ : ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ ์•Œ๋ฆผ ๋ฐœ์†ก 3๋ถ€ : ์„œ๋ฒ„ ์„ ์ • ๋ฐ ๋ฆด๋ฆฌ์ฆˆ ์„œ๋ฒ„ ์„ ์ • ใ€€๏ปฟ1๋ถ€์—์„œ ์ด์•ผ๊ธฐํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ heroku๋ผ๋Š” PaaS(Platform as a service)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๋ฌด๋ฃŒ ํ”Œ๋žœ์œผ๋กœ๋„ ์„ค๊ณ„ํ–ˆ๋˜ ์„œ๋น„์Šค ๋‚ด์šฉ์„ ๋ชจ๋‘ ์†Œํ™” ๊ฐ€๋Šฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์•ž์„œ ๋งŒ๋“  Spring Boot Application ์„ heroku์— ๋ฐฐํฌ๋ฅผ ํ•ด๋ณด์ž. ใ€€heroku์—์„œ ์ƒˆ๋กœ์šด ‘App’์„ ์ƒ์„ฑํ•œ๋‹ค. ์•„๋ž˜์—์„œ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋Š” ํ™”๋ฉด๋Œ€๋กœ App name์„ ์ง€์ •ํ•˜๊ณ  ๋งŒ๋“ค๊ธฐ๋งŒ ํ•˜๋ฉด ๋. ๊ทธ๋Ÿฌ๋ฉด ๋ฐฐํฌ ๋ฐฉ๋ฒ•์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ heroku์—์„œ ์ œ๊ณตํ•˜๋Š” CLI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  Github ๊ณผ ์—ฐ๋™ํ•˜๊ฑฐ๋‚˜, ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์ด 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•„์ž๋Š” Github์„ ํ™œ์šฉํ•ด์„œ ์—ฐ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ด ๋ณด๊ณ ์ž ํ•œ๋‹ค. heroku ์—์„œ app์„ ์ƒ์„ฑํ•˜์ž." heroku ์—์„œ app์„ ์ƒ์„ฑํ•˜์ž. ใ€€๏ปฟ๋กœ์ปฌ์—์„œ ๋งŒ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Github์— push ํ•˜๋ฉด Github Repository ๊ฐ€ ์ƒ๊ธฐ๊ณ  ์ž‘์—… ํŒŒ์ผ๋“ค์ด ์ •์ƒ์ ์œผ๋กœ ์—…๋กœ๋“œ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋‹ค์Œ heroku์—์„œ ๋งŒ๋“ค์—ˆ๋˜ App ํŽ˜์ด์ง€์—์„œ Deploy ํƒญ์„ ํด๋ฆญํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ Deploy๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋‚˜์˜ค๊ณ , ์ด ์ค‘์— “Connect to Github"์„ ์„ ํƒํ•˜๋ฉด Github ๊ณผ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์ด ์ƒ๊ธฐ๊ณ  ์ด๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ž๋™์œผ๋กœ ๋ณธ์ธ์˜ Github ๋‚ด Repository๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™”๋ฉด์ด ๋ฐ”๋€๋‹ค. heroku ์™€ github ์—ฐ๋™" heroku ์™€ github ์—ฐ๋™ ใ€€๏ปฟ๊ทธ๋‹ค์Œ ์œ„์—์„œ Github์— push ํ–ˆ๋˜ Repository ์ด๋ฆ„์„ ์ ๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉด ์กฐํšŒ๊ฐ€ ๋˜๊ณ  ‘Connect’๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ์ด ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฐ๋™๋œ Repository ๋ธŒ๋žœ์น˜์— ์ฝ”๋“œ๊ฐ€ ํ‘ธ์‹œ ๋˜๋ฉด ์ž๋™์œผ๋กœ heroku์— ๋ฐฐํฌ๊ฐ€ ๋˜๋„๋ก ์ž๋™ํ™” ์„ค์ •๋„ ๊ฐ€๋Šฅํ•˜๊ณ  ๊ทธ ์•„๋ž˜์— ๋ณด๋ฉด ๋ธŒ๋žœ์น˜๋ฅผ ์„ ํƒํ•ด์„œ ๋ฐฐํฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋„ ํ•˜๋‹ค. ์ˆ˜๋™์œผ๋กœ ํ‘ธ์‹œ๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ์ด๋Ÿฐ์ €๋Ÿฐ ๋นŒ๋“œ ๋กœ๊ทธ๊ฐ€ ๋‚˜์˜ค๊ณ  ์ตœ์ข…์ ์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ๋˜์–ด {Appname}.herokuapp.com ์„ ์ ‘์†ํ•ด๋ณด๋ฉด ์„œ๋ฒ„์— ๋ฐฐํฌ๊ฐ€ ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. sample Github Code : taetaetae@heroku#HelloWorldController.java#L11 sample heroku app : https://taetaetae-test.herokuapp.com/ ์ˆ˜๋™์œผ๋กœ ๋ฐฐํฌ๋ฅผ ํ•ด๋ณด์ž." ์ˆ˜๋™์œผ๋กœ ๋ฐฐํฌ๋ฅผ ํ•ด๋ณด์ž. ใ€€๏ปฟheroku์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ๋ช‡ ๋ฒˆ์˜ ํด๋ฆญ๋งŒ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๊ณ  ์„œ๋ฒ„ ๋‚ด ๋กœ๊ทธ๋„ ์•„๋ž˜ ํ™”๋ฉด์ฒ˜๋Ÿผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ์€ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๋งค๋ ฅ์ ์œผ๋กœ ๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋‹จ, ๋ฌด๋ฃŒ ํ”Œ๋žœ์˜ ์ œํ•œ์‚ฌํ•ญ๋“ค์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ณ  ์‚ฌ์šฉํ•  ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ์„œ๋ฒ„ ๋กœ๊ทธ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค!" ์„œ๋ฒ„ ๋กœ๊ทธ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค! ํ˜ธ์ถœ ํ…Œ์ŠคํŠธ, ๋ฌธ์ œ์˜ ์‹œ์ž‘ ใ€€๏ปฟ์•ž์„œ ๋งŒ๋“ค์—ˆ๋˜ ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„๋„์—๋Š” ์•„๋ฌด๋„ ๊ฐ€์ž…์„ ํ•˜์ง€ ์•Š์•˜๊ธฐ์— ๋ฐฐํฌํ•œ heroku web endpoint๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ํ†ตํ•ด ์•Œ๋ฆผ์ด ์˜ค๋Š” ๊ฑธ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์•„๋ฌด๋ฆฌ ํ˜ธ์ถœ์„ ํ•ด๋„ ์„œ๋ฒ„๋Š” ํƒ€์ž„์•„์›ƒ์ด๋ผ๋Š” ์—๋Ÿฌ ์‘๋‹ต์„ ๋ฑ‰๊ธฐ ์ผ์‘ค์˜€๊ณ , ๋กœ์ง์ด ๋ฌธ์ œ์ธ์ง€ ํ•œ์ฐธ์„ ๋ฆฌํŒฉํ† ๋งํ•˜๋ฉฐ ์›์ธ์„ ํŒŒ์•…ํ•˜๋Š”๋ฐ ๊ฝค ์˜ค๋žœ ์‹œ๊ฐ„์„ ์‚ฝ์งˆํ•˜์˜€๋‹ค. ์™œ ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ• ๊นŒ? heroku๋Š” web์—์„œ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” console ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ‘ํฌ๋กค๋ง์„ ํ•˜๊ธฐ ์œ„ํ•œ ํŽ˜์ด์ง€’์™€ ‘๊ตฌ๊ธ€’์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ์ˆœํ•˜๊ฒŒ curl ํ•ด์„œ ๊ฐ€์ ธ์˜ค๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๋‹ˆ ์•„๋ž˜์ฒ˜๋Ÿผ ํ™•์—ฐํžˆ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ž๋‹ค. ๊ฒฐ๊ตญ์€ heroku ์™€ ํฌ๋กค๋ง ํ•˜๋Š” ์„œ๋ฒ„ ๊ฐ„์˜ ๋„คํŠธ์›Œํฌ ํƒ€์ž„์•„์›ƒ์ด ๋ฌธ์ œ์˜€๋˜ ๊ฒƒ. ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๊ณ  ์›์ธ์„ ์ฐพ๋Š” ๊ณผ์ •์ด ๊ฐ€์žฅ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ๋„คํŠธ์›Œํฌ ์ž์ฒด์˜ ๋ฌธ์ œ" ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๊ณ  ์›์ธ์„ ์ฐพ๋Š” ๊ณผ์ •์ด ๊ฐ€์žฅ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ๋„คํŠธ์›Œํฌ ์ž์ฒด์˜ ๋ฌธ์ œ ๊ทธ๋ž˜์„œ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐ ํ–ˆ๋‚˜? ใ€€๏ปฟheroku์—์„œ ํƒ€์ž„์•„์›ƒ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค ์—ฌ๋Ÿฌ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์ฐพ์•„๋ดค์ง€๋งŒ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์—†์–ด์„œ ๊ฒฐ๊ตญ heroku๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํฌ๊ธฐํ•˜๊ณ  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ด์•ผ๋งŒ ํ–ˆ๋‹ค.

๊ณต๋ชจ์ฃผ ์•Œ๋ฆฌ๋ฏธ ๊ฐœ๋ฐœ ํ›„๊ธฐ - 2๋ถ€

๏ปฟํ˜น์‹œ ์ด ํฌ์ŠคํŠธ๋ฅผ ์ฒ˜์Œ ์ฝ๋Š” ๋…์ž๋ผ๋ฉด ์ง€๋‚œ ํฌ์ŠคํŒ…์„ ์ฝ๊ณ  ์˜ค๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ์ •๋ฆฌํ•˜์ž๋ฉด, ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ๋Š” ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ์™€, ์–ด๋–ค ์‹์œผ๋กœ ๋งŒ๋“ค์ง€์— ๋Œ€ํ•œ ์„ค๊ณ„. ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์—ˆ๋‹ค. ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์ œ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค. 1๋ถ€ : ํ”„๋กœ์ ํŠธ ์„ค๊ณ„, ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ 2๋ถ€ : ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ ์•Œ๋ฆผ ๋ฐœ์†ก 3๋ถ€ : ์„œ๋ฒ„ ์„ ์ • ๋ฐ ๋ฆด๋ฆฌ์ฆˆ ๋ฐ์ดํ„ฐ ์ •์˜ ใ€€๏ปฟjava ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘์— jsoup๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์›น์‚ฌ์ดํŠธ๋ฅผ ํฌ๋กค๋ง ํ•˜์˜€๊ณ , ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑ์„ ํ•˜์˜€๋‹ค. ์•„๋ž˜๋Š” ‘๊ณต๋ชจ์ฃผ’๋ผ๋Š” ์ž๋ฐ” ๋ชจ๋ธ์„ ์ •์˜ํ•ด ๋ณด์•˜๋‹ค. ์ด๋ ‡๊ฒŒ ์ž๋ฐ” ‘๋ชจ๋ธ’๋กœ ์ •์˜๋ฅผ ํ•˜๋Š” ์ด์œ ๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ •๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•จ์ด๊ธฐ๋„ ํ•˜๊ณ  map ๊ฐ™์€ ํ˜•ํƒœ์˜ ์ž„์‹œ ๋ณ€์ˆ˜(?)๋ณด๋‹ค ๋” ์ง๊ด€์ ์ด๊ธฐ์— ์ดํ›„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ๊ฐ€์ด๋“œ ์—ญํ• ์˜ ํšจ๊ณผ๋„ ์–ป์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. public class PublicOffering { private String name; // ์ข…๋ชฉ๋ช… private LocalDate startDate; // ์ผ์ • ์‹œ์ž‘์ผ private LocalDate endDate; // ์ผ์ • ๋งˆ๊ฐ์ผ private LocalDate listingDate; // ์ƒ์žฅ์ผ private String publicOfferingPrice; // ํ™•์ • ๊ณต๋ชจ๊ฐ€ private String expectedOfferingPrice; // ํฌ๋ง ๊ณต๋ชจ๊ฐ€ private List<String> Underwriter; // ์ฃผ๊ฐ„์‚ฌ private String detailUrl; // ์ƒ์„ธURL private String competitionRate; // ์ฒญ์•ฝ๊ฒฝ์Ÿ๋ฅ  } ใ€€๏ปฟ์ดˆ๊ธฐ์—๋Š” ์œ„์—์„œ ์ •์˜ํ•œ ๋ชจ๋ธ์ฒ˜๋Ÿผ ๊ณต๋ชจ์ฃผ์˜ ๊ธฐ๋ณธ ์ •๋ณด๋งŒ์„ ์„œ๋น„์Šคํ•ด์•ผ๊ฒ ๋‹ค ์ƒ๊ฐํ–ˆ๊ณ , ๊ด€๋ จ ๋‰ด์Šค๋ผ๋“ ์ง€ ๊ธฐํƒ€ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋‚˜ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์š”๊ตฌ ์‚ฌํ•ญ(?)๋“ค์ด ์ถ”๊ฐ€๋  ๊ฒฝ์šฐ ์ ์ง„์ ์œผ๋กœ ์„ค๊ณ„๋ฅผ ํ•˜๊ณ ์„œ ํ™•์žฅ์‹œ์ผœ ๋‚˜๊ฐ€๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ณ„ํšํ–ˆ๋‹ค. ์šฐ์„ ์€ ๊ธฐ๋Šฅ๋“ค์ด ๋ถ€์กฑํ•˜๋”๋ผ๊ณ  ๋Œ์•„๊ฐ€๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๊ธฐ์—. ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก ! ์ถœ์ฒ˜ : https://m.blog.naver.com/keycosmos3/221267522930" ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก ! ์ถœ์ฒ˜ : https://m.blog.naver.com/keycosmos3/221267522930 ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡/์ฑ„๋„ ์ƒ์„ฑ ใ€€๏ปฟํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •์€ ๊ฐ€๋ณ๊ฒŒ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋ฉด ๋„ˆ๋ฌด๋‚˜ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ณด๋‹ค ํ•˜๋‚˜์˜ ๊ธ€ ์•ˆ์— ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์‹ถ์–ด ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ๋งŒ๋“ค๊ณ  โ†’ ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„๋„์„ ๋งŒ๋“  ๋‹ค์Œ โ†’ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ์ด์šฉํ•ด์„œ ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„๋„์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ฑธ ์ด์•ผ๊ธฐํ•ด ๋ณด๊ณ ์ž ํ•œ๋‹ค. ๏ปฟ์•„, ์—ฌ๊ธฐ์„œ ์™œ ๊ผญ ‘ํ…”๋ ˆ๊ทธ๋žจ’์„ ์„ ํƒํ–ˆ๋Š”๊ฐ€์— ๋Œ€ํ•œ ์ด์œ ๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋‹ค๋ฅธ ๋ฉ”์‹ ์ € (์นด์นด์˜คํ†ก, ๋ผ์ธ ๋“ฑ)๋ณด๋‹ค๋„ api๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ณผ์ •์ด ๋‹จ์ˆœํ•˜๋ฉด์„œ๋„ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๋Š๊ปด์กŒ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ˜น์‹œ ํ…”๋ ˆ๊ทธ๋žจ ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฉ”์‹ ์ €๋กœ ๋ณด๋‚ด๋‹ฌ๋ผ๋Š” ์š”์ฒญ์ด ์žˆ์„ ๊ฒฝ์šฐ ๊ทธ๋•Œ ๊ฐ€์„œ ๊ณ ๋ฏผํ•ด ๋ณด๋ ค ํ•œ๋‹ค. ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ์ƒ์„ฑ ใ€€๏ปฟ๋จผ์ € ํ…”๋ ˆ๊ทธ๋žจ ๋ฉ”์‹ ์ €์—์„œ ‘BotFather’๋ผ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์ฐพ๊ณ  ‘/start’๋ฅผ ๋ˆ„๋ฅด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๊ฐ€ ๋‚˜์˜จ๋‹ค. ใ€€๏ปฟ๊ทธ๋‹ค์Œ ์šฐ๋ฆฌ๋Š” ๋ด‡์„ ๋งŒ๋“ค ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ‘/newbot’์„ ๋ˆ„๋ฅด๊ณ  ๋ด‡์˜ ์ด๋ฆ„์„ ์ž‘์„ฑํ•˜๊ณ  ๊ทธ ๋ด‡์˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ง€์ •ํ•œ๋‹ค. ‘_bot’์œผ๋กœ ๋๋‚˜์•ผ ํ•œ๋‹ค๊ณ  ํ•˜๊ธฐ์— ์ด๋ฆ„ ๋’ค์— ๋ถ™์—ฌ์„œ ๋งŒ๋“ค๋ฉด ๊ทธ๊ฑธ๋กœ ๋. ๋‹ค์Œ์œผ๋กœ ์นœ์ ˆํ•˜๊ฒŒ HTTP API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ† ํฐ์ด ๋ฐœ๊ธ‰๋˜๋Š”๋ฐ ์ด ํ† ํฐ์œผ๋กœ ๋ด‡์„ ์ปจํŠธ๋กค ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ๊ฐ„์งํ•˜๊ณ (?) ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์นœ์ ˆํ•œ ๋ด‡ ์•„๋ฒ„์ง€" ์นœ์ ˆํ•œ ๋ด‡ ์•„๋ฒ„์ง€ ใ€€๏ปฟ์ดํ›„ ํ•ด๋‹น ํ† ํฐ์„ ์ด์šฉํ•ด์„œ ๋ด‡์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ด๋ณด์ž. ์•„๋ž˜์˜ url์— ํ† ํฐ ๊ฒฝ๋กœ๋งŒ ๋ณ€๊ฒฝํ•˜์—ฌ ์ž…๋ ฅํ•˜๋ฉด json ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. https://api.telegram.org/bot{token}/getUpdates e.g. https://api.telegram.org/bot17...42:AAH...cQU/getUpdates ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„๋„ ์ƒ์„ฑ ใ€€๏ปฟ1:N์œผ๋กœ ์ฑ„๋„์— ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ผ๋ฐฉ์ ์œผ๋กœ ๋ณด๋‚ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ์ฑ„๋„์„ ๋งŒ๋“ค์–ด ๋ณด์ž. ํ…”๋ ˆ๊ทธ๋žจ UI๋งŒ ๋ด๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ์„ฑํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋˜์–ด์žˆ๋‹ค. ๋”๋ถˆ์–ด ์ด ์ฑ„๋„์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์—์„œ ๋งŒ๋“ค์—ˆ๋˜ ๋ด‡์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ด€๋ฆฌ์ž๋กœ ์Šน๊ฒฉ ์‹œํ‚ค์ž. ์ฑ„๋„ ์ƒ์„ฑ > ๋ด‡์„ ๊ด€๋ฆฌ์ž๋กœ" ์ฑ„๋„ ์ƒ์„ฑ > ๋ด‡์„ ๊ด€๋ฆฌ์ž๋กœ ๏ปฟํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์œผ๋กœ ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„๋„์— ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ ใ€€์ด ๋ถ€๋ถ„์—์„œ ์•ฝ๊ฐ„ ํ—ค๋งธ๋Š”๋ฐ ๊ฒฐ๊ตญ ์œ„์—์„œ ์–ป์€ ํ† ํฐ๊ณผ ์ฑ„๋„์˜ ํŠน์ • id๋ฅผ ์•Œ์•„์•ผ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์•ž์„œ ๋งŒ๋“ค์—ˆ๋˜ ์ฑ„๋„์— ์•„๋ฌด ๋ฉ”์‹œ์ง€๋‚˜ ์ž‘์„ฑ์„ ํ•˜๊ณ  ์œ„์—์„œ ํ˜ธ์ถœํ–ˆ๋˜ ‘getUpdates’ api๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•ด๋ณด๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์ฑ„๋„์˜ id๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๊ณต๋ชจ์ฃผ ์•Œ๋ฆฌ๋ฏธ ๊ฐœ๋ฐœ ํ›„๊ธฐ - 1๋ถ€

๏ปฟ์ž‘๋…„๋ถ€ํ„ฐ ์‹œ์ž‘๋œ ‘๋™ํ•™ ๊ฐœ๋ฏธ ์šด๋™’์— ์–ธ์ œ๋ถ€ํ„ฐ์ธ๊ฐ€ ํ•„์ž๋„ ์ฃผ๋ฆฐ์ด๋กœ์จ ๋™์ฐธ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ตœ๊ทผ์—๋Š” ‘๊ณต๋ชจ์ฃผ ์ฒญ์•ฝ’์ด๋ผ๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ๋”ฐ๋ผ ํ•ด๋ณด๊ณ  ์ •์‹  ์ฐจ๋ ค๋ณด๋‹ˆ ์น˜ํ‚จ ํ•œ ๋งˆ๋ฆฌ ์ •๋„์˜ ์ˆ˜์ต์„ ์–ป๋Š” ๊ธฐ์ ์ด ์ผ์–ด๋‚ฌ๋‹ค. ๊ณต๋ชจ์ฃผ๋ž€ ์ •ํ•ด์ง„ ์ผ์ž์— ์ฒญ์•ฝ์„ ํ•˜๊ณ  ๋ฐฐ์ •์„ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น ์ฃผ์‹์ด ์ƒ์žฅ์„ ํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ์‚ด ์ˆ˜ ์žˆ๋‹ค๋Š” ‘๊ธฐํšŒ’๋กœ ์ดํ•ดํ–ˆ๋‹ค. (์ฃผ๋ฆฐ์ด๋ผ ์ดํ•ด์˜ ๋ฒ”์œ„๊ฐ€ ์—ฌ๊ธฐ๊นŒ์ง€๋‹ค…) ๊ณต๋ชจ์ฃผ ๋ฐฐ์ •์ด ๋กœ๋˜์ฒ˜๋Ÿผ ์—„์ฒญ๋‚œ ํฐ ์ˆ˜์ต๋ฅ ์„ ๊ฐ€์ ธ๋‹ค์ฃผ๋Š” ๊ฑด ์•„๋‹ˆ์ง€๋งŒ ์•ž์„œ ์ด์•ผ๊ธฐ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์–ธ์ œ ์žˆ์„์ง€ ๋ชจ๋ฅด๋Š” ๊ณต๋ชจ์ฃผ ์ฒญ์•ฝ์„ ๊ผฌ๋ฐ•๊ผฌ๋ฐ• ์ฑ™๊ฒจ์„œ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋ง›์žˆ๋Š” ์น˜ํ‚จ์„ ๋จน์„ ์ˆ˜ ์žˆ๊ฒ ๋‹ค๋Š” ๊ธฐ๋Œ€๊ฐ์ด ๋ถ€ํ’€์—ˆ๋‹ค. (์น˜ํ‚จ์€ ์—ญ์‹œ ๊ต์ดŒ ํ—ˆ๋‹ˆ์ฝค๋ณด…) ์ฃผ๋ฆฐ์ด๋Š” ๊ณ„์† ์ž์•ผ ํ• ๊นŒ ์‹ถ๋‹ค. ์ถœ์ฒ˜ : https://b-s-d.tistory.com/8" ์ฃผ๋ฆฐ์ด๋Š” ๊ณ„์† ์ž์•ผ ํ• ๊นŒ ์‹ถ๋‹ค. ์ถœ์ฒ˜ : https://b-s-d.tistory.com/8 ใ€€๏ปฟ์น˜ํ‚จ์ด ๋จธ๋ฆฟ์†์— ๋งด๋„๋Š” ์‹œ๊ฐ„๋„ ์ž ์‹œ. ํ•„์ž์˜ ๋จธ๋ฆฌ๋ฅผ ์Šค์น˜๋Š” ํ•˜๋‚˜์˜ ์ƒ๊ฐ. ๊ทธ๋Ÿฌ๋ฉด ๊ณต๋ชจ์ฃผ ์ฒญ์•ฝ์€ ์–ธ์ œ ํ•˜๋Š” ๊ฑฐ์ง€? ์ฒญ์•ฝํ•˜๋‹ˆ๊นŒ ์ค€๋น„ํ•˜๋ผ๊ณ  ๋ˆ„๊ฐ€ ์•Œ๋ ค์ฃผ๋ฉด ์ข‹์„ ํ…๋ฐ… ๊ทธ๋Ÿฌ๋ฉด์„œ ์ด๋Ÿฐ์ €๋Ÿฐ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ˆ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์€ ์ด๋ฏธ ์žˆ์—ˆ๊ณ , IOS ์•ฑ์€ ์—†์—ˆ๋‹ค. ์Œ? ๊ทธ๋Ÿผ ์ด๊ฑธ ๋‚ด๊ฐ€ ๋งŒ๋“ค์–ด๋ณด๋ฉด ์–ด๋–จ๊นŒ? ใ€€๏ปฟ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, ํ…”๋ ˆ๊ทธ๋žจ์„ ํ™œ์šฉํ•˜์—ฌ ์ž๋™ํ™” ๊ณต๋ชจ์ฃผ ์•Œ๋ฆผ๋ด‡์„ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค. ํ˜น์‹œ ๊ณต๋ชจ์ฃผ์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ํ•„์ž๊ฐ€ ๋งŒ๋“  ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„๋„์„ ๊ฐ€์ž…ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.๏ปฟ ใ€€๏ปฟ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํ•„์ž์˜ ์ƒˆ๋กœ์šด ํ† ์ด ํ”„๋กœ์ ํŠธ์ธ ‘๊ณต๋ชจ์ฃผ ์•Œ๋ฆฌ๋ฏธ’๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ๊ณผ ์„ค๊ณ„, ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ๋ฆด๋ฆฌ์ฆˆ๊นŒ์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ํฌ๊ฒŒ ์•„๋ž˜์˜ ๋ชฉ์ฐจ๋กœ ์ด์•ผ๊ธฐํ•˜๊ฒŒ ๋  ๊ฒƒ ๊ฐ™๋‹ค. 1๋ถ€ : ํ”„๋กœ์ ํŠธ ์„ค๊ณ„, ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ 2๋ถ€ : ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ ์•Œ๋ฆผ ๋ฐœ์†ก 3๋ถ€ : ์„œ๋ฒ„ ์„ ์ • ๋ฐ ๋ฆด๋ฆฌ์ฆˆ ใ€€๏ปฟ์ž์นซ ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•œ๋ฐ~, ์ด๋Ÿฐ ๊ฑธ ๊ตณ์ด ์™œ ๋งŒ๋“ค์–ด?๋ผ๋Š” ์‹œ๊ฐ์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ด์•ผ์ง€ ํ•˜๊ณ  ๋งˆ์Œ์„ ๋จน์—ˆ์ง€๋งŒ ๋ง‰์ƒ ์‹œ์ž‘์„ ๋ชปํ•˜๊ณ  ์žˆ๋Š” ์–ด๋Š ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ๋„์›€์ด ๋  ๋‚ด์šฉ์ธ ๊ฒƒ ๊ฐ™์•„์„œ ๊ฝค ์ž์„ธํžˆ ์ •๋ฆฌ๋ฅผ ํ•˜๋ ค ํ•œ๋‹ค. ๋ฌผ๋ก  ์ด๋Ÿฌํ•œ ์ •๋ฆฌ๋Š” ํ•„์ž ์ž์‹ ์„ ์œ„ํ•ด์„œ๊ฐ€ ๋” ํฌ๊ธด ํ•˜๋‹ค. ํ”„๋กœ์ ํŠธ ์„ค๊ณ„ ใ€€๏ปฟ๊ณผ๊ฑฐ์— ํ† ์ด ํ”„๋กœ์ ํŠธ๋กœ ์ง„ํ–‰ํ–ˆ๋˜ ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ ๊ตฌ๋… ์„œ๋น„์Šค์˜ ๊ฒฝํ—˜์„ ๋˜์ƒˆ๊ธฐ๋ฉด์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ™ฉ์†Œ์ฒ˜๋Ÿผ ๋‹ฌ๋ ค๋“œ๋Š” ๊ฒƒ๋ณด๋‹จ ์ถฉ๋ถ„์— ์ถฉ์กฑ์„ ๋”ํ•ด ์ถฉ๋งŒํ•ด์งˆ ๋•Œ๊นŒ์ง€ ๊ณ ๋ฏผ์„ ์˜ค๋žซ๋™์•ˆ ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. (๊ทธ๋ž˜๋ดค์ž ํ•˜๋ฃจ ์ •๋„…?^^) ๏ปฟ ์šฐ์„  ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋”˜๊ฐ€์—์„œ ๊ฐ€์ ธ์˜ค๊ณ  ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ DB์— ์ €์žฅํ•  ๊ฒƒ์ธ์ง€ ์•„๋‹ˆ๋ฉด ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ํœ˜๋ฐœ์„ฑ์œผ๋กœ ์กฐํšŒํ›„ ๋ฒ„๋ฆฌ๋Š”(?) ํ˜•ํƒœ๋กœ ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ณ ๋ฏผํ•ด์•ผ ํ–ˆ๋‹ค. ๊ณต๋ชจ์ฃผ๋ผ๋Š” ๋ฐ์ดํ„ฐ์˜ ํŠน์„ฑ์ƒ ํ•œ๋ฒˆ ์ •ํ•ด์ง„ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ–ˆ๊ธฐ์—(์ผ์ •์ด ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ๊ณต๋ชจ๊ฐ€๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ๋“ฑ) DB์— ์ €์žฅ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋ฅผ ๋™๊ธฐํ™”(Sync) ํ•˜๋Š” ๋น„์šฉ์ด ์ถ”๊ฐ€๋กœ ์ƒ๊ธธ ๊ฒƒ ๊ฐ™์•„์„œ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ธฐ ์ง์ „์—๋งŒ ์กฐํšŒํ•˜๊ณ  ๋ฒ„๋ฆฌ๋Š” ํ˜•ํƒœ๋ฅผ ์ƒ๊ฐํ–ˆ๋‹ค. ใ€€๊ทธ๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ–ˆ๋‹ค๋ฉด ์ด๋ฅผ ์ž…๋ง›์— ๋งž๊ฒŒ ๊ฐ€๊ณตํ•˜๊ณ ์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆผ์„ ์ค˜์•ผ ํ•œ๋‹ค. ์•Œ๋ฆผ์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ๋‹ค์–‘ํ•œ๋ฐ ๋ญ”๊ฐ€ ์ ์€ ๋น„์šฉ์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ์ฆ‰, ์•Œ๋ฆผ์„ ๋ฐ›๋Š” ์‚ฌ์šฉ์ž๊ฐ€ 10๋ช…, 100๋ช…, 1000๋ช… ์ด ๋˜์–ด๋„ (๊ทธ๋ ‡๊ฒŒ ๋ ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ;;) ๋‚ด๊ฐ€ ๋งŒ๋“  ์„œ๋น„์Šค์—์„œ ์•Œ๋ฆผ ์ˆ˜์‹ ์ธ์ด ๋Š˜์–ด๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋˜์—ˆ์œผ๋ฉด ํ–ˆ๋‹ค. ๊ทธ์— ์ƒ๊ฐํ•œ ๊ฒŒ ๋ฉ”์‹ ์ € API. ๊ทธ์ค‘์—์„œ๋„ ํ…”๋ ˆ๊ทธ๋žจ API๊ฐ€ ๋ญ”๊ฐ€ ์ด๋Ÿฐ ํ˜•์‹์œผ๋กœ ๋”ฑ์ผ ๊ฒƒ ๊ฐ™์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฒฐ๊ตญ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”์‹œ์ง€ ํ˜•ํƒœ์— ๋งž์ถฐ ํ•œ ๋ฒˆ๋งŒ ๋ฐœ์†กํ•˜๊ฒŒ ๋˜๋ฉด 1:N ํ˜•์‹(Broadcast)์œผ๋กœ ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„๋„์„ ๊ตฌ๋…ํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ „์†ก์ด ๋  ํ…Œ๋‹ˆ ์•ˆ์„ฑ๋งž์ถค์ด์—ˆ๋‹ค. ใ€€๊ทธ๋Ÿผ ์–ธ์ œ ์–ด๋–ค ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ฒŒ ์ข‹์„๊นŒ? ์ฒญ์•ฝ์ด ๋ณดํ†ต ์˜ค์ „์— ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋žต ๋งค์ผ ์˜ค์ „ 9์‹œ์— ๊ด€๋ จ ์ •๋ณด๋“ค์„ ๋ณด๋‚ด์ฃผ๋ฉด ๋  ๊ฒƒ ๊ฐ™์•˜๋‹ค. 3์ผ ์ „์— ์ฒญ์•ฝ์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜๋‹ˆ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•˜๋ผ๋Š” ์•Œ๋ฆผ. ๊ทธ๋ฆฌ๊ณ  ์ฒญ์•ฝ ๋‚ ์งœ๊ฐ€ ๋„๋ž˜ํ•ด์„œ ์žŠ์ง€ ๋ง๊ณ  ์ฒญ์•ฝ์„ ์‹ ์ฒญํ•˜๋ผ๋Š” ์•Œ๋ฆผ. ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ณต๋ชจ์ฃผ๊ฐ€ ์ƒ์žฅ์„ ํ•˜๊ฒŒ ๋˜๋Š” ์•Œ๋ฆผ. ์ด ์„ธ ๊ฐ€์ง€ ์•Œ๋ฆผ๋งŒ ์ž˜ ์ฑ™๊ธด๋‹ค๋ฉด ํ•„์ž ๊ฐ™์€ ์ฃผ๋ฆฐ์ด๋“ค๋„ ์ถฉ๋ถ„ํžˆ ๊ณต๋ชจ์ฃผ ์ฒญ์•ฝ์œผ๋กœ ์น˜ํ‚จ์„ ๋จน์„ ์ˆ˜ ์žˆ์„ ๊ฑฐ๋ผ ์ƒ๊ฐํ–ˆ๋‹ค. ใ€€๋งˆ์ง€๋ง‰์œผ๋กœ ์ด ๋ชจ๋“  ๋‚ด์šฉ์„ ๊ฐœ๋ฐœํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์–ด๋Š ๊ณณ์— ๋ฐฐํฌํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ–ˆ๋‹ค. ํ•ญ์ƒ ๋จธ๋ฆฟ์†์—๋Š” ์žˆ์—ˆ์ง€๋งŒ ํ•œ ๋ฒˆ๋„ ์•ˆ ํ•ด๋ณธ ํด๋ผ์šฐ๋“œ Paas ์ธ heroku๊ฐ€ ๋”ฑ์ผ ๊ฑฐ๋ผ ์ƒ๊ฐํ–ˆ๋‹ค.

๊ทธ๋Ÿฐ ๊ฐœ๋ฐœ์ž๋กœ ๊ดœ์ฐฎ์€๊ฐ€ - '๋ฉ˜ํ† ๋ง' ํŽธ

๏ปฟ์ด๋Ÿฐ์ €๋Ÿฐ ๊ณ ์ƒ ๋์— ์›ํ•˜๋Š” ํšŒ์‚ฌ์— ์ทจ์—…์„ ํ•ด์„œ ‘์ฃผ๋‹ˆ์–ด’๋ผ๋Š” ๊ผฌ๋ฆฌํ‘œ๋ฅผ ๋‹ฌ๊ณ  ์ด์ œ ๋ง‰ ํšŒ์‚ฌ ์ƒํ™œ์„ ํ•˜๋‹ค ๋ณด๋ฉด ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•ด์„œ ์‹ค์ˆ˜๋ฅผ ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋Œ€ํ–ˆ๋˜ ์—…๋ฌด ํผํฌ๋จผ์Šค๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์ƒ๊ธด๋‹ค. ๊ทธ๋Ÿด ๋•Œ๋ฉด “์ฃผ๋‹ˆ์–ด์ž–์•„~ ์ฃผ๋‹ˆ์–ด๋‹ˆ๊นŒ ๊ดœ์ฐฎ์•„~” ๋ผ๋Š” ๋ง๋กœ ์–ด๋Š ์ •๋„ ‘์ดํ•ด’๋ฅผ ํ•˜๊ฒŒ ๋˜์ง€๋งŒ. ์ณ‡๋ฐ”ํ€ด์ฒ˜๋Ÿผ ์ •์‹ ์—†์ด ์‹œ๊ฐ„์ด ์ง€๋‚˜ ์–ด๋Š์ƒˆ ๊ฒฝ๋ ฅ์ด ์ƒ๊ธฐ๊ฒŒ ๋˜๊ณ  ์ด์ œ๋Š” ์•ฝ๊ฐ„์˜ ์‹ค์ˆ˜์กฐ์ฐจ ‘์ดํ•ด’ํ•˜๊ธฐ ์–ด๋ ค์šด ์‹œ์ ์ด ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ์ด๋Ÿฐ์ €๋Ÿฐ ์ด์œ ๋กœ ‘๊ฐœ๋ฐœ์ž’๋ฅผ ๊ทธ๋งŒ๋‘๊ฒŒ๊นŒ์ง€ ๋˜๋Š” ์Šฌํ”ˆ ํ˜„์‹ค์€ ์ฃผ๋ณ€์„ ๋‘˜๋Ÿฌ๋ณด๋ฉด ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ฒ˜์Œ๋ถ€ํ„ฐ ์ž˜ ํ•  ์ˆ˜๋Š” ์—†์„๊นŒ? ํ˜น์€ ์–ด๋ ต๊ฑฐ๋‚˜ ํž˜๋“  ์‹œ์ ์ด ์˜ฌ ๋•Œ๋ฉด ํ•™์ฐฝ ์‹œ์ ˆ์— ๋‚˜๋ฅผ ์ด๋Œ์–ด ์ฃผ์…จ๋˜ ‘์„ ์ƒ๋‹˜’๊ฐ™์€ ์กด์žฌ์—๊ฒŒ ๊ธฐ๋Œ€๋ฉฐ ๋‹ค์‹œ ์ผ์–ด๋‚  ์ˆ˜๋Š” ์—†๋Š” ๊ฒƒ์ผ๊นŒ? ใ€€๋‚˜๋ฆ„ ๊ดœ์ฐฎ์€ ์กฐ์ง์˜ ๊ฒฝ์šฐ ์—ฐ์ฐจ๊ฐ€ ๋‚ฎ์€ ์ง์›์ด ํž˜๋“ค์–ดํ•  ๋•Œ๋ฉด ๊ทธ ์ง์›์ด ์ ์‘์„ ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋„๋ก ๋ณด๋‹ค ์—ฐ์ฐจ๊ฐ€ ๋†’์€ ‘์ง€๋„์„ ๋ฐฐ’ ํ˜น์€ ‘๋ฉ˜ํ† ’๋ฅผ ํ• ๋‹นํ•ด ์ฃผ๊ณค ํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋งบ์–ด์ง„ ๊ด€๊ณ„๊ฐ€ ์ž˜ ์ง€์†์ด ๋˜๋ฉด ์œ„์—์„œ ๋งํ–ˆ๋˜ ‘ํž˜๋“  ์‹œ์ ’์—์„œ ํฐ ๋„์›€์ด ๋˜์–ด ์ด๊ฒจ๋‚ผ ์ˆ˜ ์žˆ๋Š” ํž˜์ด ์ƒ๊ธธ ์ˆœ ์žˆ์ง€๋งŒ ์ž์นซ ์ž˜๋ชป๋˜๋Š” ๊ฒฝ์šฐ ‘๋ฉ˜ํ† ’, ‘๋ฉ˜ํ‹ฐ’ ๋ชจ๋‘์—๊ฒŒ ๋ถ€๋‹ด์ด ๋˜๊ฑฐ๋‚˜ ์˜คํžˆ๋ ค ์•ˆ ํ•˜๋Š๋‹ˆ๋งŒ ๋ชปํ•œ ์‹œ๊ฐ„๋“ค์ด ๋˜์–ด๋ฒ„๋ฆฌ๋Š” ๋ฉ˜ํ† ๋ง. ํ•จ๊ป˜ ์„ฑ์žฅํ•˜๋Š” ๋ฉ˜ํ† ๋ง.์ถœ์ฒ˜ : https://medium.com/@ashokbalasubramanian/career-development-mentorship-844797327703" ํ•จ๊ป˜ ์„ฑ์žฅํ•˜๋Š” ๋ฉ˜ํ† ๋ง. ์ถœ์ฒ˜ : https://medium.com/@ashokbalasubramanian/career-development-mentorship-844797327703 ใ€€์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๋กœ์จ ‘๋ฉ˜ํ† ๋ง’์— ๋Œ€ํ•ด ์–ด๋–ค ๋งˆ์Œ๊ฐ€์ง์„ ๊ฐ€์ ธ์•ผ ํ• ์ง€์— ๋Œ€ํ•ด ์ž‘์„ฑํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ๋ฌผ๋ก  ํ‹€๋ฆฐ ๋ถ€๋ถ„๋„ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ ์–ด๋„ ํ•„์ž๊ฐ€ ์‹ค๋ฌด ๊ฐœ๋ฐœ์ž๋กœ์จ ๋‹ค์–‘ํ•œ ๊ฒฝํ—˜๋“ค์„ ํ•ด๋ณด๋ฉฐ ‘๋ฉ˜ํ† ๋ง’์— ๋Œ€ํ•ด ๊ฝค ์ค‘์š”ํ•˜๋‹ค ์—ฌ๊ฒจ์™”๋˜ ์ˆœ๊ฐ„๋“ค์ด ๋งŽ์•˜๊ณ , ์ง์ ‘ ๋ฉ˜ํ‹ฐ / ๋ฉ˜ํ† ์˜ ๊ฒฝํ—˜๋„ ํ•ด๋ดค๊ธฐ์— ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ๋Š” ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ ์กฐ์‹ฌ์Šค๋ ˆ ์ƒ๊ฐํ•ด ๋ณธ๋‹ค. ๋ฉ˜ํ† ๋ง? ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ ํ•˜๋Š”๊ฑฐ์•ผ? ๏ปฟ ๋ฉ˜ํ† ๋ง์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ ์ „์— ๋ฉ˜ํ† ๋ง์˜ ์ •์˜๋ถ€ํ„ฐ ์ด์•ผ๊ธฐํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ์œ„ํ‚ค๋ฐฑ๊ณผ์— ๋”ฐ๋ฅด๋ฉด ํ’๋ถ€ํ•œ ๊ฒฝํ—˜๊ณผ ์ง€ํ˜œ๋ฅผ ๊ฒธ๋น„ํ•œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด 1:1๋กœ ์ง€๋„์™€ ์กฐ์–ธ์„ ํ•˜๋Š” ํ–‰์œ„๋ผ ๋‚˜์™€์žˆ๋‹ค. ๋”๋ถˆ์–ด, ์กฐ๋ ฅ์ž์˜ ์—ญํ• ์„ ํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋ฉ˜ํ† (mentor)๋ผ๊ณ  ํ•˜๋ฉฐ ์กฐ๋ ฅ์„ ๋ฐ›๋Š” ์‚ฌ๋žŒ์„ ๋ฉ˜ํ‹ฐ(mentee)๋ผ๊ณ  ๋‚˜์™€์žˆ๋‹ค. ํ•™์ฐฝ ์‹œ์ ˆ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๋ฉด ์„ ์ƒ๋‹˜์€ ๋ฉ˜ํ† , ํ•™์ƒ๋“ค์€ ๋ฉ˜ํ‹ฐ์˜ ์—ญํ• ์ด ๋  ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ํšŒ์‚ฌ์—์„œ ๋ฉ˜ํ† , ๋ฉ˜ํ‹ฐ์˜ ๊ด€๊ณ„๋Š” ์–ด๋–ป๊ฒŒ ๋งบ์„ ์ˆ˜ ์žˆ์„๊นŒ? ์•ž์„œ ์ด์•ผ๊ธฐํ–ˆ๋“ฏ์ด ๋ˆ„๊ตฐ๊ฐ€(์•„๋งˆ๋„ ์กฐ์ง์˜ ๋ฆฌ๋”๊ฐ€) ๋ฉ˜ํ† ์™€ ๋ฉ˜ํ‹ฐ ๊ด€๊ณ„๋ฅผ ์ •ํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? ใ€€์•„๋ž˜์—์„œ ์ด์•ผ๊ธฐํ•˜๊ฒ ์ง€๋งŒ ๋ฉ˜ํ† ๋ง์€ ๋น„๋‹จ ๋„์›€์„ ‘์–ป๊ฒŒ ๋˜๋Š”’ ๋ฉ˜ํ‹ฐ๋งŒ ์ข‹์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋„์›€์„ ‘์ฃผ๋Š”’ ๋ฉ˜ํ† ์—๊ฒŒ๋„ ์ƒ๋‹นํžˆ ์ข‹์€ ํ™œ๋™์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋‹จํŽธ์ ์œผ๋กœ ๋ณด๋ฉด ๋ฉ˜ํ† ๋ณด๋‹จ ๋ฉ˜ํ‹ฐ๊ฐ€ ํž˜๋“ค๊ณ  ์–ด๋ ค์šด ์ƒํ™ฉ์„ ์ด๊ฒจ๋‚ด๋Š”๋ฐ ๋”์šฑ ‘ํ•„์š”’๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ถ๊ทน์ ์œผ๋กœ๋Š” ๋ฉ˜ํ‹ฐ๊ฐ€ ๋ฉ˜ํ† ๋ฅผ ์ฐพ์•„ ๋‚˜์„œ์„œ ๋ฉ˜ํ† ๋ง ๊ด€๊ณ„๋ฅผ ๋งบ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋ฌผ๋ก  ์ฒœ์‚ฌ ๊ฐ™์€ ์„ ๋ฐฐ๊ฐ€ ๋ฉ˜ํ† ๋ฅผ ์ž์ฒ˜ํ•˜๊ณ  ๋ฉ˜ํ† ๋ง์„ ํ•ด์ฃผ๊ฒ ๋‹ค๊ณ  ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ๋•กํ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์„ ๋ฐฐ๋“ค์€ ์ž๊ธฐ ์ฝ”๊ฐ€ ์„์ž๋‹ค ํ•˜๋ฉฐ ๋ฐ”์˜๊ธฐ์—… ใ€€๊ทธ๋ ‡๋‹ค๋ฉด ๋ฉ˜ํ‹ฐ๋Š” ๋ฉ˜ํ† ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐพ์•„์•ผ ํ• ๊นŒ? ํ•จ๊ป˜ ์ผํ•˜๋Š” ์„ ๋ฐฐ ๋™๋ฃŒ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ •์ค‘ํ•˜๊ฒŒ ๋„์›€์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ๋„ ๋‚˜์˜์ง€ ์•Š๋‹ค ๋ณธ๋‹ค. ๋‹จ, ๋ฌด์ž‘์ • “์ €์˜ ๋ฉ˜ํ† ๊ฐ€ ๋˜์–ด์ฃผ์„ธ์š”.“๋ผ๋Š” ๊ฒƒ๋ณด๋‹ค ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณ ๋ฏผ๊ฑฐ๋ฆฌ๋ฅผ ํ„ธ์–ด๋†“์œผ๋ฉฐ ์กฐ๊ธˆ์”ฉ ์นœ๋ถ„์„ ์Œ“์•„๊ฐ„๋‹ค๋ฉด ์•„๋ฌด๋ž˜๋„ ๊ฒฝํ—˜์ด ๋งŽ์€ ์„ ๋ฐฐ์ด๊ธฐ์— ๊ณ ๋ฏผ์˜ ๋ฒ”์œ„๋ฅผ ์กฐ๊ธˆ์ด๋ผ๋„ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ. ํ˜น์—ฌ ์ฃผ๋ณ€์— ์„ ๋ฐฐ ๋™๋ฃŒ๊ฐ€ ์—†๋‹ค๋ฉด ์˜จ/์˜คํ”„๋ผ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™œ๋™์„ ํ•˜๋ฉด์„œ ์ฐพ๋Š” ๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ฉ”์‹ ์ €๋ฅผ ํ†ตํ•ด ๋‹ค๊ฐ€๊ฐ€๊ฑฐ๋‚˜ ๋ฉ”์ผ๋กœ ์ •์ค‘ํ•˜๊ฒŒ ๊ณ ๋ฏผ์„ ์š”์•ฝํ•ด์„œ ๋ณด๋‚ด๋†“์œผ๋ฉด ๋‹น์žฅ์€ ์•„๋‹ˆ๋”๋ผ๋„ ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ์‘๋‹ต์ด ์˜ค๊ธฐ ๋งˆ๋ จ์ด๋‹ค. (์ ์–ด๋„ ๊ดœ์ฐฎ์€ ์„ ๋ฐฐ๋ผ๋ฉด.) ๏ปฟใ€€์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ‘์„ ๋ฐฐ’์˜ ์ •์˜๋Š” ๋‹จ์ˆœ ๋‚˜์ด๊ฐ€ ๋งŽ์•„์„œ๊ฐ€ ์•„๋‹Œ ์ž์‹ ๋ณด๋‹ค ๊ฒฝํ—˜์ด ๋งŽ์€ ์‚ฌ๋žŒ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ž์‹ ๋ณด๋‹ค ๋‚˜์ด๊ฐ€ ์ ์€ ์‚ฌ๋žŒ์ด ๋ฉ˜ํ† ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๏ปฟ ์™œ ๋ฉ˜ํ† ๋ง์„ ํ•ด์•ผํ• ๊นŒ? ๏ปฟ ‘๊ฒฝํ—˜’์ด ์ •๋ง ์ค‘์š”ํ•˜๊ณ  ํ™์ˆ˜๊ฐ™์ด ์Ÿ์•„์ง€๋Š” ์‹ ๊ธฐ์ˆ ์„ ์˜จ๋ชธ์œผ๋กœ ๋ฐ›์•„๋‚ด์•ผ ํ•˜๋Š” ์šฐ๋ฆฌ ๊ฐœ๋ฐœ์ž๋“ค์€ ํŠนํžˆ๋‚˜ ๋ฉ˜ํ† ๋ง์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์–ด๋– ํ•œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด ๋‚ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ ์ƒ๊ฐํ•ด ๋ณด์ž. ์•„์ฃผ ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์—๋งŒ ์ง‘์ค‘ํ•˜๋‹ค ๋ณด๋‹ˆ ์„œ๋น„์Šค ๋ฆด๋ฆฌ์ฆˆ์‹œ ๊ฒ€ํ† ํ•ด์•ผ ํ•  ๋ถ€๋ถ„๋“ค์„ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

Elastic Stack์œผ๋กœ ์ฝ”๋กœ๋‚˜19 ๋Œ€์‹œ๋ณด๋“œ ๋งŒ๋“ค๊ธฐ - 2๋ถ€ : ๋Œ€์‹œ๋ณด๋“œ

์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” ๏ปฟ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜๊ธ‰ํ•˜๋ฉฐ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์„ ๊ฑฐ์ณค๊ณ , Filebeat์™€ Logstash๋ฅผ ๊ฑฐ์ณ Elasticsearch์— ์ธ๋ฑ์‹ฑ ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ์•ž์„  ํฌ์ŠคํŒ…์—์„œ ์ด์•ผ๊ธฐํ–ˆ์ง€๋งŒ ๋‹จ์ˆœํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™” ๋„๊ตฌ๋ฅผ ์ด์šฉํ•ด์„œ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ๋งŒ๋“ค์–ด๋‘” ๋Œ€์‹œ๋ณด๋“œ์— ์ž๋™์œผ๋กœ ๋ฐ˜์˜๋˜๋Š” ํ๋ฆ„์„ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋‹ค. ๋งˆ์นจ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ดํ‹€ ์ „์— ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋™์•ˆ์˜ ๋น ์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด๋‹ค. ์ด ๊ฒฝ์šฐ Filebeat-Logstash-Elasticsearch ๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋ผ๋ฉด ์•ž์„œ ์ž‘์„ฑํ–ˆ๋˜ ํŒŒ์ด์ฌ ์Šคํฌ๋ฆฝํŠธ๋งŒ ํ•œ๋ฒˆ ์‹คํ–‰ํ•ด ์ฃผ๋ฉด ์ดํ‹€ ์น˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฑฐ์ณ Elasticsearch๋กœ ์ธ๋ฑ์‹ฑ์ด ๋œ๋‹ค. ์ฆ‰, ๋ณ„๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์žฌ ๊ฐ€๊ณตํ•˜๊ณ  ์ถ”๊ฐ€ํ•˜๋Š” ๋‹ค์†Œ ๊นŒ๋‹ค๋กœ์šด ์ž‘์—…์ด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ํŒŒ์ดํ”„๋ผ์ธ ๋•๋ถ„์— ํ•œ ๋ฒˆ์˜ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์œผ๋กœ ์†์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌ๊ฐ€ ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ใ€€์ด์ œ๋Š” ์Œ“์—ฌ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์‹œ๊ฐํ™”๋ฅผ ํ•ด๋ณผ ์ฐจ๋ก€์ด๋‹ค. ElasticStack์—์„œ๋Š” Kibana๋ผ๋Š” ๊ฐ•๋ ฅํ•œ ์‹œ๊ฐํ™” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Kibana๋ฅผ ์ด์šฉํ•ด์„œ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. Visualize ใ€€๏ปฟElasticsearch์— ์ธ๋ฑ์‹ฑ ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์€ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณต๋˜๋Š” REST API๋ฅผ ํ†ตํ•ด์„œ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ณ  JSON ํ˜•ํƒœ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ๋‹ค์–‘ํ•˜๊ฒŒ ์‹œ๊ฐํ™”๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ Kibana์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ  UI๋กœ ํ‘œํ˜„ํ•˜๋Š” ์ผ๋ จ์˜ ๋ชจ๋“  ํ–‰์œ„๋ฅผ ํด๋ฆญ ๋ช‡ ๋ฒˆ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ์กฐ๊ธˆ๋งŒ ๋งŒ์ ธ๋ณด๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. New Visualizaion!!" New Visualizaion!! ใ€€๋ฒ„์ „์—…์ด ๋˜๋ฉด์„œ ๋น„์ฅฌ์–ผ๋ผ์ด์ฆˆ๋ฅผ ๋งŒ๋“œ๋Š” ์ฒซ ํ™”๋ฉด ๋˜ํ•œ ๋ณ€ํ™”๊ฐ€ ์ƒ๊ฒผ๋‹ค. ๊ธฐ์กด์—๋Š” ์–ด๋–ค ์œ ํ˜•์˜ ๋น„์ฅฌ์–ผ๋ผ์ด์ฆˆ๋ฅผ ์„ ํƒํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•ด ์„ ํƒํ•˜๋Š” ํ™”๋ฉด๋ถ€ํ„ฐ ๋‚˜์™”๋Š”๋ฐ ๋งŒ๋“œ๋Š” ๊ฑธ ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ ๋„์™€์ฃผ๋Š” Lens, TSVB ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์ด ๋จผ์ € ๋ฐ˜๊ฒจ์ค€๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด์„œ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋„ ๊ดœ์ฐฎ์ง€๋งŒ ๋ณด๋‹ค ๋ช…์‹œ์ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์œผ๋‹ˆ ํ•˜๋‹จ์— Aggregation based์„ ์„ ํƒํ•ด์„œ ์›ํ•˜๋Š” ๋น„์ฅฌ์–ผ๋ผ์ด์ฆˆ์˜ ํƒ€์ž…์„ ์„ ํƒํ•ด ๋ณด์ž. ์ดํ›„ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋น„์ฅฌ์–ผ๋ผ์ด์ฆˆ๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์ด ๋‚˜์˜ค๋Š”๋ฐ ๋Œ€์‹œ๋ณด๋“œ ํ™”๋ฉด ๊ธฐ์ค€์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•  ํ•ญ๋ชฉ๋ณ„๋กœ ์‚ดํŽด๋ณด์ž. ์ „์ฒด ์ˆ˜ ." . ใ€€๏ปฟํ™•์ง„์ž, ์‚ฌ๋ง์ž, ๊ฒฉ๋ฆฌ ํ•ด์ œ์˜ ์ดํ•ฉ์„ ํ‘œํ˜„ํ•˜๋ ค ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ‘์ˆซ์ž’๋ฅผ ํ‘œํ˜„ํ•˜๋ ค ํ•˜๋Š” ๊ฒฝ์šฐ Metric์„ ํ™œ์šฉํ•˜๊ณค ํ•œ๋‹ค. ์šฐ์ธก์—์„œ Aggregation ๋ฐฉ๋ฒ•์„ ‘sum’์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ํ•„๋“œ๋Š” ์œ ํ˜•๋ณ„๋กœ ๊ฐ๊ฐ ์„ ํƒํ•ด ์ฃผ์ž. ์•„๋ž˜ ‘Add’๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ™•์ง„, ์‚ฌ๋ง, ๊ฒฉ๋ฆฌ ํ•ด์ œ ์ˆ˜๋ฅผ ๋ชจ๋‘ ํ‘œ์‹œํ•œ ๋‹ค์Œ ์ €์žฅ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค. Label์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ค ํ˜•ํƒœ๋กœ Aggregation์„ ํ–ˆ๋Š”์ง€๋ฅผ Label ์˜์—ญ์— ๋ณด์—ฌ์ฃผ๋Š”๋ฐ ๊ทธ๊ฒŒ ๋ณด๊ธฐ ์‹ซ๋‹ค๋ฉด ์›ํ•˜๋Š” ํ…์ŠคํŠธ๋กœ ์ง€์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ด๋‹ค. ์ตœ๊ทผ ์ˆ˜ ." . ใ€€๏ปฟํ™•์ง„์ž, ์‚ฌ๋ง์ž, ๊ฒฉ๋ฆฌ ํ•ด์ œ์˜ ‘์ตœ๊ทผ ๋ฐ์ดํ„ฐ’๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒŒ ๋ชฉ์ ์ด๋‹ค. ์ด ๊ฒฝ์šฐ Aggregation์„ Top Hit์œผ๋กœ ์„ ํƒํ•˜๋ฉด ํ•„๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š”๋ฐ ํ•˜๋ฃจ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด 18 row์ด๊ธฐ ๋•Œ๋ฌธ์— (์„œ์šธ, ๋ถ€์‚ฐ, …, ์ œ์ฃผ, ๊ฒ€์—ญ) 18 row ์„ ์ „๋ถ€ ๋”ํ•œ ๊ฐ’์ด ํ•˜๋ฃจ ๊ธฐ์ค€์˜ ํ•ฉ๊ณ„๊ฐ€ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ •๋ ฌ์„ ๋‚ ์งœ ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ํ•ด์ค˜์•ผ ๊ฐ€์žฅ ์ตœ๊ทผ ๋ฐ์ดํ„ฐ์˜ ํ•ฉ๊ณ„๊ฐ€ ๋˜๋Š” ์ ๋„ ์‹ ๊ฒฝ ์จ์•ผ ํ•œ๋‹ค. ๊ฐ ํƒ€์ž…๋ณ„ ํ•ฉ๊ณ„ ." . ใ€€๏ปฟ์ง€์—ญ๋ณ„๋กœ ํƒ€์ž…๋ณ„ ์ˆ˜๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด Pie ํƒ€์ž…์œผ๋กœ ์„ ํƒํ•˜์—ฌ ์ง„ํ–‰ํ•œ๋‹ค. ํƒ€์ž…๋ณ„(์˜ˆ๋กœ ๋“ค์–ด ํ™•์ง„์ด๋ฉด confirmed)๋กœ ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด Aggregation์„ ‘sum’์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋นˆ ์›์ด ๋‚˜์˜ค์ง€๋งŒ ๊ฐ ์ง€์—ญ๋ณ„๋กœ ์ฐจํŠธ๋ฅผ ์ž˜๋ผ์„œ ๋ด์•ผ ํ•˜๊ธฐ์— ํ•˜๋‹จ์˜ Buckets์˜ Add๋ฅผ ๋ˆ„๋ฅด๊ณ  regieon์˜ ํ•„๋“œ๋ฅผ Terms Aggregation ํ•œ๋‹ค. 18 row์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋ถ€ ๋ณด์—ฌ์•ผ ํ•˜๊ธฐ์— ์ •๋ ฌ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ณ  option ํƒญ์—์„œ ๋ณด๋Š” ์ทจํ–ฅ์— ์•Œ๋งž๊ฒŒ ์„ค์ •๊ฐ’๋“ค์„ ๋ฐ”๊ฟ”์ค€๋‹ค. ํƒ€์ž…๋ณ„ ์ถ”์ด ." . ใ€€๏ปฟํ™•์ง„, ์‚ฌ๋ง, ๊ฒฉ๋ฆฌ ํ•ด์ œ ์ค‘์— ์‚ฌ๋ง์„ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋‘˜์€ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๊ณ  ๋ณ€ํ™”๋Ÿ‰์ด ๋น„์Šทํ•˜๊ธฐ ๋•Œ๋ฌธ์— x์ถ•์€ ์‹œ๊ฐ„์œผ๋กœ ์„ค์ •ํ•ด๋‘๊ณ  ์‚ฌ๋ง์€ ๋ง‰๋Œ€๋กœ, ๋‚˜๋จธ์ง€ ๋‘˜์€ ๋ผ์ธ์œผ๋กœ ํ•œ ํ™”๋ฉด์—์„œ ํ‘œํ˜„ํ•˜๋ฉด ์ด 3๊ฐ€์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ ์ข‹์„ ๊ฒƒ ๊ฐ™์•˜๋‹ค. Vertical bar ์„ ์„ ํƒํ•˜๊ณ  x์ถ•(Buckets > X-axis)์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ธ convert_date๋กœ ์„ค์ •ํ•œ๋‹ค. ๋‹ค์Œ์œผ๋กœ ์‚ฌ๋ง์€ ๋งค์ผ ๋ช‡ ๋ช… ์‚ฌ๋งํ–ˆ๋Š”์ง€ ๋šœ๋ ทํ•˜๊ฒŒ ๋ณด๊ธฐ ์œ„ํ•ด ๊ทธ๋ƒฅ sum์œผ๋กœ, ๋‚˜๋จธ์ง€ ๋‘˜์€ ๋ˆ„์  ํ•ฉ๊ณ„๊ฐ€ ๋” ์˜๋ฏธ ์žˆ์–ด ๋ณด์ผ ๊ฒƒ ๊ฐ™์•„ Cumulative Sum์œผ๋กœ Aggregation์„ ํ•œ๋‹ค.

Elastic Stack์œผ๋กœ ์ฝ”๋กœ๋‚˜19 ๋Œ€์‹œ๋ณด๋“œ ๋งŒ๋“ค๊ธฐ - 1๋ถ€ : ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ

๏ปฟใ€€์–ผ๋งˆ ์ „์— ํ•„์ž์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๊ณ  ์–ด๋Š ๊ต์œก ๊ธฐ๊ด€์—์„œ ElasticStack์— ๋Œ€ํ•œ ๊ฐ•์˜ ์š”์ฒญ์ด ๋“ค์–ด์™”๋‹ค. ์‚ฌ์‹ค ๊ด€๋ จ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์ง€์‹์ด ์•„์ฃผ ๊นŠ๊ณ  ํ•ด๋ฐ•ํ•œ ๊ฒŒ ์•„๋‹ˆ๋ผ์„œ ์•ฝ๊ฐ„์˜ ๋ฐ˜๊ฐ๋ถ€ํ„ฐ ๋“ค์—ˆ์ง€๋งŒ ElasticStack์„ ์ „ํ˜€ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋“ค ๊ธฐ์ค€์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐ€๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ์†Œ๊ฐœํ•˜๋Š” ์ •๋„๋กœ ํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•˜์—ฌ ์กฐ์‹ฌ์Šค๋Ÿฝ์ง€๋งŒ ๋–จ๋ฆฌ๋Š” ๋งˆ์Œ์œผ๋กœ ์—ด์‹ฌํžˆ ์ค€๋น„๋ฅผ ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด๋Ÿฐ์ €๋Ÿฐ ์ด์œ ๋กœ ๊ฐ‘์ž๊ธฐ ๊ฐ•์˜๋ฅผ ํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์—ˆ๊ณ  ๊ทธ๊ฐ„ ์ค€๋น„ํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์ด ๋„ˆ๋ฌด ์•„์‰ฝ์ง€๋งŒ ์•„๋ฌด ์†Œ์šฉ์ด ์—†๊ฒŒ ๋˜์–ด๋ฒ„๋ ธ๋‹ค. ๊ทธ๋ƒฅ ์ค‘๋‹จํ•˜๊ธฐ์—” ์•„์‰ฌ์šด ๋งˆ์Œ์ด ๋„ˆ๋ฌด ์ปค์„œ ์ค€๋น„ํ–ˆ๋˜ ๋‚ด์šฉ ์ค‘์— ‘๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ถ€๋ถ„’์€ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒ ๋„์›€์ด ๋ ๊นŒ ์‹ถ์–ด ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค ํ•œ๋‹ค. ๏ปฟ๊ฐ•์˜๋ฅผ ์ค€๋น„ํ•œ ์˜ฌํ•ด 1์›” ์ค‘์ˆœ์—” Elasticsearch ๋ฒ„์ „์ด 7.10.2์ด์—ˆ๋Š”๋ฐ ๋ธ”๋กœ๊ทธ๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š” ์ง€๊ธˆ์€ ๋ฒŒ์จ 7.11์œผ๋กœ ๋ฒ„์ „ ์—… ๋˜์—ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ์˜คํ”ˆ์†Œ์Šค ์ค‘์— ๋ฒ„์ „์—…์ด ๊ฐ€์žฅ ๋น ๋ฅธ๋ฐ ๊ทธ๋ ‡๋‹ค๊ณ  ๊ธฐ๋Šฅ์ด ํ™• ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ์Šต๋“ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋ฐ”๋€Œ์ง„ ์•Š์•˜๋‹ค. ๊ทธ๋งŒํผ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์—‡์„ ์›ํ•˜๋Š”์ง€ ๋ช…ํ™•ํžˆ ์•Œ๊ณ  ์ž‘์€ ๋‹จ์œ„๋กœ ์กฐ๊ธˆ์”ฉ ๋ฐ”๋€Œ์–ด ๊ฐ€๋Š” ๋ชจ์Šต์ด ๊ฝค ์ธ์ƒ์ ์ด๋‹ค. ใ€€๏ปฟ์ž‘๋…„ ์ดˆ๋ถ€ํ„ฐ ์ฝ”๋กœ๋‚˜19 ๋ฐ”์ด๋Ÿฌ์Šค๊ฐ€ ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ํผ์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ์•„์ง๊นŒ์ง€๋„ ์ง„ํ–‰ ์ค‘์ด๋‹ค. ๋‚˜๋„ ์ „์—ผ๋˜๋Š” ๊ฑด ์•„๋‹๊นŒ ํ•˜๋Š” ๋‘๋ ค์›€์— ์–ด๋””์—์„œ ์–ผ๋งˆ๋‚˜ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์–ด๋ ต๋˜ ์‹œ์ ˆ ์šฐ๋ฆฌ๋‚˜๋ผ์˜ ๋›ฐ์–ด๋‚œ ๊ฐœ๋ฐœ์ž๋“ค์€ ๋ˆ„๊ฐ€ ์‹œํ‚ค์ง€๋„ ์•Š์•˜๋Š”๋ฐ ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒŒ๋„ ๊ทธ ํ˜„ํ™ฉ์„ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ์œ ํ˜•์œผ๋กœ ์ฝ”๋กœ๋‚˜19 ๋ฐ”์ด๋Ÿฌ์Šค ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. ๊ทธ ๋•๋ถ„์— ์ข€ ๋” ํ˜„ํ™ฉ์„ ๋ณด๊ธฐ์— ํŽธํ•ด์กŒ๊ณ  ๋”์šฑ ์กฐ์‹ฌํ•˜๊ฒŒ ๋˜๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ด์ œ๋Š” ํฌํ„ธ์‚ฌ์ดํŠธ๋‚˜ ๊ฐ์ข… ๋งค์ฒด๋ฅผ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ์ฝ”๋กœ๋‚˜19 ๋ฐ”์ด๋Ÿฌ์Šค์˜ ํ˜„ํ™ฉ์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฒ€์ƒ‰์—”์ง„์ด์ง€๋งŒ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š”๋ฐ ํ›Œ๋ฅญํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ElasticStack์„ ํ™œ์šฉํ•ด์„œ ‘๋‚˜๋งŒ์˜ ๋Œ€์‹œ๋ณด๋“œ’๋ฅผ ๋งŒ๋“œ๋Š” ๊ฑธ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ๋ณธ ํฌ์ŠคํŒ…์˜ ์ผํšŒ์„ฑ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์—์„œ ๋๋‚˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ง€์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ์ „๋ฐ˜์ ์ธ “ํŒŒ์ดํ”„๋ผ์ธ"์„ ๊ตฌ์ถ•ํ•œ ๋’ค ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋‘๊ณ  ๋ฐ์ดํ„ฐ๋งŒ ๊ฐฑ์‹ ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋Œ€์‹œ๋ณด๋“œ ๋˜ํ•œ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค. ์ „์ฒด ํ๋ฆ„" ์ „์ฒด ํ๋ฆ„ ๏ปฟ๊ธ€์„ ๋ชจ๋‘ ์ž‘์„ฑํ•˜๊ณ  ๋ณด๋‹ˆ ์–‘์ด ์ƒ๊ฐ๋ณด๋‹ค ๊ธธ์–ด์ ธ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ  ํ•„ํ„ฐ๋งํ•˜์—ฌ Elasticsearch์— ์ธ๋ฑ์‹ฑ ํ•˜๋Š” ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ “๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ"์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ถ€๋ถ„๊ณผ ๋งŒ๋“ค์–ด์ง„ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ Kibana์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“œ๋Š” 2๊ฐœ์˜ ํฌ์ŠคํŒ…์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค. ๏ปฟใ€€์ตœ์ข…์ ์œผ๋กœ ๋งŒ๋“ค๊ฒŒ ๋  ๋Œ€์‹œ๋ณด๋“œ์˜ ๋ชจ์Šต์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ตœ์ข… ๋ชฉํ‘œ!" ์ตœ์ข… ๋ชฉํ‘œ! ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์„ฑ ์ค€๋น„ ใ€€๏ปฟ์˜ˆ์ „์—๋Š” Elasticsearch, Logstash, Kibana 3๊ฐ€์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ELK๋ผ ๋ถˆ๋ฆฌ๋‹ค Beat๋ผ๋Š” ๊ฒฝ๋Ÿ‰ ์ˆ˜์ง‘๊ธฐ ์ œํ’ˆ์ด ๋“ฑ์žฅํ•˜๋ฉฐ ์ด ๋ชจ๋“  ๊ฑธ ElasticStack๋ผ ๋ถ€๋ฅด๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. (๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ ์ฐธ๊ณ ) ๋จผ์ € ์–ด๋–ค ๋ชฉํ‘œ์™€ ์–ด๋–ค ์ˆœ์„œ๋กœ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ตฌ์„ฑํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ด์•ผ๊ฒ ๋‹ค.๏ปฟ ๋ฐ์ดํ„ฐ ใ€€๏ปฟ๋ฐ์ดํ„ฐ๋Š” ๊ณต๊ณต๋ฐ์ดํ„ฐ ํฌํ„ธ์—์„œ ๊ฐ€์ ธ์˜ค๋ ค๋‹ค ์กฐํšŒ๋ฅผ ํ•ด๋ณด๋‹ˆ ๋ˆ„๋ฝ๋˜๋Š” ๋‚ ์งœ๋„ ์žˆ์—ˆ๊ณ  ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํ’ˆ์งˆ์ด ์ƒ๊ฐ๋ณด๋‹ค ์ข‹์ง€ ์•Š์•„์„œ ๋‹ค๋ฅธ ๊ณณ์„ ์ฐพ์•„๋ด์•ผ ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ •๋ฆฌํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊นƒํ—™์— ๊ณต๊ฐœ๊ฐ€ ๋˜์–ด ์žˆ์–ด์„œ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ ค ํ•œ๋‹ค. ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋Š” https://coronaboard.kr/ ์—์„œ๋„ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค. ๏ปฟ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ(preprocessing) ใ€€๏ปฟ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์œ„ ๊นƒํ—™์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ค‘์— ์ง€์—ญ๋ณ„ ๋ฐœ์ƒ ํ˜„ํ™ฉ. ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์š”์ผ๋ณ„๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ‘๋ˆ„์ ’๋˜์–ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ์ฆ‰, ์„œ์šธ์ง€์—ญ ๊ธฐ์ค€์œผ๋กœ 2020๋…„ 2์›” 17์ผ์— 14๋ช…์ด ๋ฐœ์ƒํ–ˆ๊ณ  2020๋…„ 2์›” 18์ผ์— ํ•œ ๋ช…๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ 14๋ช…์œผ๋กœ ‘๋ˆ„์ ’๋˜์–ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ์‚ฌ์‹ค ์ด๋Œ€๋กœ ํ•ด๋„ ํฐ ๋ฌธ์ œ๋Š” ์—†์ง€๋งŒ ์–ด๋””๊นŒ์ง€๋‚˜ ๋ณ„๋„์˜ ๊ฐ€๊ณต ์—†์ด ์ตœ๋Œ€ํ•œ ์›๋ณธ ๋ฐ์ดํ„ฐ(raw) ๊ฐ€ ์žˆ์–ด์•ผ ๋ฐ์ดํ„ฐ ๋ถ„์„ ์‹œ ๋‹ค์–‘ํ•˜๊ฒŒ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์ „์— ์ „์ฒ˜๋ฆฌ ๊ณผ์ •์ด ํ•„์š”ํ–ˆ๋‹ค. ์ •๋ฆฌํ•˜๋ฉด, ์ง‘๊ณ„ ์ˆ˜๊ฐ€ ๋ˆ„์ ๋˜์ง€ ์•Š๊ณ  ๋‚ ์งœ ๊ธฐ์ค€์œผ๋กœ ์ง‘๊ณ„๋œ ์ˆ˜๋งŒ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ–ˆ๋‹ค.๏ปฟ ใ€€๏ปฟํ•„์ž๋Š” ์ฃผ๋กœ java๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐœ๋ฐœ์„ ํ•˜์ง€๋งŒ ๊ฐ€๋” ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ์„ฑ ๊ฐœ๋ฐœ์€ python์„ ํ™œ์šฉํ•˜๋Š” ํŽธ์ด๊ธฐ์— ๋‹ค์†Œ ์ด์œ ์ฝ”๋“œ๋Š” ์•„๋‹ˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋ ค ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค. import csv, requests import pandas as pd CSV_URL = 'https://raw.githubusercontent.com/jooeungen/coronaboard_kr/master/kr_regional_daily.csv' # ํ™•์ง„, ์‚ฌ๋ง, ๊ฒฉ๋ฆฌํ•ด์ œ yesterday_data = {} yesterday_data['์„œ์šธ'] = [0, 0, 0] yesterday_data['๋ถ€์‚ฐ'] = [0, 0, 0] yesterday_data['๋Œ€๊ตฌ'] = [0, 0, 0] yesterday_data['์ธ์ฒœ'] = [0, 0, 0] yesterday_data['๊ด‘์ฃผ'] = [0, 0, 0] yesterday_data['๋Œ€์ „'] = [0, 0, 0] yesterday_data['์šธ์‚ฐ'] = [0, 0, 0] yesterday_data['์„ธ์ข…'] = [0, 0, 0] yesterday_data['๊ฒฝ๊ธฐ'] = [0, 0, 0] yesterday_data['๊ฐ•์›'] = [0, 0, 0] yesterday_data['์ถฉ๋ถ'] = [0, 0, 0] yesterday_data['์ถฉ๋‚จ'] = [0, 0, 0] yesterday_data['์ „๋ถ'] = [0, 0, 0] yesterday_data['์ „๋‚จ'] = [0, 0, 0] yesterday_data['๊ฒฝ๋ถ'] = [0, 0, 0] yesterday_data['๊ฒฝ๋‚จ'] = [0, 0, 0] yesterday_data['์ œ์ฃผ'] = [0, 0, 0] yesterday_data['๊ฒ€์—ญ'] = [0, 0, 0] flag = False csv_data = [] with requests.

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

๏ปฟ ์ด๋ ฅ์„œ๋Š” ์–ธ์ œ ์“ฐ๊ฒŒ ๋˜๋Š” ๊ฑธ๊นŒ? ์•„์ฃผ ์ผ๋ฐ˜์ ์œผ๋กœ. ์‹ ์ž…(ํ•™์ƒ)์˜ ๊ฒฝ์šฐ ๋Œ€ํ•™์„ ์กธ์—…ํ•  ์ฆˆ์Œ ์ทจ์—…ํ•˜๊ณ  ์‹ถ์€ ํšŒ์‚ฌ๋กœ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•˜๊ณ , ๊ฒฝ๋ ฅ(ํšŒ์‚ฌ์›)์˜ ๊ฒฝ์šฐ ์ด์ง์„ ๋งˆ์Œ๋จน๊ณ  ๊ฐ€๊ณ ์ž ํ•˜๋Š” ํšŒ์‚ฌ๊ฐ€ ๋šœ๋ ทํ•˜๊ฒŒ ๊ฒฐ์ •์ด ๋˜๋ฉด ๊ทธ๋•Œ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ํšŒ์‚ฌ๋งˆ๋‹ค ์ •ํ•ด์ง„ ํ˜•์‹์ด ์žˆ๋Š” ๊ณณ์ด๋ผ๋ฉด ๊ทธ ํ˜•์‹์— ๋งž์ถ”์–ด ์ž‘์„ฑํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋‚˜๋งŒ์˜ ๊ธฐ์ค€์— ๋งž์ถ”์–ด ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋Š” ‘์ด๋ ฅ์„œ’. ใ€€ํšŒ์‚ฌ์— ์ž…์‚ฌํ•˜๊ณ  ์ •์‹ ์—†์ด ์ง€๋‚ด๋‹ค ๋ณด๋ฉด ์ด์ง์„ ์ƒ๊ฐํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ‘์ด๋ ฅ์„œ’๋ผ๋Š” ์กด์žฌ๋ฅผ ์ž์นซ ์žŠ์–ด๋ฒ„๋ฆฌ๊ธฐ ์‰ฝ๋‹ค. ๋˜ํ•œ ๊ตฌํƒœ์—ฌ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๋ฉด์„œ๊นŒ์ง€ ์จ์•ผ ํ•œ๋‹ค๋Š” ๋งˆ์Œ์กฐ์ฐจ ์ž˜ ๋“ค์ง€ ์•Š๋Š”๋‹ค. ์‹ค์ œ๋กœ ํ…… ๋นˆ ์ฑ…์ƒ ์•ž์— ์•‰์•„ ํ•˜์–€ A4์ง€์™€ ํŽœ ํ•œ ์ž๋ฃจ๋งŒ ๊ฐ€์ง€๊ณ  ์จ๋ด์•ผ์ง€ ํ•˜๊ณ  ์‹œ์ž‘ํ•˜๋ฉด ๋‚ด๊ฐ€ ์ด์ œ๊นŒ์ง€ ๋ญ˜ ํ•ด์™”๋‚˜ ํ•˜๋ฉฐ ์ž˜ ์จ์ง€์ง€ ์•Š๊ธฐ๋„ ํ•˜๊ณ . ์ด๋ ฅ์„œ์— ๋ญ˜ ์จ์•ผ ํ• ๊นŒ.์ถœ์ฒ˜ : https://epsem.tistory.com/243" ์ด๋ ฅ์„œ์— ๋ญ˜ ์จ์•ผ ํ• ๊นŒ. ์ถœ์ฒ˜ : https://epsem.tistory.com/243 ใ€€๊ทธ๋Ÿฐ ๊ฐœ๋ฐœ์ž๋กœ ๊ดœ์ฐฎ์€๊ฐ€ ์‹œ๋ฆฌ์ฆˆ์ธ ๏ปฟ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์žˆ์–ด ‘์ด๋ ฅ์„œ’๋ž€ ๋ฌด์—‡์ด๊ณ  ์–ธ์ œ, ์™œ ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ์จ์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ์ •๋ณด์˜ ๋ฐ”๋‹ค, ํ™์ˆ˜์ฒ˜๋Ÿผ ์Ÿ์•„์ง€๋Š” ๊ธฐ์ˆ ์˜ ๋ณ€ํ™”๋ฅผ IT ์ตœ์ „๋ฐฉ์—์„œ ์˜จ๋ชธ์œผ๋กœ ๋งž์„œ ์‹ธ์šฐ๋Š” ์šฐ๋ฆฌ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ‘ํšŒ์‚ฌ’๋ณด๋‹ค๋Š” ‘๋‚˜ ์ž์‹ ’์„ ์œ„ํ•ด ํ•˜๋ฃจ๋ฅผ ์‚ด์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ‘ํž˜’์ด ๋˜์—ˆ์œผ๋ฉด ํ•˜๋Š” ๋งˆ์Œ์œผ๋กœ. ๏ปฟ๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ, ๋ณธ ํฌ์ŠคํŒ…์€ ์ด์ง์„ ๊ถŒ์œ ํ•˜๋Š” ๋‚ด์šฉ์€ ์ ˆ๋Œ€ ์•„๋‹˜์„ ๋ฐํžŒ๋‹ค. ์˜คํžˆ๋ ค ์ด๋ ฅ์„œ ์ž‘์„ฑ์„ ํ†ตํ•ด ํ˜„์žฌ์˜ ์ง์žฅ์—์„œ ๋ณธ์ธ์—๊ฒŒ ๋”์šฑ ์ง‘์ค‘ํ•˜๊ณ  ํšŒ์‚ฌ์™€ ํ•จ๊ป˜ ์„ฑ์žฅํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ฐ”๋žŒ์ด๋‹ค. ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ด๋ ฅ์„œ๋ž€? ใ€€์šฐ์„  ์ด๋ ฅ์„œ๋ž€ ๋ฌด์—‡์ผ๊นŒ? ์‚ฌ์ „์  ์˜๋ฏธ๋ฅผ ๋จผ์ € ์‚ดํŽด๋ณด์ž. ์œ„ํ‚ค๋ฐฑ๊ณผ์— ๋”ฐ๋ฅด๋ฉด “์ทจ์ง์„ ์œ„ํ•œ ๋ฉด์ ‘์˜ ๊ธฐํšŒ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ํšŒ์‚ฌ ๋“ฑ ์กฐ์ง์— ์ œ์ถœํ•˜๋Š” ๊ฐœ์ธ์˜ ์‹ ์ƒ์ •๋ณด, ํ•™๋ ฅ, ๊ฒฝ๋ ฅ ๋“ฑ์„ ์‹œ๊ฐ„ ์ˆœ์œผ๋กœ ์š”์•ฝ ํ˜น์€ ๋‚˜์—ดํ•œ ๋ฌธ์„œ"๋ผ ๋‚˜์™€์žˆ๋‹ค. ์—ฌ๊ธฐ์— ์ถ”๊ฐ€๋กœ ์šฐ๋ฆฌ ๊ฐœ๋ฐœ์ž๋“ค์€ ๋ณธ์ธ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ‘๊ธฐ์ˆ ’์ด๋‚˜ ํŠน์ •ํ•œ ‘๊ฒฝํ—˜’์„ ์ ์œผ๋ฉฐ ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ์ˆ ์  ๊ฐ€์น˜์— ๋Œ€ํ•ด ์–ดํ•„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค. ใ€€์‚ฌ์ „์  ์˜๋ฏธ๋กœ ๋ณด๋ฉด ‘๋‚ด ์ •๋ณด’๋ฅผ ์ž˜ ์š”์•ฝํ•ด์„œ ์ทจ์—…ํ•˜๊ณ ์ž ํ•˜๋Š” ‘ํšŒ์‚ฌ’์— ์ „๋‹ฌํ•˜๋Š” ์ˆ˜๋‹จ์œผ๋กœ๋„ ์ดํ•ดํ•  ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ฆ‰, ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ณธ์ธ์„ ์ •๋ณด(ํ˜น์€ ์‹ค๋ ฅ)๋ฅผ ์ •๋ฆฌํ•ด์„œ ์•Œ๋ฆฌ๋Š” ์ˆ˜๋‹จ ์ค‘์— ํ•˜๋‚˜๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ณผ์—ฐ ์ด ์ด๋ ฅ์„œ์—๋Š” ‘์•Œ๋ฆฐ๋‹ค’๋ผ๋Š” ์˜๋ฏธ๋งŒ ๋‹ด๊ฒจ์žˆ์„๊นŒ? ใ€€ํ•„์ž๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์ด๋ ฅ์„œ์˜ ์ •์˜๋Š” ‘๋‚˜๋ฅผ ์•Œ๋ฆฌ๋Š” ์ˆ˜๋‹จ’ ๋ณด๋‹ค ‘๋‚˜๋ฅผ ๊ฐ€์žฅ ์ž˜ ์•„๋Š” ๊ฑฐ์šธ’์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค. ํŠนํžˆ ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ๋”์šฑ๋”. ๋ฌด์—‡์„ ๊ฐœ๋ฐœํ•ด์™”๊ณ  ์–ด๋–ค ๊ธฐ์ˆ ์„ ์จ ์™”์œผ๋ฉฐ ์–ด๋–ค ๊ฒฝํ—˜์ด ์žˆ๋Š”์ง€ ์–ด๋Š ๊ณณ์— ์ž‘์„ฑ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋”๋“ฌ๋”๋“ฌ ๊ธฐ์–ต์œผ๋กœ ๋‚˜ ์ž์‹ ์„ ์•Œ๊ธฐ์—” ์š”์ฆ˜์€ ๋ด์•ผ ํ•  ์ •๋ณด๊ฐ€ ๋งŽ์€ ์„ธ์ƒ์ด ๋˜์–ด๋ฒ„๋ ธ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์™œ ์จ์•ผ ํ• ๊นŒ? ใ€€์•ž์„œ ์ด๋ ฅ์„œ๋ฅผ ‘๋‚˜๋ฅผ ๊ฐ€์žฅ ์ž˜ ์•„๋Š” ๊ฑฐ์šธ’์ด๋ผ๊ณ  ๋งํ–ˆ๋‹ค. ๊ฑฐ์šธ์„ ๋ณด๊ณ  ์–ผ๊ตด์— ๋ญ๊ฐ€ ๋ฌป์—ˆ์œผ๋ฉด ๋‹ฆ๊ฑฐ๋‚˜ ์˜ท์ฐจ๋ฆผ์ด ๋ณ„๋กœ๋ผ๋ฉด ๊ณ ์ณ๋ณด๋Š” ๋“ฑ ‘๊ฑฐ์šธ’์€ ๋‚˜๋ฅผ ๊ฐ€์žฅ ์ž˜ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ ์ค‘์— ๊ฐ€์žฅ ์ข‹์€ ๋ฌผ๊ฑด์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค. ๊ทธ๋Ÿฐ ์˜๋ฏธ์—์„œ ์ด๋ ฅ์„œ๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ‘Java ๊ฐœ๋ฐœ N ์—ฐ์ฐจ’ ๊ฐ€ ์•„๋‹Œ ๊ทธ๋™์•ˆ ๋ฌด์—‡์„ ํ•ด์™”๊ณ  ์–ด๋–ค ๊ฒฝํ—˜๊ณผ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ด ์™”๋Š”์ง€ ์ •๋ฆฌ๋ฅผ ํ•˜๋ฉฐ ๋‚˜ ์ž์‹ ์„ ๋Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ํ›Œ๋ฅญํ•œ ๋„๊ตฌ๋ผ ์ƒ๊ฐํ•œ๋‹ค. ใ€€๊ฐœ๋ฐœ์ž ์ƒํ™œ(์ •ํ™•ํžˆ ๋งํ•˜๋ฉด ํšŒ์‚ฌ ์ƒํ™œ)์„ ํ•˜๋‹ค ๋ณด๋ฉด ๊ฐœ์ธ ์‚ฌ์—…์„ ์ œ์™ธํ•˜๊ณ  ํšŒ์‚ฌ๊ฐ€ ์ถ”๊ตฌํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค์˜ ๋ชฉํ‘œ๋ฅผ ์œ„ํ•ด ์ž์˜์ ์ด ์•„๋‹Œ ํƒ€์˜์ ์œผ๋กœ ์ž„๋ฌด๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋ฉด ์†Œ์œ„ ๋งํ•˜๋Š” ‘์ฐ์–ด๋‚ด๊ธฐ์‹ ๊ฐœ๋ฐœ’์„ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๊ณ , ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚  ๊ฒฝ์šฐ ๋‹ค์–‘ํ•œ ์‚ฝ์งˆ๋กœ ํ•ด๊ฒฐ์€ ํ•˜์ง€๋งŒ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ์ผ์ •์— ์น˜์—ฌ ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ๋“ค๋„ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ์—ฐ๋ง์ด ๋˜์–ด ํ•œ ํ•ด๋ฅผ ๋Œ์•„๋ณด๋ฉด ์—…๋ฌด๋ฅผ ์ผ์ •์— ๋งž์ถ”์–ด ์ง„ํ–‰ํ•˜๋Š” ๋ฐ๋Š” ์„ฑ๊ณตํ•˜์˜€์ง€๋งŒ ์ •์ž‘ ๋ณธ์ธ์—๊ฒŒ ๋‚จ์€ ๊ฑด ์žฅ์‹œ๊ฐ„ ์ปดํ“จํ„ฐ ์•ž์— ์•‰์•„ ์ƒ๊ธด ๊ฑฐ๋ถ๋ชฉ๊ณผ ์ ์  ์ง™์–ด์ ธ๊ฐ€๋Š” ๋‹คํฌ์„œํด๋ฟ์ด๋‹ค. ์™œ ๋˜์ง€?์ถœ์ฒ˜ : https://www.clien.net/service/board/park/4533074" ์™œ ๋˜์ง€? ์ถœ์ฒ˜ : https://www.clien.net/service/board/park/4533074 ๏ปฟใ€€์ด๋ ฅ์„œ๋ฅผ ์จ์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๊ผฝ์ž๋ฉด, ์ฒซ ๋ฒˆ์งธ๋กœ๋Š” ๋‚˜๋ฅผ ์•Œ๋ฆฌ๋Š” ์ˆ˜๋‹จ(Personal branding)์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ๋‹ค. ์ž˜ ์ •๋ฆฌํ•œ ์ž์‹ ์˜ ์ด๋ ฅ์„œ๋ฅผ ๊ณต๊ฐœํ•ด๋†“์œผ๋ฉด ์ทจ์—…์˜ ๊ธฐํšŒ๊ฐ€ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๊ณ  ์ธ์  ๋„คํŠธ์›Œํ‚น์ด ๋˜์–ด ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ‘๊ธฐํšŒ’๋ฅผ ์–ป์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

โ€˜์ค‘๋‹ˆ์–ด ๊ฐœ๋ฐœ์žโ€™์˜ 2020 ํšŒ๊ณ 

๏ปฟใ€€๊ทธ ์–ด๋Š ๋•Œ๋ณด๋‹ค๋„ ์ •์‹ ์—†์ด ๋‹ฌ๋ ค์˜จ 2020๋…„. ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ๋„ ๋งŽ์•˜๊ณ  ํฐ ๊ฟˆ์„ ๊พธ๊ธฐ๋„ ํ–ˆ์ง€๋งŒ ํ˜„์‹ค์˜ ๋ฒฝ ์•ž์— ํฌ๊ฒŒ ์ขŒ์ ˆ๋„ ํ•ด๋ณด๊ธฐ๋„ ํ•˜๊ณ . ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์„ธ์ƒ์˜ ๋ณ€ํ™”์— ์ ์‘ํ•˜๋žด ์ •์‹ ์ ์œผ๋กœ ์œก์ฒด์ ์œผ๋กœ ๋„ˆ๋ฌด ๋งŽ์ด ํž˜๋“ค์—ˆ๋˜ ์˜ฌํ•ด. ๋Œ์•„๋ณด๋ฉด ์ฐธ ํ›„ํšŒ๊ฐ€ ๋˜์ง€๋งŒ ํ•œํŽธ์œผ๋ก  ์‹œ๋ จ๊ณผ ์ขŒ์ ˆ ์†์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ๋ฐฐ์› ๋˜ ๊ทธ๋Ÿฐ ํ•œ ํ•ด๋ฅผ ๋ณด๋‚ธ ๊ฒƒ ๊ฐ™๋‹ค. ใ€€๏ปฟํ•„์ž๋Š” ๋‚ด๋…„์ด ๋˜๋ฉด ์ด์ œ ์–ด๋Š๋ง ๊ฐœ๋ฐœ์ž ์ƒํ™œ์„ ํ•œ ์ง€ 9๋…„ ์ฐจ๊ฐ€ ๋œ๋‹ค. ๋ณดํ†ต ์ฃผ๋‹ˆ์–ด๋ผ ํ•จ์€ ๋‹จ์ˆœํ•˜๊ฒŒ ์ด์ œ ๋ง‰ ์ทจ์—…ํ•œ ์‹ ์ž… ๋˜๋Š” 3~5๋…„ ์ฐจ๋ฅผ ๋งํ•˜๊ณ  ์‹œ๋‹ˆ์–ด๋Š” ์—ฐ๋ด‰์ด X ์›์„ ๋„˜๊ฑฐ๋‚˜ n ์—ฐ์ฐจ๋ฅผ ๋„˜์„ ๊ฒฝ์šฐ๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๋ฌผ๋ก  ๊ฐ ํšŒ์‚ฌ๋งˆ๋‹ค ์ด ๋‘˜์„ ์ •์˜ํ•˜๋Š” ๊ธฐ์ค€์ด ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ. ๊ทธ๋Ÿฐ๋ฐ ํ•„์ž๋Š” ์ฃผ๋‹ˆ์–ด๋„ ์‹œ๋‹ˆ์–ด๋„ ์•„๋‹Œ ๊ทธ ์‚ฌ์ด์—์„œ ์• ๋งค~ํ•œ ์—ฐ์ฐจ. ์ค‘๋‹ˆ์–ด. ๊ณผ์—ฐ ๋‚˜๋Š” ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ๊นŒ? ๋ฌด์—‡์„ ํ•ด์•ผ ์—ฐ์ฐจ์— ๋งž๋Š” ์—ญํ• (?)์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฑด ๋ˆ„๊ตฌ์—๊ฒŒ ๋ฐฐ์›Œ์•ผ ํ•˜๊ณ  ๋ˆ„๊ฐ€ ๊ฐ€๋ฅด์ณ ์ฃผ๊ธฐ๋‚˜ ํ• ๊นŒ? ๏ปฟใ€€๋งค๋…„ ํšŒ๊ณ ๋ฅผ ์จ์™”๋‹ค. ๊ทธ๋Ÿผ์— ์—ฐ๋ง์ด ๋˜์–ด์„œ ์—ฐ๋ก€ํ–‰์‚ฌ์ฒ˜๋Ÿผ ์ž‘์„ฑํ•˜๋Š” ๊ฒŒ ์•„๋‹Œ ๋‚˜์—๊ฒŒ ์ •๋ง ํ•„์š”ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ๊ณ ๋ฅผ ์ž‘์„ฑํ•˜๋ ค ํ•œ๋‹ค. ๋‹จ์ˆœํ•˜๊ฒŒ ์ด๋Ÿฐ์ €๋Ÿฐ ์ผ๋“ค์ด ์žˆ์—ˆ๊ณ  ‘์–ด์ฉ” ์ˆ˜ ์—†์—ˆ๋„ค~’ ์Š์กฐ๋ฆฌ๋Š” ๋ฌด์˜๋ฏธํ•œ ํšŒ๊ณ ๋ณด๋‹ค ํ˜„์‹ค์ ์œผ๋กœ ๋‚˜ ์ž์‹ ์„ ์œ„ํ•ด ๋ณ€ํ™”ํ•ด์•ผ ํ•  ๊ฒŒ ์žˆ์œผ๋ฉด ๊ตต๊ณ  ๊ธธ๊ฒŒ ๊ณ„ํš์„ ์„ธ์›Œ๋ณด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค. 2019 ํšŒ๊ณ  2018 ํšŒ๊ณ  2017๋…„์—” ์™œ ์—†์ง€..? 2016 ํšŒ๊ณ  ๋“ฑ์žฅ, ์ฝ”๋กœ๋‚˜-19 ๋‚˜๊ฐ€์ง€ ๋ง๋ผ๋ฉด ๋‚˜๊ฐ€์ง€ ๋งˆ! ๋ฐฅ ๋จน์ง€ ๋งˆ! ๋ชจ์ด์ง€ ๋งˆ! ์ถœ์ฒ˜ : salihgonenli" ๋‚˜๊ฐ€์ง€ ๋ง๋ผ๋ฉด ๋‚˜๊ฐ€์ง€ ๋งˆ! ๋ฐฅ ๋จน์ง€ ๋งˆ! ๋ชจ์ด์ง€ ๋งˆ! ์ถœ์ฒ˜ : salihgonenli ๏ปฟใ€€์„ธ์ƒ์ด ๋ณ€ํ–ˆ๋‹ค. ์ž‘๋…„๊นŒ์ง€๋งŒ ํ•ด๋„ ๋ฏธ์„ธ๋จผ์ง€๊ฐ€ ์‹ฌํ•˜๋ฉด ๋งˆ์Šคํฌ๋ฅผ ์“ฐ๊ณ  ๋‚˜๊ฐ€๊ณค ํ–ˆ์ง€๋งŒ ์ฝ”๋กœ๋‚˜-19๋ผ๋Š” ์ „์—ผ๋ณ‘์ด ์ „ ์„ธ๊ณ„์— ํผ์ง€๋ฉฐ ์ด์ œ๋Š” ๋งˆ์Šคํฌ ์—†์ด ์‚ด ์ˆ˜ ์—†๋Š” ์„ธ์ƒ์ด ๋˜์—ˆ๋‹ค. ๋Š˜ ์‚ฌ๋ฌด์‹ค์— ๋‚˜๊ฐ€ ํŒ€ ๋™๋ฃŒ๋ถ„๋“ค๊ณผ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๋ฉฐ ๋ฐฅ๋„ ๋จน๊ณ  ํšŒ์˜๋„ ํ•˜๋ฉฐ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ–ˆ์ง€๋งŒ ์žฌํƒ๊ทผ๋ฌด๋ฅผ ํ•œ์ง€ ์–ด๋Š๋ง ๋ฐ˜๋…„์ด ํ›Œ์ฉ ์ง€๋‚ฌ๋‹ค. ๏ปฟใ€€์ฒ˜์Œ์—” ์ง‘์—์„œ ํŽธํ•˜๊ฒŒ ์ผ์„ ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ IT ํšŒ์‚ฌ์— ๊ทผ๋ฌดํ•˜๊ณ  ์žˆ์ง€๋งŒ ์•„์ง๋„ ๋ฒ„๋ฒ…๊ฑฐ๋ฆฌ๊ณ  ์–ด์ƒ‰ํ•œ ํ™”์ƒํšŒ์˜์™€ ๋”๋”˜ ์—…๋ฌด ์ง„ํ–‰์œผ๋กœ ์ธํ•ด ์ ์  ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ๋‹ต๋‹ตํ•จ์€ ๊ทน์„ ๋‹ฌํ–ˆ๋‹ค. ์ถœ/ํ‡ด๊ทผ ์‹œ๊ฐ„ ๋“ฑ ์—…๋ฌด์ด์™ธ์— ํ•„์š”ํ•œ ์‹œ๊ฐ„์ด ์‚ฌ๋ผ์ง€๋ฉฐ ์˜คํžˆ๋ ค ์—…๋ฌด์— ์ง‘์ค‘ํ•˜๋Š” ์‹œ๊ฐ„์€ ๋งŽ์•„์กŒ๋‹ค. ๊ทธ์— ๋ฐ˜ํ•ด ํ”ผ๋กœ๋„๋Š” ์ง‘์ค‘ํ•œ ์—…๋ฌด์‹œ๊ฐ„์— ๋น„๋ก€ํ•˜๋ฉฐ ๋Š˜์–ด๋‚ฌ๊ธฐ์— ๋‚˜๋ฌด๋Š˜๋ณด์ฒ˜๋Ÿผ ๋Š˜์–ด์ง€๋Š” ์‹œ๊ฐ„๋“ค ๋˜ํ•œ ๋งŽ์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ง€๋‚˜๊ณ  ๋ณด๋ฉด ๊ทธ๋Ÿฌํ•œ ์‹œ๊ฐ„๋“ค์„ ์ž˜ ๊ณ„ํšํ•˜๊ณ  ์›€์ง์˜€๋”๋ผ๋ฉด ๋ญ๋ผ๋„ ๋ฐฐ์šฐ๊ฑฐ๋‚˜ ๋‹ฌ์„ฑํ–ˆ์„ ์‹œ๊ฐ„๋“ค์ธ ๊ฒƒ ๊ฐ™์•„์„œ ์•ฝ๊ฐ„ ์•„์‰ฌ์›€์ด ๋‚จ๋Š”๋‹ค. ๋‚ด๋…„์—” ๊ณ„ํšํ•˜๋Š” ์‹œ๊ฐ„์˜ ๋น„์ค‘์„ ์ข€ ๋” ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์œผ๋กœ. ๏ปฟใ€€์•„๋ฌด์ชผ๋ก ์ฝ”๋กœ๋‚˜-19 ๋ฐ”์ด๋Ÿฌ์Šค๊ฐ€ ์—†์–ด์ง€๊ณ  ๋‹ค์‹œ ์˜ˆ์ „์œผ๋กœ ๋Œ์•„๊ฐ”์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. ๊ทธ์— ๋งˆ์Šคํฌ ์ž˜ ์“ฐ๊ณ  ์† ์ž˜ ์”ป๊ณ  ์‚ฌ๋žŒ ๋งŽ์ด ๋ชจ์ด๋Š” ๊ณณ์€ ํ”ผํ•ด์•ผ ํ•˜๋Š” ๊ฑด ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด์•ผ ํ•  ๊ฐ€์žฅ ํฐ์ผ์ด๊ฒ ์ง€. ํšŒ์‚ฌ์ƒํ™œ ์„œ๋น„์Šค ์ „๋ฉด ๊ฐœํŽธ ใ€€๏ปฟํŒ€์— ํˆฌ์ž…ํ•œ ์ดํ›„ ๊ฐ€์žฅ ํฐ ๊ทœ๋ชจ๋กœ ์„œ๋น„์Šค ์ „๋ฉด ๊ฐœํŽธ์„ ์ง„ํ–‰ํ•˜์˜€๋‹ค. ๊ฑฐ์˜ ์˜ฌํ•ด ๋‚ด๋‚ด ํ–ˆ๋‹ค๊ณ  ๋ด๋„ ๋ฌด๋ฐฉํ•  ์ •๋„. ์—…๋ฌด์˜ ์–‘๋„ ๋งŽ์•˜๊ณ  ์ŠคํŽ™ ๋˜ํ•œ ๋ณต์žกํ•˜์˜€์ง€๋งŒ ๊ฐ€์žฅ ํฌ๊ฒŒ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ถ€๋ถ„์€ ๋ชจ๋†€๋ฆฌํ‹ฑ ์„œ๋น„์Šค์—์„œ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋กœ์˜ ์•„ํ‚คํ…์ฒ˜ ๋ณ€ํ™”๋ฅผ ์‹œ๋„ํ–ˆ๋‹ค๋Š” ์ . ๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜์ ์ธ Request - Response ์‹์˜ 1์ฐจ์›์ ์ธ ํ๋ฆ„์—์„œ ์ด๋ฒคํŠธ๋ผ๋Š” ํ–‰์œ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๊ตฌ์กฐ๋ฅผ ์ ์šฉํ•˜๋ฉฐ ๊ณ ๋ฏผํ–ˆ๋‹ค๋Š” ์ ์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ ์ค‘๋‹ˆ์–ด๋‹ค ๋ณด๋‹ˆ ์ฃผ์–ด์ง„ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœ๋งŒ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹จ ์ข€ ๋” ๋†’์€ ๊ณณ์˜ ์„ค๊ณ„ ๊ด€์ ์—์„œ ๊ณ ๋ฏผํ•˜๋Š” ์—ฐ์Šต์„ ํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ ์•„์ง ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๏ปฟใ€€์˜ฌํ•ด๋„ ๊ฐœ๋ฐœ ๋ฌธํ™”๋ฅผ ๊ฐœ์„ ํ•˜๋ ค๋Š” ๋…ธ๋ ฅ๋„ ํ•˜์˜€๋‹ค. CI๋ฅผ ์žฌ์„ค์น˜ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๊ฐœ์„ ์„ ํ†ตํ•ด ๋นŒ๋“œ ์†๋„๋ฅผ ๋ช‡ ๋ฐฐ๋กœ ๋Š˜๋ฆฌ๊ธฐ๋„ ํ•˜์˜€๊ณ , ๋‹จ์ˆœ/๋ฐ˜๋ณต์ ์ธ ์—…๋ฌด๋“ค์€ ๊ฐ์ข… ๋ด‡๋“ค์„ ๊ฐœ๋ฐœํ•˜์—ฌ ์—…๋ฌด ์ƒ์‚ฐ์„ฑ์„ ์˜ฌ๋ฆฌ๊ธฐ๋„ ํ•˜์˜€๋‹ค. Sentry๋ฅผ ์„œ๋ฒ„ ๋ ˆ๋ฒจ์— ์ ์šฉํ•˜์—ฌ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋“ค์„ ๊ทธ๋ฃนํ•‘ํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ธฐ๋„ ํ•˜์˜€๊ณ , ์†Œ๋‚˜ํ๋ธŒ์™€ jacoco๋ฅผ ์ ์šฉํ•˜์—ฌ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋„์‹ํ™”ํ•˜๋ฉฐ ํ˜„์žฌ ๋ชจ๋“ˆ์˜ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ๋„ ํ•ด๋ณด์•˜๋‹ค.

์• ์ž์ผ ์•„๋ฒ„์ง€์˜ ๊ณ ํ•จ๊ณผ ํ˜ธํ†ต (๋ฆฌ๋ทฐ๏ผšClean Agile - Back to Basics)

๏ปฟใ€€‘์• ์ž์ผ’ ์ด๋ผ๊ณ  ํ•˜๋ฉด ๋ฌด์—‡์ด ๋– ์˜ค๋ฅด๋Š”๊ฐ€? ์ž˜์€ ๋ชจ๋ฅด์ง€๋งŒ ๋ง‰์—ฐํ•˜๊ฒŒ ์ƒ๊ฐ์„ ํ•ด๋ณด๋ฉด, ๋งค์ผ ์˜ค์ „ ์Šคํฌ๋Ÿผ์„ ํ•˜๊ณ  ์ง„ํ–‰ ํ˜„ํ™ฉ์„ ๊ฐ€์‹œํ™”ํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋„๋Š” ์ผ์ข…์˜ ‘ํ”„๋กœ์„ธ์Šค’๋กœ ์•Œ๊ณ  ์žˆ๋‹ค. ์ข‹๋‹ค๋Š” ๊ฒƒ๋„ ๋“ค์—ˆ๊ณ  ๋„์ž…์„ ํ•˜๋ ค ํ•˜์ง€๋งŒ ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒŒ ์ž˜ ์•ˆ๋˜๋Š” ๊ทธ๊ฒƒ. ํ˜„์—…์— ๋“ค์–ด์˜ค๋ฉด์„œ ‘์• ์ž์ผ’ ๋„์ž…์˜ ์„ฑ๊ณต/์‹คํŒจ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ๊ฐ€๋”์”ฉ ๊ฑด๋„ˆ๊ฑด๋„ˆ ๋“ค์–ด๋งŒ ๋ณธ ์ˆ˜์ค€์ด๋‹ค. ์ด์ œ๋Š” ์ฃผ๋‹ˆ์–ด๋„ ์‹œ๋‹ˆ์–ด๋„ ์•„๋‹Œ ์ค‘๋‹ˆ์–ด๊ฐ€ ๋˜์–ด๋ณด๋‹ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ํŒจํ„ด, ์‹ ๊ธฐ์ˆ ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ํŒ€๊ณผ ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์˜ ๊ฑด๊ฐ•ํ•˜๊ณ  ์„ฑ๊ณต์ ์ธ ์ง„ํ–‰์„ ์œ„ํ•ด์„œ๋Š” ์ด๋Ÿฌํ•œ ํ™œ๋™๋“ค์ด ์ค‘์š”ํ•˜๊ตฌ๋‚˜ ํ•˜๋ฉฐ ์š”์ฆ˜ (์˜ฌํ•ด) ๋ผˆ!์ €!๋ฆฌ!๊ฒŒ! ๋Š๋ผ๋Š” ์ค‘์ด๋‹ค. ๏ปฟใ€€๋งˆ์นจ ํฌ๋ฆฌ์Šค๋งˆ์Šค ์—ฐํœด๋ฅผ ์•ž๋‘๊ณ  ์ด ์‹œ๊ตญ์— ๋‚˜๊ฐ€์ง€๋„ ๋ชปํ•˜๋Š”๋ฐ ๋ญ˜ ํ•ด์•ผ ํ•˜๋‚˜ ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ๋˜ ์ฐฐ๋‚˜ ์šด๋ช…์ฒ˜๋Ÿผ ํด๋ฆฐ ์• ์ž์ผ, ์ €์ž ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด์ด๋ผ๋Š” ์ฑ… ์ถ”์ฒœ์„ ๋ฐ›๋Š”๋‹ค. ๋ณดํ†ต ํ•„์ž๋Š” ์ฝ๊ณ  ์‹ถ์€ ์ฑ…์„ ๊ณ ๋ฅผ ๋•Œ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ํ‘œ์ง€์™€ ์ถ”์ฒœ์ธ(ํ˜น์€ ๋ฆฌ๋ทฐ์–ด)์˜ ๋Œ€ํ•œ ์‹ ๋ขฐ. ๋‘˜ ๋‹ค ๋„ˆ๋ฌด ์ข‹์•˜๊ธฐ์— ๋ฐ”๋กœ ์ธํ„ฐ๋„ท ์ฃผ๋ฌธ์„ ํ•˜์˜€์ง€๋งŒ ๊ทธ์ƒˆ๋ฅผ ๋ชป ์ฐธ๊ณ  ๊ทผ์ฒ˜ ์„œ์ ์— ๋“ค๋Ÿฌ ์ฑ…์„ ์‚ฌ ์˜จ๋‹ค.๏ปฟ ๊ฐ‘.๋ถ„.๋ˆ(ํ‚คํ˜ธํ…Œ) ใ€€ํ’์ฐจ๋‚˜ ํญํฌ๋ฅผ ๊ณต๊ฒฉํ•ด๋ณธ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ํ’์ฐจ๋ฅผ ๊ดด๋ฌผ๋กœ ๋ณด๊ณ  ๋‹ฌ๋ ค๋“ค์—ˆ๋˜ ๋ˆํ‚คํ˜ธํ…Œ" ํ’์ฐจ๋ฅผ ๊ดด๋ฌผ๋กœ ๋ณด๊ณ  ๋‹ฌ๋ ค๋“ค์—ˆ๋˜ ๋ˆํ‚คํ˜ธํ…Œ ๏ปฟใ€€ํ˜ธ๊ธฐ๋กญ๊ฒŒ ์ฒซ ์žฅ์„ ๋„˜๊ธฐ๋Š”๋ฐ ๊ฐ•๋ ฌํ•˜๊ฒŒ ๋‹ค๊ฐ€์˜ค๋Š” ๋ฌธ๊ตฌ. ์˜ฎ๊ธด์ด์— ๋”ฐ๋ฅด๋ฉด ์„ธ๋ฅด๋ฒคํ…Œ์Šค์˜ ์†Œ์„ค ‘๋ˆํ‚คํ˜ธํ…Œ’์—์„œ ์ฃผ์ธ๊ณต ๋ˆํ‚คํ˜ธํ…Œ๊ฐ€ ํ’์ฐจ๋ฅผ ๊ณต๊ฒฉํ•˜๋Š” ๋ชจ์Šต์—์„œ ์˜จ ํ‘œํ˜„์ด๋ผ ํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„ ํ—›๋˜๊ณ  ๋ฌด๋ชจํ•œ ์‹ธ์›€์„ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋น—๋Œ€์–ด ์ด์•ผ๊ธฐํ•˜๋ฉฐ ๋ฐ”๋ณด ํ˜น์€ ํ˜„์‹ค ๋ถ€์ ์‘์ž๋กœ ๊ฐˆ์Œํ•˜๋Š” ํ‘œํ˜„์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๋Ÿฌ์‹œ์•„ ์ž‘๊ฐ€ ์ด๋ฐ˜ ํˆฌ๋ฅด๊ฒŒ๋„คํ”„๋Š” ํ–„๋ฆฟ์„ ์‚ฌ๋ž‘ํ•˜๊ธฐ๋Š” ํž˜๋“ค์ง€๋งŒ ๋ˆํ‚คํ˜ธํ…Œ๋Š” ์‚ฌ๋ž‘ํ•˜์ง€ ์•Š๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค๋Š” ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์•„๋งˆ ์ €์ž๋Š” ๊ณ ๋ฏผ๋ณด๋‹ค๋Š” ํ–‰๋™์„ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋˜ ๋ˆํ‚คํ˜ธํ…Œ๋ฅผ ๋น—๋Œ€์–ด ํ˜„์‹ค์— ์•ˆ์ฃผํ•˜์ง€ ์•Š๊ณ  ๊ฑด๊ฐ•ํ•œ ๊ฐœ๋ฐœ ๋ฌธํ™”๋ฅผ ๊ฐœ์„ ํ•˜๋ ค๋Š” ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ์กฐ์–ธ๊ณผ ๋ฐ•์ˆ˜๋ฅผ ๋ณด๋‚ด๋ ค ํ–ˆ๋˜ ๊ฑด ์•„๋‹๊นŒ ์‹ถ๋‹ค.๏ปฟ ์ฑ…์˜ ๊ตฌ์„ฑ ๏ปฟใ€€ํŽ˜์ด์ง€ ์ˆ˜(230p)๊ฐ€ ๋งŽ์ง€ ์•Š์•„์„œ ๊ฐ€๋ณ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒ ๋‹ค ์‹ถ์—ˆ์ง€๋งŒ ๋‹ค์†Œ ์ž‘์€ ๊ธ€์”จ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์„œ ์ฑ…์„ ์ž˜ ์•ˆ์ฝ์—ˆ๋˜ ํ•„์ž์—๊ฒ ์•ฝ๊ฐ„ ๋ถ€๋‹ด์œผ๋กœ ๋‹ค๊ฐ€์™”๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด์šฉ๋“ค์ด ๋„ˆ~๋ฌด ๊ณต๊ฐ์ด ๋˜์–ด ๋งˆ์น˜ ํ•„์ž์˜ 2020๋…„์„ ์˜ค๋ž˜์ „์— ์˜ˆ๊ฒฌํ•˜๊ณ  ๋ฏธ๋ฆฌ ์จ๋‘”๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ์„ ๋ฐ›์•˜์„ ์ •๋„๋ผ ์•„์นจ 5์‹œ์— ์ผ์–ด๋‚˜ ์ €๋… 11์‹œ๊ฐ€ ๋˜์–ด์„œ์•ผ ๋‹ค ์ฝ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ฒ˜์Œ ๋“ค์–ด๋ณธ ์šฉ์–ด๋‚˜ ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋˜๋Š” ๊ฐœ๋…๋“ค๋„ ์žˆ์–ด ๋‹ค์Œ๋‚  ๋…ธํŠธ๋ถ์„ ์˜†์— ๋‘๊ณ  ์ฐพ์•„๊ฐ€๋ฉฐ ๋‹ค์‹œ ์ฝ๊ธฐ๋„ ํ•˜์˜€๋‹ค. (๊ทธ๋งŒํผ ์ œ๋Œ€๋กœ ์ฝ์–ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค.) ๏ปฟใ€€์ฑ… ์ดˆ๋ฐ˜๋ถ€ํ„ฐ ์ €์ž๋Š” ์ด ์ฑ…์„ ‘์„ ์–ธ’์ด๋‚˜ ‘์ •์˜’ ๊ฐ€ ์•„๋‹Œ ์• ์ž์ผ์— ๋Œ€ํ•œ ‘๊ฒฝํ—˜’์„ ํ† ๋Œ€๋กœ ์˜คํ•ด๋ฅผ ๋ฐ”๋กœ์žก๋Š”๋‹ค๋ผ๊ณ  ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค. 2001๋…„ 2์›”, ์• ์ž์ผ ์„ ์–ธ์ด ๋ฐœํ‘œ๊ฐ€ ๋˜์—ˆ๊ณ  ๋‚ด๋…„์ด๋ฉด 20๋…„์ด ๋ผ๊ฐ€๋Š” ์‹œ์ ์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋กœ ๋ณ€ํ˜•๋œ ‘์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก ’์ด ๋‚˜์™”์ง€๋งŒ ์• ์ž์ผ์˜ ๊ธฐ์ค€์„ ๋‹ค์‹œ ์†Œ๊ฐœํ•˜๋ฉฐ ๋ณธ์งˆ์„ ํ๋ ค์„  ์•ˆ๋œ๋‹ค๊ณ  ์ด์•ผ๊ธฐํ•œ๋‹ค. (์ฑ…์ด ๋ถ€ ์ œ๋ชฉ์ด Back to Bascis์ธ ๊ฒƒ์„ ๋ณด๋ฉด …)๏ปฟ ๏ปฟใ€€ํฅ๋ฏธ์ง„์ง„ํ•œ ์ฑ… ๋‚ด์šฉ ์ค‘์— ์•„์ง๊นŒ์ง€๋„ ๋จธ๋ฆฟ์†์— ๋‚จ์•„์žˆ๋˜ ์• ์ž์ผ๊ณผ ์ž์ฃผ ๋น„๊ต๋˜๋Š” ‘ํญํฌ์ˆ˜ ๋ชจ๋ธ’๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•œ ๋ถ€๋ถ„์„ ํ•„์ž๊ฐ€ ์ดํ•ดํ•œ ๋Œ€๋กœ ์ ์–ด๋ณด๋ ค ํ•œ๋‹ค. (๋„ˆ๋ฌด๋‚˜๋„ ๋”์ฐํ•˜๊ฒŒ ๊ณต๊ฐ๋˜๊ธฐ์—…) ํญํฌ์ˆ˜ ๋ชจ๋ธ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•œ ์‚ฌ๋ก€ ๏ปฟํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž๊ฐ€ ๋งˆ๊ฐ๊ธฐํ•œ์„ ํ™•์ธํ•˜๊ณ  ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ์ง€๊ธˆ์€ 1์›”์ด๊ณ  ์ถœ์‹œ๊ฐ€ 10์›”์ด๋‹ˆ ๊ฐ ์ผ์ •์€ ๊ฑฐ๊พธ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ๊ฐœ๋ฐœ์€ QA ๊ธฐ๊ฐ„ ๊ณ ๋ ค 9์›”์— ์ข…๋ฃŒ, ์„ค๊ณ„๋Š” 7์›”์—, ๋ถ„์„์€ ๋Šฆ์–ด๋„ 4์›”๊นŒ์ง„ ํ•˜๋Š” ๊ฑธ๋กœ ‘๋ชป ๋ฐ•๋Š”๋‹ค.’ (๋„ค…?) ๊ทธ๋ ‡๊ฒŒ ์—ฌ์œ ๋กญ๊ฒŒ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๋‹ค 4์›”์ด ๋˜์–ด ๋ถ„์„ ๋‹จ๊ณ„๊ฐ€ ๋๋‚œ๋‹ค. ์™œ? 4์›”์ด ๋์œผ๋‹ˆ๊นŒ. ๋˜ ์‹œ๊ฐ„์ด ํ˜๋Ÿฌ 7์›”์ด ๋˜์ž ๊ธฐ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค. ์„ค๊ณ„ ์ข…๋ฃŒ. ์™œ? 7์›”์ด ๋์œผ๋‹ˆ๊นŒ. ๊ทธ ํ›„ ๋‚จ์€ 2๊ฐœ์›” ๋™์•ˆ ๊ฐœ๋ฐœ์ž๋“ค์€ ์—„์ฒญ๋‚œ ์••๋ฐ•๊ณผ ๊ธ‰์ฆํ•˜๋Š” ์•ผ๊ทผ๊ณผ ํ•จ๊ป˜ ํ•˜๋‚˜๋‘˜์”ฉ ํŒ€์„ ๋– ๋‚˜๊ณ  ๊ทธ๋งŒ๋‘๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. QA์—์„œ ํ™•์ธํ•œ ๋ฒ„๊ทธ๊ฐ€ ์…€ ์ˆ˜ ์—†์ด ์Ÿ์•„์ ธ ๋‚˜์˜จ๋‹ค. (์†Œ๋ฆ„ 1) ํ•˜์ง€๋งŒ 10์›”์— ์ถœ์‹œํ•˜๊ธฐ๋กœ ํ–ˆ์œผ๋‹ˆ ๋ฒ„๊ทธ๋‚˜ ์—๋Ÿฌ๊ฐ€ ํ„ฐ์ ธ ๋‚˜์˜ค์ง€๋งŒ ์ถœ์‹œ๋ฅผ ํ•˜๊ณ . ํ”„๋กœ์ ํŠธ๋Š” ์‹คํŒจ๋กœ ๋Œ์•„๊ฐ„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํšŒ๊ณ ๋ฅผ ํ•˜๊ณ . ๋‹ค์Œ๋ฒˆ์—” ์ œ๋Œ€๋กœ ํ•ด์•ผ์ง€! ํ•˜๋ฉฐ ๋‹ค์งํ•œ๋‹ค. (์†Œ๋ฆ„ 2) ์ €์ž๋Š” ์ด๊ฒƒ์„ ๋”ฐ๋ผ์žก์„ ์ˆ˜ ์—†๋Š” ํ”„๋กœ์„ธ์Šค ์ธํ”Œ๋ ˆ์ด์…˜(Runaway Process Inflation)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋  ๋ฆฌ๊ฐ€ ์—†๋Š” ์ผ์„ ๊ณ„์†ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๊ทธ๊ฒƒ๋„ ์•„์ฃผ ๋งŽ์ด. ๊ทธ๋ž˜์„œ ์• ์ž์ผ์ด๋ž€?

Swagger์™€ Spring Restdocs์˜ ์šฐ์•„ํ•œ ์กฐํ•ฉ (by OpenAPI Spec)

๏ปฟMSA ํ™˜๊ฒฝ์—์„œ์˜ API ๋ฌธ์„œํ™”๋Š” ์–ด๋–ค ์‹์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฑธ๊นŒ? ์˜ˆ์ปจ๋Œ€, ๋ชจ๋“ˆ์ด 10๊ฐœ ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด ๊ฐ ๋ชจ๋“ˆ๋งˆ๋‹ค API ๋ฌธ์„œ๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ํ…Œ๊ณ  API ๋ฌธ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ๊ฐ์˜ (10๊ฐœ์˜) URL๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•  ํ…๋ฐ ์ด๊ฒŒ ๊ณผ์—ฐ ํšจ์œจ์ ์ผ๊นŒ? ๋ฌผ๋ก  ๊ธฐ๋Šฅ๋ณ„๋กœ URL์ด ๋ถ„๋ฆฌ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๊ณ  ๊ตณ์ด ๋ชจ์•„๋ณด์ž๋ฉด ๊ฐ API ๋ฌธ์„œ๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ํฌ๋กค๋ง ํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋„ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•๋“ค์€ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์œ„ํ•œ ๋ณ„๋„์˜ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋˜๋‹ˆ ์ผ์„ ์œ„ํ•œ ์ผ์ด ๋˜๋Š” ๊ฒƒ ๊ฐ™์•„ ๋ญ”๊ฐ€ ์•„์‰ฌ์› ๋‹ค. ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ? ๊ณ ๋ฏผ์˜ ์‹œ์ž‘ ใ€€ํ•œ์ฐฝ ๊ถ๊ธˆ์ฆ์ด ๋จธ๋ฆฟ์†์—์„œ ์ง€์›Œ์ง€์ง€ ์•Š์•˜์„๋•Œ Spring ํ•œ๊ตญ ์Šคํ”„๋ง ์‚ฌ์šฉ์ž ๋ชจ์ž„ ํŽ˜์ด์Šค๋ถ ๊ทธ๋ฃน์— ๋ฌธ์˜๋„ ํ•ด๊ฐ€๋ฉฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๊ฐ€๊ณ  ์žˆ์—ˆ๋‹ค. ๏ปฟ๋‹‰๋„ค์ž„์ด๋‚˜ ํ”„๋กœํ•„ ์‚ฌ์ง„์€ ๊ทธ๋“ค์˜ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์œ„ํ•ด ์ž„์˜๋กœ ์ง€์ •ํ•˜์˜€๋‹ค." ๏ปฟ๋‹‰๋„ค์ž„์ด๋‚˜ ํ”„๋กœํ•„ ์‚ฌ์ง„์€ ๊ทธ๋“ค์˜ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์œ„ํ•ด ์ž„์˜๋กœ ์ง€์ •ํ•˜์˜€๋‹ค. ใ€€๏ปฟํ•„์ž์™€ ํ•จ๊ป˜ ๊ฐœ๋ฐœ์ž์˜ ์ธ์ƒ์„ ์‹œ์ž‘ํ•œ ๋ฉ‹์ง„ ์นœ๊ตฌ๋“ค์—๊ฒŒ ์ •ํ™•ํžˆ ์˜ฌํ•ด 6์›” ์ดˆ์— ๊ณ ๋ฏผ์„ ํ„ธ์–ด๋†“์œผ๋ฉฐ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์—†์„์ง€์— ๋Œ€ํ•œ ๋…ผ์˜๋ฅผ ํ–ˆ๋˜ ์ ์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์นœ๊ตฌ ์ค‘ ํ•œ ๋ช…์ด ์žŠ๊ณ  ์žˆ์—ˆ๋˜ ๊ทธ ์ด์Šˆ์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ๊บผ๋‚ด๋ฉฐ URL ํ•˜๋‚˜๋ฅผ ๋˜์ ธ์ค€๋‹ค. ์ฐธ ๊ณ ๋งˆ์šด ์นœ๊ตฌ๋“ค. Shout out 34. asuraiv, black9p ์–ธ ๋ฐ˜๋…„์ด ์ง€๋‚ฌ์œผ๋‚˜ ํ•„์ž๋„ ์žŠ๊ณ  ์žˆ์—ˆ๋˜ ์ด์Šˆ๋ฅผ ๊ทธ๋Š” ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์—ˆ๋‹ค." ์–ธ ๋ฐ˜๋…„์ด ์ง€๋‚ฌ์œผ๋‚˜ ํ•„์ž๋„ ์žŠ๊ณ  ์žˆ์—ˆ๋˜ ์ด์Šˆ๋ฅผ ๊ทธ๋Š” ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ใ€€๏ปฟ์˜ฌํ•ด NHN FORWARD์—์„œ ์ง„ํ–‰ํ–ˆ๋˜ ์„ธ์…˜ ์ค‘์—์„œ MSA ํ™˜๊ฒฝ์—์„œ API ๋ฌธ์„œ ๊ด€๋ฆฌํ•˜๊ธฐ: ์ƒ์„ฑ๋ถ€ํ„ฐ ๋ฐฐํฌ๊นŒ์ง€๋ผ๋Š” ์ œ๋ชฉ์˜ ๋‚ด์šฉ์ด์—ˆ๊ณ , ์ •ํ™•ํ•˜๊ฒŒ ํ•„์ž๊ฐ€ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„์„ ์ฝ•! ์ง‘์–ด์„œ ํ•ด๊ฒฐํ•ด ์ค€ ์‚ฌ๋ก€์˜€๋‹ค. ์—ญ์‹œ ์„ธ์ƒ์—” ์—„์ฒญ๋‚œ ๊ณ ์ˆ˜๋“ค์ด ๋‚ด๊ฐ€ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„๋“ค์„ ์ด๋ฏธ(ํ˜น์€ ์ดํ›„์—๋ผ๋„) ๊ณ ๋ฏผํ•˜๊ณ  ํ•ด๊ฒฐํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๋ผ๊ณ  ๊ณต์œ ์˜ ํž˜์ด ์ด๋ ‡๊ฒŒ๋„ ๋Œ€๋‹จํ•˜๊ตฌ๋‚˜ ํ•˜๋ฉฐ ๋†€๋ผ์›€์„ ๊ธˆ์น˜ ๋ชปํ•˜์˜€๋‹ค.๏ปฟ ใ€€๏ปฟ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” OpenAPI Spec ์„ ํ™œ์šฉํ•˜์—ฌ Spring Restdocs๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ฌธ์„œ๋ฅผ Swagger UI์—์„œ ๋ณด๋Š” ํ๋ฆ„์„ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด๊ณ ์ž ํ•œ๋‹ค. ์ฆ‰, Swagger ๋‚˜ Spring Restdocs ๋ญ๋กœ ๋งŒ๋“ค๋“  ๊ฐ„์— OpenAPI Spec์— ๋งž์ถฐ์„œ๋งŒ ๋งŒ๋“ ๋‹ค๋ฉด ํ•œ๊ณณ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค๋Š” ํฌ๋ง์ด ๋ณด์˜€๋‹ค. ๋ฉฐ์น  ์ „ ์ž‘์„ฑํ•œ OpenAPI ์™€ Swagger-ui ํฌ์ŠคํŒ…์„ ๋ณธ ๋…์ž๋“ค์€ ์ง€๊ธˆ์˜ ํฌ์ŠคํŒ…์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ‘๊ฑฐ๋ฆ„์ด์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ˆˆ์น˜์ฑ˜์„ ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ๏ปฟ์ข‹์€ ๋‚ด์šฉ์„ ๊ณต์œ ํ•ด ์ฃผ์‹  (์ €์˜ ๊ณ ๋ฏผ์„ ์™„๋ฒฝํ•˜๊ฒŒ ํ•ด๊ฒฐํ•ด ์ฃผ์‹ ) NHN FORWARD ๋ฐœํ‘œ์ž๋ถ„๊ป˜ ์ด ํฌ์ŠคํŒ…์„ ๋นŒ์–ด ๊ฐ์‚ฌ์˜ ์ธ์‚ฌ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. :) ๋‹น์žฅ ํŒ€ ๋‚ด์—๋„ ์ ์šฉํ•ด๋ด์•ผ๊ฒ ์–ด์š”!! ๏ปฟSpring Restdocs์—์„œ OpenAPI Spec ์ถ”์ถœ ใ€€๏ปฟ๋ˆ„๊ฐ€ ๋˜ ์นœ์ ˆํ•˜๊ฒŒ ์˜คํ”ˆ์†Œ์Šค๋กœ ๋งŒ๋“ค์–ด๋†จ๋‹ค. https://github.com/ePages-de/restdocs-api-spec ์—์„œ ๊ด€๋ จ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ ํ•ด๋‹น ๋งํฌ์—์„œ๋Š” gradle ๋ฒ„์ „์ด๊ณ  https://github.com/BerkleyTechnologyServices/restdocs-spec ๋Š” maven ๋ฒ„์ „์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋งˆ์นจ ํ•„์ž์˜ Github์— Maven ๋ฒ„์ „์œผ๋กœ SpringRestdocs๋ฅผ ์„ธํŒ…ํ•ด๋‘” Repository ๊ฐ€ ์žˆ์–ด์„œ ์ด๋ฅผ ํ™œ์šฉํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.๏ปฟ pom.xml ์ถ”๊ฐ€ ใ€€๏ปฟ๊ด€๋ จ dependency๋ฅผ ์ถ”๊ฐ€ํ•˜์ž. jcenter๋ผ๊ณ  bintray.com ์—์„œ ์šด์˜๋˜๋Š” Maven Repository์— ์˜ฌ๋ ค์ง„ ์˜คํ”ˆ์†Œ์Šค์ด๋‹ˆ repository ๋„ ์ถ”๊ฐ€ํ•ด ์ฃผ์ž. <properties> <restdocs-api-spec.version>0.10.0</restdocs-api-spec.version> <restdocs-spec.version>0.19</restdocs-spec.version> </properties> <repositories> <repository> <id>jcenter</id> <url>https://jcenter.bintray.com</url> </repository> </repositories> <dependency> <groupId>com.epages</groupId> <artifactId>restdocs-api-spec</artifactId> <version>${restdocs-api-spec.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.epages</groupId> <artifactId>restdocs-api-spec-mockmvc</artifactId> <version>${restdocs-api-spec.version}</version> <scope>test</scope> </dependency> ๏ปฟ์œ„์˜ dependency์—์„œ ์ œ๊ณตํ•ด ์ฃผ๋Š” ๋ชจ๋“ˆ๋กœ ํ…Œ์ŠคํŠธ์˜ SpringRestdocs๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด OpenAPI Spec ์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š” plugin ๋˜ํ•œ ์ถ”๊ฐ€ํ•ด ์ฃผ์ž <pluginRepositories> <pluginRepository> <id>jcenter</id> <url>https://jcenter.bintray.com</url> </pluginRepository> </pluginRepositories> <plugin> <groupId>com.github.berkleytechnologyservices.restdocs-spec</groupId> <artifactId>restdocs-spec-maven-plugin</artifactId> <version>${restdocs-spec.version}</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <specification>OPENAPI_V3</specification> <format>JSON</format> <outputDirectory>${project.build.directory}/classes/static/docs</outputDirectory> </configuration> </execution> </executions> </plugin> ๏ปฟ์œ„ plugin ์„ค์ •์„ ๋ณด๋ฉด format ์„ JSON์œผ๋กœ ํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ YAML๋กœ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ž์„ธํ•œ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ์œ„์—์„œ ๋ช…์‹œํ•œ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋ฌธ์„œํ™” ๋กœ์ง ์ถ”๊ฐ€ ใ€€๏ปฟ๊ธฐ์กด์— SpringRestdocs๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋กœ์ง์€ org.springframework.restdocs.mockmvc.MockMvcRestDocumentation์—์„œ ์ œ๊ณตํ•ด ์ฃผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์œ„์—์„œ ์ด์•ผ๊ธฐ ํ•œ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด com.epages.restdocs.apispec.MockMvcRestDocumentationWrapper๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์ž. ๋ณ€๊ฒฝ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด import๋งŒ ๋ณ€๊ฒฝํ•˜๋„๋ก ํ•œ๋‹ค. //import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.*; import static com.epages.restdocs.apispec.MockMvcRestDocumentationWrapper.*; ๏ปฟ์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•˜๊ณ  Maven ๋นŒ๋“œ๋ฅผ ํ•ด๋ณด๋ฉด plugin์—์„œ ์ง€์ •ํ•œ ๊ฒฝ๋กœ์— JSON ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.