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

์ „์ฒด ๊ธ€

Node.js์˜ ์ด๋ฒคํŠธ ๋ฃจํ”„ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํšŒ์‚ฌ์— ๊ฐ€๊ฒŒ๋˜์–ด์„œ, ๋…ธ๋“œ๋ฅผ ๋ฐฐ์šฐ๊ณ  ์žˆ๋Š”๋ฐ... ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋‚˜ ๋…ธ๋“œ๋‚˜ ๋‹ค ์ฒ˜์Œ ๋ฐฐ์šฐ๊ณ  ์žˆ์–ด์„œ ์–ด๋ ค์šด ๊ฒƒ์ด ๋งŽ์€ ๊ฑฐ ๊ฐ™๋‹ค. ํŠนํžˆ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด๊ฒŒ ์ด๋ฒคํŠธ ๋ฃจํ”„(Event Loop)์˜€๊ณ , ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ๋А๊ผˆ๋‹ค. ๋…ธ๋“œ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ด์•ผ๊ธฐ๊ฐ€ ์ด๋ฒคํŠธ ๋ฃจํ”„๋กœ ๋ชจ์ด๋Š”๋“ฏํ•œ ๋А๋‚Œ์„ ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฑธ ์ดํ•ดํ•œ๋‹ค๋ฉด ๋…ธ๋“œ์˜ ๊ตฌ์„ฑ ์š”์†Œ์™€ ๋™์ž‘ ๋ฐฉ์‹์€ ๋ฌผ๋ก ์ด๊ณ  ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚˜๋‰˜์–ด์ ธ์žˆ๋Š” ๋น„๋™๊ธฐ์ž‘์—…๋“ค์„ ์ž˜ ๊ตฌ๋ถ„ํ•˜๊ณ  ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ด์œ ๋กœ ์ด๋ฒˆ ๊ธ€์—์„œ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋…ธ๋“œ์™€ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ง€์‹๋“ค๋„ ํ•จ๊ป˜ ์ •๋ฆฌํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค. ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ๊ธ€๋„ ํ•จ๊ป˜ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ถ€์ •ํ™•ํ•œ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค! ๊ทธ๋Ÿฌํ•œ ๋ถ€๋ถ„๋“ค์€ ์‹ค๋ฌด๋ฅผ ๊ฒฝํ—˜ํ•˜๋ฉฐ ์ฐจ์ฐจ ์ˆ˜์ •ํ•ด๋‚˜๊ฐ€๋ณด๊ฒ ๋‹ค. .. ๋”๋ณด๊ธฐ
MySQL์—์„œ ACID๋ฅผ ๋ณด์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ฐœ์š”MySQL๊ณผ ๊ฐ™์€ RDB๋Š” ์•ˆ์ „ํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ACID ์„ฑ์งˆ์„ ํ•ต์‹ฌ ์›์น™์œผ๋กœ ์‚ผ๊ณ  ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค. ๋ณดํ†ต ACID ์„ฑ์งˆ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜๋œ๋‹ค.Atomicity (์›์ž์„ฑ): ํŠธ๋žœ์žญ์…˜์˜ ๋ชจ๋“  ์ž‘์—…์€ ์ „๋ถ€ ์ฒ˜๋ฆฌ๋˜๊ฑฐ๋‚˜, ํ•˜๋‚˜๋„ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.Consistency (์ผ๊ด€์„ฑ): ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋œ ํ›„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ผ๊ด€๋œ ์ƒํƒœ(๊ทœ์น™, ์ œ์•ฝ ์กฐ๊ฑด)๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.Isolation (๋…๋ฆฝ์„ฑ): ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์€ ์„œ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•œ๋‹ค.Durability (์ง€์†์„ฑ): ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฐ๊ณผ๋Š” ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค.์ •์˜์— ๋Œ€ํ•ด์„œ๋Š” ์ž˜ ์•Œ๊ณ ์žˆ์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๊ณต๋ถ€ํ•ด๋ณด์ง„ ์•Š.. ๋”๋ณด๊ธฐ
๊ณต๊ฐ„ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ์ดํ„ฐ ๊ด€์ ์œผ๋กœ ์™„์ „ ๊ฐœ์„ ํ•˜๋‹ค. ์ทจ์ค€์ƒ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํŒ€์ด๋‹ค๋ณด๋‹ˆ, ์ธํ”„๋ผ์— ๋ˆ์„ ์ตœ๋Œ€ํ•œ ์•„๋ผ๊ณ ์ž t4g.micro๋กœ DB๋ฅผ ์šด์˜ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด ์ŠคํŽ™์—์„œ ๊ณต๊ฐ„ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด CPU ์ง‘์•ฝ์ ์ธ ๊ณต๊ฐ„ ์ฟผ๋ฆฌ ํŠน์„ฑ์ƒ ์•ฝ 2~3์ดˆ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ ค ์‘๋‹ต์ด ์˜ฌ๋งŒํผ ๋А๋ ค์กŒ๋‹ค. ๊ทธ๋ž˜์„œ ์ฒ˜์Œ์—๋Š” ๊ณต๊ฐ„ ์ฟผ๋ฆฌ ์ž์ฒด๋ฅผ ์ตœ์ ํ™” ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ ๋ฐฉ์•ˆ์„ ์‹œ๋„ํ–ˆ๋‹ค. ๊ธฐ์กด์—๋Š” $nearSphere๋ผ๋Š” ๊ณต๊ฐ„ ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ฃผ์–ด์ง„ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜์—์„œ ๋ฐ˜์ง€๋ฆ„์ด 1~3km๋กœ ์ด๋ฃจ์–ด์ง„ ์› ์ด๋‚ด์— ํฌํ•จ ๋ฐ ๊ฑธ์ณ ์ง€๋‚˜๊ฐ€๋Š” ๋Ÿฌ๋‹ ์ฝ”์Šค๋ฅผ ์กฐํšŒํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ MongoDB์—์„œ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š” ๊ณต๊ฐ„ ์ฟผ๋ฆฌ ์ค‘ ๋‚˜๋จธ์ง€ 2๊ฐœ๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์ตœ์ ํ™” ํ•ด๋ณด๊ณ ์ž ํ–ˆ๋‹ค. $geoIntersectsํ•ด๋‹น ์ฟผ๋ฆฌ๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” ๋„ํ˜•์ด ์ฃผ์–ด์ง€๋ฉด, ๊ทธ ๋„ํ˜•์„ ์ง€๋‚˜๋Š” ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด์ค€๋‹ค. ๋‹ค๋งŒ.. ๋”๋ณด๊ธฐ
MySQL๊ณผ MongoDB ๊ณต๊ฐ„ ์ธ๋ฑ์Šค์˜ ์ฐจ์ด ๊ฐœ์š”๋Ÿฐ์„ธ๊ถŒ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉฐ MySQL์—์„œ MongoDB๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ–ˆ๊ณ , ๊ทธ ๊ฒฐ๊ณผ API ์‘๋‹ต ์†๋„๋ฅผ ํฌ๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํžˆ NoSQL์ธ MongoDB๊ฐ€ ๋” ๋น ๋ฅด๋‹ค๊ณ ๋งŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์ด ๊ธ€์„ ์“ฐ๋ฉฐ ๊ทธ ์ฐจ์ด๊ฐ€ ๊ณต๊ฐ„ ์ธ๋ฑ์Šค๊ฐ€ ๋„ํ˜•์„ ๊ทผ์‚ฌํ•˜๋Š” ๋ฐฉ์‹์˜ ์ฐจ์ด์—์„œ ๋น„๋กฏ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ–ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ MySQL๊ณผ MongoDB๊ฐ€ ๊ฐ๊ฐ ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ธ๋ฑ์‹ฑํ•˜๋Š” ๋ฐฉ์‹์„ ๋น„๊ตํ•˜๋ฉฐ, ๊ทธ ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ •๋ฆฌํ•œ๋‹ค. ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ๋Š” ๊ธฐํ•˜ํ•™์  ๊ฐœ์ฒด์˜ ๋ฌผ๋ฆฌ์  ์œ„์น˜ ๋ฐ ๋ชจ์–‘์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, GIS ์„œ๋น„์Šค์—์„œ ํ•ต์‹ฌ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์ด๋‹ค. ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ๋œ ํ‘œ์ค€์€ OGC(Open Geospatial Consortium, ๊ฐœ๋ฐฉํ˜• ๊ณต๊ฐ„ ์ •.. ๋”๋ณด๊ธฐ
RPC(Remote Procedure Call)๋ž€ ๋ฌด์—‡์ผ๊นŒ? 0. ๊ฐœ์š”์›๊ฒฉ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ง ๊ทธ๋Œ€๋กœ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋–จ์–ด์ ธ์žˆ๋Š” ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ ์„ ๋กœ์ปฌ์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋“ฏ ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฐœ๋…์ด๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์€ ํ˜ธ์ถœํ•˜๋Š” ์ชฝ์—์„œ ๋กœ์ปฌ์— ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ธฐ์กด์— ํ”ํžˆ REST ๋ฐฉ์‹์˜ ์„œ๋ฒ„ API๋ฅผ ๋งŒ๋“ค ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด URL๋กœ ์ž์›์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜๊ณ  HTTP ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ž์›์— ์–ด๋–ค ํ–‰์œ„๋ฅผ ํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ JSON ๊ตฌ์กฐ๋กœ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ–ˆ๋‹ค. ์ฆ‰, ์ž์› ์ค‘์‹ฌ์˜ API๋ฅผ ์„ค๊ณ„ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ RPC๋Š” ์ž์›์ด ์•„๋‹Œ ํ–‰์œ„์— ์ดˆ์ ์„ ๋งž์ถ”์–ด API๋ฅผ ์„ค๊ณ„ํ•œ๋‹ค. REST์—์„œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ/์‘๋‹ต์— ๋Œ€ํ•œ JSON ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋“ฏ, RPC๋Š” ์š”์ฒญ/์‘๋‹ต์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  REST์—์„œ URL๋กœ ์ž์›์˜ ๊ฒฝ๋กœ์™€ H.. ๋”๋ณด๊ธฐ
Fielding์ด ๋งํ•˜๋Š” ์ง„์งœ REST API REST API๋ฅผ ๋งŒ๋“  ์žฅ๋ณธ์ธ Fielding์€ 2008๋…„์— REST APIs must be hypertext-driven ๋ผ๋Š” ๊ธ€์„ ์ž‘์„ฑํ–ˆ๋‹ค. ํ•ด๋‹น ๊ธ€์˜ ๋‚ด์šฉ์„ ๋ณด๋ฉด Fielding์ด ์„ค๊ณ„ํ•œ REST API๋Š” ๋‹ค์Œ์˜ ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผํ•œ๋‹ค.์ž์›์˜ ์‹๋ณ„์ž์™€ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์€ ๊ตฌ๋ถ„๋˜์–ด์•ผ ํ•œ๋‹ค.ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์„ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์จ๋ผ.API ๋ฌธ์„œ์— URL ๋ชฉ๋ก์„ ๋‚˜์—ดํ•˜์ง€ ๋งˆ๋ผ. ๋Œ€์‹ , ์‘๋‹ต ํ˜•ํƒœ๋ฅผ ์ž˜ ์ •์˜ํ•ด๋ผ.๊ณ ์ •๋œ ์ž์› ์ด๋ฆ„, ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งˆ๋ผ.ํƒ€์ž…์ด ์ง€์ •๋œ ์ž์›์„ ๊ฐ€์ง€์ง€ ๋งˆ๋ผ.์‚ฌ์ „ ์ง€์‹์—†์ด ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ผ.์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ๋”ฐ๋ฅด์ง€ ์•Š์„๊ฑฐ๋ฉด REST API๋ผ ๋ถ€๋ฅด์ง€๋„ ๋ง๊ณ , ๋‹ค๋ฅธ ์œ ํ–‰์–ด๋ฅผ ๊ณจ๋ผ ์“ฐ๋ผ๋Š” ๋ง๊นŒ์ง€ ํ•  ์ •๋„๋กœ REST API์˜ ํ•ต์‹ฌ์ด๋ผ๊ณ  ๊ฐ•์กฐํ•˜๊ณ  ์žˆ๋‹ค. ๋„๋Œ€์ฒด ์–ด๋–ค ๋‚ด์šฉ์ด๊ธธ๋ž˜ Fielding์ด ์ด๋ ‡๊ฒŒ๊นŒ์ง€ .. ๋”๋ณด๊ธฐ
1๊ฐœ์˜ ์žฌ๊ณ ๊ฐ€ ์žˆ์„ ๋•Œ ๋™์‹œ์— 100๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋ฉด? ์ตœ๊ทผ ๋ฉด์ ‘์—์„œ ์ œ๋ชฉ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์„ ๋ฐ›์•˜๋‹ค. "1๊ฐœ์˜ ์žฌ๊ณ ๊ฐ€ ์žˆ์„ ๋•Œ ๋™์‹œ์— 100๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜์‹œ๊ฒ ์–ด์š”?" ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ๋‘ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋™์‹œ์„ฑ์— ๋Œ€ํ•ด์„œ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ์„œ๋น„์Šค์ด๋‹ค๋ณด๋‹ˆ ์ž์—ฐ์Šค๋ ˆ ์ด๋Ÿฐ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ํ•™์Šต์„ ํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ์— ์งˆ๋ฌธ์„ ๋ฐ›์•˜์„ ๋•Œ ๋‹นํ™ฉํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ •๋ง ์ƒ๊ฐ๋‚˜๋Š”๋Œ€๋กœ ๋‹ต๋ณ€์„ ํ–ˆ๋‹ค."์ €๋Š” ๋น„๊ด€์  ๋ฝ์„ ํ†ตํ•ด ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚™๊ด€์  ๋ฝ์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž 1๋ช…์ด ๊ตฌ๋งค๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋™์•ˆ ๋‚˜๋จธ์ง€ 99๋ช…์€ ์žฌ๊ณ ๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ•˜๊ณ  ๊ตฌ๋งค๋ฅผ ์‹œ๋„ํ• ํ…๋ฐ, ์ด๋•Œ ์žฌ๊ณ ๊ฐ€ ์—†๋‹ค๋ฉด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ธก๋ฉด์—์„œ ๊ทธ๋‹ฅ ์ข‹์€ ์ธ์ƒ์„ ๋‚จ๊ธฐ์ง€ ๋ชปํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค." ์ด์— ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์งˆ๋ฌธ๋„ ๋‚˜์™”๊ณ , ์ด๋ ‡๊ฒŒ ๋‹ตํ–ˆ๋‹ค. "๋น„๊ด€์  ๋ฝ์ด ์„ฑ๋Šฅ๋ฉด์—์„œ ์†ํ•ด๋ฅผ ๋ณด๋Š” ๊ฑด ๋งž์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ฃผ๋ฌธ, ๊ฒฐ์ œ ์‚ฌ์ด์˜ ํŠธ.. ๋”๋ณด๊ธฐ
์ž๋ฐ”๋กœ GitHub Actions ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“ค๊ธฐ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด PR์ด ์˜ฌ๋ผ์˜จ ๋’ค ๋ฆฌ๋ทฐ๊ฐ€ ์ง€์—ฐ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ๋‹ค. ๋ฐ”์œ ์ผ์ • ์†์—์„œ PR์„ ๊นŒ๋จน๊ธฐ๋„ ํ•˜๊ณ , ์–ธ์ œ๊นŒ์ง€ ๋ฆฌ๋ทฐํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ธฐ์ค€์ด ์—†์œผ๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ์ง€๋ถ€์ง€๋˜๊ธฐ๋„ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํŒ€์—์„œ ์ธ์ง€ํ•˜๊ณ , ์ฝ”๋“œ ๋ฆฌ๋ทฐ์— 2์ผ์ด๋ผ๋Š” ์ œํ•œ ์‹œ๊ฐ„์„ ๋‘๊ธฐ๋กœ ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๊ฒฐ๊ตญ ์ด๊ฒƒ๋„ ๋จธ๋ฆฌ๋กœ ๊ธฐ์–ตํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ๊ทธ๋ž˜์„œ PR์— ๋งˆ๊ฐ์ผ์„ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œํ•ด์ฃผ๋ฉด ์–ด๋–จ๊นŒ ์ƒ๊ฐํ–ˆ๋‹ค. D-2, D-1, D-Day ๊ฐ™์€ ๋ผ๋ฒจ์ด PR์— ๋ถ™์–ด์žˆ์œผ๋ฉด ๋ฆฌ๋ทฐ์–ด ์ž…์žฅ์—์„œ๋„ ๊ธฐ์–ตํ•˜์ง€ ์•Š์•„๋„ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ๋‚จ์€ ๊ธฐ๊ฐ„์— ๋Œ€ํ•ด์„œ ๊ธด๋ฐ•ํ•จ์„ ๋А๋‚„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๋„์ž…ํ•˜๊ธฐ ์ „์— ๋จผ์ € ์ด๋ฏธ ์žˆ๋Š” ์•ก์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ฐพ์•„๋ณด์•˜๋‹ค. ์œ ๋ ฅํ–ˆ๋˜ ํ›„๋ณด๊ฐ€ ๋„ค์ด๋ฒ„์—์„œ ๋งŒ๋“  d-day-labeler์˜€๋Š”๋ฐ, ์ด๊ฑด ๋งˆ๊ฐ์ผ์„ ๋”ฐ๋กœ ์ง€์ •ํ•  .. ๋”๋ณด๊ธฐ