Skip to content

๐ŸŒŒ ๋ฐคํ•˜๋Š˜์˜ ๋ณ„๋น›์ฒ˜๋Ÿผ, ์ž์œ ๋กœ์šด ์ธํ„ฐ๋ž™์…˜ ์‹ค์‹œ๊ฐ„ ์—๋””ํ„ฐ

Notifications You must be signed in to change notification settings

boostcampwm-2024/web33-Nocta

Repository files navigation

image


ezgif com-crop


๐Ÿ“‘ ๋ฌธ์„œ ์ž‘์„ฑ์ด ๋” ํŽธํ•˜๊ณ  ์ฆ๊ฑฐ์›Œ์ง„๋‹ค

๐Ÿค” ํ•˜๋‚˜์˜ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ๋ฌธ์„œ๋„ ํ•จ๊ป˜ ๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ์  ์žˆ์œผ์‹ ๊ฐ€์š”?

๋ฌธ์„œ ์ž‘์„ฑํ•  ๋•Œ ์—ฌ๋Ÿฌ ์ฐฝ์„ ๋„์›Œ๋‘๊ณ  ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ ์ž‘์—…ํ•˜์…จ๋˜ ๋ถˆํŽธํ•จ์ด ์žˆ์—ˆ์ฃ . ๊ธฐ์กด ์—๋””ํ„ฐ๋“ค์€ ํ•˜๋‚˜์˜ ์ฐฝ์— ๊ฐ‡ํ˜€์žˆ์–ด์„œ, ์ฐธ๊ณ ํ•  ๋‚ด์šฉ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค ์ฐฝ์„ ์ด๋™ํ•ด์•ผ ํ–ˆ์–ด์š”.

Nocta๋Š” ์—๋””ํ„ฐ์— ์ƒˆ๋กœ์šด ๋ฐ”๋žŒ์„ ๋ถˆ์–ด๋„ฃ์—ˆ์–ด์š”.

  1. ํƒญ ๋ธŒ๋ผ์šฐ์ง•์œผ๋กœ ์—ฌ๋Ÿฌ ๋ฌธ์„œ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋„˜๋‚˜๋“ค ์ˆ˜ ์žˆ์–ด์š”.
  2. ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ ์š”์†Œ๋“ค๋กœ ๋ฌธ์„œ ์ž‘์„ฑ์ด ๋” ํฅ๋ฏธ๋กญ๊ฒŒ ๋ณ€ํ•ด์š”.

Nocta์—์„œ ๋‹จ์ˆœํ•œ ๊ธฐ๋ก์„ ๋„˜์–ด, ์ƒˆ๋กœ์šด ๊ธ€์“ฐ๊ธฐ ๊ฒฝํ—˜์„ ์‹œ์ž‘ํ•˜์„ธ์š”.

๋…ธ์…˜ | ๊ฐœ๋ฐœ์œ„ํ‚ค | ์‹œ์—ฐ์˜์ƒ | ์ตœ์ข…๋ฐœํ‘œ

${\textsf{\color{blue}์„œ๋น„์Šค ์ „์ฒด๋ณด๊ธฐ}}$

๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•

๋งˆํฌ๋‹ค์šด ๊ธฐ์ดˆ ๋ฌธ๋ฒ•

แ„†แ…กแ„แ…ณแ„ƒแ…กแ„‹แ…ฎแ†ซ แ„€แ…ตแ„Žแ…ฉแ„†แ…ฎแ†ซแ„‡แ…ฅแ†ธ

๋ธ”๋Ÿญ ๋“œ๋ž˜๊ทธ์•ค ๋“œ๋กญ๊ณผ ์Šฌ๋ž˜์‹œ

แ„†แ…ฎแ„Œแ…ฆ

๋ธ”๋Ÿญ ์ „ํ™˜

แ„‡แ…ณแ†ฏแ„…แ…ฉแ†จ แ„Œแ…ฅแ†ซแ„’แ…ชแ†ซ1

๋ฆฌ์น˜ ํ…์ŠคํŠธ

แ„…แ…ตแ„Žแ…ต

์ˆœ์„œ ๋ฆฌ์ŠคํŠธ

แ„‰แ…ฎแ†ซแ„‰แ…ฅแ„…แ…ตแ„‰แ…ณแ„แ…ณ

์‹ค์‹œ๊ฐ„ ๋™์‹œํŽธ์ง‘

ํ•œํŽ˜์ด์ง€ ๋‹ค์ค‘๋ธ”๋ก

แ„’แ…กแ†ซแ„‘แ…ฆแ„‹แ…ตแ„Œแ…ต แ„ƒแ…กแ„Œแ…ฎแ†ผแ„‹แ…ตแ†ธแ„…แ…งแ†จ


๋‹ค์ค‘ ํŽ˜์ด์ง€ ๋™์‹œ์ž…๋ ฅ

แ„ƒแ…กแ„Œแ…ฎแ†ผ แ„‘แ…ฆแ„‹แ…ตแ„Œแ…ต แ„ƒแ…ฉแ†ผแ„‰แ…ตแ„‹แ…ตแ†ธแ„…แ…งแ†จ


์›Œํฌ์ŠคํŽ˜์ด์Šค

์›Œํฌ์ŠคํŽ˜์ด์Šค ์ ‘์†

แ„‹แ…ฏแ„แ…ณแ„‰แ…ณแ„‘แ…ฆแ„‹แ…ตแ„‰แ…ณ แ„Œแ…ฅแ†ธแ„‰แ…ฉแ†จ


์›Œํฌ์ŠคํŽ˜์ด์Šค ์ดˆ๋Œ€

แ„‹แ…ฏแ„แ…ณแ„‰แ…ณแ„‘แ…ฆแ„‹แ…ตแ„‰แ…ณแ„Žแ…ฉแ„ƒแ…ข


์›Œํฌ์ŠคํŽ˜์ด์Šค ์ดˆ๋Œ€์ˆ˜์‹ 

แ„‹แ…ฏแ„แ…ณแ„‰แ…ณแ„‘แ…ฆแ„‹แ…ตแ„‰แ…ณแ„Žแ…ฉแ„ƒแ…ขแ„‡แ…กแ†ฎแ„‹แ…ณแ†ท


ํƒญ ๋ธŒ๋ผ์šฐ์ง•

๋‹ค์ค‘ ํƒญ๋ธŒ๋ผ์šฐ์ง•

แ„ƒแ…กแ„Œแ…ฎแ†ผ แ„แ…ขแ†ธ แ„‡แ…ณแ„…แ…กแ„‹แ…ฎแ„Œแ…ตแ†ผ


ํŽ˜์ด์ง€ ์ตœ๋Œ€ํ™”

แ„‘แ…ฆแ„‹แ…ตแ„Œแ…ต แ„Žแ…ฌแ„ƒแ…ขแ„’แ…ช


ํŽ˜์ด์ง€ ์ตœ์†Œํ™”

แ„‘แ…ฆแ„‹แ…ตแ„Œแ…ต แ„Žแ…ฌแ„‰แ…ฉแ„’แ…ช


์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์ปดํฌ๋„ŒํŠธ

ํ•˜์ด๋ผ์ดํŠธ ์• ๋‹ˆ๋ฉ”์ด์…˜

3333


์Šฌ๋ผ์ด๋“œ ์ธ ํ…์ŠคํŠธ

แ„‰แ…ณแ†ฏแ„…แ…กแ„‹แ…ตแ„ƒแ…ณแ„‹แ…ขแ†ซแ„แ…ฆแ†จแ„‰แ…ณแ„แ…ณ


ํŽ˜์ด๋“œ์ธ ํ…์ŠคํŠธ

แ„‘แ…ฆแ„‹แ…ตแ„ƒแ…ณแ„‹แ…ตแ†ซแ„แ…ฆแ†จแ„‰แ…ณแ„แ…ณ


ํŽ„์Šค&๋ฐ”์šด๋“œ ํ…์ŠคํŠธ

แ„‘แ…ฅแ†ฏแ„‰แ…ณแ„‡แ…กแ„‹แ…ฎแ†ซแ„‰แ…ณแ„แ…ฆแ†จแ„‰แ…ณแ„แ…ณ


์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ ˆ์ธ๋ณด์šฐ

แ„…แ…ฆแ„‹แ…ตแ†ซแ„‡แ…ฉแ„‹แ…ฎ


๐Ÿƒโ€โ™‚๏ธโ€โžก๏ธ ์ง์ ‘ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค CRDT ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ!

@noctaCRDT ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ client์™€ server์—์„œ ์‚ฌ์šฉํ•ด์š”

๊ธฐ์ˆ ์  ๋„์ „์„ ์œ„ํ•ด RGA(Replicated Growable Array)์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ–ˆ์–ด์š” LinkedList ๊ธฐ๋ฐ˜์œผ๋กœ ๋…ผ๋ฆฌ์  ์‹œ๊ณ„๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ ๋ฌธ์ž๋“ค์˜ ์ธ๋ฑ์Šค์™€ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•ด์š”

์บ๋Ÿฟ ์ด๋™ ๋ฌธ์ œ

CRDT ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚˜๊ณ  ์ƒํƒœ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋ฉฐ, ์บ๋Ÿฟ์˜ ์œ„์น˜๊ฐ€ ์ดˆ๊ธฐํ™”๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ–ˆ์–ด์š” ์ˆ˜๋™์œผ๋กœ ์บ๋Ÿฟ์œ„์น˜๋ฅผ ์„ค์ •ํ•˜๊ณ , ํŽ˜์ด์ง€๋ณ„๋กœ CRDT๋ฅผ ์ƒ์„ฑํ•ด ๊ด€๋ฆฌํ–ˆ์–ด์š”

๐Ÿ“ย ์‹ค์‹œ๊ฐ„ ํ˜‘์—… ๋งˆํฌ๋‹ค์šด ์—๋””ํ„ฐ

์‹ค์‹œ๊ฐ„์œผ๋กœ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฌธ์„œ๋ฅผ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋งˆํฌ๋‹ค์šด ์—๋””ํ„ฐ๋ฅผ ๊ตฌํ˜„ํ–ˆ์–ด์š”.

CRDT๋ฅผ ํ™œ์šฉํ•ด ์‹ค์‹œ๊ฐ„ ๋™์‹œ ํŽธ์ง‘ ์‹œ์˜ ์ถฉ๋Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์–ด์š” ๋งˆํฌ๋‹ค์šด ํ”„๋ฆฌ๋ทฐ์™€ ์—๋””ํ„ฐ๋ฅผ ๋™๊ธฐํ™”ํ•˜์—ฌ ์ž‘์„ฑํ•˜๋ฉด์„œ ๋ฐ”๋กœ ๊ฒฐ๊ณผ๋ฌผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”

๋ณต์žกํ•œ ์ค‘์ฒฉ ๊ตฌ์กฐ ๊ฐœ์„ 

๊ธฐ์กด์˜ ์ค‘์ฒฉ ๊ตฌ์กฐ๋Š” ๋ณต์žกํ•œ DOM ์ˆœํšŒ ๋กœ์ง์ด ํ•„์š”ํ•˜๊ณ  ์—๋Ÿฌ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•˜์–ด์š” ๋ชจ๋“  ์š”์†Œ์˜ depth๋ฅผ 1๋กœ ํ†ต์ผํ•˜๊ณ  prev/next ๊ด€๊ณ„๋งŒ ์œ ์ง€ํ•˜๋„๋ก ๊ฐœ์„ ํ–ˆ์–ด์š”

ํ•œ๊ธ€ ์ž…๋ ฅ ์ปดํฌ์ง• ์ด์Šˆ ํ•ด๊ฒฐ

macOS์™€ Windows์—์„œ ํ•œ๊ธ€ ์ž…๋ ฅ ์‹œ ์ปดํฌ์ง• ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์–ด์š” OS๋ฅผ ํ™•์ธํ•˜์—ฌ ๊ฐ OS์— ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ–ˆ์–ด์š”

๐Ÿ–ฅ๏ธย ํƒญ ๋ธŒ๋ผ์šฐ์ง•

ํŽ˜์ด์ง€๋ฅผ ์›ํ•˜๋Š” ์œ„์น˜๋กœ ์ด๋™ํ•˜๊ณ  ์‚ฌ์ด์ฆˆ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์–ด์š”

ํŽ˜์ด์ง€๋“ค์ด ํ™”๋ฉด์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋„๋ก ์œ„์น˜๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๊ณ , 8๋ฐฉํ–ฅ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์–ด์š”. GPU๋ฅผ ํ™œ์šฉํ•œ ๋ Œ๋”๋ง ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ–ˆ์–ด์š”

๐Ÿ”ง ๊ธฐ์ˆ  ์Šคํƒ

Common

Frontend

Backend

Infra

์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

์ œ๋ชฉ ์—†์Œ-2024-07-18-1129_2

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

2024.10.28 ~ 2024.12.06 (6์ฃผ)


๐ŸŒฑ ํŒ€์› ์†Œ๊ฐœ


๐Ÿš€ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ

# ์ €์žฅ์†Œ ๋ณต์ œ
git clone https://github.com/boostcampwm-2024/web33-boostproject.git

# ์˜์กด์„ฑ ์„ค์น˜
pnpm install

# ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ
pnpm run build

# ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๋ชจ๋“œ ์‹คํ–‰
# Frontend: http://localhost:5173/
# Backend: http://localhost:3000/
pnpm run dev

# ํ”„๋กœ์ ํŠธ Docker ๋นŒ๋“œ ํ›„ ์‹คํ–‰ (http://localhost/)
docker-compose up -d --build

About

๐ŸŒŒ ๋ฐคํ•˜๋Š˜์˜ ๋ณ„๋น›์ฒ˜๋Ÿผ, ์ž์œ ๋กœ์šด ์ธํ„ฐ๋ž™์…˜ ์‹ค์‹œ๊ฐ„ ์—๋””ํ„ฐ

Resources

Stars

Watchers

Forks

Packages

No packages published