Skip to content

BE14-NoB/pick-frontend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

413 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ—๏ธ Pick



๐Ÿ‘จโ€๐Ÿ’ป DEVELOPERS

๊ณ ์„ฑ์—ฐ ๊น€์„ํฌ ์ด์ฒญ๋ฏผ ์žฅ์‹œ์› ์ •๋ฏผ์„  ์ตœํ˜œ๋ฏผ

๐Ÿ”– ๋ชฉ์ฐจ



๐Ÿ’ก Tech Stack

๐ŸŒฟ Backend

๐Ÿ—๏ธ Frontend

๐Ÿ—‚๏ธ DB

MariaDB

๐Ÿ›œ Server

๐Ÿ”ง Tools



๐Ÿ“ข ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

1. ํ”„๋กœ์ ํŠธ ์ฃผ์ œ

ํ‰์ƒ ๊ณต๋ถ€ํ•ด์•ผ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ๋งค์นญ & ๊ด€๋ฆฌ ํ”Œ๋žซํผ

2. ํ”„๋กœ์ ํŠธ ํ•„์š”์„ฑ

์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ž€?
๊ทœ๋ชจ์™€ ์ˆ˜์ต์„ฑ๊ณผ๋Š” ์ƒ๊ด€์—†์ด ์Šค์Šค๋กœ ์›ํ•ด์„œ ๊ฐœ๋ฐœํ•ด ๋ณด๊ณ  ์‹ถ์€ ์„œ๋น„์Šค, ์ ์šฉํ•ด ๋ณด๊ณ  ์‹ถ์€ ๊ธฐ์ˆ  ์Šคํƒ ๋“ฑ์„
์ˆ˜๋ จํ•˜๋ฉฐ ์Šค์Šค๋กœ ์ž๊ธฐ ๊ณ„๋ฐœ์„ ํ•˜๋Š” ๊ธฐํšŒ๋ฅผ ๋งˆ๋ จํ•˜๋Š” ๋‚˜๋งŒ์˜ ํ”„๋กœ์ ํŠธ

์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ๋Š” ํŒ€์› ๊ฐ„์˜ ํ˜‘์—…๊ณผ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋ฉฐ, ๋ชจ์ง‘๋ถ€ํ„ฐ ์‹ค์ œ ์‹คํ–‰, ์™„์„ฑ๊นŒ์ง€ ๊ฝค ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

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



๐Ÿ› ๏ธ ์ฃผ์š” ๊ธฐ๋Šฅ


๋งค์นญ์„ ํฌ๋งํ•˜๋Š” ํšŒ์›์ด ๋งค์นญ์„ ์‹ ์ฒญํ•˜๋ฉด, ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋œ ๋ฐฉ์˜ ๋ ˆ๋ฒจ๊ณผ ๋น„๊ตํ•˜์—ฌ ๋ ˆ๋ฒจ ๋ฒ”์œ„์— ๋งž๋Š” ๋ฐฉ์— ์‹ ์ฒญ์ž ๋งค์นญ


ํ”„๋กœ์ ํŠธ ๋ฐฉ์ด ์ƒ์„ฑ๋˜๋ฉด, ์ฐธ๊ฐ€์ž์—๊ฒŒ ๋ฌธ์„œํ™”์™€ ์ผ์ • ๊ด€๋ฆฌ ์„œ๋น„์Šค ์ œ๊ณต.
ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚˜๋ฉด ๊ฐ ํŒ€์›์€ ํ”„๋กœ์ ํŠธ์™€ ์„œ๋กœ์— ๋Œ€ํ•œ ํ›„๊ธฐ ์ž‘์„ฑ -> ํฌํŠธํด๋ฆฌ์˜ค & ํ”ผ๋“œ๋ฐฑ์ด ๋จ


๋งค์ผ๋งค์ผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ๊ธฐ ๋ชฉํ‘œ ๋ถ€์—ฌ -> ์ผ์ • ํšŸ์ˆ˜ ๋ฐ˜๋ณต ์‹œ ๋„์ „ ๊ณผ์ œ ๋‹ฌ์„ฑ -> ์—…์  ๋ฑƒ์ง€ ์ œ๊ณต
๊ฒฝ๋ ฅ, ์ „๊ณต, ์ž๊ฒฉ์ฆ ๋“ฑ ์ŠคํŽ™ ์ฆ๋ช… ์‹œ ์ŠคํŽ™ ๋ฑƒ์ง€ ์ œ๊ณต



๐Ÿ“… ๊ฐœ๋ฐœ ์‚ฌ์ดํด

1. Vuetify UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํ†ต์ผ์„ฑ ์žˆ๋Š” UI ๊ตฌํ˜„

vuetify

Pick ํ”„๋กœ์ ํŠธ๋Š” Vuetify UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ด ํ”„๋ก ํŠธ์—”๋“œ UI๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. Vuetify๋Š” Material Design ๊ธฐ๋ฐ˜์˜ ํ’๋ถ€ํ•œ ์ปดํฌ๋„ŒํŠธ ์„ธํŠธ๋ฅผ ์ œ๊ณตํ•˜์—ฌ, ๋ฒ„ํŠผ, ์นด๋“œ, ๋‹ค์ด์–ผ๋กœ๊ทธ ๋“ฑ ์ž˜ ์„ค๊ณ„๋œ UI ์š”์†Œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŒ€์›๋“ค์€ ๋””์ž์ธ ์ž‘์—…์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๊ณ , ์ „์ฒด ํ”Œ๋žซํผ์— ๊ฑธ์ณ ์ผ๊ด€๋œ ์ƒ‰์ƒ, ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ, ๋ ˆ์ด์•„์›ƒ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐœ๋ฐœ ์†๋„ ํ–ฅ์ƒ: ์‚ฌ์ „ ์ •์˜๋œ ์ปดํฌ๋„ŒํŠธ๋กœ UI ๊ฐœ๋ฐœ ์‹œ๊ฐ„ ๋‹จ์ถ•.
  • ๋””์ž์ธ ์ผ๊ด€์„ฑ: ํ†ต์ผ๋œ ์Šคํƒ€์ผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ ๋ขฐ๊ฐ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต.
  • ๋ฐ˜์‘ํ˜• ์ง€์›: ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค์—์„œ ์ผ๊ด€๋œ ๊ฒฝํ—˜ ๋ณด์žฅ.

2. SPA ๊ตฌ์กฐ๋กœ ๋ถ€๋“œ๋Ÿฌ์šด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ œ๊ณต


