Skip to content

LocalMingle/LocalMingle-BE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿก Local Mingle - BE

๋กœ์ปฌ๋ฐ๊ธ€ ๋ธŒ๋กœ์…”

๋กœ์ปฌ๋ฐ๊ธ€์€ ์†Œ์…œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ํ•จ๊ป˜ ํ•  ์ˆ˜ ์žˆ๋Š” ํ™œ๋™์„ ๋งŒ๋“ค๊ณ  ์ฐธ์—ฌํ•ด๋ณด์„ธ์š”!


๊ตฌ๋ถ„ ๋งํฌ ๊ตฌ๋ถ„ ๋งํฌ
๋กœ์ปฌ๋ฐ๊ธ€ ์•„์ด์ฝ˜ Local Mingle ๋…ธ์…˜ ์•„์ด์ฝ˜ ๋ธŒ๋กœ์Šˆ์–ด
๋ฆฌ์•กํŠธ ์•„์ด์ฝ˜ FE Github ๋…ธ์…˜ ์•„์ด์ฝ˜ ํŒ€ SA
๋…ธ๋“œjs ์•„์ด์ฝ˜ BE Github ํ”ผ๊ทธ๋งˆ ์•„์ด์ฝ˜ Figma


๐Ÿ‘ฅ ์ฐธ๊ฐ€ํ•œ ์‚ฌ๋žŒ๋“ค

์ด๋ฆ„ ํฌ์ง€์…˜ ์—ญํ•  ๊นƒํ—ˆ๋ธŒ ๋ธ”๋กœ๊ทธ
์žฅ์†Œ์˜ ย ย ย ย FE ํŒ€ ๋ถ€๋ฆฌ๋”
๋ฉ”์ธํŽ˜์ด์ง€(์นด๋“œ๋ทฐ, ๊ฒŒ์‹œ๊ธ€ ๊ฒ€์ƒ‰, ๊ฒŒ์‹œ๊ธ€ ์ƒ๋ž™ํ„ฐ ํ•„ํ„ฐ๋ง, ์ธํ”ผ๋‹ˆํ‹ฐ ์Šคํฌ๋กค),
๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ๋ฐ ์ˆ˜์ •, 1์ฐจ ๊ฐœ๋ฐœ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ „์ฒดํ™”๋ฉด ํผ๋ธ”๋ฆฌ์‹ฑ,
ํ”„๋ก ํŠธ gitHub ๊ด€๋ฆฌ, Figma ๊ด€๋ฆฌ
์žฅ์†Œ์˜์˜
GitHub
์žฅ์†Œ์˜์˜
๋ธ”๋กœ๊ทธ
๊น€ํƒœํ˜„ ย ย ย ย FE ๋งˆ์ดํŽ˜์ด์ง€(ํšŒ์›์ •๋ณด ์ˆ˜์ •, ์ž‘์„ฑ ์ด๋ฒคํŠธ, ์ฐธ์—ฌ ์ด๋ฒคํŠธ ๊ด€๋ฆฌ, ํšŒ์›ํƒˆํ‡ด),๋‹ค๊ตญ์–ด๊ธฐ๋Šฅ,
์ผ๋ฐ˜ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธํŽ˜์ด์ง€, ์†Œ์…œ ๋กœ๊ทธ์ธ, ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…, ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ธ ํŽ˜์ด์ง€
๊น€ํƒœํ˜„์˜
GitHub
๊น€ํƒœํ˜„์˜
๋ธ”๋กœ๊ทธ
๊น€๋Œ€์šฑ ย ย ย ย BE ํŒ€ ๋ฆฌ๋”, ์ด๋ฌด
FE/BE ์„œ๋ฒ„ ์ธํ”„๋ผ ์กฐ์„ฑ(CloudFront, Route53, ACM, CodeDeploy, Ec2, S3),
FE/BE CICD ๊ตฌํ˜„, AWS ์‚ฌ์šฉ๋ฒ• ์ž‘์„ฑ, ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ๋ฌธ์„œ ์ž‘์—…
๊น€๋Œ€์šฑ์˜
GitHub
๊น€๋Œ€์šฑ์˜
๋ธ”๋กœ๊ทธ
๊น€์ข…ํ™” ย ย ย ย BE ์ด๋ฒคํŠธ CRUD, ์ฐธ๊ฐ€/ ์ทจ์†Œ API ์ž‘์„ฑ, ํŽ˜์ด์ง€๋„ค์ด์…˜, ์บ์‹ฑ ๊ธฐ๋Šฅ ์ ์šฉ,
test์ฝ”๋“œ ์ž‘์„ฑ, ํ–‰์ •๊ตฌ์—ญ ๋ฐ์ดํ„ฐ API ์ž‘์„ฑ, ์ง€์—ญ, ์นดํ…Œ๊ณ ๋ฆฌ, ํ‚ค์›Œ๋“œ๋ณ„ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ
๊น€์ข…ํ™”์˜
GitHub
๊น€์ข…ํ™”์˜
๋ธ”๋กœ๊ทธ
์—๋ฆญํ‚ด ย ย ย ย BE ๋งˆ์ด ํŽ˜์ด์ง€ CRUD, ๋‚ด ํ”„๋กœํ•„ ์กฐํšŒ, ๋‹‰๋„ค์ž„/ํ•œ์ค„ ์ž๊ธฐ์†Œ๊ฐœ/๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ •,
๋‚ด๊ฐ€ ์ƒ์„ฑํ•œ ๋ชฉ๋ก ์กฐํšŒ/์ˆ˜์ •/์‚ญ์ œ, ๋‚ด๊ฐ€ ์ฐธ๊ฐ€ํ•œ ๋ชฉ๋ก ์กฐํšŒ/์ทจ์†Œ,
ํšŒ์›ํƒˆํ‡ด(soft delete), ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
์—๋ฆญํ‚ด์˜
GitHub
์—๋ฆญํ‚ด์˜
๋ธ”๋กœ๊ทธ
์–‘ํฌ์šฉ ย ย ย ย BE ์†Œ์…œ๋กœ๊ทธ์ธ ๊ตฌํ˜„(์นด์นด์˜ค,๋„ค์ด๋ฒ„,๊ตฌ๊ธ€), ์ผ๋ฐ˜ํšŒ์›๊ฐ€์ž… ๊ตฌํ˜„(์ด๋ฉ”์ผ ์ธ์ฆ, ๋‹‰๋„ค์ž„ ์ค‘๋ณต๊ฒ€์‚ฌ),
์‹ค์‹œ๊ฐ„์ฑ„ํŒ…(์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ, ์œ ์ €๋ฆฌ์ŠคํŠธ, ์ž…์žฅ, ํ‡ด์žฅ), ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ์ฑ„ํŒ… ์ด๋ ฅ ์ •๋ฆฌ
์–‘ํฌ์šฉ์˜
GitHub
์–‘ํฌ์šฉ์˜
๋ธ”๋กœ๊ทธ
๋ฐ•์ƒํ˜„ Design ํŽ˜์ด์ง€ ์ „์ฒด ๋””์ž์ธ ์—†์Œ ๋ฐ•์ƒํ˜„์˜
๋ธ”๋กœ๊ทธ

๐ŸŽˆ ์ฃผ์š”๊ธฐ๋Šฅ ์†Œ๊ฐœ

์†Œ์…œ ๋กœ๊ทธ์ธ ๋‹ค๊ตญ์–ด ์ฑ„ํŒ…๋ฐฉ
์†Œ์…œ ๋กœ๊ทธ์ธ ๋‹ค๊ตญ์–ด ์ฑ„ํŒ…๋ฐฉ

๊ฒŒ์‹œ๊ธ€ ๊ฒ€์ƒ‰ ๊ฒŒ์‹œ๊ธ€ ํ•„ํ„ฐ๋ง ์ธํ”ผ๋‹ˆํ‹ฐ ์Šคํฌ๋กค
๊ฒŒ์‹œ๊ธ€ ๊ฒ€์ƒ‰ ๊ฒŒ์‹œ๊ธ€ ํ•„ํ„ฐ๋ง ์ธํ”ผ๋‹ˆํ‹ฐ ์Šคํฌ๋กค

๐Ÿ”Ž ์ฃผ์š” ๊ธฐ๋Šฅ

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

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์•„ํ‚คํ…์ฒ˜

์•„ํ‚คํ…์ฒ˜ ver8

๐Ÿ”ง ๊ธฐ์ˆ  ์˜์‚ฌ๊ฒฐ์ •

FE

  • Vite React & TypeScript
    • Vite๋Š” Create React App (CRA)์— ๋น„ํ•ด ๋น ๋ฅด๊ณ  ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
    • TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ์— ์—„๊ฒฉํ•œ ํƒ€์ž… ์ง€์ •์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด๋Š” ๊ฐœ๋ฐœ ์ค‘์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํœด๋จผ์—๋Ÿฌ๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•ด์ฃผ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
  • Axios
    • Axios๋Š” ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • Promise ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์š”์ฒญ ์ „/ํ›„์— ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์šฉ์ดํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
  • React Router
    • React-Router๋Š” ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ผ์šฐํŒ…์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.
    • UI์™€ ๋ผ์šฐํŒ… ๊ทœ์น™์„ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ •์˜ํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋ฉฐ, ๋‹ค์–‘ํ•œ ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Recoil
    • Recoil์€ ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ์ƒํƒœ๋ฅผ ์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.
    • ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ์ƒํƒœ ๊ณต์œ ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋ฉฐ, ๋ณต์žกํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.
  • React Query
    • React-Query๋Š” ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์บ์‹œํ•˜๊ณ , ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„ํŽธํ•œ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • API ํ˜ธ์ถœ๊ณผ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์ถ”์ƒํ™”ํ•˜๊ณ , ์ฟผ๋ฆฌ ์บ์‹ฑ ๋ฐ ์ž๋™ ์žฌ๋กœ๋”ฉ๊ณผ ๊ฐ™์€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Styled Components
    • Styled-components๋Š” JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์Šคํƒ€์ผ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.
    • ๋ฆฌ์•กํŠธ์™€ ํ†ตํ•ฉ๋˜๋ฉฐ, ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์— ์Šคํƒ€์ผ์„ ์ง์ ‘ ์ •์˜ํ•˜๋ฏ€๋กœ CSS ํด๋ž˜์Šค ์ด๋ฆ„ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ์„ ๋ณด๋‹ค ๋ชจ๋“ˆํ™”ํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
  • GitHub Actions

BE

  • Nest.js
    • ํผํฌ๋จผ์Šค ๊ด€๋ฆฌ : Nest.js๋Š” ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ณต์žกํ•œ ์ž‘์—…์„ ํšจ๊ณผ์ ์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํƒ€์ž… ์•ˆ์ •์„ฑ : TypeScript๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ํƒ€์ž… ์—๋Ÿฌ๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์–ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • API ๋ช…์„ธ์„œ ์ œ๊ณต : Nest.js๋Š” Swagger๋ฅผ ๋‚ด์žฅํ•˜์—ฌ API ๋ช…์„ธ์„œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ํ˜‘์—…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. Express์—์„œ๋Š” ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ์„ค์ •๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    • ๋‚ด์žฅ๋œ ๊ธฐ๋Šฅ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : Nest.js์—๋Š” Express์˜ ๊ธฐ๋Šฅ๊ณผ ์ถ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ๊ฐ„ํŽธํ•˜๊ณ  ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Prisma
    • Prisma ๊ณต์‹ ๋ฌธ์„œ์˜ ํ›Œ๋ฅญํ•œ ์ •๋ฆฌ : Prisma์˜ ๊ณต์‹ ๋ฌธ์„œ๋Š” ํ›Œ๋ฅญํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด ์žˆ์–ด, ๊ฐœ๋ฐœ์ž๋“ค์ด ์‚ฌ์šฉ๋ฒ•์„ ๋น ๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋Ÿฌ๋‹ ์ปค๋ธŒ๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ํƒ€์ž… ์„ค์ • : Prisma๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ TypeScript ํƒ€์ž…์„ ์ž๋™ ์ƒ์„ฑํ•˜๋ฏ€๋กœ, ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์— ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ๊ฐ์†Œ์‹œ์ผœ์ค๋‹ˆ๋‹ค.
    • ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ API ์ž‘์„ฑ : Prisma๋Š” ์ฟผ๋ฆฌ ์ž‘์„ฑ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋ฉฐ, ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ™œ๋ฐœํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ •๋ณด ์ ‘๊ทผ์„ฑ : Prisma๋Š” ํ™œ๋ฐœํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์กด์žฌํ•˜์—ฌ, ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์— ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์ง€์›๊ณผ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • MySQL
    • SQL๊ณผ NoSQL ๋น„๊ต : MySQL์€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๊ตฌ๋ถ„ํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  ํŽธ์ง‘ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, NoSQL๋ณด๋‹ค ๋‹ค๋ฃจ๊ธฐ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ NoSQL์ด ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ˜„์žฌ ์„œ๋น„์Šค์— ์ ํ•ฉํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค.
    • NoSQL ๋‹ค์–‘์„ฑ ๋ฐ ํ•™์Šต ๊ณก์„  : NoSQL์€ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ๊ณ , ๊ฐ๊ฐ์˜ ์‚ฌ์šฉ๋ฒ•์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํ•™์Šต ๊ณก์„ ์ด ๋†’์Šต๋‹ˆ๋‹ค. MySQL์„ ์„ ํƒํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋‹ค์–‘์„ฑ๊ณผ ํ•™์Šต ๋ถ€๋‹ด์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • PostgreSQL vs MySQL : PostgreSQL์€ ๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ์ง€๋งŒ, ํ˜„์žฌ ์„œ๋น„์Šค์™€์˜ ์ ํ•ฉ์„ฑ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. MySQL์€ ํ˜„์žฌ ์„œ๋น„์Šค์— ๋” ์ ํ•ฉํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ํ•™์Šต ๊ณก์„ ๊ณผ ๋ณต์žก์„ฑ : PostgreSQL์€ ์‚ฌ์šฉ๋ฒ•์ด ๋ณต์žกํ•˜๊ณ  ์ฟผ๋ฆฌ ์ž‘์„ฑ์ด ์–ด๋ ค์šด ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ ํ•™์Šต ๊ณก์„ ์ด ๋†’์Šต๋‹ˆ๋‹ค. MySQL์€ ์‚ฌ์šฉ์ด ๋” ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค.
    • ์ฝ๊ธฐ ์ค‘์‹ฌ ์„œ๋น„์Šค์— ์ ํ•ฉ : ํ˜„์žฌ ์„œ๋น„์Šค์—์„œ๋Š” ์œ ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ  ๊ฒŒ์‹œ๊ธ€์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ๋ณด๋‹ค ์ฝ๋Š” ๊ธฐ๋Šฅ์— ์ดˆ์ ์ด ์žˆ์œผ๋ฉฐ, MySQL์€ ์ฝ๊ธฐ ์ค‘์‹ฌ ์„œ๋น„์Šค์— ์ ํ•ฉํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค.
  • Swagger
    • ์ž๋™ ๋ฌธ์„œํ™” : Swagger๋Š” API๋ฅผ ์ž๋™์œผ๋กœ ๋ฌธ์„œํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค์ด API์˜ ์—”๋“œํฌ์ธํŠธ, ํŒŒ๋ผ๋ฏธํ„ฐ, ์‘๋‹ต ํ˜•์‹ ๋“ฑ์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€๋“œ๋ฆฝ๋‹ˆ๋‹ค.
    • ์‹œ๊ฐ์  ๋””์ž์ธ : API๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋””์ž์ธํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ๊ฐ•ํ™”๋˜์–ด, ์ด๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด API์˜ ๊ตฌ์กฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
    • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ : Swagger๋Š” ๊ธฐ๋ณธ์ ์ธ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜์—ฌ API์˜ ๋™์ž‘์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋“ค์— ๋น„ํ•ด ๋‹ค์†Œ ์ œํ•œ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ™•์žฅ์„ฑ : Swagger๋Š” ๋‹ค์–‘ํ•œ ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Swagger๋ฅผ ๋” ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
    • ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์› : Swagger๋Š” ํ™œ๋ฐœํ•œ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ์‚ฌ์šฉ ์ค‘์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋„์›€์„ ๋ฐ›๊ธฐ ์‰ฌ์šด ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • GitHub Actions
    • ๋‹ค๋ฅธ CD ์— ๋น„ํ•ด์„œ learning curve ๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค.

ERD

erd

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages