Skip to content
demetoir edited this page Dec 14, 2019 · 9 revisions

๋ฐ”๊ธ€๋ฐ”๊ธ€

sli.do์—์„œ ์•„์ด๋””์–ด๋ฅผ ์˜๊ฐ ๋ฐ›์€ ์‹ค์‹œ๊ฐ„ ์งˆ์˜์‘๋‹ต ๋ฐ ํˆฌํ‘œ ๊ณต์œ  ์›น ์„œ๋น„์Šค

Version Version
Node.js GraphQ: Docker React

๋ฐฐํฌ ๋งํฌ

์ฃผ์š” ๊ธฐ๋Šฅ

  • 2๊ฐ€์ง€ ์‚ฌ์šฉ์ž ๋ชจ๋“œ ์ œ๊ณต (Host: ์ด๋ฒคํŠธ๋ฅผ ์ฃผ๊ด€ํ•˜๋Š” ์‚ฌ์šฉ์ž, Guest: ์ด๋ฒคํŠธ์— ์ฐธ๊ฐ€ํ•˜์—ฌ ์งˆ๋ฌธํ•˜๋Š” ์‚ฌ์šฉ์ž)
  • ์‹ค์‹œ๊ฐ„ ์งˆ์˜์‘๋‹ต(Guest ๋ชจ๋“œ)
    • ์‹ค์‹œ๊ฐ„ ์งˆ๋ฌธํ•  ์ˆ˜ ์žˆ์Œ
    • ์งˆ๋ฌธ์— ์ข‹์•„์š”๋ฅผ ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ์Œ (์ข‹์•„์š”๊ฐ€ ๋งŽ์œผ๋ฉด ์ธ๊ธฐ์งˆ๋ฌธ Tab ์ƒ๋‹จ์ชฝ์— ๋…ธ์ถœ๋จ)
    • ์งˆ๋ฌธ์— ์ด๋ชจ์ง€๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ
    • ์งˆ๋ฌธ์— ๋Œ“๊ธ€์„ ๋‹ฌ ์ˆ˜ ์žˆ์Œ
  • ์‹ค์‹œ๊ฐ„ ์งˆ์˜์‘๋‹ต (Host ๋ชจ๋“œ)
    • ์‹ค์‹œ๊ฐ„ ์งˆ๋ฌธ์„ ๊ฒ€์—ดํ•˜์—ฌ ํŠน์ • ์งˆ๋ฌธ์€ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ
    • ํŠน์ • ์งˆ๋ฌธ์„ ์ƒ๋‹จ์— ๊ณ ์ •์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ
    • ๋‹ต๋ณ€ํ•œ ์งˆ๋ฌธ์€ ์‹ค์‹œ๊ฐ„์งˆ๋ฌธ Tab์—์„œ ์งˆ๋ฌธ์ €์žฅ์†Œ๋กœ ์ด๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ
  • ์‹ค์‹œ๊ฐ„ ํˆฌํ‘œ
    • ํˆฌํ‘œ ์ข…๋ฅ˜: N์ง€์„ ๋‹ค(๋ณต์ˆ˜์„ ํƒ ์ง€์›), ๋ณ„์ ์ฃผ๊ธฐ
    • Host๋Š” ํˆฌํ‘œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Guest๋“ค์—๊ฒŒ ์‹ค์‹œ๊ฐ„ ํˆฌํ‘œ ์ฐธ์—ฌ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Œ
    • Guest๋“ค์€ ํˆฌํ‘œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ , ํˆฌํ‘œ ์ƒํ™ฉ์€ ์‹ค์‹œ๊ฐ„ ๊ณต์œ ๋จ

์œ„ํ‚ค ๋งํฌ

wiki

ํŒ€์›

๊ธฐ์ˆ  ์Šคํƒ

  • Front-end: React, Apollo
  • Back-end: Nginx, nodejs, MySQL2, Sequelize, GraphQL(Yoga), socket.io, Oauth, Docker
  • Env & etc: Eslint, babel, webpack, prettier, yarn, github, slack

DataFlow

vaagleDataFlow