Pick์€ SPA(Single Page Application) ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ—ค๋”์™€ ์‚ฌ์ด๋“œ๋ฐ” ๊ฐ™์€ ๊ณตํ†ต ๋ ˆ์ด์•„์›ƒ์€ ๊ณ ์ •๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋ฉฐ, ๋™์  ์ฝ˜ํ…์ธ  ์˜์—ญ(์ด๋ฏธ์ง€์—์„œ ์ƒ‰์ƒ์œผ๋กœ ํ‘œ์‹œ๋œ ๋ถ€๋ถ„)๋งŒ Vue Router๋ฅผ ํ†ตํ•ด ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธํ•ด ๋น ๋ฅด๊ณ  ๋ถ€๋“œ๋Ÿฌ์šด ํ™”๋ฉด ์ „ํ™˜์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์—ฌ ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก๊ณผ ๋งค์นญ ํŽ˜์ด์ง€๋Š” ๋™์ผํ•œ ์นด๋“œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™œ์šฉํ•ด ์ผ๊ด€๋œ UI๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ํ–ฅ์ƒ๋œ UX: ํŽ˜์ด์ง€ ์ „ํ™˜ ์‹œ ๊นœ๋นก์ž„ ์—†์ด ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒฝํ—˜ ์ œ๊ณต.
  • ํšจ์œจ์  ๊ฐœ๋ฐœ: ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐœ๋ฐœ ๋ฐ ์ˆ˜์ • ์ž‘์—… ๊ฐ„์†Œํ™”.
  • ๋น ๋ฅธ ๋กœ๋”ฉ: ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•ด ์„ฑ๋Šฅ ์ตœ์ ํ™”.

3. ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋กœ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์ƒ์‚ฐ์„ฑ ๊ทน๋Œ€ํ™”


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

  • ์žฌ์‚ฌ์šฉ์„ฑ: ๋™์ผํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ํ™œ์šฉํ•ด ๊ฐœ๋ฐœ ์‹œ๊ฐ„ ๋‹จ์ถ•.
  • ์ผ๊ด€์„ฑ: ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ํ†ต์ผ๋œ UI๋กœ ์‚ฌ์šฉ์ž ํ˜ผ๋ž€ ๊ฐ์†Œ.
  • ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด: ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ • ์‹œ ์ „์ฒด ํŽ˜์ด์ง€์— ์ž๋™ ๋ฐ˜์˜.

4. ์ฒด๊ณ„์ ์ธ ํด๋” ๊ตฌ์กฐ๋กœ ์ฝ”๋“œ ๊ด€๋ฆฌ ํšจ์œจํ™”


ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ ๊ด€๋ฆฌ๋ฅผ ์ฒด๊ณ„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ช…ํ™•ํ•œ ํด๋” ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋Š” Components(๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ), Views(ํŽ˜์ด์ง€๋ณ„ ๋ทฐ), Router(๋ผ์šฐํŒ… ์„ค์ •), Stores(์ƒํƒœ ๊ด€๋ฆฌ), Utils(์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜), JSON(์ •์  ๋ฐ์ดํ„ฐ), Assets(์ด๋ฏธ์ง€ ๋ฐ ํฐํŠธ)๋กœ ๋‚˜๋‰˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€๋Š” ๋‹ค์‹œ ๊ธฐ๋Šฅ๋ณ„๋กœ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ๋ฏธ์…˜, ๋งค์นญ, ํšŒ์›, ๊ฒŒ์‹œ๊ธ€, ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ํด๋”๋Š” ์ถ”๊ฐ€๋กœ ๋Œ€์‹œ๋ณด๋“œ, ์™„๋ฃŒ๋œ ํ”„๋กœ์ ํŠธ, ํ”„๋กœ์ ํŠธ ์ •๋ณด, ์ด์Šˆ, ํšŒ์˜๋ก, PR, ๋ฆฌ๋ทฐ ๋“ฑ ์„ธ๋ถ€ ๊ธฐ๋Šฅ๋ณ„๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ๋Š” ์ฝ”๋“œ์˜ ์—ญํ• ๊ณผ ์œ„์น˜๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜์—ฌ ํ˜‘์—…๊ณผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๊ฐ„์†Œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ช…ํ™•ํ•œ ๊ตฌ์กฐ: ๊ธฐ๋Šฅ๋ณ„ ๋ถ„๋ฆฌ๋กœ ์ฝ”๋“œ ํƒ์ƒ‰ ๋ฐ ์ดํ•ด ์šฉ์ด.
  • ํ˜‘์—… ํšจ์œจ์„ฑ: ํŒ€์› ๊ฐ„ ์ฝ”๋“œ ์ถฉ๋Œ ์ตœ์†Œํ™” ๋ฐ ๋ณ‘๋ ฌ ์ž‘์—… ๊ฐ€๋Šฅ.
  • ํ™•์žฅ์„ฑ: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์‹œ ๊ธฐ์กด ๊ตฌ์กฐ์— ์‰ฝ๊ฒŒ ํ†ตํ•ฉ ๊ฐ€๋Šฅ.

5. ํŠนํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๊ฐ•ํ™”


Pick์€ ํŠน์ • ๊ธฐ๋Šฅ์˜ ํ’ˆ์งˆ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์„ธ ๊ฐ€์ง€ ํŠนํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค:

  • Marked.js: ๋งˆํฌ๋‹ค์šด ํŒŒ์„œ๋ฅผ ์‚ฌ์šฉํ•ด ํšŒ์˜๋ก ์ž‘์„ฑ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ HTML๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ง๊ด€์ ์ด๊ณ  ํ’๋ถ€ํ•œ ํ…์ŠคํŠธ ํŽธ์ง‘ ๊ฒฝํ—˜์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Chart.js: ๋Œ€์‹œ๋ณด๋“œ์˜ REPO ๋ชจ๋‹ˆํ„ฐ๋ง ์˜์—ญ์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ํšŸ์ˆ˜, ์ด์Šˆ ์ƒํƒœ, PR ์ง„ํ–‰ ์ƒํ™ฉ ๋“ฑ์„ ์‹œ๊ฐํ™”ํ•œ ์ฐจํŠธ(๋ง‰๋Œ€, ๊บพ์€์„  ๋“ฑ)๋ฅผ ๊ตฌํ˜„ํ•ด ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ƒํ™ฉ์„ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Diff2HTML: PR(Pull Request) ์ƒ์„ฑ ํŽ˜์ด์ง€์—์„œ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‹œ๊ฐ์ ์œผ๋กœ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ์˜ ์ถ”๊ฐ€/์‚ญ์ œ ๋ถ€๋ถ„์„ ์ƒ‰์ƒ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ํ‘œ์‹œํ•˜์—ฌ ํŒ€์›์ด PR์„ ์‰ฝ๊ฒŒ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ–ˆ์Šต๋‹ˆ๋‹ค.

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



๐Ÿงต ์™€์ด์–ด ํ”„๋ ˆ์ž„

๐Ÿ”— ์™€์ด์–ด ํ”„๋ ˆ์ž„ ์ž์„ธํžˆ ๋ณด๊ธฐ


์™€์ด์–ด-ํ”„๋ ˆ์ž„-์ตœ์ข…๋ณธ



๐Ÿช„ ์Šคํ† ๋ฆฌ ๋ณด๋“œ

๋ฉ”์ธ ํŽ˜์ด์ง€



๋งค์นญ ํŽ˜์ด์ง€



๋Œ€์‹œ๋ณด๋“œ



์ „์ฒด ํ”„๋กœ์ ํŠธ ๋ฆฌ์ŠคํŠธ



ํ”„๋กœ์ ํŠธ ๋””ํ…Œ์ผ ํŽ˜์ด์ง€




๐Ÿ“ฐ WBS

๐Ÿ”— WBS ์ž์„ธํžˆ ๋ณด๊ธฐ




๐Ÿ™†โ€โ™€๏ธ ๊ธฐ๋Šฅ ๋ช…์„ธ์„œ

๐Ÿ”— ๊ธฐ๋Šฅ ๋ช…์„ธ์„œ ์ž์„ธํžˆ ๋ณด๊ธฐ




๐Ÿ›œ Server

Eureka ์„œ๋ฒ„ + Config ์„œ๋ฒ„ + GateWay + Frontend + Git REST API

Spring Gateway์™€ Eureka๋กœ ํšจ์œจ์ ์ธ MSA ๊ตฌํ˜„

๊ฒŒ์ดํŠธ์›จ์ด-์„œ๋ฒ„-๋””์ž์ธ

Pick์˜ ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Spring Gateway๋Š” ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ํ”„๋ก ํŠธ๊ฐ€ ๋ฐ›์•„ ๋„˜๊ฒจ์ฃผ์–ด ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ธ๊ฐ€ ์ฒ˜๋ฆฌ(๊ถŒํ•œ ๊ฒ€์ฆ)๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. Eureka ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ๋™์ ์œผ๋กœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Member ๋„๋ฉ”์ธ์€ JWT ํ† ํฐ ์ƒ์„ฑ ๋ฐ ์ธ์ฆ(์‚ฌ์šฉ์ž ์‹ ์› ํ™•์ธ)์„ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, Config Server๋Š” ํ™˜๊ฒฝ ์„ค์ •์„ ์ค‘์•™ํ™”ํ•ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋Š” Member ๋„๋ฉ”์ธ(ํšŒ์› ๊ด€๋ฆฌ)๊ณผ Core ๋„๋ฉ”์ธ(๋งค์นญ, ํ”„๋กœ์ ํŠธ, ์‹ ๊ณ , ๊ฒŒ์‹œํŒ)์œผ๋กœ ๋‚˜๋‰˜์–ด ๊ด€๋ฆฌ๋˜๋ฉฐ, ๊ฐ ๋„๋ฉ”์ธ์€ MariaDB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, Git REST API๋ฅผ ์ถ”๊ฐ€ํ•ด Spring Gateway๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ GitHub API๋ฅผ ํ˜ธ์ถœ, ์ปค๋ฐ‹, ์ด์Šˆ, PR ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ ์œผ๋กœ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํ™•์žฅ์„ฑ: MSA ๊ตฌ์กฐ๋กœ ๋„๋ฉ”์ธ๋ณ„ ๋…๋ฆฝ์  ๋ฐฐํฌ ๋ฐ ์œ ์ง€๋ณด์ˆ˜ ๊ฐ€๋Šฅ.
  • ํšจ์œจ์  ์ธ์ฆ/์ธ๊ฐ€: Member ๋„๋ฉ”์ธ์—์„œ ์ธ์ฆ, Gateway์—์„œ ์ธ๊ฐ€๋กœ ์—ญํ•  ๋ถ„๋ฆฌ.
  • ์™ธ๋ถ€ API ํ†ตํ•ฉ: Git REST API๋กœ ํ”„๋กœ์ ํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„ ์—ฐ๋™.



๐Ÿ“ฑ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค

๐Ÿ“„ ๊ณตํ†ต ๋ถ€๋ถ„

๊ณตํ†ต ๋ถ€๋ถ„
๋ฉ”์ธ ํŽ˜์ด์ง€ ์กฐํšŒ


์˜ค๋ฅ˜ ํŽ˜์ด์ง€


๐Ÿ‘ค ํšŒ์›

ํšŒ์›
ํšŒ์›๊ฐ€์ž…


๋กœ๊ทธ์ธ


ํšŒ์› ์ •๋ณด ์กฐํšŒ


ํšŒ์› ์ •๋ณด ์ˆ˜์ •


ํ”„๋กœํ•„ ํŽ˜์ด์ง€ ์กฐํšŒ


๊นƒํ—ˆ๋ธŒ ์—ฐ๊ฒฐํ•˜๊ธฐ


๋กœ๊ทธ์•„์›ƒ


๐ŸŽ–๏ธ ์ผ์ผ ๋ฏธ์…˜

์ผ์ผ ๋ฏธ์…˜
์ผ์ผ ๋ฏธ์…˜ ์กฐํšŒ


๐Ÿ“œ ๊ฒŒ์‹œ๊ธ€

๊ฒŒ์‹œํŒ
์ž์œ  ๊ฒŒ์‹œํŒ ์กฐํšŒ

๋‹จ์ผ ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ

๊ฒŒ์‹œ๊ธ€ ์“ฐ๊ธฐ ํŽ˜์ด์ง€

๐Ÿคผ ๋งค์นญ

๋งค์นญ
๋žœ๋ค ๋งค์นญ ์ƒ์„ฑ


๋งค์นญ ์กฐํšŒ


์‚ฌ์„ค ๋งค์นญ ์ƒ์„ฑ


์‚ฌ์„ค ๋งค์นญ ์ž…์žฅ


์‚ฌ์ด๋“œ ๋ฐ” ๋งค์นญ ์กฐํšŒ


ํ—ค๋” ๋žœ๋ค ๋งค์นญ ์ƒ์„ฑ


ํ—ค๋” ๋žœ๋ค ๋งค์นญ ์กฐํšŒ


ํ—ค๋” ์‚ฌ์„ค ๋งค์นญ ์ƒ์„ฑ


ํ—ค๋” ์‚ฌ์„ค ๋งค์นญ ์ž…์žฅ


ํ—ค๋” ํ”„๋กœ์ ํŠธ ๋งค์นญ ํŽ˜์ด์ง€


๐Ÿ—‚๏ธ ํ”„๋กœ์ ํŠธ

ํ”„๋กœ์ ํŠธ
ํ”„๋กœ์ ํŠธ ๋ฆฌ์ŠคํŠธ ๋ฐ ์ƒ์„ธํŽ˜์ด์ง€ ์กฐํšŒ

๋Œ€์‹œ๋ณด๋“œ ์กฐํšŒ

ํšŒ์˜๋ก ์กฐํšŒ / ์ž‘์„ฑ / ์ˆ˜์ •

์ปค๋ฐ‹ ๋ชฉ๋ก ์กฐํšŒ

๊นƒ ์ด์Šˆ ์ƒ์„ฑ ์ทจ์†Œํ•˜๊ธฐ

๊นƒ ์ด์Šˆ ์ƒ์„ฑํ•˜๊ธฐ

๊นƒ ์ด์Šˆ ๋ชฉ๋ก ์กฐํšŒ

๊นƒ PR ๋ชฉ๋ก ์กฐํšŒ

๊นƒ PR ์ƒ์„ฑํ•˜๊ธฐ



๐Ÿ“‘ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

#GIT REST API ์—ฐ๋™ #v-infinite-scroll ๋ฌดํ•œ ๋กœ๋”ฉ #๊ฐœ๋ฐœ์ค‘ AI ๋„๊ตฌ ํ™œ์šฉ

1. GIT REST API ์—ฐ๋™ ๊ด€๋ จ ๋ฌธ์ œ

Pick ํ”„๋กœ์ ํŠธ๋Š” ๋ฐฑ์—”๋“œ ํ†ต์‹ ์—์„œ JWT ํ† ํฐ ๊ธฐ๋ฐ˜์˜ Stateless ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜, Git REST API ์—ฐ๋™ ์‹œ OAuth 2.0 ๊ธฐ๋ฐ˜์˜ ์„ธ์…˜ ๋ฐฉ์‹๊ณผ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๊ฐ€ ํ•„์š”ํ•ด ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด JWT ๋ฐฉ์‹์€ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์•„ ๊ฐ€๋ณ๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ–ˆ์ง€๋งŒ, GitHub์˜ OAuth 2.0์€ ์„ธ์…˜ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ›„ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์€ JWT ๋ฐฉ์‹์„ ์œ ์ง€ํ•˜๊ณ , Git REST API ์—ฐ๋™์—๋งŒ Spring Gateway์—์„œ OAuth 2.0 ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. Gateway์— OAuth 2.0 ํด๋ผ์ด์–ธํŠธ ID, ์•ก์„ธ์Šค ํ† ํฐ, ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜์—ฌ GitHub์—์„œ ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ์„ ๋ฐ›์•„ MariaDB์— ์ €์žฅํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ปจํŠธ๋กค๋Ÿฌ์—์„œ GitHub API ์š”์ฒญ(์ปค๋ฐ‹, ์ด์Šˆ, PR ๋ฐ์ดํ„ฐ ์กฐํšŒ ๋“ฑ)์„ ์•ˆ์ •์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, SecurityFilterChain ์„ค์ •์—์„œ SessionCreationPolicy.IF_REQUIRED๋กœ ์กฐ์ •ํ•˜์—ฌ ์„ธ์…˜ ๊ธฐ๋ฐ˜ OAuth 2.0๊ณผ JWT๋ฅผ ๋ณ‘ํ–‰ํ•˜๋ฉฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ธ์ฆ ๋ฐฉ์‹ ํ†ตํ•ฉ: JWT์™€ OAuth 2.0์„ ๋„๋ฉ”์ธ๋ณ„๋กœ ๋ถ„๋ฆฌ ์ ์šฉํ•ด ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€.
  • ํšจ์œจ์  ํ† ํฐ ๊ด€๋ฆฌ: Gateway๋ฅผ ํ†ตํ•ด GitHub ์•ก์„ธ์Šค ํ† ํฐ์„ DB์— ์ €์žฅ, API ํ˜ธ์ถœ ๊ฐ„์†Œํ™”.
  • ์•ˆ์ •์„ฑ ๊ฐ•ํ™”: ์„ธ์…˜ ๋ฐ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ฒ˜๋ฆฌ๋กœ Git REST API ์—ฐ๋™์˜ ์•ˆ์ •์„ฑ ํ™•๋ณด.

2. v-infinite-scroll๋กœ ์•ˆ์ •์ ์ธ ๋ฌดํ•œ ์Šคํฌ๋กค ๊ตฌํ˜„

v-infinite-scroll๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌดํ•œ ์Šคํฌ๋กค ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์—์„œ, ๋” ์ด์ƒ ์ฝ์–ด์˜ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ์—๋„ load ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜๋ณต ํ˜ธ์ถœ๋˜์–ด ๋กœ๋”ฉ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ง€์†๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ €ํ•˜์™€ ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ์œ ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๋ช…์‹œ์ ์œผ๋กœ ์ œ์–ดํ•˜๋„๋ก ๋ฆฌํŒฉํ† ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ํ•จ์ˆ˜๊ฐ€ Promise ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ˆ˜์ •ํ•˜์—ฌ, ๋ฐ์ดํ„ฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๋“œ๋œ ๊ฒฝ์šฐ(ok)์™€ ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ(empty)๋ฅผ ๊ตฌ๋ถ„ํ•ด ์ฒ˜๋ฆฌ ํ๋ฆ„์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ์œผ๋กœ ์ธํ•ด ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์‹œ ์Šคํฌ๋กค์ด ์ž„๊ณ„์ ์— ๋„๋‹ฌํ•˜์—ฌ load ํ•จ์ˆ˜๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ํ˜ธ์ถœ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ดˆ๊ธฐํ™” ํ”Œ๋ž˜๊ทธ(isInit)๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฒซ ๋ฒˆ์งธ ํ˜ธ์ถœ์€ ๋ฌด์‹œํ•˜๊ณ , ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋“œํ•œ ํ›„ ์ •์ƒ์ ์œผ๋กœ ๋ Œ๋”๋ง๋˜๋„๋ก ์ œ์–ดํ–ˆ์Šต๋‹ˆ๋‹ค.

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

3. ๊ฐœ๋ฐœ์ค‘ AI ๋„๊ตฌ ํ™œ์šฉ

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



๐Ÿ”œ ํ–ฅํ›„ ํ™•์žฅ ๊ณ„ํš

#๋ฐฑ์—”๋“œ ์ „์ฒด ์—ฐ๋™ #Webhook ์ ์šฉ #WebSocket ์ ์šฉ #๋ณด์•ˆ ๋ฐ ์˜ˆ์™ธ์ฒ˜๋ฆฌ #๋ฆฌํŒฉํ† ๋ง

