Skip to content

16. Sprint log

hataerin edited this page Dec 21, 2020 · 6 revisions

1์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ์˜ ๋กœ๊ทธ

์Šคํ”„๋ฆฐํŠธ ๋ชฉํ‘œ ๐Ÿˆ

  • ๊ธฐํš์•ˆ ๋ฐ ํ™”๋ฉด์„ค๊ณ„ ์™„์„ฑํ•˜๊ธฐ
  • ์Šคํ”„๋ฆฐํŠธ ์ ์‘ํ•˜๊ธฐ

์Šคํ”„๋ฆฐํŠธ ๋‹จ์œ„ ๐Ÿ—“

  • 6์ผ

์Šคํฌ๋Ÿผ ๋งˆ์Šคํ„ฐ ๐Ÿ‘จโ€๐Ÿ”ง

ํšŒ์˜ ๋‚ด์šฉ ๐Ÿ’ฌ

  • ์‹ค์‹œ๊ฐ„ ๋ฌธ์„œ/์†Œํ†ต ๊ด€๋ จ ๊ธฐ์ˆ  ์กฐ์‚ฌ
  • Jira ๊ณต๋ถ€ ๋ฐ ์ ์šฉ

1์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ  ๋กœ๊ทธ

์ฃผ๊ฐ„ ํšŒ๊ณ  ๋‚ด์šฉ ๐Ÿ’ฌ

  • ๊ณฝ๋ณ‘์„ 

    • ์ƒˆ๋กœ์šด ๊ฐœ๋…์— ๋Œ€ํ•ด ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ์ง€ ์•Š์•˜๋‹ค.
    • ์˜ˆ์ƒํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค. ๊ฐœ๋ฐœ scope๋ฅผ ์ž˜ ์„ค์ •ํ•ด์„œ ์ด์Šˆ ๋‹ฌ์„ฑ๋ฅ ์„ ๋†’์ด๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ๋‘์–ด์•ผ๊ฒ ๋‹ค.
  • ์ด์—ฐ์ฃผ

    • express์™€ react๋ฅผ ์—ฐ๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณต์Šตํ–ˆ๋‹ค ์˜ค๋žœ๋งŒ์ด์•ผ..
    • websocket ๋™์ž‘๋ฐฉ์‹๊ณผ express์˜ socket.io๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์žฌ๋ฐŒ์—ˆ๋‹คใ…Ž
    • ํŒ€์› ์ถ”๊ฐ€ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋”ฐ๋ผ team๊ณผ user ์Šคํ‚ค๋งˆ ์„ค๊ณ„ ์•„์ด๋””์–ด๋ฅผ ์ƒ๊ฐํ•˜๊ธฐ๊ฐ€ ๊นŒ๋‹ค๋กœ์› ๋‹ค. user ํ…Œ์ด๋ธ”์€ LiveMD์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•œ ๋ฒˆ์ด๋ผ๋„ ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž ์ •๋ณด๋งŒ ๊ด€๋ฆฌํ•œ๋‹ค. ํŒ€ ์ดˆ๋Œ€ ์‹œ ๊ทธ ์ •๋ณด๋Š” user_team์— ๊ธฐ๋ก๋œ๋‹ค. ์—ฌ๊ธฐ์„œ user_team ํ…Œ์ด๋ธ”๊ณผ user ํ…Œ์ด๋ธ”๊ณผ ๊ด€๊ณ„๋ฅผ ์ง€์–ด ๋‘์—ˆ์„ ๋•Œ, ์ดˆ๋Œ€ํ•œ ํŒ€์›์ด ๋“ฑ๋ก๋˜์ง€ ์•Š์€ ์‚ฌ๋žŒ์ผ ๊ฒฝ์šฐ ๊ทธ ๊ด€๊ณ„๊ฐ€ ๊นจ์ง„๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด user_email ํ…Œ์ด๋ธ”์„ ๋‘์–ด userํ…Œ์ด๋ธ”๊ณผ user_team์ด ์ด๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ํ•˜์—ฌ ๊ด€๊ณ„๊ฐ€ ๊นจ์ง€์ง€ ์•Š๊ฒŒ ํ•ด๋‘์—ˆ๋‹ค. ์ €ํฌ๋Š” RDB์˜ ์–ด๋ ค์›€์ด ํ•ด๊ฒฐ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ NoSQL๋กœ ๋ฐ”๊พธ์–ด ์„ค๊ณ„์˜ ์–ด๋ ค์›€์„ ํ•ด์†Œํ•  ๊ฒƒ๋„ ๊ฐ์•ˆํ•˜๊ณ  ์žˆ๋‹ค.
    • ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ์—์„œ git flow์— ๋”ฐ๋ผ ๋ธŒ๋žœ์น˜ develop๋ฅผ develop_front, develop_back์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ง„ํ–‰ํ–ˆ๋‹ค. client ํด๋”์—์„œ favicon ๋“ฑ head ์ •๋ณด๋ฅผ ๋ฐ”๊พธ๊ณ  ๋ธŒ๋žœ์น˜ release์— ์กฐ์‹ฌ์„ฑ์—†์ด commitํ•˜๊ณ  pushํ–ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 1) sparseCheckout, git pull 2)git rebase 3)git reset, git checkout origin/release -- client/public ์œผ๋กœ ํ•ด๊ฒฐํ–ˆ๋‹ค. 2)ํ–ˆ์„ ๋•Œ ์ปค๋ฐ‹์ด ๋‹ค ๋ฐ”๊ปด์„œ reflog๋กœ ์ด์ „ ์ปค๋ฐ‹์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ–ˆ๋‹ค. ํ•˜๋งˆํ„ฐ๋ฉด ํฐ์ผ๋‚ ๋ป”! ํ•˜์ง€๋งŒ branch๋ฅผ ์ด์ œ develop ํ•˜๋‚˜๋กœ ์“ฐ๊ธฐ ํ•ด์„œ ํ•„์š”์—†๊ธด ํ•˜์ง€๋งŒ ์ข‹์€ ๊ฒฝํ—˜ํ–ˆ๋‹ค~
  • ์ •์†Œ์˜

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

    • ์ฒซ ์Šคํ”„๋ฆฐํŠธ์˜€๋Š”๋ฐ ์—ํ”ฝ, ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์žฌ๋ฏธ์žˆ์—ˆ๋‹ค.
    • yjs ์˜คํ”ˆ์†Œ์Šค์˜ ์ž‘๋™๋ฐฉ์‹์— ๋Œ€ํ•ด ๋ถ„์„ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ ธ๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

    • ๊ฐœ์ธ ์‚ฌ์ •

์ž˜ํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ ๊ณ„์†ํ•  ์ผ ๐Ÿ€

  • ๊ณฝ๋ณ‘์„ 

    • Jira Software ์‚ฌ์šฉ๋ฒ•์„ ์–ด๋А ์ •๋„ ์ˆ™์ง€ํ•œ ๊ฒƒ์ด ๋„์›€์ด ๋งŽ์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ์‹ค๋ฌด์—์„œ๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ˜‘์—… ๋„๊ตฌ์ด๋‹ˆ ๊พธ์ค€ํžˆ ์‚ฌ์šฉํ•  ์ƒ๊ฐ์ด๋‹ค. ํŒ€์›๋“ค์—๊ฒŒ๋„ ์ง€์†์ ์œผ๋กœ ๋‚ด์šฉ์„ ๊ณต์œ ํ•ด์•ผ๊ฒ ๋‹ค.
  • ์ด์—ฐ์ฃผ

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

    • ์Šคํฌ๋Ÿผ, wrap-up ๋“ฑ ๊ทœ์น™์„ ์ •ํ•ด์„œ ์ฒด๊ณ„๋ฅผ ๊ฐ–์ถ”๊ฒŒ ๋˜์–ด ์ฑ…์ž„๊ฐ์ด ์ƒ๊ฒผ๋‹ค.
  • ์กฐ์„ฑ์›

    • ์˜จ๋ผ์ธ์œผ๋กœ ์ˆ˜์—…์ด ์ง„ํ–‰๋˜์—ˆ์ง€๋งŒ ์กฐ์›๋“ค๋ผ๋ฆฌ ๋”ฐ๋กœ ๋งŒ๋‚˜์„œ ํšŒ์˜ํ•˜๊ณ  ์†Œํ†ตํ–ˆ๋˜ ๊ฒƒ์ด ์ข‹์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์•ž์œผ๋กœ๋„ ๊ณ„์† ๋ชจ์—ฌ์„œ ์†Œํ†ตํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค!
  • ํ•˜ํƒœ๋ฆฐ

    • ๊ฐœ์ธ ์‚ฌ์ •

๋” ์ž˜ํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ ์ผ ๐Ÿ˜ฅ

  • ๊ณฝ๋ณ‘์„ 

    • ์‹œ๊ฐ„์ด ์—†์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ํ•‘๊ณ„์ง€๋งŒ, WebRTC์— ๋Œ€ํ•ด ์ข€ ๋” ์ „๋ฌธ์ ์ธ ๋ถ„์„์„ ๋ชปํ•œ ๊ฒƒ์ด ์•„์‰ฝ๋‹ค. ์ด๋ฒˆ ์Šคํ”„๋ฆฐํŠธ๊นŒ์ง€ ํ•ด์•ผํ•  ์ด์Šˆ์˜€์ง€๋งŒ ์กฐ๊ธˆ ์–ด๋ ต๋‹ค๋Š” ์ด์œ ๋กœ ์•ˆ์ผํ•˜๊ฒŒ ๋Œ€์ฒ˜ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋‹ค์Œ ์Šคํ”„๋ฆฐํŠธ์—์„œ๋Š” ๋งก์€ ์ด์Šˆ์— ๋Œ€ํ•ด์„œ ๋” ์ „๋ฌธ์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผํ•  ํ•„์š”์„ฑ์„ ๋А๊ผˆ๋‹ค.
  • ์ด์—ฐ์ฃผ

    • commit ๋ฉ”์‹œ์ง€ ์ปจ๋ฒค์…˜์„ ์ž˜ ๋”ฐ๋ผ์•ผ๊ฒ ๋‹ค.
    • ๋ธŒ๋žœ์น˜๋Š” ํ•˜์œ„๋ธŒ๋žœ์น˜์— commitํ•˜๊ณ  ์ƒ์œ„ ๋ธŒ๋žœ์น˜์— mergeํ•˜๋Š” ๋ฐฉ์‹์„ ๊ผญ ์ง€์ผœ์•ผ๊ฒ ๋‹ค.
    • ์Šคํ”„๋ฆฐํŠธ ๋‹จ์œ„๋ฅผ ๊ณ ๋ คํ•ด์„œ ์Šคํ”„๋ฆฐํŠธ ๊ธฐ๊ฐ„์— ๋‚ด๊ฐ€ ํ•  sub task๋ฅผ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๋ฐฑ๋กœ๊ทธ์— ๋„ฃ์–ด๋‚˜์•ผ๊ฒ ๋‹ค.
  • ์ •์†Œ์˜

    • ๊ฐ™์ด ๋ชจ์ธ ๊ฒฝ์šฐ, ๋ชจ์˜€์„ ๋•Œ ์‹œ๋„ˆ์ง€๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ชฉํ‘œ๋ฅผ ์ •ํ™•ํžˆ ์ •ํ•˜๊ณ  ํ•˜๋ฃจํ•˜๋ฃจ ๋‹ฌ์„ฑํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
    • jira ํ•˜์œ„์ž‘์—… ์ฃผ ์ดˆ์— ์™„์„ฑํ•  ๊ฒƒ!
  • ์กฐ์„ฑ์›

    • ์Šคํ”„๋ฆฐํŠธ์—์„œ ์ง„ํ–‰ํ•  ๊ฐœ๋ฐœ ๋ฒ”์œ„๋ฅผ ํ™•์‹คํžˆ ์‹คํ˜„ ๊ฐ€๋Šฅํ•  ์ •๋„๋กœ ์žก์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

    • ๊ฐœ์ธ ์‚ฌ์ •

๋‹ค์Œ ์Šคํ”„๋ฆฐํŠธ์— ์ ์šฉํ•  ๊ฒƒ ๐Ÿ“ˆ

  • ์ง€๊ฐ์€ ์ตœ๋Œ€ํ•œ ์ž์ œํ•  ๊ฒƒ(์ง€๊ฐ๋น„ ๊ฑท์„ ์˜ˆ์ •์ž„)
  • ๋งค์ผ 10:00 ์Šคํฌ๋Ÿผ , 18:00 wrap-up
  • ํ† ์š”์ผ์€ ํœด์ผ
  • ์ผ์š”์ผ์€ 10:00 ์Šคํฌ๋Ÿผ , 21:00 sprint ํšŒ์˜

2์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ์˜ ๋กœ๊ทธ

์Šคํ”„๋ฆฐํŠธ ๋ชฉํ‘œ

  • ํ•ต์‹ฌ ๊ธฐ๋Šฅ 3๊ฐœ(์ฑ„ํŒ…, ๊ณต๋™ ๋ฌธ์„œ ์ž‘์—…, ๋ฌธ์„œ ๊ด€๋ฆฌ) ์ตœ์†Œํ•œ์œผ๋กœ ๋™์ž‘๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ
  • jira ์™€ github ์—ฐ๋™ํ•ด์„œ ์ž‘์—…ํ•˜๊ธฐ

์Šคํ”„๋ฆฐํŠธ ๋‹จ์œ„ ๐Ÿ—“

  • 6์ผ (2020.10.19-10.25)

์Šคํฌ๋Ÿผ ๋งˆ์Šคํ„ฐ ๐Ÿ‘จโ€๐Ÿ”ง

  • ์กฐ์„ฑ์› @JSWww

ํšŒ์˜ ๋‚ด์šฉ ๐Ÿ’ฌ

  • ๊ฐœ์ธ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ๋ฌธ์„œ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ์™„๋ฃŒํ•˜๊ธฐ
  • ์ฑ„ํŒ… ๊ธฐ๋Šฅ ์™„์„ฑํ•˜๊ธฐ
  • ๋ฉ”์ธ ๊ธฐ๋Šฅ๋“ค ๊ฐ๊ฐ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๊ธฐ (์—ฐ๋™ x)
  • ์ง€๊ฐ์€ ์ž์ œ!
  • ๋งค์ผ 10:00 ์Šคํฌ๋Ÿผ, 18:00 wrap-up
  • ํ† ์š”์ผ์€ ํœด์ผ์ž…๋‹ˆ๋‹ค!
  • ์ผ์š”์ผ์€ 10:00 ์Šคํฌ๋Ÿผ, 21:00 Sprint ํšŒ์˜



2์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ  ๋กœ๊ทธ

์ฃผ๊ฐ„ ํšŒ๊ณ  ๋‚ด์šฉ ๐Ÿ’ฌ

  • ๊ณฝ๋ณ‘์„ 
    • Solution์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ API๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹ค์‹œ๊ฐ„ ์˜์‚ฌ์†Œํ†ต ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.
    • ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์— GraphQL์ด ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. GraphQL์„ ๊ณต๋ถ€ํ•ด์•ผํ•œ๋‹ค.
  • ์ด์—ฐ์ฃผ
    • Workspace ui๋ฅผ ๋งŒ๋“ค๋•Œ sidebar์˜ slide ํšจ๊ณผ์™€ ๊ทธ ์•ˆ์— ์žˆ๋Š” list popupํšจ๊ณผ ์‚ฌ์ด์— ์˜์กด์„ฑ์ด ์žˆ์–ด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค.
    • graphql์ด msa์—์„œ ์–ด๋–ป๊ฒŒ ์“ฐ์ด๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ”„๋ก์‹œ์„œ๋ฒ„๋กœ aws appsync๋ฅผ ๊ณ ๋ ค์ค‘์ด๋‹ค.
    • ์šฐ๋ฆฌ ํŒ€์˜ ์ „์ฒด์ ์ธ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ฉ˜ํ† ๋ง์„ ํ†ตํ•ด ๊ฐ๊ด€์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์˜คํ”ˆ์†”๋ฃจ์…˜๊ณผ ์˜คํ”ˆ์†Œ์Šค์˜ ์ฐจ์ด๋ฅผ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ์ •์†Œ์˜
    • ๊ธฐ์กด rest๋ฐฉ์‹์ด ์•„๋‹Œ graphql์„ ์ ์šฉํ•˜๊ธฐ๋กœ ๋ฐ”๋€Œ์–ด์„œ ๊ณต๋ถ€๋ฅผ ํ–ˆ๋‹ค. spring boot์™€ graphql์„ ํ•จ๊ป˜ ์“ฐ๋Š” ์˜ˆ์ œ๋‚˜ ์†Œ์Šค๋“ค์ด ๋งŽ์ด ์—†๊ณ , ์ž‘์„ฑ์ž๋งˆ๋‹ค ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์—‡์„ ์ ์šฉํ•ด์•ผ ํ•˜๋‚˜ ๊ณ ๋ฏผ์ด๋‹ค. ์–ผ๋ฅธ ๊ณต๋ถ€๋ฅผ ์™„๋ฃŒํ•ด์„œ ๋ฌธ์„œ ๊ด€๋ฆฌ(ํŒŒ์ผ๊ด€๋ฆฌ)์™€ ํŒ€ ๊ด€๋ฆฌ๋ฅผ ๋งˆ๋ฌด๋ฆฌ ์ง€์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
    • LiveMD์˜ ํ”Œ๋กœ์šฐ์ฐจํŠธ๋ฅผ ์งœ๋ฉด์„œ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์–ด๋А ์ •๋„ ์™„์„ฑ๋๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ๋ฉ˜ํ† ๋ง์„ ํ•˜๋‹ค ๋ณด๋‹ˆ ํ—ˆ์ ์ด ๋งŽ์ด ๋ฐœ๊ฒฌ๋˜์„œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋‹ค์‹œ ์งœ์•ผ๊ฒ ๋‹ค.
  • ์กฐ์„ฑ์›
    • ์‹ค์‹œ๊ฐ„ ๋ฌธ์„œ ํŽธ์ง‘ ๊ธฐ๋Šฅ์„ aws ec2์— ์˜ฌ๋ ค ํ…Œ์ŠคํŠธํ•ด๋ดค๋‹ค. ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ๊ฐœ๋ฐœํ•ด๋‚˜๊ฐ€๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.
    • 24์ผ ๋ฉ˜ํ† ๋ง ๋•Œ ์ด๋ฒคํŠธ ๋“œ๋ฆฌ๋ธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด์„œ LiveMD์— ๋Œ€ํ•ด ๋””ํ…Œ์ผํ•œ ํ๋ฆ„์ด ๋งŽ์ด ๋ถ€์กฑํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ์ถ”ํ›„์— ํŒ€์›๋“ค๊ณผ ๊ฐ™์ด ์˜๊ฒฌ์„ ๋‚˜๋ˆ ์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ
    • ์‹ค์งˆ์ ์ธ ๊ฐœ๋ฐœ๋ณด๋‹ค๋Š” ์‚ฌ์šฉ ๊ธฐ์ˆ ์„ ์ฐพ๋Š”๋ฐ ์‹œ๊ฐ„์„ ๋งŽ์ด ์จ์„œ ์•„์‰ฌ์› ๋‹ค.
    • ๋งŒ์•ฝ ๊ฐœ๋ฐœ์„ ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋ฌธ์„œ๋กœ ์ •๋ฆฌํ•ด ํŒ€์›๋“ค์—๊ฒŒ ๊ณต์œ ํ•ด์•ผ๊ฒ ๋‹ค.
    • ๋ฉ˜ํ† ๋ง ๋ฐ›์€ ๋Œ€๋กœ ๋กœ์ปฌ์—์„œ๋งŒ ๋Œ๋ฆฌ์ง€ ๋ง๊ณ  ๊ฐœ๋ฐœ์„œ๋ฒ„์— ์˜ฌ๋ ค์„œ ๋ชจ๋‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.

์ž˜ํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ ๊ณ„์†ํ•  ์ผ ๐Ÿ€

  • ๊ณฝ๋ณ‘์„ 

    • ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ์ ์šฉํ•˜๋ ค๊ณ  ํ•œ ์ผ.(ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ์˜คํ”ˆ์†Œ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์†”๋ฃจ์…˜์ด์˜€์Œ ใ… ใ… )
  • ์ด์—ฐ์ฃผ

    • commit convention๊ณผ branch convention์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์œผ๋ ค๊ณ  ์ตœ๋Œ€ํ•œ wiki๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์กฐ์‹ฌํžˆ ์ž‘์—…ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค.
    • jira ์ด์Šˆ๋ฒˆํ˜ธ ์ปค๋ฐ‹๋ฉ”์‹œ์ง€ ์ž๋™์ƒ์„ฑ๋ฐ master push ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ githook์ ์šฉ
  • ์ •์†Œ์˜

    • git์— ๋ธŒ๋žœ์น˜๋ฅผ ํŒŒ์„œ merge์‹œํ‚ค๋Š” ๊ณผ์ •์— ์ต์ˆ™ํ•ด์กŒ๋‹ค.
    • ํ™”๋ฉด์€ ์—†์ง€๋งŒ postman์„ ํ™œ์šฉํ•˜์—ฌ test๋ฅผ ๊ณ„์† ํ•ด๋ณด๋ฉฐ ๊ฒฐ๊ณผ๋ฌผ์„ ํ™•์ธํ–ˆ๋‹ค.
  • ์กฐ์„ฑ์›

    • aws ec2์—๋‹ค nginx์™€ ๋…ธ๋“œ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•ด์„œ ํ˜„์žฌ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ˆˆ์œผ๋กœ ํ…Œ์ŠคํŠธํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    • docker๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ชจ๋“  ํŒ€์›๋“ค์ด ํ•˜๋‚˜์˜ ec2 ์ธ์Šคํ„ด์Šค์—์„œ ๊ฐ์ž ๊ฒฐ๊ณผ๋ฌผ์„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

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

๋” ์ž˜ํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ ์ผ ๐Ÿ˜ฅ

  • ๊ณฝ๋ณ‘์„ 

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

    • workspace ui์—์„œ sidebar effect๋ฅผ ์ปจํŠธ๋กคํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•„์ง ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. useeffect ๋“ฑ hooks๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐํ•ด๋ด์•ผ๊ฒ ๋‹ค.
    • ์ „์ฒด์ ์ธ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๋ฐฉํ–ฅ์„ ์ž˜๋ชป ์žก์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์Šค์Šค๋กœ ์ž๋ฃŒ ์กฐ์‚ฌํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์™ธ๋ถ€ ์†Œ์Šค ์˜์กดํ•˜๋ ค๋Š” ๊ฒฝํ–ฅ์ด ์ง€์†๋˜์—ˆ๋‹ค. ๋ฉ˜ํ† ๋‹˜๊ณผ ๋Œ€ํ™”ํ•˜์—ฌ ๊ฐ์ž ์—ญํ• ๋“ค ๋ถ„๋‹ดํ•˜๊ณ  ๊ฐœ๋ฐœํ•œ ๊ฒƒ์„ aws ec2 ๋˜๋Š” elasitc beanstalk ๋“ฑ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์œผ๋กœ ๋ฐฐํฌํ•˜์—ฌ ๋ชจ๋“  ํŒ€์›์˜ ๊ฐœ๋ฐœ ์ง„๋„๋ฅผ ๋ชจ๋“  ํŒ€์›๋“ค์ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์˜ˆ์ •์ด๋‹ค.
  • ์ •์†Œ์˜

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

    • ๋ฒŒ์จ ์Šคํ”„๋ฆฐํŠธ๋ฅผ 2๋ฒˆ์ด๋‚˜ ๋Œ๋ ธ๋Š”๋ฐ๋„ ์•„์ง๊นŒ์ง€ ์™„์ „ํžˆ ํ”„๋กœ์ ํŠธ์— ๋ชฐ์ž…ํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. 24์ผ ๋ฉ˜ํ† ๋ง์„ ํ†ตํ•ด ์šฐ๋ฆฌ์˜ ํ˜„ ์ฃผ์†Œ๋ฅผ ํŒŒ์•…ํ•˜๊ฒŒ ๋๊ณ  ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ๋” ํˆฌ์žํ•ด์•ผ๊ฒ ๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

    • ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ์ง„๋„๋ฅผ ๋งŽ์ด ๋‚˜๊ฐ€์ง€ ๋ชปํ•ด ํ”„๋กœ์ ํŠธ ์ผ์ •์— ์˜ํ–ฅ์„ ์ฃผ์—ˆ๋‹ค.
    • ํ• ๋‹น๋Ÿ‰์„ ์ฑ„์šฐ์ง€ ๋ชปํ•˜๋ฉด ๋ฐค์„ ์ƒˆ์„œ๋ผ๋„ ์™„์„ฑํ•˜๊ณ  ์กฐ๊ธˆ๋” ๋‚ด ์—ญํ• ์— ์ฑ…์ž„๊ฐ์„ ๊ฐ€์ ธ์•ผ๊ฒ ๋‹ค.

๋‹ค์Œ ์Šคํ”„๋ฆฐํŠธ์— ์ ์šฉํ•  ๊ฒƒ ๐Ÿ“ˆ

  • ๊ฐ์ž aws ec2 ๋งŒ๋“ค์–ด ๋กœ์ปฌ ํ™˜๊ฒฝ์ด ์•„๋‹Œ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ ๊ฐ์ž ๊ฐœ๋ฐœํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ˆˆ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์ž!
  • node.js ๋˜๋Š” spring boot ๋ฐฐํฌ ๋ฐฉ๋ฒ• ์ทจ๋“ํ•˜๊ธฐ
  • ๋กœ๊ทธ์ธ ๋ถ€๋ถ„ express+passport change ์ด๊ฑฐ ๊ฐ์žํ•ด์•ผํ• ๊ฑฐ ์ ๋Š”๊ฑฐ?
  • jira์˜ ํ•˜์œ„ ์ž‘์—… github์™€ ์—ฐ๋™ํ•ด์„œ ์ž‘์—…ํ•˜๊ธฐ

์Šคํ”„๋ฆฐํŠธ ๋ฐฑ๋กœ๊ทธ โœ๏ธ

#1 ๋กœ๊ทธ์ธ ํ•œ ์‚ฌ์šฉ์ž๋Š” ์„ ํƒํ•œ ๋ฌธ์„œ์˜ ์ œ๋ชฉ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

#2 ๋กœ๊ทธ์ธ ํ•œ ์‚ฌ์šฉ์ž๋Š” ํŠน์ • ๋ฌธ์„œ๋ฅผ ์„ ํƒํ•˜์—ฌ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

#3 ๋กœ๊ทธ์ธ ํ•œ ์‚ฌ์šฉ์ž๋Š” ์ „์ฒด ๋ฌธ์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

#4 ๋กœ๊ทธ์ธ ํ•œ ์‚ฌ์šฉ์ž๋Š” ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

#5 ๋กœ๊ทธ์ธ ํ•œ ์‚ฌ์šฉ์ž๋Š” ํŠน์ • ๋ฌธ์„œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

#6 ์‚ฌ์šฉ์ž๋Š” ํŒ€์›๋“ค๊ณผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋งˆํฌ๋‹ค์šด ๋ฌธ์„œ๋ฅผ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Assignee: ์กฐ์„ฑ์› @JSWww
  • Status: 50%

#7 ์‚ฌ์šฉ์ž๋Š” ์ฐธ์—ฌ์ž๋“ค๊ณผ ์ฑ„ํŒ…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Assignee: ํ•˜ํƒœ๋ฆฐ, ๊ณฝ๋ณ‘์„  @hataerin, @kwak-bs
  • Status: 60%

#8 ์‚ฌ์šฉ์ž๋Š” ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

  • Assignee: ์ด์—ฐ์ฃผ
  • status: 40%

#9 ์‚ฌ์šฉ์ž๋Š” ์ฐธ์—ฌ์ž๋“ค๊ณผ ํ™”์ƒํšŒ์˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Assignee: ํ•˜ํƒœ๋ฆฐ, ๊ณฝ๋ณ‘์„  @hataerin, @kwak-bs
  • Status: 0%

3์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ์˜ ๋กœ๊ทธ

์Šคํ”„๋ฆฐํŠธ ๋ชฉํ‘œ ๐Ÿˆ

  • ์‹ค์‹œ๊ฐ„ ์˜์‚ฌ์†Œํ†ต

    • FE : video์™€ chat client ๋ถ€๋ถ„ ํ•œ ํŽ˜์ด์ง€์— ๊ตฌํ˜„
    • BE : nginx์—์„œ https ํ†ต์‹  ๊ตฌํ˜„, api์ž‘์„ฑํ•˜๊ธฐ
    • ๊ณตํ†ต : ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ๋ณด๋‹ค ์ƒ๋Œ€๋ฐฉ๊ณผ์˜ ์†Œํ†ต์„ ์šฐ์„ ์œผ๋กœ ๊ธฐ๋Šฅ ๊ตฌํ˜„(https)
  • ๊ณต๋™ ๋ฌธ์„œ ํŽธ์ง‘

    • DB ์—ฐ๋™ํ•˜์—ฌ ๋ฌธ์„œ ๋‚ด์šฉ ์ €์žฅ ๋ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    • room ๋ณ„๋กœ ๋ฌธ์„œ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ
  • ๋ฌธ์„œ ๊ด€๋ฆฌ

    • api ์„ค๊ณ„๋Œ€๋กœ ์™„์„ฑํ•˜๊ธฐ(pagination, sorting, searching ๊ธฐ๋Šฅ๊นŒ์ง€)
    • ํŒŒ์ผ export ๊ธฐ๋Šฅ ๊ณต๋ถ€ ๋ฐ ์˜ˆ์ œ ๋ถ„์„
    • JWT์— ๋Œ€ํ•œ ๊ณต๋ถ€ ๋ฐ secret key๋กœ ์ธ์ฆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ
  • ํŒ€ ๋ฐ ํŒ€์› ๊ด€๋ฆฌ

    • ์ด๋ฉ”์ผ๋กœ ์ธ์ฆํ•ด์„œ ํŒ€์— ํŒ€์›์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ๊ฑฐ ํ™•์ธ
  • ์ธ์ฆ ๋ฐ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ

    • oauth2, jwt ๊ฐ ์˜ˆ์ œ๋ถ„์„์„ ํ†ตํ•ด ๊ฐœ๋ฐœ ์‹œ์ž‘

์Šคํ”„๋ฆฐํŠธ ๋‹จ์œ„ ๐Ÿ—“

  • 6์ผ

์Šคํฌ๋Ÿผ ๋งˆ์Šคํ„ฐ ๐Ÿ‘จโ€๐Ÿ”ง

ํšŒ์˜ ๋‚ด์šฉ ๐Ÿ’ฌ

  • ์ฃผ์ฐจ๋ณ„๋กœ ์ „์ฒด์ ์ธ ์ผ์ •์„ ๊ณ„ํšํ•˜์˜€๋‹ค.

    • 11/2 ~ 11/14(์ค‘๊ฐ„๋ฐœํ‘œ ์ „): ๊ฐ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์— ์ง‘์ค‘
    • 11/16 ~ 12/4(์ตœ์ข… ๋ฐœํ‘œ๊นŒ์ง€): view & k8s ๊ตฌํ˜„ ๋ฐ ์ ์šฉ
  • ๊ทธ๋ผ์šด๋“œ ๋ฃฐ ํšŒ์˜

    • Scrum ์ง€๊ฐ ์‹œ ๋ฒŒ๊ธˆ 2๋งŒ์›(2020.11.01 ์ง€๊ฐ์ž ๊ณฝ๋ณ‘์„  ใ…œใ…œ)
    • Scrum ์‹œ๊ฐ„ : ์˜ค์ „ 10์‹œ (์ง€๊ฐ๋น„ 2๋งŒ์›)
    • wrap-up ์‹œ๊ฐ„: ์ˆ˜์—… ๋๋‚˜๊ธฐ ์ „ 30๋ถ„
    • ๊ธˆ์š”์ผ ์˜คํ”„๋ผ์ธ ๋ฏธํŒ… ๊ณ ์ •


3์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ  ๋กœ๊ทธ

์ฃผ๊ฐ„ ํšŒ๊ณ  ๋‚ด์šฉ ๐Ÿ’ฌ

  • ๊ณฝ๋ณ‘์„ 

    • WebRTC ๊ณ ๋ คํ•ด์•ผ ๋  ์ƒํ™ฉ
      • https๋ฅผ ๋ถ™์—ฌ์„œ ํƒ€์ธ์˜ ์–ผ๊ตด์ด ๋ณด์ผ๊ฒƒ(SSL ํ™œ์šฉ)
      • ๋™์˜์ƒ ์„ธ์…˜ ์œ ์ง€ (์•„๋งˆ ์›น ๋ธŒ๋ผ์šฐ์ € ๊บผ์ง€์ง€ ์•Š๋Š” ์ด์ƒ ์œ ์ง€๋˜๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋ฐฉ์‹ฌํ•˜๋ฉด ์•ˆ๋Œ. ์•Œ์•„๋ณด์ž)
      • FE์ชฝ์€ ์ฑ„ํŒ…๊ณผ webRTC ํ•œ ํŽ˜์ด์ง€ ์•ˆ์— ๋‚˜ํƒ€๋‚ผ ๊ฒƒ
      • proxy ์—ฌ๋Ÿฌ ๊ฐœ ์ ์šฉ๋ฒ• ์•Œ์•„๋‚ด๊ธฐ
    • ์Šฌ์Šฌ ์žฌ๋ฏธ๊ฐ€ ๋ถ™๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.
  • ์ด์—ฐ์ฃผ

    • workspace ui๋ถ€๋ถ„์„ ๋งก์•„์„œ ์„œ๋ฒ„๊ฐœ๋ฐœ์„ ๋งก๊ฒŒ๋˜์„œ ์ •์‹ ์ด ์—†์—ˆ๋‹ค.
    • client์—์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด store๋ฅผ ๋‘๋Š”๋ฐ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งก์€ ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•œ ํ›„ ์„ ํƒ์ ์œผ๋กœ ์ ์šฉํ•ด๋ณด์•„์•ผ๊ฒ ๋‹ค.
      • useReducer() hooks
      • mobx store
      • mobx state tree
    • api ๋ฌธ์„œํˆด๋กœ gitbook์„ ์ œ์•ˆํ•˜์—ฌ ์†Œ์˜์ด์™€ ๋ฌธ์„œ๊ด€๋ฆฌ, ํŒ€๊ด€๋ฆฌ, ๋ฉค๋ฒ„๊ด€๋ฆฌ api๋ฅผ ์ •๋ฆฌํ–ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๋Š”๋ฐrest api ์ปจ๋ฒค์…˜์— ๋”ฐ๋ผ ์„ค๊ณ„ํ•˜๋Š”๊ฒŒ ์–ด๋ ค์› ๋‹ค.
    • ํŒ€์›์ดˆ๋Œ€์‹œ email์ธ์ฆ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด์„œ ๊ณ ๋ฏผํ•˜์˜€๋‹ค.
    • dotenv ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ .envํŒŒ์ผ์„ ๋‘์–ด db, aws ๊ด€๋ จ ์ •๋ณด์— ๋Œ€ํ•œ ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    • ์‚ฌ์šฉ์ž ํ”„๋กœํ•„, ํŒ€ํ”„๋กœํ•„ ์‚ฌ์ง„ ์ €์žฅ์„ ์œ„ํ•ด ์–ด๋–ค์‹์œผ๋กœ ํŠน์ •ํด๋”์— ์—…๋กœ๋“œํ•˜๋Š”์ง€, aws s3์— ์—…๋กœ๋“œํ•˜๋Š”์ง€ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.
    • ์Šคํ”„๋งํด๋ผ์šฐ๋“œ์—์„œ eureka๋ผ๋Š” ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ msa๋ฅผ ์œ„ํ•ด service directory๋กœ ์„œ๋น„์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ  circuit์œผ๋กœ ์ด ์žˆ๋‹ค๋Š” ์ ์ด ์žฌ๋ฐŒ์—ˆ๋‹ค. k8s์—์„œ ์ด๋Ÿฐ ๋ถ€๋ถ„์„ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ํŒ€์›๋“ค๊ณผ ๋…ผ์˜ํ•˜์—ฌ ์ถ”ํ›„์— ์ ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
  • ์ •์†Œ์˜

    • api ์„ค๊ณ„์˜ ์ค‘์š”์„ฑ์„ ์•Œ์•˜๋‹ค. ๋˜ํ•œ ๋ฐ”๋žŒ์งํ•œ api์„ค๊ณ„์— ๋Œ€ํ•ด ์ฐพ์•„๋ณด์•˜๋‹ค.
    • request๋ฅผ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์˜ ํ˜•์‹์ ์ธ ์ฐจ์ด์™€ ๋ฌด์—‡์ด bp์ธ์ง€๋ฅผ ๊ณ ๋ฏผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    • msa๋กœ ์„ค๊ณ„์‹œ db๊ฐ„์˜ ์ฐธ์กฐ๊ด€๊ณ„๋ฅผ ๊ฐ–์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์ด ์‹ ๊ธฐํ•˜์˜€๋‹ค. ๊ตฌํ˜„์„ ํ•˜๋ฉด์„œ ๋” ์•Œ์•„๊ฐ€๋ณด๊ธธ ๊ธฐ๋Œ€ํ•œ๋‹ค.
  • ์กฐ์„ฑ์›

    • ๋งˆํฌ๋‹ค์šด preview ๊ธฐ๋Šฅ์„ ๋‹จ์ˆœํžˆ marked๋ผ๋Š” ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋  ์ค„ ์•Œ์•˜๋Š”๋ฐ ๋งˆํฌ๋‹ค์šด์˜ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ–ˆ์—ˆ๊ณ  ๋”ฐ๋กœ ์‚ด์„ ๋ถ™์—ฌ์•ผ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.
    • y-websocket ์—์„œ room ๋ณ„๋กœ ์‚ฌ์šฉ์ž๋“ค๋ผ๋ฆฌ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋Š”๋ฐ ์ด room ๊ธฐ๋Šฅ์„ LiveMD์˜ ๋ฌธ์„œ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์„์ง€ ์ฒดํฌํ•ด์•ผ ํ•œ๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

    • ssl์ธ์ฆ์„œ๋ฅผ ๋‹ฌ๋ฉด์„œ nginx์˜ config์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ–ˆ๋‹ค. ํ•˜๋‚˜๋กœ๋งŒ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋‚˜ 2๊ฐœ ์ด์ƒ์˜ https๊ฐ„์˜ ํ†ต์‹  ๊ตฌํ˜„์— ๋Œ€ํ•ด์„œ๋Š” ๋” ์•Œ์•„๋ด์•ผ๊ฒ ๋‹ค.
    • ์ฑ„ํŒ…, ๋น„๋””์˜ค ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก api๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋” ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.
    • ์–ผ๋ฅธ ์‹ค์‹œ๊ฐ„ ํ†ต์‹  ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋ฌธ์„œ์ชฝ์œผ๋กœ ๋„˜์–ด๊ฐ€์„œ ๊ฐœ๋ฐœํ•ด์•ผ๊ฒ ๋‹ค.

์ž˜ํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ ๊ณ„์†ํ•  ์ผ ๐Ÿ€

  • ๊ณฝ๋ณ‘์„ 

    • ์˜คํ”ˆ ์†Œ์Šค๊ธด ํ•˜์ง€๋งŒ ์ด๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ WebRTC์™€ React๋ฅผ ํ•จ๊ป˜ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ตœ๋Œ€ํ•œ ๋‚˜์—๊ฒŒ ๋„์›€์ด ๋˜๊ณ  ํŒ€์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋„๋ก WebRTC์™€ React๋Š” ํ™•์‹คํžˆ ๊ธฐ๋ฐ˜์„ ๊ณ„์†ํ•ด์„œ ๋‹ค์ ธ๋‚˜๊ฐ€์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.
  • ์ด์—ฐ์ฃผ

    • api ๋ฌธ์„œ์— ๋”ฐ๋ผ ํŒ€๊ด€๋ฆฌ api์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.
    • email์„ ์ด์šฉํ•ด ๋ฉค๋ฒ„์ดˆ๋Œ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ ๋ฏผํ•˜์—ฌ ๋กœ์ง์„ ๊ตฌ์„ฑํ•˜๋ ค๊ณ  ํ•˜๊ณ  ์žˆ๋‹ค. async await์„ ํ™œ์šฉํ•˜์—ฌ nonblocked programmingํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฐ•ํ›ˆ๊ธฐ๋ฉ˜ํ† ๋‹˜์˜ ์กฐ์–ธ์— ๋”ฐ๋ผ ๊ตฌํ˜„ํ•ด์•ผ๊ฒ ๋‹ค.
  • ์ •์†Œ์˜

    • git book์„ ํ™œ์šฉํ•˜์—ฌ api์„ค๊ณ„๋„ ํ•˜๊ณ  ๊ธฐ๋ก์„ ๋‚จ๊ธด ๊ฒƒ์ฒ˜๋Ÿผ, ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•  ๋•Œ ํˆด์„ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์ ์ด๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์ž.
  • ์กฐ์„ฑ์›

    • yjs ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์ ์  ์ดํ•ดํ•ด ๊ฐ€๋Š” ์ ์ด ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค. yjs๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์‚ด์„ ๋ถ™์ด๋Š” ๊ฒƒ์ด ๊ด€๊ฑด์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

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

๋” ์ž˜ํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ ์ผ ๐Ÿ˜ฅ

  • ๊ณฝ๋ณ‘์„ 

    • webRTC์™€ socket.io์— ๋Œ€ํ•œ ์ „์ฒด์ ์ธ ์ดํ•ด๊ฐ€ ์•„์ง๊นŒ์ง€ ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐœ๋ฐœ์„ ํšจ์œจ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ  ํŒ€์›๋“ค์—๊ฒŒ๋„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๋ถ€๋ฅผ ๋” ํ•ด์•ผ๋  ํ•„์š”์„ฑ์„ ๋А๊ผˆ๋‹ค.
  • ์ด์—ฐ์ฃผ

    • oauth2์™€ jwt๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ธ์ฆ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•ด์„œ ์‚ฌ์šฉ์ž์ชฝ ์„œ๋น„์Šค๋ฅผ ์•„์ง ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ธ์ฆ์„œ๋น„์Šค์™€ ์œ ์ €์„œ๋น„์Šค๋ฅผ ๋ถ„๋ฆฌํ–ˆ์„๋•Œ oauth2 ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ์‚ฌ์šฉ์ž์ •๋ณด๋ฅผ ์–ด๋–ค์‹์œผ๋กœ ์œ ์ €์„œ๋น„์Šค์— ์ „๋‹ฌํ•˜์—ฌ ์ €์žฅํ•  ๊ฒƒ์ธ์ง€ ๊ณ ๋ฏผํ•ด๋ณด์•„์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.
  • ์ •์†Œ์˜

    • ์‹œ๊ฐ„์ด ๋œ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋Š” ์ผ์„ ๋ฃจ์ฆˆํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๋ฉฐ ์†๋„๋‚ด์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ ํ•ด์•ผํ•  ์ผ์„ ๋งค์ผ ์ •๋ฆฌํ•˜๊ณ , jira์—์„œ task๋ฅผ ์™„๋ฃŒ์ƒํƒœ๋กœ ์˜ฎ๊ธฐ๋Š” ์ฆ๊ฑฐ์›€์„ ๋А๋ผ์ž!
    • git์„ ๋น„๋กฏํ•œ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์— ๋Œ€ํ•ด ๋ง‰ํžˆ๋Š” ๋ถ€๋ถ„์„ ์Šค์Šค๋กœ ๊ตฌ๊ธ€๋งํ•˜๋ฉฐ ํ—ค์ณ๋‚˜๊ฐ€๋ณด์ž!
  • ์กฐ์„ฑ์›

    • ๋ˆˆ์œผ๋กœ ๋ณด์ด๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์ข€ ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๋ญ๋ผ๋„ ์ง„ํ–‰์„ ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋А๋ผ๋Š” ์ค‘์ด๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

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

๋‹ค์Œ ์Šคํ”„๋ฆฐํŠธ์— ์ ์šฉํ•  ๊ฒƒ ๐Ÿ“ˆ

  • ๊ทธ๋ผ์šด๋“œ ๋ฃฐ ์ ์šฉํ•˜๊ธฐ

4์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ์˜ ๋กœ๊ทธ

์Šคํ”„๋ฆฐํŠธ ๋ชฉํ‘œ ๐Ÿˆ

  • ์‹ค์‹œ๊ฐ„ ์˜์‚ฌ์†Œํ†ต

    • FE : WebRTC ๋ถ€๋ถ„ View ํ‹€์žก๊ธฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋‚˜๊ฐ”์„ ๋•Œ black screen ๋ฌธ์ œ ํ•ด๊ฒฐ.(๊ณฝ๋ณ‘์„ )
    • BE : nginx์—์„œ https ํ†ต์‹  ๊ตฌํ˜„, api์ž‘์„ฑํ•˜๊ธฐ
    • ๊ณตํ†ต : WebRTC, Chat๊ณผ ํ•ฉ์น˜๊ธฐ(๊ณฝ๋ณ‘์„ )
  • ๊ณต๋™ ๋ฌธ์„œ ํŽธ์ง‘

    • webRTC, chat๊ณผ ํ•ฉ์น˜๊ธฐ
  • ๋ฌธ์„œ ๊ด€๋ฆฌ

    • ํŒ€๊ณผ ํ•ฉ์น˜๊ธฐ
    • JWT์— ๋Œ€ํ•œ ๊ณต๋ถ€ ๋ฐ secret key๋กœ ์ธ์ฆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ
  • ํŒ€ ๋ฐ ํŒ€์› ๊ด€๋ฆฌ

    • ec2 ์˜ฌ๋ฆฌ๊ธฐ
    • client์— ํ•ฉ์น˜๊ธฐ
  • ์ธ์ฆ ๋ฐ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ

    • google ๋กœ๊ทธ์ธ ๊ตฌํ˜„
    • jwt ์ €์žฅ ํ›„ client์—๊ฒŒ cookie๋กœ ์ „์†ก
  • ์›Œํฌ์ŠคํŽ˜์ด์Šค

  • ๋ฌธ์„œ api ํ•ฉ์น˜๊ธฐ

  • ํŒ€ api ํ•ฉ์น˜๊ธฐ

  • ์ค‘๊ฐ„๋ฐœํ‘œ ์ค€๋น„(๊ณฝ๋ณ‘์„ )

์Šคํ”„๋ฆฐํŠธ ๋‹จ์œ„ ๐Ÿ—“

  • 6์ผ

์Šคํฌ๋Ÿผ ๋งˆ์Šคํ„ฐ ๐Ÿ‘จโ€๐Ÿ”ง

ํšŒ์˜ ๋‚ด์šฉ ๐Ÿ’ฌ

  • todo๋ฅผ ์ „๋ฐ˜์ ์œผ๋กœ ์ญˆ์šฑ ์ž‘์„ฑํ•˜์˜€๊ณ , todo๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฃผ์ฐจ๋ณ„๋กœ ๊ณ„ํšํ•˜์—ฌ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.(WBS ์—…๋ฐ์ดํŠธ ์™„๋ฃŒ)


4์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ  ๋กœ๊ทธ

์ฃผ๊ฐ„ ํšŒ๊ณ  ๋‚ด์šฉ ๐Ÿ’ฌ

  • ๊ณฝ๋ณ‘์„ 

    • WebRTC ์ž˜ํ•œ๊ฒƒ

      • Video on/off ๋ฒ„ํŠผ ๊ธฐ๋Šฅ ์™„์„ฑ
      • MIC on/off ๋ฒ„ํŠผ ๊ธฐ๋Šฅ ์™„์„ฑ
      • Chat๊ณผ WebRTC client ๋ถ€๋ถ„ merge
      • develop์— merge
    • ๋ณด์ถฉํ•  ๊ฒƒ + ์•„์‰ฌ์šด ๊ฒƒ

      • View ๊ตฌํ˜„ํ•˜๊ธฐ (CSS)
      • ์‚ฌ์šฉ์ž๊ฐ€ ๋‚˜๊ฐ”์„ ๋•Œ black screen ์œ ์ง€๋˜๋Š” ํ˜„์ƒ ์ œ๊ฑฐํ•˜๊ธฐ.
  • ์ด์—ฐ์ฃผ node.js + express๋กœ ํ•™๊ต ์›น์‹œ์Šคํ…œ์„ค๊ณ„ ๋•Œ ์ž ์‹œํ–ˆ๋˜ ๊ฒฝํ—˜์„ ์‚ด๋ ค ํŒ€๊ด€๋ฆฌ, ์ธ์ฆ์„œ๋น„์Šค ๊ฐœ๋ฐœ์— ๋„์ „ํ•ด๋ณด์•˜๋‹ค.

    • ์ž˜ํ•œ ์ 

      • express-team ํด๋” ๊ตฌ์กฐํ™” (routes/controller/middleware/service/models/utils) spring boot์ฒ˜๋Ÿผ ํŠน์ • ํŒจํ„ด์— ๋”ฐ๋ผ ํŠน์ • ์‚ฌ์šฉ์„ฑ์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊น”๋”ํ•˜๊ฒŒ ์ž‘์„ฑํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์˜ github๋ฅผ ํƒ๋ฐฉํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
      • express-validator ์ ์šฉ controller์— ์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— request ํ˜•์‹์ด ์˜ณ์€์ง€ ๋ฏธ๋ฆฌ ์ฒดํฌํ•  ์ˆ˜ ์žˆ์„๊นŒ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. schema์— ๋Œ€ํ•ด ์ฒดํฌํ•˜๋Š” joi ํ•จ์ˆ˜๋„ ์žˆ๋˜ ๋ฐ ์‹œ๊ฐ„๋˜๋ฉด ์ ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
      • wiki์— architecture ๊ณผ์ • ๊ธฐ๋ก ์ดˆ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ œ์•ˆํ–ˆ๋˜ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด์„œ ์™œ ๋‚ด๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ์ง„ํ–‰ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•ด์„œ ๋ณต๊ธฐํ•˜๊ณ  ์ž‘์„ฑํ–ˆ๋‹ค.
    • ์•„์‰ฌ์šด ์ 

      • express ๊ฐœ๋ฐœ์— ์•„์ง ์ต์ˆ™์ง€ ์•Š์•„ ํŠน์ •์ƒํ™ฉ์— ํ•„์š”ํ•œ ๋ชจ๋“ˆ(์˜ˆ๋ฅผ ๋“ค๋ฉด body-parser)์„ ์ฐพ์•„ ์“ฐ์ง€ ๋ชปํ•ด ๊ฒ€์ƒ‰ํ•˜๋А๋ผ ์‹œ๊ฐ„์ด ๋Šฆ์–ด์กŒ๋‹ค.
      • google plus๋ฅผ ๋” ์ด์ƒ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ์— google ๋กœ๊ทธ์ธ ๋ฐ jwt ๋ฐœ๊ธ‰ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ–ˆ์ง€๋งŒ ์™„์„ฑํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
  • ์ •์†Œ์˜

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

    • ๋ณ‘์„ ์ดํ˜•๊ณผ ์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด์„œ webRTC์˜ ๋งˆ์ดํฌ, ๋น„๋””์˜ค on/off๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.
    • yjs๋ฅผ ์ด์šฉํ•œ ํ”Œ์ ์„ ์‚ดํŽด๋ดค๋Š”๋ฐ cattaz ๋ผ๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•ด๋†“์•„์„œ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ ๋ฐ ์ ์šฉํ•˜๊ณ  ์žˆ๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

    • ec2์—์„œ https๊ฐ„ ํ†ต์‹  ๊ตฌํ˜„์— ์„ฑ๊ณตํ–ˆ๋‹ค. ์—„์ฒญ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์˜€๋Š”๋ฐ ๋‚ด๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ec2์—์„œ๋งŒ ํฌํŠธ๋ฅผ ์—ด์–ด์ฃผ๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ nginx์—์„œ๋„ ํฌํŠธ๋ฅผ ์—ด์–ด์ค˜์•ผํ–ˆ๋‹ค.
    • ๋‚ด๊ฐ€ ๋งก์€ ๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ๊ตฌํ˜„ ๋ฐ ํ†ต์‹ ์€ ์ด์ œ ์™„์ „ํžˆ ๋๋‚ฌ๋‹ค. ์–ผ๋ฅธ ๋ฐฐํฌ๋ฅผ ๋งก์•„ ๋„์ปค์™€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊นŒ์ง€ ๋งˆ๋ฌด๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค.

์ž˜ํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ ๊ณ„์†ํ•  ์ผ ๐Ÿ€

  • ๊ณฝ๋ณ‘์„ 

    • WebRTC ๋ถ€๋ถ„์ด ๊ฑฐ์˜ ์™„์„ฑ ์ง์ „์ด๊ธด ํ•˜์ง€๋งŒ ๋ฐฉ์‹ฌํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ์–ธ์ œ ์–ด๋””์„œ ๋””๋ฒ„๊น…์„ ํ•ด์•ผํ•  ์ง€ ๋ชจ๋ฅธ๋‹ค. ๊ทธ๋ž˜๋„ ๊ธ์ •์ ์ธ ๋งˆ์ธ๋“œ๋กœ, ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ ์ง„ํ–‰ํ•ด์•ผํ•œ๋‹ค.
  • ์ด์—ฐ์ฃผ

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

    • ํƒ€์ธ์—๊ฒŒ ์งˆ๋ฌธํ•˜๊ธฐ ์ „์— ์Šค์Šค๋กœ ์•Œ์•„๋ณด๋ฉฐ ๋ฐฐ์›Œ๊ฐ€๋‹ˆ ์ถ”ํ›„ ์งˆ๋ฌธํ•  ๋•Œ๋„ ์–ป๋Š” ๊ฒƒ์ด ๋งŽ์•˜๋‹ค. ์•ž์œผ๋กœ ์—ฌ๋Ÿฌ ์ž๋ฃŒ๋ฅผ ๋ณด๋Š”๋ฐ ๋‘๋ ค์›Œํ•˜์ง€๋ง์ž.
  • ์กฐ์„ฑ์›

    • cattaz์˜ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํ•จ์ˆ˜ํ˜•์œผ๋กœ ๋ฐ”๊ฟ”๊ฐ€๋ฉฐ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๊ณ ์žˆ๋‹ค. ์กฐ๊ธˆ๋งŒ ์‹œ๊ฐ„ํˆฌ์ž๋ฅผ ํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

    • ํ˜ผ์ž ๋งŽ์ด ์‚ฝ์งˆํ•ด๋ณธ ๊ฒฝํ—˜์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค. ๋•๋ถ„์— ์„ค๋ช…์„ ๋“ค์–ด๋„ ๋ฐ”๋กœ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    • ec2 - docker - k8s - CI์ž๋™ํ™” ์ด๋ ‡๊ฒŒ ์ฐจ๊ทผ์ฐจ๊ทผ ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ๋งˆ์Œ๋จน์—ˆ๋˜ ๋ถ€๋ถ„์ด ์ž˜ํ•œ๊ฒƒ ๊ฐ™๋‹ค. ๋งŒ์•ฝ์— ์ค‘๊ฐ„์— ๋ง‰ํžˆ๋ฉด ๋˜๋Œ์•„๊ฐˆ ๋‹จ๊ณ„๋ฅผ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐŸ์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋” ์ž˜ํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ ์ผ ๐Ÿ˜ฅ

  • ๊ณฝ๋ณ‘์„ 

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

    • google plus๋ฅผ ์ง€์›์•ˆํ•œ๋‹ค๋Š” ๊ฑธ ์ด๋ฒˆ์ฃผ ๊ฑฐ์˜ ๋์— ๋Šฆ๊ฒŒ ์•Œ์•˜๋‹ค. ๋Œ€์ฒด๋œ ๋ชจ๋“ˆ๋กœ ๋นจ๋ฆฌ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.
    • javascript ๊ธฐ์ดˆ ์ง€์‹์„ ๋” ํƒ„ํƒ„ํžˆ ํ•ด์„œ ๊ฐœ๋ฐœํ•  ๋•Œ ์ฐพ์•„๋ณด๋Š” ์ผ์„ ๋” ์ค„์—ฌ์•ผ ๊ฒ ๋‹ค.
    • ์š”์ฆ˜ ๋“ค์–ด ์ฒด๋ ฅ์ด ๋ฐฉ์ „๋๋Š”์ง€ ๋Šฆ๊ฒŒ ์ผ์–ด๋‚˜๊ฒŒ ๋œ๋‹ค. ์‹œ๊ฐ„์„ ๋” ์†Œ์ค‘ํžˆ ์—ฌ๊ฒจ์•ผ๊ฒ ๋‹ค.
  • ์ •์†Œ์˜

    • ์ž๋ฃŒ๋งŒ ๋งŽ์ด ์ฐพ์•„๋†“๊ณ  ๊ทธ ์ž๋ฃŒ๋ฅผ ์†Œํ™”ํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ ธ๋‹ค. ๋”์šฑ ์„ฑ์‹คํ•ด์ง€์ž.
    • ๊ธฐ๋Šฅ์„ ๋ถ™์ผ ์ˆ˜๋ก ๋ญ”๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์ข€ ์ง€์ €๋ถ„ํ•ด๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™์•„ ์•„์‰ฝ๋‹ค. ์ผ๋‹จ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด ๋†“๊ณ  ๋‚˜์ค‘์— refactoring์„ ๊ผญ ํ•ด์•ผ๊ฒ ๋‹ค.
  • ์กฐ์„ฑ์›

    • yjs ๊ด€๋ จํ•ด์„œ yjs๋ฅผ ์‚ฌ์šฉํ•œ ํ”„๋กœ์ ํŠธ๋“ค์ด ์–ด๋–ป๊ฒŒ yjs๋ฅผ ์ด์šฉํ–ˆ๋Š”์ง€ ์ผ์ฐ ์ฐพ์•„๋ดค์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์ด ๋ถ€๋ถ„์ด ์ข€ ์•„์‰ฝ๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

    • ํ•œ์ฐธ ํ—ค๋ฉจ๋˜ ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ์‹ค nginx์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•ด์„œ ์ƒ๊ธด ๊ฒฐ๊ณผ์˜€๋‹ค. ์›๋ž˜ ํ•˜๊ณ ์žˆ๋˜ nginx ๋ฒˆ์—ญ์„ ๋งˆ์ณ์„œ ํ•œ์ธต ๋” ๋†’์•„์ง„ ์ดํ•ด๋„๋กœ ํ”„๋กœ์ ํŠธ์— ์ ‘๊ทผํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

๋‹ค์Œ ์Šคํ”„๋ฆฐํŠธ์— ์ ์šฉํ•  ๊ฒƒ ๐Ÿ“ˆ

  • WBS์™€ jira ๋งž์ถฐ ์—…๋ฐ์ดํŠธ ํ•  ๊ฒƒ

5์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ์˜ ๋กœ๊ทธ

์Šคํ”„๋ฆฐํŠธ ๋ชฉํ‘œ ๐Ÿˆ

  • ์‹ค์‹œ๊ฐ„ ์˜์‚ฌ์†Œํ†ต

    • FE : WebRTC ๋ถ€๋ถ„ View ํ‹€์žก๊ธฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋‚˜๊ฐ”์„ ๋•Œ black screen ๋ฌธ์ œ ํ•ด๊ฒฐ.(๊ณฝ๋ณ‘์„ )
    • BE : nginx์—์„œ https ํ†ต์‹  ๊ตฌํ˜„, api์ž‘์„ฑํ•˜๊ธฐ
    • ๊ณตํ†ต : WebRTC, Chat๊ณผ ํ•ฉ์น˜๊ธฐ(๊ณฝ๋ณ‘์„ )
  • ๊ณต๋™ ๋ฌธ์„œ ํŽธ์ง‘

    • webRTC, chat๊ณผ ํ•ฉ์น˜๊ธฐ
  • ๋ฌธ์„œ ๊ด€๋ฆฌ

    • ํŒ€๊ณผ ํ•ฉ์น˜๊ธฐ
    • JWT์— ๋Œ€ํ•œ ๊ณต๋ถ€ ๋ฐ secret key๋กœ ์ธ์ฆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ
  • ํŒ€ ๋ฐ ํŒ€์› ๊ด€๋ฆฌ

    • ec2 ์˜ฌ๋ฆฌ๊ธฐ
    • client์— ํ•ฉ์น˜๊ธฐ
  • ์ธ์ฆ ๋ฐ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ

    • google ๋กœ๊ทธ์ธ ๊ตฌํ˜„
    • jwt ์ €์žฅ ํ›„ client์—๊ฒŒ cookie๋กœ ์ „์†ก
  • ์›Œํฌ์ŠคํŽ˜์ด์Šค

  • ๋ฌธ์„œ api ํ•ฉ์น˜๊ธฐ

  • ํŒ€ api ํ•ฉ์น˜๊ธฐ

  • MSA

    • ec2๊ฐ„ ํ†ต์‹  ๋ฐ ์Šค์ผ€์ผ๋ง ์ ์šฉํ•˜๊ธฐ
    • DB๋ถ„๋ฆฌ ๋ฐ EBS์—ฐ๊ฒฐํ•˜๊ธฐ
    • docker, docker compose ์ ์šฉํ•˜๊ธฐ
    • ํ…Œ์ŠคํŒ… ๊ณต๋ถ€ํ•˜๊ธฐ
  • ์ค‘๊ฐ„๋ฐœํ‘œ ์ค€๋น„(๊ณฝ๋ณ‘์„ )

์Šคํ”„๋ฆฐํŠธ ๋‹จ์œ„ ๐Ÿ—“

  • 6์ผ

์Šคํฌ๋Ÿผ ๋งˆ์Šคํ„ฐ ๐Ÿ‘จโ€๐Ÿ”ง

ํšŒ์˜ ๋‚ด์šฉ ๐Ÿ’ฌ

  • todo๋ฅผ ์ „๋ฐ˜์ ์œผ๋กœ ์ญˆ์šฑ ์ž‘์„ฑํ•˜์˜€๊ณ , todo๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฃผ์ฐจ๋ณ„๋กœ ๊ณ„ํšํ•˜์—ฌ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.(WBS ์—…๋ฐ์ดํŠธ ์™„๋ฃŒ)


5์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ  ๋กœ๊ทธ

์ฃผ๊ฐ„ ํšŒ๊ณ  ๋‚ด์šฉ ๐Ÿ’ฌ

  • ๊ณฝ๋ณ‘์„ 

    • WebRTC ์ž˜ํ•œ๊ฒƒ

      • Video on/off ๋ฒ„ํŠผ ๊ธฐ๋Šฅ ์™„์„ฑ
      • MIC on/off ๋ฒ„ํŠผ ๊ธฐ๋Šฅ ์™„์„ฑ
      • Chat๊ณผ WebRTC client ๋ถ€๋ถ„ merge
      • develop์— merge
    • ๋ณด์ถฉํ•  ๊ฒƒ + ์•„์‰ฌ์šด ๊ฒƒ

      • View ๊ตฌํ˜„ํ•˜๊ธฐ (CSS)
      • ์‚ฌ์šฉ์ž๊ฐ€ ๋‚˜๊ฐ”์„ ๋•Œ black screen ์œ ์ง€๋˜๋Š” ํ˜„์ƒ ์ œ๊ฑฐํ•˜๊ธฐ.
  • ์ด์—ฐ์ฃผ node.js + express๋กœ ํ•™๊ต ์›น์‹œ์Šคํ…œ์„ค๊ณ„ ๋•Œ ์ž ์‹œํ–ˆ๋˜ ๊ฒฝํ—˜์„ ์‚ด๋ ค ํŒ€๊ด€๋ฆฌ, ์ธ์ฆ์„œ๋น„์Šค ๊ฐœ๋ฐœ์— ๋„์ „ํ•ด๋ณด์•˜๋‹ค.

    • ์ž˜ํ•œ ์ 

      • express-team ํด๋” ๊ตฌ์กฐํ™” (routes/controller/middleware/service/models/utils) spring boot์ฒ˜๋Ÿผ ํŠน์ • ํŒจํ„ด์— ๋”ฐ๋ผ ํŠน์ • ์‚ฌ์šฉ์„ฑ์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊น”๋”ํ•˜๊ฒŒ ์ž‘์„ฑํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์˜ github๋ฅผ ํƒ๋ฐฉํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
      • express-validator ์ ์šฉ controller์— ์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— request ํ˜•์‹์ด ์˜ณ์€์ง€ ๋ฏธ๋ฆฌ ์ฒดํฌํ•  ์ˆ˜ ์žˆ์„๊นŒ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. schema์— ๋Œ€ํ•ด ์ฒดํฌํ•˜๋Š” joi ํ•จ์ˆ˜๋„ ์žˆ๋˜ ๋ฐ ์‹œ๊ฐ„๋˜๋ฉด ์ ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
      • wiki์— architecture ๊ณผ์ • ๊ธฐ๋ก ์ดˆ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ œ์•ˆํ–ˆ๋˜ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด์„œ ์™œ ๋‚ด๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ์ง„ํ–‰ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•ด์„œ ๋ณต๊ธฐํ•˜๊ณ  ์ž‘์„ฑํ–ˆ๋‹ค.
    • ์•„์‰ฌ์šด ์ 

      • express ๊ฐœ๋ฐœ์— ์•„์ง ์ต์ˆ™์ง€ ์•Š์•„ ํŠน์ •์ƒํ™ฉ์— ํ•„์š”ํ•œ ๋ชจ๋“ˆ(์˜ˆ๋ฅผ ๋“ค๋ฉด body-parser)์„ ์ฐพ์•„ ์“ฐ์ง€ ๋ชปํ•ด ๊ฒ€์ƒ‰ํ•˜๋А๋ผ ์‹œ๊ฐ„์ด ๋Šฆ์–ด์กŒ๋‹ค.
      • google plus๋ฅผ ๋” ์ด์ƒ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ์— google ๋กœ๊ทธ์ธ ๋ฐ jwt ๋ฐœ๊ธ‰ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ–ˆ์ง€๋งŒ ์™„์„ฑํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
  • ์ •์†Œ์˜

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

    • ๋ณ‘์„ ์ดํ˜•๊ณผ ์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด์„œ webRTC์˜ ๋งˆ์ดํฌ, ๋น„๋””์˜ค on/off๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.
    • yjs๋ฅผ ์ด์šฉํ•œ ํ”Œ์ ์„ ์‚ดํŽด๋ดค๋Š”๋ฐ cattaz ๋ผ๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•ด๋†“์•„์„œ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ ๋ฐ ์ ์šฉํ•˜๊ณ  ์žˆ๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

    • ec2์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋กœ ๋„˜์–ด๊ฐ€๋ฉด์„œ ๋„์ปค์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•ด ๋„์ปค๊ฐœ๋…์„ ๋” ๊ณต๋ถ€ํ–ˆ๋‹ค.
    • ec2๋กœ MSAํ™˜๊ฒฝ์„ ๋งŒ๋“ค์—ˆ๋˜๊ฒƒ์„ ์ œ๊ณต๋ฐ›์€ ์„œ๋ฒ„์— ์˜ฎ๊ธฐ๋ฉด์„œ ๋„์ปค ์ด๋ฏธ์ง€์˜ ์ค‘์š”์„ฑ์„ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋‹ค.

์ž˜ํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ ๊ณ„์†ํ•  ์ผ ๐Ÿ€

  • ๊ณฝ๋ณ‘์„ 

    • WebRTC ๋ถ€๋ถ„์ด ๊ฑฐ์˜ ์™„์„ฑ ์ง์ „์ด๊ธด ํ•˜์ง€๋งŒ ๋ฐฉ์‹ฌํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ์–ธ์ œ ์–ด๋””์„œ ๋””๋ฒ„๊น…์„ ํ•ด์•ผํ•  ์ง€ ๋ชจ๋ฅธ๋‹ค. ๊ทธ๋ž˜๋„ ๊ธ์ •์ ์ธ ๋งˆ์ธ๋“œ๋กœ, ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ ์ง„ํ–‰ํ•ด์•ผํ•œ๋‹ค.
  • ์ด์—ฐ์ฃผ

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

    • ํƒ€์ธ์—๊ฒŒ ์งˆ๋ฌธํ•˜๊ธฐ ์ „์— ์Šค์Šค๋กœ ์•Œ์•„๋ณด๋ฉฐ ๋ฐฐ์›Œ๊ฐ€๋‹ˆ ์ถ”ํ›„ ์งˆ๋ฌธํ•  ๋•Œ๋„ ์–ป๋Š” ๊ฒƒ์ด ๋งŽ์•˜๋‹ค. ์•ž์œผ๋กœ ์—ฌ๋Ÿฌ ์ž๋ฃŒ๋ฅผ ๋ณด๋Š”๋ฐ ๋‘๋ ค์›Œํ•˜์ง€๋ง์ž.
  • ์กฐ์„ฑ์›

    • cattaz์˜ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํ•จ์ˆ˜ํ˜•์œผ๋กœ ๋ฐ”๊ฟ”๊ฐ€๋ฉฐ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๊ณ ์žˆ๋‹ค. ์กฐ๊ธˆ๋งŒ ์‹œ๊ฐ„ํˆฌ์ž๋ฅผ ํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

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

๋” ์ž˜ํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ ์ผ ๐Ÿ˜ฅ

  • ๊ณฝ๋ณ‘์„ 

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

    • google plus๋ฅผ ์ง€์›์•ˆํ•œ๋‹ค๋Š” ๊ฑธ ์ด๋ฒˆ์ฃผ ๊ฑฐ์˜ ๋์— ๋Šฆ๊ฒŒ ์•Œ์•˜๋‹ค. ๋Œ€์ฒด๋œ ๋ชจ๋“ˆ๋กœ ๋นจ๋ฆฌ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.
    • javascript ๊ธฐ์ดˆ ์ง€์‹์„ ๋” ํƒ„ํƒ„ํžˆ ํ•ด์„œ ๊ฐœ๋ฐœํ•  ๋•Œ ์ฐพ์•„๋ณด๋Š” ์ผ์„ ๋” ์ค„์—ฌ์•ผ ๊ฒ ๋‹ค.
    • ์š”์ฆ˜ ๋“ค์–ด ์ฒด๋ ฅ์ด ๋ฐฉ์ „๋๋Š”์ง€ ๋Šฆ๊ฒŒ ์ผ์–ด๋‚˜๊ฒŒ ๋œ๋‹ค. ์‹œ๊ฐ„์„ ๋” ์†Œ์ค‘ํžˆ ์—ฌ๊ฒจ์•ผ๊ฒ ๋‹ค.
  • ์ •์†Œ์˜

    • ์ž๋ฃŒ๋งŒ ๋งŽ์ด ์ฐพ์•„๋†“๊ณ  ๊ทธ ์ž๋ฃŒ๋ฅผ ์†Œํ™”ํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ ธ๋‹ค. ๋”์šฑ ์„ฑ์‹คํ•ด์ง€์ž.
    • ๊ธฐ๋Šฅ์„ ๋ถ™์ผ ์ˆ˜๋ก ๋ญ”๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์ข€ ์ง€์ €๋ถ„ํ•ด๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™์•„ ์•„์‰ฝ๋‹ค. ์ผ๋‹จ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด ๋†“๊ณ  ๋‚˜์ค‘์— refactoring์„ ๊ผญ ํ•ด์•ผ๊ฒ ๋‹ค.
  • ์กฐ์„ฑ์›

    • yjs ๊ด€๋ จํ•ด์„œ yjs๋ฅผ ์‚ฌ์šฉํ•œ ํ”„๋กœ์ ํŠธ๋“ค์ด ์–ด๋–ป๊ฒŒ yjs๋ฅผ ์ด์šฉํ–ˆ๋Š”์ง€ ์ผ์ฐ ์ฐพ์•„๋ดค์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์ด ๋ถ€๋ถ„์ด ์ข€ ์•„์‰ฝ๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

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

๋‹ค์Œ ์Šคํ”„๋ฆฐํŠธ์— ์ ์šฉํ•  ๊ฒƒ ๐Ÿ“ˆ

  • WBS์™€ jira ๋งž์ถฐ ์—…๋ฐ์ดํŠธ ํ•  ๊ฒƒ

6์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ์˜ ๋กœ๊ทธ

์Šคํ”„๋ฆฐํŠธ ๋ชฉํ‘œ ๐Ÿˆ

  • ์ˆ˜์ •๋œ 1์ฐจ ์•„ํ‚คํ…์ฒ˜์— ๋”ฐ๋ผ ec2 ์ธ์Šคํ„ด์Šค ์—ฐ๋™
  • Editor page, Main page, Workspace page View ๊ตฌํ˜„
  • yjs์— DB ์—ฐ๋™
  • CI tool ์ ์šฉ

์Šคํ”„๋ฆฐํŠธ ๋‹จ์œ„ ๐Ÿ—“

  • 6์ผ

์Šคํฌ๋Ÿผ ๋งˆ์Šคํ„ฐ ๐Ÿ‘จโ€๐Ÿ”ง

ํšŒ์˜ ๋‚ด์šฉ ๐Ÿ’ฌ

  • ์„œ๋ฒ„ ec2 ์ธ์Šคํ„ด์Šค๊ฐ„ ์—ฐ๋™
    • ํŒ€์„œ๋ฒ„์™€ ๋ฌธ์„œ๊ด€๋ฆฌ ์„œ๋ฒ„ ์—ฐ๋™
    • ์—๋””ํ„ฐ์„œ๋ฒ„
  • SSL์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์•Œ์•„๋ณด๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ(๋ชจ๋“  ์„œ๋ฒ„์— ssl์„ ๋‹ฌ์•„์•ผํ•˜๋Š”์ง€ ์•„๋‹Œ์ง€ ๋“ฑ๋“ฑ)
  • DB ec2 ์ธ์Šคํ„ด์Šค์— EBS ์—ฐ๋™ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๊ธฐ
  • ํ…Œ์ŠคํŒ…์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•˜๊ธฐ(ํƒœ๋ฆฐ)
  • ๊ฐ ์„œ๋ฒ„์—์„œ JWT ๊ฒ€์ฆํ•˜๊ธฐ


6์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ  ๋กœ๊ทธ

์ฃผ๊ฐ„ ํšŒ๊ณ  ๋‚ด์šฉ ๐Ÿ’ฌ

  • ๊ณฝ๋ณ‘์„ 

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

  • ์ •์†Œ์˜

    • ์ผ์ฃผ์ผ์˜ wrap-up ๋‚ด์šฉ์„ ๋ณด๋‹ˆ ํฌ๊ฒŒ๋Š” exception handling๊ณผ test code๋ฅผ ์งœ๊ณ  CI์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ๋ง›๋งŒ ๋ณธ ๊ฒƒ ๊ฐ™๋‹ค. ๋‚ด๊ฐ€ ๋งก์€ ๋ถ€๋ถ„์€ ๊ฒฐ๊ตญ ๋ฌธ์„œ๊ด€๋ฆฌ ๋ถ€๋ถ„์œผ๋กœ ํ•œ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์— ๊ณ„์† ์‚ด์„ ๋ถ™์—ฌ๋‚˜๊ฐ€๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ณ  ์žˆ๋Š”๋ฐ, ๊ทธ ๊ณผ์ •์—์„œ ํ•˜๋‚˜์”ฉ์ด๋ผ๋„ ๋ฐฐ์›Œ๊ฐ€๊ณ  ์žˆ์–ด ๋‚˜๋ฆ„์˜ ์ฆ๊ฑฐ์›€์ด ์žˆ์—ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋‚ด ์ฝ”๋“œ๋งŒ ๋ณด๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ดํ•ด์™€ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์ ์€ ๊ฒƒ ๊ฐ™์•„ ์•„์‰ฝ๋‹ค. ์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ ์™€ ๋ฉ˜ํ† ๋ง ์‹œ๊ฐ„ ๋•Œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ž‘์—… ๋‚ด์šฉ๊ณผ ๋ฌธ์ œ ์‚ฌํ•ญ์„ ์•Œ ์ˆ˜ ์žˆ์–ด ์ข‹์•˜๋‹ค.
  • ์กฐ์„ฑ์›

    • ์—ฌํƒœ๊นŒ์ง€ vscode์˜ live share ์ต์Šคํ…์…˜์„ ์ด์šฉํ•˜์—ฌ ๋กœ์ปฌํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์—ˆ๊ณ  ์ค‘๊ฐ„ ๋ฐœํ‘œ ์ „๋‚  ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด๋ดค๋Š”๋ฐ ์ž˜ ๋˜์ง€ ์•Š์•˜๋‹ค. ์›์ธ์€ ssl ์ฒ˜๋ฆฌ๋กœ ํ˜„์žฌ ์–ด๋–ป๊ฒŒ ssl์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๊ณ  ๋™์ž‘์ด ๋˜๋Š”์ง€ ๊ฐœ๋…์ด ์žกํ˜€์žˆ์ง€์•Š๋‹ค. ssl์— ๊ด€ํ•ด์„œ ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ด๋ฅผ ํ•ด์•ผ LiveMD๋ฅผ ์šด์˜ํ™˜๊ฒฝ์—์„œ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฉ˜ํ† ๋ง ํ”ผ๋“œ๋ฐฑ์— ๋”ฐ๋ผ ์šฐ์„  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์€ ์ œ์ณ๋‘๊ณ  ec2 ํ™˜๊ฒฝ์—์„œ ์šด์˜์ด ๋˜๋Š” ๊ฒƒ์„ 1์ˆœ์œ„๋กœ ์žก๊ณ  ํ•ด์•ผํ•  ๊ฑฐ ๊ฐ™๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

์ž˜ํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ ๊ณ„์†ํ•  ์ผ ๐Ÿ€

  • ๊ณฝ๋ณ‘์„ 

    • Editor page์˜ ์™„์„ฑ๋„๊ฐ€ ์–ด๋А ์ •๋„ ๋‚˜์™€์„œ ๋‹คํ–‰์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์•„์ง ๋ฏธํกํ•œ ๋ถ€๋ถ„์ด ์กฐ๊ธˆ ์žˆ์ง€๋งŒ ๊ธˆ๋ฐฉ ๋ณด์™„ํ•˜๊ณ  CSS๋ฅผ ๋” ์ถ”๊ฐ€์ ์œผ๋กœ ์ž‘์—…ํ•˜์—ฌ์„œ ์™„์„ฑ๋„๋ฅผ ๋†’์—ฌ์•ผ ํ•œ๋‹ค.
  • ์ด์—ฐ์ฃผ

  • ์ •์†Œ์˜

    • ํ•˜๋‹ค๊ฐ€ ๋ง‰ํ˜€์„œ ์ž๋ฃŒ๋ฅผ ๋งŽ์ด ์ฐพ์€ ๋’ค ๊ฐ•์‚ฌ๋‹˜๊ป˜ ์—ฌ์ญค๋ณด์•˜์„ ๋•Œ ๊ทธ์ € ์—ฌ์ญค๋ดค์„ ๋•Œ ์–ป๋Š” ๋‹ต๋ณ€๋ณด๋‹ค ํ›จ์”ฌ ์–‘์งˆ์˜ ๋‹ต๋ณ€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ์กฐ์„ฑ์›

    • ์ฒ˜์Œ์œผ๋กœ editor ๊ธฐ๋Šฅ๊ณผ webRTC ๊ธฐ๋Šฅ์„ ํ•ฉ์ณ์„œ ํ•œ ํŽ˜์ด์ง€์—์„œ ๋ณด์—ฌ์คฌ๋Š”๋ฐ ๋ฏธํกํ•˜์ง€๋งŒ ์ž˜ ๋™์ž‘ํ•ด์„œ ์ข‹์•˜๋‹ค. ํ•ฉ์นœ ๊ฒƒ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ ์  ๋ฐœ์ „์‹œ์ผœ๋‚˜๊ฐ€๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

๋” ์ž˜ํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ ์ผ ๐Ÿ˜ฅ

  • ๊ณฝ๋ณ‘์„ 

    • ec2์— ์„œ๋ฒ„๋ฅผ ์ข€ ๋” ์ผ์ฐ ๋ฐฐํฌํ•˜์—ฌ ์ค‘๊ฐ„๋ฐœํ‘œ ์‹œ์—ฐ ์ค€๋น„๋ฅผ ๋ฏธ๋ฆฌ ๋ชปํ•œ๊ฒŒ ์•„์‰ฝ๊ธด ํ•˜์ง€๋งŒ ๊ทธ๋ž˜๋„ ์–ด๋А ๊ฒƒ์ด ๋ฌธ์ œ์ธ์ง€ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์ง€ ์•Š์•„์„œ ๋‹คํ–‰์ด๋‹ค.
  • ์ด์—ฐ์ฃผ

  • ์ •์†Œ์˜

    • ์‹ค์งˆ์ ์ธ ๊ฐœ๋ฐœ์€ ๊ฑฐ์˜ ์ง„ํ–‰์„ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์•„ ์•„์‰ฝ๋‹ค.๋˜ํ•œ ํ•˜๋‚˜๋ฅผ ์™„์„ฑํ•  ๋•Œ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋А๋ ธ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ CI์ชฝ์„ ๋‹ด๋‹นํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฑ…์ž„๊ฐ์„ ๊ฐ–๊ณ  ์™„์ˆ˜ํ•˜์ž!
    • ํ•˜๋‹ค๊ฐ€ ๋ง‰ํžˆ๊ณ  ํ•ด๊ฒฐํ•œ ๊ณผ์ •๋“ค์„ ๊ธฐ๋กํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ์ด ์•„์‰ฝ๋‹ค. ๋ฒ„๊ทธ ์ด์Šˆ๋ฅผ ๋‚จ๊ธฐ๋“ , ํƒ€์ดํฌ๋ผ์— TIL๋กœ ์ ๋“  ๊ธฐ๋ก์„ ๋‚จ๊ธฐ์ž.
  • ์กฐ์„ฑ์›

    • ๋„ˆ๋ฌด ๊ตฌํ˜„๋งŒ ํ•˜๋ ค๊ณ  ์ดˆ์ ์„ ๋งž์ท„๋Š”๋ฐ ์ค‘๊ฐ„์ค‘๊ฐ„ jira ์‚ฌ์šฉ์„ ์ž˜ ๋ชปํ•ด์„œ ์•„์‰ฌ์› ๋‹ค. ์•ž์œผ๋กœ๋Š” jira๋„ ์ž˜ ๊ด€๋ฆฌํ•˜๋ฉด์„œ ๊ฐœ๋ฐœํ•ด์•ผ๊ฒ ๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

๋‹ค์Œ ์Šคํ”„๋ฆฐํŠธ์— ์ ์šฉํ•  ๊ฒƒ ๐Ÿ“ˆ

  • bug ์ด์Šˆ log๋กœ ์˜ฌ๋ฆฌ๊ธฐ
  • ์˜คํ”„๋ผ์ธ ์–ธ์ œ ๋งŒ๋‚ ์ง€
    • ์›”: ์‚ฌ๋‹น ๋ฒ„์Šค๋ผ์šด์ง€ ์˜คํ›„ 1์‹œ
    • ํ™”: ์Šคํ„ฐ๋””๋ฃธ ์˜คํ›„ 1์‹œ

Clone this wiki locally