๊ธฐ์ˆ ์  ํŠน์ง•

  • Express, socket.io, grpahQL, MySQL ์ด 4๊ฐ€์ง€ ์„œ๋ฒ„๊ฐ€ Docker ์œ„์—์„œ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ๋™์ž‘
  • ๊ฐ๊ฐ์˜ ์„œ๋ฒ„๋Š” ์„œ๋กœ ์˜์กด์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์ธ ์„ฑ๊ฒฉ์„ ๋„๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜ ๋ฐ ์—๋Ÿฌ ์ƒํ™ฉ ๋Œ€์ฒ˜์— ์œ ์—ฐ
  • ๊ฐ ์„œ๋ฒ„๋Š” ๊ฐ๊ฐ์˜ ์ธ์ฆ ๋กœ์ง์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ์˜ ๊ฐœ๋ณ„์ ‘๊ทผ์„ ์ฐจ๋‹จ
  • ํ˜ธ์ŠคํŠธ ์•ฑ๊ณผ ๊ฒŒ์ŠคํŠธ ์•ฑ์ด ๋‚˜๋‰˜์–ด์žˆ์ง€๋งŒ ์„œ๋กœ๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—ฐ๋™
  • ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๋ฅผ ๋ณด์žฅํ•˜๋ฉฐ ์ฑ„ํŒ…๋ฟ ์•„๋‹ˆ๋ผ ์ฑ„ํŒ…๊ฒ€์—ด ๋ฐ ์ƒ๋‹จ ๊ณ ์ • ๋“ฑ์ด ์ฆ‰๊ฐ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜์˜
  • ์‹ค์‹œ๊ฐ„ ํˆฌํ‘œ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์— ํˆฌํ‘œ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜
  • ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•œ ๋ชจ๋ฐ”์ผ First
  • React ์ปดํฌ๋„ŒํŠธ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•œ ํด๋ผ์ด์–ธํŠธ ๋ฐ˜์‘์„ฑ ์ตœ์ ํ™”
  • Google OAuth ๋กœ๊ทธ์ธ

์‚ฌ์šฉ์ž ์ง‘๋‹จ

  • ์ปจํผ๋Ÿฐ์Šค/์„ธ๋ฏธ๋‚˜/์ˆ˜์—… ์ฐธ๊ฐ€์ž ๋ฐ ์šด์˜์ž

๊ธฐํš ๋ฐฐ๊ฒฝ ๋ฐ ํ•„์š”์„ฑ

  • ์ˆ˜์—…, ๊ฐ•์—ฐ, ํ† ๋ก  ์ค‘ ์‹ค์‹œ๊ฐ„ ์งˆ์˜์‘๋‹ต ๋ฐ ํˆฌํ‘œ๋ฅผ ํ†ตํ•œ ์ฒญ์ค‘์˜ ๋Šฅ๋™์  ์ฐธ์—ฌ๋ฅผ ์œ ๋„ํ•จ
  • ์™„๋ฒฝํ•œ ํ•œ๊ธ€ํ™” ์ง€์› โ‡’ ์ด์šฉ์ž ์—ฐ๋ น์ธต ํ™•๋Œ€ (์ค‘์žฅ๋…„/์•„๋™)
  • Front-end, back-end๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ๋ฐฐ๋ถ„, 4๋ช…์ด ๋„์ „์ ์œผ๋กœ ๊ฐœ๋ฐœํ•  ๋งŒํ•œ ๋ถ„๋Ÿ‰

๋„์ „์  ๊ธฐ๋Šฅ

  • ์งˆ๋ฌธ์— ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•จ
  • Realtime & Robust: ์‹ค์‹œ๊ฐ„ ์งˆ๋ฌธ ๊ณต์œ , ์‹ค์‹œ๊ฐ„ ํˆฌํ‘œ ๋ฐ ์•ˆ์ •์  ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ๋™์ž‘
  • Localization: ํ•œ๊ตญ์ธ์—๊ฒŒ ์นœ์ˆ™ํ•œ UI ๊ฐœ๋ฐœ (์นดํ†ก์˜ ํˆฌํ‘œ UI, ๋‹ค์–‘ํ•œ ํ•œ๊ธ€ํฐํŠธ ์ถ”๊ฐ€ ๋“ฑ)
  • Mobile first: Guest ๋ชจ๋“œ๋Š” ์Šค๋งˆํŠธํฐ์— ์ตœ์ ํ™”๋œ UI ๊ฐœ๋ฐœ, ์ตœ์ ํ™” ์ž‘์—… ์ง„ํ–‰
  • Emoji ์ ์šฉ

Clone this wiki locally