1. ๋ฐฑ์—”๋“œ ์ „์ฒด ์—ฐ๋™

Pick ํ”Œ๋žซํผ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์™„์„ฑํ•˜๊ธฐ ์œ„ํ•ด, ํ˜„์žฌ ๊ตฌํ˜„๋œ ๋ฐฑ์—”๋“œ ๊ธฐ๋Šฅ(๋งค์นญ, ์ฑŒ๋ฆฐ์ง€, ํšŒ์˜๋ก ๋“ฑ)์„ ํ”„๋ก ํŠธ์—”๋“œ์™€ ์™„์ „ํžˆ ์—ฐ๋™ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐฑ์—”๋“œ์—์„œ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งค์นญ ๊ฒฐ๊ณผ, ์ฑŒ๋ฆฐ์ง€ ์ง„ํ–‰ ์ƒํ™ฉ, ํšŒ์˜๋ก ๋‚ด์šฉ์„ ๋™์ ์œผ๋กœ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋„๋ก ํ™•์žฅํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์—ฐ๋™ ๊ณผ์ •์—์„œ๋Š” Spring Gateway์™€ Eureka๋ฅผ ํ™œ์šฉํ•ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ ์ตœ์ ํ™”ํ•˜๊ณ , ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋ฉฐ ์•ˆ์ •์ ์ธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

2. Webhook ์ ์šฉ

GitHub์˜ Webhook์„ ์—ฐ๋™ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๋Œ€์‹œ๋ณด๋“œ์— PR(Pull Request), ์ปค๋ฐ‹, ์ด์Šˆ์˜ ๋ณ€ํ™”๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. Webhook์€ GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ด๋ฒคํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์„œ๋ฒ„์— ์•Œ๋ฆฌ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์ตœ์‹  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฆ‰์‹œ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Webhook ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ์—”๋“œํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•˜๊ณ , ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด MariaDB์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ํ”„๋ก ํŠธ์—”๋“œ์— ์•Œ๋ฆผ์„ ์ „์†กํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ: PR, ์ปค๋ฐ‹, ์ด์Šˆ ๋ณ€๊ฒฝ์„ ์ž๋™ ๊ฐ์ง€ํ•ด ๋Œ€์‹œ๋ณด๋“œ์— ๋ฐ˜์˜.
  • ํšจ์œจ์  ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ: Webhook ์ด๋ฒคํŠธ๋ฅผ DB์— ์ €์žฅํ•ด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€.
  • ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ: ์ˆ˜๋™ ์—…๋ฐ์ดํŠธ ์—†์ด ์ตœ์‹  ํ”„๋กœ์ ํŠธ ์ƒํƒœ ์ œ๊ณต.

3. WebSocket ์ ์šฉ

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

  • ์‹ค์‹œ๊ฐ„ ํ˜‘์—…: ๋‹ค์ค‘ ์‚ฌ์šฉ์ž๊ฐ€ ํšŒ์˜๋ก์„ ๋™์‹œ์— ํŽธ์ง‘ ๊ฐ€๋Šฅ.
  • ์ถฉ๋Œ ๋ฐฉ์ง€: ๋™๊ธฐํ™” ๋กœ์ง์œผ๋กœ ํŽธ์ง‘ ์ถฉ๋Œ ์ตœ์†Œํ™”.
  • ํšจ์œจ์  ํ†ต์‹ : WebSocket์œผ๋กœ ์ €์ง€์—ฐ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ตฌํ˜„.

4. ๋ณด์•ˆ ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

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

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

5. ๋ฆฌํŒฉํ† ๋ง

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

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



๐Ÿช ๋™๋ฃŒ ํ‰๊ฐ€

๐Ÿ™ ๊ณ ์„ฑ์—ฐ

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

๐Ÿชจ ๊น€์„ํฌ

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

๐ŸŠ ์ด์ฒญ๋ฏผ

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

๐Ÿฆ ์žฅ์‹œ์›

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

๐Ÿฆญ ์ •๋ฏผ์„ 

ํ‰๊ฐ€์ž ๋‚ด์šฉ
๊ณ ์„ฑ์—ฐ ์ด๋ฒˆ ํ”„๋ก ํŠธ ํ”„๋กœ์ ํŠธ์˜ 1๋“ฑ ๊ณต์‹ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ฒ˜์Œ ๊ธฐ๋ณธ vbase-3-setup ๋ฐฉ์‹์˜ ์„ธํŒ…๊ณผ ๊ธฐ๋ณธํ‹€์„ ์žก์•„์ฃผ์‹œ๊ณ , ์ œ์ผ ์ค‘์š”ํ•œ ์ „์ฒด ํ”„๋กœ์ ํŠธ ๋ฐ ํ”„๋กœ์ ํŠธ ๋Œ€์‹œ๋ณด๋“œ ๋ถ€๋ถ„์— ํšŒ์˜๋ก, ํ”„๋กœ์ ํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€ ๋“ฑ ๊ธฐ๋ณธ ํ”ผ๊ทธ๋งˆ ํ˜•์‹์œผ๋กœ ๊ตฌ์ƒํ•ด๋’€๋˜ ๊น”๋”ํ•˜๊ณ  ์˜ˆ์œ ๋ชจ์–‘ ๊ทธ๋Œ€๋กœ ๋งŒ๋“ค์–ด ์ฃผ์‹œ๊ณ , ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์–ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ธก๋ฉด๋„ ์ƒ๊ฐํ•ด์ฃผ์…จ๋‹ค. ๋˜ํ•œ ๋ฐฑ์—”๋“œ์™€ ์—ฐ๊ฒฐ ์•ˆ๋œ ๋ถ€๋ถ„ ๋˜ํ•œ json ์„œ๋ฒ„๋ฅผ ์—ด์–ด ์ˆ˜์ •, ์‚ญ์ œ, ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ์…จ๊ณ , ๊ทธ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ํŽ˜์ด์ง€์— ์ ์šฉ๋˜๊ฒŒ ํ•˜์—ฌ ์‹ค์ œ๋กœ ๊ธฐ๋Šฅ์ด ๋™์ž‘๋œ๊ฑธ ๋ฐ”๋กœ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์…จ๋‹ค. ๋ฐฑ์—”๋“œ ๋•Œ์™€ ํ”„๋ก ํŠธ ๋•Œ๋„ ๊ทธ๋žฌ๋“ฏ์ด ๊ฐ•์‚ฌ๋‹˜์ด ํ”ผ๋“œ๋ฐฑ ํ•ด์ฃผ์‹  ๋ถ€๋ถ„๋“ค์„ ์ •๋ฆฌํ•˜์—ฌ ์˜ฌ๋ ค์ฃผ์…”์„œ ์–ด๋–ค ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ˆ˜์ •ํ•˜๊ณ  ๋ณด์™„์„ ํ•ด์•ผํ• ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋ฏธ์  ๊ฐ๊ฐ์ด ๋‚ฎ์€ ๋‚˜์—๊ฒŒ ์žˆ์–ด์„œ ๋ฏผ์„ ๋‹˜์˜ ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ์–ด์„œ ์ •๋ง ์ •๋ง ๊ฐ์‚ฌํ–ˆ๋‹ค.
๊น€์„ํฌ ๋งŒ์•ฝ ๋ฏผ์„ ๋‹˜์ด ์—†์—ˆ๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ ์ข‹์€ ๊ฒฐ๊ณผ๋ฌผ์ด ๋‚˜์˜ค์ง€ ์•Š์•˜์„๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ๊ธฐ๋Šฅ๋“ค์„ ์ฐพ์•„ ๊ณต์œ ํ•ด์ฃผ์…จ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ณธ์ธ์ด ๋งก์€ ํŽ˜์ด์ง€์— ๋Œ€ํ•ด์„œ ์ •๋ง ์™„๋ฒฝํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ด์ฃผ์…จ์Šต๋‹ˆ๋‹ค. ์ •๋ง ํ•˜๋‚˜๋ฅผ ๋งํ•˜๋ฉด 100, 200์„ ํ•ด์˜ค๋Š” ๋ถ„์ด์…จ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ๋‹ค ์œ ์˜๋ฏธํ•˜๊ฒŒ ์ž‘๋™ํ–ˆ์œผ๋ฉฐ, ์‹œ๊ฐ„ ๋ถ€์กฑ์œผ๋กœ ๋ฏธ๋ค˜๋˜ ๊ธฐ๋Šฅ๋“ค๋„ ์–ด๋А ์ˆœ๊ฐ„ ๋ชจ๋‘ ๊ตฌํ˜„์„ ํ•ด๋‘์…จ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ธฐ๋Šฅ์— ์ตœ์„ ์„ ๋‹คํ•˜๋Š” ๋ชจ์Šต์„ ๋ณด๋ฉฐ ๊ต‰์žฅํžˆ ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฏผ์„ ๋‹˜๋„.. ์ œ ๋ณด์„ํ•จ ํ•œ์ž๋ฆฌํ•˜์‹ค๋ž˜์š”...?๐Ÿ™Š
์ด์ฒญ๋ฏผ ํ”„๋กœ์ ํŠธ ๋Œ€์‹œ๋ณด๋“œ๋Š” ์ „์ฒด ํ”„๋กœ์ ํŠธ๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ํ•ต์‹ฌ ํŽ˜์ด์ง€ ์ค‘ ํ•˜๋‚˜์˜€๋Š”๋ฐ, ์ด๋ฅผ ์ƒ๊ฐํ•œ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋†’์€ ํ€„๋ฆฌํ‹ฐ๋กœ ์™„์„ฑํ•ด์ฃผ์…จ๋‹ค. ๊ฐ์ข… ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ ์ข‹๊ฒŒ ์‹œ๊ฐํ™”ํ•˜๊ณ , ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜๊นŒ์ง€ ๊ณ ๋ คํ•œ ์„ค๊ณ„๊ฐ€ ๋งค์šฐ ์ธ์ƒ ๊นŠ์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ๋„ ๊ธฐ๋Šฅ์ ์œผ๋กœ๋„ ๋›ฐ์–ด๋‚œ ํŽ˜์ด์ง€์˜€๊ณ , ๋””ํ…Œ์ผ๊นŒ์ง€ ์„ธ์‹ฌํ•˜๊ฒŒ ์ฑ™๊ธด ์ ์ด ๋‹๋ณด์˜€์Šต๋‹ˆ๋‹ค. ํŠนํžˆ JSON ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๊ฐ€ ๋‹๋ณด์˜€๋‹ค.
์žฅ์‹œ์› ํ‰์†Œ์—” ์กฐ์šฉํ•˜์ง€๋งŒ ๊ฒฐ๊ณผ๋ฌผ์€ ์ „ํ˜€ ์กฐ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค. ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ์ฐจ๋ณ„ํ™”๋œ ์ ์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ํ•ต์‹ฌ์ธ ํ”„๋กœ์ ํŠธ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งก์•„์ฃผ์…จ๋Š”๋ฐ ์ƒ๊ฐํ•œ ๊ฒƒ ์ด์ƒ์œผ๋กœ ๋†’์€ ํ€„๋ฆฌํ‹ฐ๋ฅผ ๋ณด์—ฌ์ฃผ์…จ๋‹ค. ํŽ˜์ด์ง€ ๊ตฌ์„ฑ์ด ์˜ค๋ฐ€์กฐ๋ฐ€ํ•˜๊ฒŒ ์•Œ์ฐจ๋ฉด์„œ๋„ ์ •๋ˆ๋œ ๋ชจ์Šต์ด์—ˆ๋‹ค. ๋งก์€ ๋ถ€๋ถ„์„ ๊ธ€์ž ํ•˜๋‚˜ํ•˜๋‚˜๊นŒ์ง€ ๋””ํ…Œ์ผ๋„ ๋†“์น˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ๋„ ์“ธ ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ž˜ ์ •๋ฆฌํ•ด์ฃผ์…”์„œ ๋‚ด๊ฐ€ ๋งก์€ ๋ถ€๋ถ„์˜ ํ€„๋ฆฌํ‹ฐ๋ฅผ ์˜ฌ๋ฆฌ๋Š”๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋ฌธ์„œ ์ •๋ฆฌ๊ณผ PPT ์ œ์ž‘์—์„œ๋„ ์—ฌ์ „ํžˆ ๋†’์€ ํ€„๋ฆฌํ‹ฐ๋ฅผ ๋ณด์—ฌ์ฃผ์‹œ๋ฉฐ ํ”„๋กœ์ ํŠธ ๋‚ด๋‚ด ํฐ ์กด์žฌ๊ฐ์„ ๋ณด์—ฌ์ฃผ์…จ๋‹ค. ํ”„๋ก ํŠธ๋ฅผ ์ฒ˜์Œ ๋‹ค๋ค„๋ด์„œ ์ต์ˆ™ํ•ด์ง€๋Š”๋ฐ ์˜ค๋ž˜๊ฑธ๋ ธ๋Š”๋ฐ ์งˆ๋ฌธ์— ๋‹ต๋ณ€๋„ ์ž˜ ํ•ด์ฃผ์‹œ๊ณ  ๋‚ด๊ฐ€ ๋†“์น˜๊ณ  ์žˆ๋˜ ๋ถ€๋ถ„๊นŒ์ง€ ํ™•์ธํ•ด์ฃผ์…”์„œ ์ „์ฒด์ ์ธ ์™„์„ฑ๋„๋ฅผ ๋†’์ด๋Š”๋ฐ ๋„์›€์ด ๋˜์—ˆ๋‹ค.
์ตœํ˜œ๋ฏผ ํ”„๋ก ํŠธ์˜ ์‹ !! ๋งก์€ ํŽ˜์ด์ง€๋ฅผ ์˜ˆ์˜๊ณ  ์™„์„ฑ๋„ ๋†’๊ฒŒ ๊ตฌํ˜„ํ•ด์ฃผ์…จ๊ณ , ๊ผผ๊ผผํ•œ ์ž‘์—… ๋ฐฉ์‹ ๋•๋ถ„์— ์ „์ฒด์ ์ธ ํ”„๋กœ์ ํŠธ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ํ•œ์ธต ์˜ฌ๋ผ๊ฐ”๋‹ค. ๋ฌธ์„œ ์ •๋ฆฌ์™€ PPT ์ œ์ž‘๋„ ์™„๋ฒฝํ•˜๊ฒŒ ํ•ด์ฃผ์…”์„œ ๋ฐœํ‘œ ์ค€๋น„๋„ ํ›จ์”ฌ ์ˆ˜์›”ํ–ˆ๋‹ค. ๋ฏผ์„ ๋‹˜์ด ์ž‘์—…ํ•œ ๊ฒฐ๊ณผ๋ฌผ์€ ํ•ญ์ƒ ๊ฐํƒ„์ด ๋‚˜์˜ฌ ์ •๋„๋กœ ์™„์„ฑ๋„๊ฐ€ ๋†’์•˜๊ณ , ํŒ€์—์„œ๋„ ํฐ ์—ญํ• ์„ ํ•ด์ฃผ์‹  ๋ถ„์ด๋‹ค. ๊ทธ๋™์•ˆ ๋‚ด ์žฅ๋‚œ๋„ ๋‹ค ๋ฐ›์•„์ฃผ์‹œ๊ณ , ๋Š˜ ํŽธํ•˜๊ฒŒ ๋Œ€ํ•ด์ฃผ์…”์„œ ๋„ˆ๋ฌด ๊ฐ์‚ฌํ–ˆ๋‹ค.

๐Ÿง ์ตœํ˜œ๋ฏผ

ํ‰๊ฐ€์ž ๋‚ด์šฉ
๊ณ ์„ฑ์—ฐ ํ•ญ์ƒ ์ž˜ ๋ชปํ•œ๋‹ค๊ณ  ๋ง์”€์„ ํ•ด์ฃผ์‹œ๋Š”๊ฑฐ์™€ ๋ณ„๊ฐœ๋กœ, ๊ฒฐ๊ณผ๋ฌผ์€ ๋‹น์žฅ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜์—ฌ ์ž๋ž‘ํ•˜๊ณ  ์‹ถ์„์ •๋„๋กœ ์ž˜ ํ•ด์ฃผ์‹ ๋‹ค. ์ด๋ฒˆ ํ”„๋ก ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์ €๋ฒˆ์—๋„ ๋А๊ผˆ๋˜ ์ผ์ด์ง€๋งŒ, ppt ๋ฐœํ‘œ์šฉ ์ž๋ฃŒ ์ •๋ฆฌ ๋ฐ ์ˆœ์„œ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์…”์„œ ๊ทธ๊ฑธ ํ† ๋Œ€๋กœ ์ค€๋น„๋งŒ ํ•˜๋ฉด ๋˜์–ด์„œ ๋น ๋ฅด๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ํ™”๋ฉด ๊ตฌ์„ฑ์— ๋Œ€ํ•ด์„œ ๋˜๊ฒŒ ์ž˜ ์•„์‹œ๊ณ  ๊ตฌ์ƒ ๊ด€๋ จํ•˜์—ฌ ํš๊ธฐ์ ์ธ ์•„์ด๋””์–ด๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์…จ๋‹ค. ๋˜ํ•œ ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ํ”ผ๊ทธ๋งˆ, ์Šคํ† ๋ฆฌ๋ณด๋“œ ๋“ฑ ์‹ ๊ฒฝ์จ์•ผ๋ ๊ฒŒ ๋งŽ๊ณ  ์ž‘์—…์ด ๋งŽ์€ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋„ ๋จผ์ € ๋‚˜์„œ์ฃผ์…”์„œ ๋ณด๊ณ  ์ฐธ๊ณ  ํ• ์ˆ˜ ์žˆ๊ฒŒ ์ž‘์—…์„ ๋ฏธ๋ฆฌ ํ•ด๋‘์…”์„œ ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ๊ณ , ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ์ง€์น ๋ฒ•๋„ ํ•œ๋ฐ ํŒ€์˜ ๋ถ„์œ„๊ธฐ๋ฅผ ํ•ญ์ƒ ์ข‹๊ฒŒ ์œ ์ง€ํ•ด์ฃผ์…”์„œ ํ•˜๋Š”๋™์•ˆ ํฐ ์–ด๋ ค์›€ ์—†์ด ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‚˜์ค‘์— ์ด ๋ถ€ํŠธ์บ ํ”„๊ฐ€ ๋๋‚˜๋„ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ž‘์—…์„ ํ• ๋•Œ๋„ ํ˜œ๋ฏผ๋‹˜๊ฐ™์€ ๋ถ„์ด ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค ํ”„๋กœ์ ํŠธ ๊ฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!
๊น€์„ํฌ ๋งจ๋‚  ์ž˜ ๋ชปํ•œ๋‹ค๊ณ  ๊ฒธ์†ํ•œ ๋ง์”€์„ ํ•˜์‹œ์ง€๋งŒ, ์–ด๋–ค ์–ด๋ ค์šด ์ผ์„ ๋งก๊ฒจ๋„ ๊ธฐ๊ฐ„ ๋‚ด์— ์ฒ™์ฒ™ ํ•ด์˜ค์‹œ๋Š” ๋ฉ‹์ง„ ๋ถ„์ด์‹ญ๋‹ˆ๋‹ค. ํŒ€์›๋“ค์„ ์ž˜ ์ฑ™๊ฒจ์ฃผ์‹œ๊ณ , ์›ƒ์œผ๋ฉด์„œ ๋Œ€ํ•ด์ฃผ์…”์„œ ํŒ€์˜ ๋ถ„์œ„๊ธฐ๋ฅผ ํ•ญ์ƒ ์ข‹๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์…จ์Šต๋‹ˆ๋‹ค. PPT ์ œ์ž‘์ด๋‚˜ ํ”ผ๊ทธ๋งˆ ์ •๋ฆฌ ๋“ฑ ๊ท€์ฐฎ์„ ๋ฒ•ํ•œ ์ผ์„ ๋จผ์ € ๋‚˜์„œ์„œ ์ œ์ž‘ํ•ด์ฃผ์…จ๋Š”๋ฐ, ๊ทธ ๋•๋ถ„์— ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ๋ฌด๋ฆฌ ํ•˜๋Š” ๋™์•ˆ ์—ฌ์œ ๊ฐ€ ๋งŽ์ด ์ƒ๊ฒผ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ํ˜œ๋ฏผ๋‹˜๊ณผ ํ•จ๊ป˜ ํ•˜๋ฉด ๋งˆ์Œ์ด ๋“ ๋“ ํ•ด์ง€๋Š” ๋А๋‚Œ์ด ์žˆ๋Š”๋ฐ, ์ œ ๋ณด์„ํ•จ์˜ ํ•œ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ์ด์œ ๊ฐ€ ์ •๋ง ๋ถ„๋ช…ํ•˜๊ฒŒ ์žˆ๋Š” ๋ถ„์ด์‹ญ๋‹ˆ๋‹ค. ํ˜œ๋ฏผ๋‹˜ ์ตœ๊ณ ๐Ÿ‘
์ด์ฒญ๋ฏผ ๋ฐœํ‘œ ์ž๋ฃŒ๋ฅผ ๋งก์•„ ํŒ€์˜ ์ž‘์—… ๋‚ด์šฉ์„ ๋ช…ํ™•ํ•˜๊ณ  ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด์ฃผ์…”์„œ, ์ „์ฒด ๋ฐœํ‘œ์˜ ํ๋ฆ„์ด ์ž˜ ์‚ด์•„๋‚ฌ๋‹ค. ์ž๋ฃŒ ๊ตฌ์„ฑ๋ฟ ์•„๋‹ˆ๋ผ ๋””์ž์ธ์ ์ธ ๋ถ€๋ถ„์—์„œ๋„ ์„ฌ์„ธํ•˜๊ฒŒ ์‹ ๊ฒฝ ์จ์ฃผ์…”์„œ ๋ณด๋Š” ์‚ฌ๋žŒ ์ž…์žฅ์—์„œ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์› ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์ ํŠธ ํ›„๋ฐ˜์—๋Š” ์Šคํ† ๋ฆฌ๋ณด๋“œ ์ œ์ž‘๊นŒ์ง€ ๋„๋งก์•„์ฃผ์…จ๋Š”๋ฐ, ๊ฐœ๋ฐœ ๊ณผ์ •์„ ์ •๋ฆฌํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋˜์—ˆ๋‹ค.
์žฅ์‹œ์› ํŒ€ ๋‚ด์— ์–ธ์ œ๋‚˜ ์ฆ๊ฑฐ์›€์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ถ„์ด๋‹ค. ๋•๋ถ„์— ํŒ€ ๋‚ด์˜ ๋ถ„์œ„๊ธฐ๋„ ์ข‹์•˜๊ณ  ๋ฐฑ์—”๋“œ์—์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งก์•˜๋˜ ๋ถ€๋ถ„์„ ํ”„๋ก ํŠธ์—์„œ ๋‹ค๋ฃจ๋А๋ผ ์ต์ˆ™ํ•˜์ง€ ์•Š์•˜์„ํ…๋ฐ๋„ ๋ˆ๊ธฐ์žˆ๊ฒŒ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค์–ด๋‚ด์…จ๋‹ค. ๋ฐœํ‘œ ์ž๋ฃŒ๋„ ๋งก์•„ ์ž‘์—… ๋‚ด์šฉ์„ ์‹œ๊ฐ์ ์œผ๋กœ๋„ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด์ฃผ์…”์„œ ๋‚ด๊ฐ€ ๋งก์€ ๋ถ€๋ถ„์ด ์•„๋‹ˆ์–ด๋„ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์› ๋‹ค. ๋จผ์ € ๋‹ค๊ฐ€์™€์„œ ํŒ€ ์ œ์•ˆ์„ ์ฃผ์…จ๋˜ ๊ฒƒ๋„ ๊ฐ์‚ฌํ–ˆ๊ณ  ๊ทธ ์ œ์•ˆ์„ ๋ฐ›์•„๋“ค์˜€๋˜๊ฑด ์ •๋ง ํ›„ํšŒ์—†๋Š” ์„ ํƒ์ด์—ˆ๋‹ค.
์ •๋ฏผ์„  ๋ชฉ๋ก ๋ฆฌ์ŠคํŠธ, ์‚ฌ์ด๋“œ๋ฐ” ๋“ฑ ํŽ˜์ด์ง€ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”„๋กœ์ ํŠธ์—์„œ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋‹ค์ˆ˜ ๋‹ด๋‹นํ•ด์ฃผ์…จ๋Š”๋ฐ, ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๋ฅผ ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•ด์ฃผ์…”์„œ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. UI/UX ๋ฅผ ์„ค๊ณ„ํ–ˆ๋˜ ๊ทธ๋Œ€๋กœ! ๊ตฌํ˜„ํ•ด๋‚ด์‹œ๋Š” ๊ฒƒ์„ ๋ณด๋ฉด, ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ๊น”๋”ํ•˜๊ฒŒ ์‹œ๊ฐํ™”ํ•˜์‹œ๋Š” ๋ฐ ๋Šฅ์ˆ™ํ•˜์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐœํ‘œ์ž๋ฃŒ๋‚˜ ๋ฌธ์„œํ™”๋ฅผ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•˜๊ณ  ์ •๋ฆฌํ•˜์‹œ๋Š” ์ฒ ๋‘์ฒ ๋ฏธํ•œ ๋ชจ์Šต์„ ๋ณด๊ณ  ๋งŽ์ด ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ฆ๊ฑฐ์šด ๋ถ„์œ„๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋•๋ถ„์— ์ ๊ทน์ ์œผ๋กœ ์˜๊ฒฌ์„ ๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

About

๐Ÿ™ ๊ณ ์„ฑ์—ฐ ๐Ÿชจ ๊น€์„ํฌ ๐ŸŠ ์ด์ฒญ๋ฏผ ๐Ÿฆ ์žฅ์‹œ์› ๐Ÿฆญ ์ •๋ฏผ์„  ๐Ÿง ์ตœํ˜œ๋ฏผ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors