Skip to content

๐Ÿ”ฎ AI ํƒ€๋กœ ์ƒ๋‹ด ํ”Œ๋žซํผ, ๋งˆ๋ฒ•์˜ ์†Œ๋ผ๊ณ ๋‘ฅ ๐Ÿš

Notifications You must be signed in to change notification settings

kimyu0218/web09-MagicConch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

AIโ€ข์‹ค์‹œ๊ฐ„ ํ™”์ƒ ํƒ€๋กœ ์ƒ๋‹ด ํ”Œ๋žซํผ, ๋งˆ๋ฒ•์˜ ์†Œ๋ผ๊ณ ๋‘ฅ


๐ŸŒ ๋งค๋ ฅ์ ์ธ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ํ•จ๊ป˜ ์ฆ๊ธฐ๋Š”๐ŸŒ 
๐Ÿ”ฎAIโ€ข์‹ค์‹œ๊ฐ„ ํ™”์ƒ ํƒ€๋กœ ์ƒ๋‹ด๐Ÿ”ฎ

"ํ•œ ๋ฒˆ์ฏค์€ ํƒ€๋กœ ์ ์„ ์ณ๋ณด๊ณ  ์‹ถ์ง€๋งŒ, ์‹œ๊ฐ„๊ณผ ๋ˆ์„ ํˆฌ์žํ•˜๋ฉด์„œ ๋ณด๊ธด ๊ท€์ฐฎ์•„..."

๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”!
AI ํƒ€๋กœ ์ƒ๋‹ด์‚ฌ์™€ ํ•จ๊ป˜ ์–ธ์ œ ์–ด๋””์„œ๋“  ๋ฌด๋ฃŒ๋กœ ํƒ€๋กœ ์ƒ๋‹ด์„ ์ฆ๊ธธ ์ˆ˜ ์žˆ์–ด์š” ๐Ÿ’ซ
์›ํ•˜๋Š” ํƒ€๋กœ ์ƒ๋‹ด์‚ฌ์™€ ์‹ค์‹œ๊ฐ„ ํ™”์ƒ ํƒ€๋กœ ์ƒ๋‹ด๋„ ๊ฐ€๋Šฅํ•˜๋‹ต๋‹ˆ๋‹ค.
๊ณ ๋ฏผ์ด๋‚˜ ๊ถ๊ธˆ์ฆ, ์–ด๋–ค ์ฃผ์ œ๋“  ์ž์œ ๋กญ๊ฒŒ ์ด์•ผ๊ธฐํ•ด๋ณด์„ธ์š” ๐ŸŒŒ

ํ•จ๊ป˜ ๋‚˜๋ˆ„๋Š” ์ด์•ผ๊ธฐ๋ฅผ ํ†ตํ•ด, ๋” ๋‚˜์€ ๋ฏธ๋ž˜๋ฅผ ์ƒ์ƒํ•˜๋Š” ์‹œ๊ฐ„์ด ๋˜๊ธธ ๋ฐ”๋ผ์š” ๐Ÿ”ฎ
์ƒ๋™์ ์ธ ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ํ•จ๊ป˜, ๋‹น์‹ ๋งŒ์˜ ํŠน๋ณ„ํ•œ ํƒ€๋กœ ์ฒดํ—˜์„ ์ฆ๊ฒจ๋ณด์„ธ์š” โœจ




๐Ÿ—’๏ธ ํŒ€ ๋…ธ์…˜ ย |ย  ๐ŸŒ ์œ„ํ‚ค


๋ชฉ์ฐจ


๐Ÿš€ ํ•ต์‹ฌ๊ธฐ๋Šฅ

AI์™€์˜ ์ฑ„ํŒ…์„ ํ†ตํ•ด ํƒ€๋กœ์ ์„ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.

์‚ฌ์šฉ์ž๊ฐ€ AI์—๊ฒŒ ์ž์‹ ์˜ ๊ณ ๋ฏผ์„ ์ž์œ ๋กญ๊ฒŒ ์ด์•ผ๊ธฐํ•˜๋ฉด, ๊ณ ๋ฏผ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ํƒ€๋กœ ์ƒ๋‹ด์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
๊ณ ๋ฏผ ์ƒ๋‹ด ํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ํƒ€๋กœ ์นด๋“œ๋ฅผ ๋ฝ‘์œผ๋ฉด, AI๊ฐ€ ํ•ด๋‹น ๊ฒฐ๊ณผ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๋Š” ํƒ€๋กœ์  ๊ฒฐ๊ณผ๋ฅผ ๋งํฌ๋‚˜ ์นด์นด์˜คํ†ก์œผ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2

์‹ค์ œ ํƒ€๋กœ ์ „๋ฌธ๊ฐ€์—๊ฒŒ ํ™”์ƒ ํƒ€๋กœ ์ƒ๋‹ด์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์š”.

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

image


๊ธฐ์ˆ ์  ๋„์ „

๋ฉ€ํ‹ฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•

  • ๋„์ปค ์ปดํฌ์ฆˆ๋กœ ๋ฉ€ํ‹ฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋น„์Šค๋ฅผ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • nginx๋ฅผ ํ™œ์šฉํ•˜์—ฌ URL์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ํ”„๋ก์‹œํ•ฉ๋‹ˆ๋‹ค.

๋ธ”๋ฃจ/๊ทธ๋ฆฐ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ

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

ํด๋กœ๋ฐ” API๋ฅผ ์ด์šฉํ•œ AI ์ฑ„ํŒ…

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

WebRTC๋ฅผ ์ด์šฉํ•œ P2P ํ†ต์‹ 

  • WebRTC API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ๋ถ€๋‹ด์„ ์ฃผ์ง€ ์•Š๊ณ  ์‹ค์‹œ๊ฐ„ P2P ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ฑ„๋„์„ ํ†ตํ•ด ์ด๋ฏธ์ง€, ๋ฉ”์„ธ์ง€ ๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํŒŒ์ผ์„ ์ฃผ๊ณ  ๋ฐ›์Šต๋‹ˆ๋‹ค.

์ธํ„ฐ๋ ‰ํ‹ฐ๋ธŒํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜

  • ์นด๋“œ๊ฐ€ ํŽผ์ณ์ง€๊ณ  ํšŒ์ „ํ•˜๋Š” ๋“ฑ์˜ ์ƒ์ƒํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์œผ๋กœ ์‹ค์ œ๋กœ ํƒ€๋กœ๋ฅผ ๋ณด๋Š” ๋“ฏํ•œ ํ˜„์žฅ๊ฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋‹นํƒ•ํƒ• ์ด์Šˆ ํ•ด๊ฒฐ๊ธฐ ๐Ÿ’ฆ

ํƒ€๋กœ ๋ฐ€ํฌํ‹ฐ์˜ ๊ธฐ์ˆ ์  ๋„์ „๊ณผ ์ด์Šˆ ํ•ด๊ฒฐ ๊ธฐ๋ก

BE

FE

FE / BE


์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

magic_conch-system architecture drawio


๊ธฐ์ˆ  ์Šคํƒ

๊ตฌ๋ถ„ ๊ธฐ์ˆ  ์Šคํƒ
common
frontend
backend
DB
CI/CD
deployment
others

๐Ÿ”— ๊ธฐ์ˆ  ์„ ํƒ ์ด์œ 


๊ธฐ์ˆ  ์Šคํƒ ์„ธ๋ถ€์‚ฌํ•ญ

Category Tech Stack Description ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ ๋งํฌ
์ธํ”„๋ผ VPC, Server ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์œผ๋กœ ๋ณด์•ˆ์ƒ ์•ˆ์ „ํ•œ ํ™˜๊ฒฝ์—์„œ ์„œ๋ฒ„ ์šด์˜ํ•˜๊ธฐ NCP ์ธํ”„๋ผ ๊ตฌ์ถ•ํ•˜๊ธฐ
DB MySQL, Redis, TypeORM
  • ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์กฐํšŒ ์„ฑ๋Šฅ ๋†’์ด๊ธฐ
  • ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์—ฐ๊ด€๋œ ์ž‘์—…์„ ํ•˜๋‚˜์˜ ์ž‘์—…์œผ๋กœ ๋ฌถ์–ด ์ผ๊ด€์„ฑ ๋ณด์žฅํ•˜๊ธฐ
  • ์ ์ ˆํ•œ ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””์Šคํฌ ๊ณต๊ฐ„ ์ตœ์ ํ™”ํ•˜๊ธฐ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ตœ์ ํ™”ํ•˜๊ธฐ
    CI/CD Docker, Nginx, Shell Script, GitHub Actions
  • Docker Compose๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๋ฉ€ํ‹ฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ํ•˜๊ธฐ
  • Nginx๋ฅผ ์ด์šฉํ•˜์—ฌ URL ์ •๋ณด์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์„œ๋น„์Šค ํ”„๋ก์‹œํ•˜๊ธฐ
  • GitHub Actions์™€ Shell Script๋กœ ์ž๋™ํ™”๋œ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค ๊ตฌ์ถ•ํ•˜๊ธฐ
  • ๋ธ”๋ฃจ/๊ทธ๋ฆฐ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ „๋žต์œผ๋กœ ์„œ๋น„์Šค์˜ ์ค‘๋‹จ์—†์ด ์—…๋ฐ์ดํŠธํ•˜๊ธฐ
  • GitHub Actions๋กœ CI/CD ์ž๋™ํ™”ํ•˜๊ธฐ
  • ๋ธ”๋ฃจ/๊ทธ๋ฆฐ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๊ตฌํ˜„ํ•˜๊ธฐ
  • graceful shutdown์œผ๋กœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ €ํ•˜ ๋ฐฉ์ง€ํ•˜๊ธฐ
  • health check๋กœ ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธํ•˜๊ธฐ
  • ํ…Œ์ŠคํŠธ Jest, supertest, Vitest ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ e2e ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ ์ฝ”๋“œ๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ Jest์™€ Supertest๋กœ ์ฝ”๋“œ ๋™์ž‘ ํ…Œ์ŠคํŠธํ•˜๊ธฐ
    ๋กœ๊น… Winston ๋กœ๊ทธ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ธฐ๋กํ•˜์—ฌ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒํ•˜๊ธฐ winston๊ณผ sentry๋กœ ์„œ๋ฒ„๊ฐ€ ํ„ฐ์ง€๋Š” ์ด์œ  ๋ถ„์„ํ•˜๊ธฐ
    ์ƒํƒœ ๊ด€๋ฆฌ Zustand
  • ์šฉ๋Ÿ‰์ด ์ž‘์€ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒญํฌ ์šฉ๋Ÿ‰ ์ตœ์†Œํ™”ํ•˜๊ธฐ
  • Context API๋ณด๋‹ค ๋” ํšจ๊ณผ์ ์œผ๋กœ ๋ฆฌ๋ Œ๋”๋ง์„ ์ค„์ด๋ฉด์„œ ์ƒํƒœ ๊ด€๋ฆฌํ•˜๊ธฐ
  • ContextAPI์—์„œ Zustand๋กœ ๋ณ€๊ฒฝํ•œ ์ด์œ 
    P2P ํ†ต์‹  WebRTC, socket.io
  • WebRTC๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜ ์—†์ด ์‹ค์‹œ๊ฐ„ P2P ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ตฌํ˜„ํ•˜๊ธฐ
  • ๋ฐ์ดํ„ฐ ์ฑ„๋„์„ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€, ๋ฉ”์‹œ์ง€ ๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ ์ฃผ๊ณ ๋ฐ›๊ธฐ
  • ๊ณตํ†ต ์†Œ์ผ“ ์ด๋ฒคํŠธ๋ฅผ ์ •์˜ํ•˜์—ฌ ์˜ค์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์‹œ์Šคํ…œ ํ™•์žฅ์„ฑ ๋ณด์žฅํ•˜๊ธฐ
  • -

    ๐Ÿ”ฎ๐Ÿฅ› ํƒ€๋กœ ๋ฐ€ํฌํ‹ฐ ์†Œ๊ฐœ

    ํƒ€๋กœ ๋ฐ€ํฌํ‹ฐ๋Š” FE 3๋ช… & BE 1๋ช… ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์š”!!

    ์ธ์› ๋ถˆ๊ท ํ˜•์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด FE ํŒ€์›๋“ค์˜ โœจ ํ’€์Šคํƒ ๋„์ „ โœจ์ด ๋‹ด๊ฒจ ์žˆ์–ด์š”~
    ๋•๋ถ„์— BE ํŒ€์›์€ ์ฒ˜์Œ ํ•ด๋ณด๋Š” ๋ฐฐํฌ์™€ ์ธํ”„๋ผ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋งˆ์น  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿฅฐ

    ์ž์„ธํ•œ ๋‹ด๋‹น ์—…๋ฌด๋Š” ์—ฌ๊ธฐ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š” ๐Ÿ‘

    J027 J028 J072 J165
    ๊น€์œ ์ • ๊น€์œ ์ง„ ์†ก๋ฏผํ˜• ํ—ˆ์ง€์˜ˆ
    Backend Frontend Frontend Frontend

    About

    ๐Ÿ”ฎ AI ํƒ€๋กœ ์ƒ๋‹ด ํ”Œ๋žซํผ, ๋งˆ๋ฒ•์˜ ์†Œ๋ผ๊ณ ๋‘ฅ ๐Ÿš

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published