Skip to content

choieunsong/SSAFIA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

SSAFIA

ํ™”์ƒ์œผ๋กœ ์ฆ๊ธฐ๋Š” ๋งˆํ”ผ์•„ ๊ฒŒ์ž„ https://ssafia.r-e.kr/home

๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ ํŒ€์› ์†Œ๊ฐœ

๐Ÿง‘โ€๐Ÿ’ป ์œ ํƒœ๊ทœ - ํŒ€์žฅ, FE

๐Ÿง‘โ€๐Ÿ’ป ๊น€์ง€ํ›ˆ - BE

๐Ÿง‘โ€๐Ÿ’ป ๊น€์šฉํ›ˆ - BE

๐Ÿง‘โ€๐Ÿ’ป ์ดํ˜„์ • - BE

๐Ÿง‘โ€๐Ÿ’ป ์ตœ์€์†ก - FE


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

  • ์ง„ํ–‰ ๊ธฐ๊ฐ„: 2021.07.12 ~ 2021.08.20
  • ๋ชฉํ‘œ
    • ํ”Œ๋ ˆ์ด์–ด๋Š” ์Œ์„ฑ๊ณผ ์˜์ƒ์„ ํ†ตํ•ด ์„œ๋กœ ์†Œํ†ตํ•˜๋ฉฐ, ์˜คํ”„๋ผ์ธ์œผ๋กœ๋งŒ ์ฆ๊ธฐ๋˜ ๋งˆํ”ผ์•„ ๊ฒŒ์ž„์„ ์˜จ๋ผ์ธ์œผ๋กœ ์ฆ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ ๋„ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ ‘์†ํ•ด ์–ด๋””์„œ๋“  SSAFIA๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํšŒ์›๊ฐ€์ž…์„ ํ•˜์ง€ ์•Š์•„๋„ ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ๋งŒ ํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋ฐฉ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • URL๋กœ ์นœ๊ตฌ๋“ค์„ ์ดˆ๋Œ€ํ•˜๋ฉด ๋กœ๊ทธ์ธ์˜ ๋ฒˆ๊ฑฐ๋กœ์›€ ์—†์ด ๊ฒŒ์ž„์„ ์ฆ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์žฌ๋ฏธ์žˆ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ UI/UX๋ฅผ ์„ค๊ณ„ํ•ด ๊ฒŒ์ž„์˜ ๋ชฐ์ž…๊ฐ์„ ๋†’์ž…๋‹ˆ๋‹ค.

โœ๏ธ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

SSAFIA๋Š” ์˜จ๋ผ์ธ์œผ๋กœ ๋งˆํ”ผ์•„ ๊ฒŒ์ž„์„ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋Š” ํ™”์ƒ ๊ธฐ๋ฐ˜ ๋งˆํ”ผ์•„ ์›น ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค.

์ฝ”๋กœ๋‚˜ 19 ๋ฐ”์ด๋Ÿฌ์Šค๋กœ ์ธํ•ด ์–ธํƒํŠธ ์‹œ๋Œ€์— ๋“ค์–ด์„œ๋ฉฐ ๋žœ์„ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒŒ์ž„, ํšŒ์‹, ๋†€์ด, ์ˆ˜๋‹ค ๋ฌธํ™” ๋“ฑ์˜ ์ธ๊ธฐ๊ฐ€ ๋†’์•„์กŒ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๊นŒ์ง€๋Š” ZOOM์ด๋‚˜ ์›น์—‘์Šค ๋“ฑ์˜ ๊ธฐ์กด ํ™”์ƒ์ฑ„ํŒ… ๋„๊ตฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒŒ์ž„์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฏธํŒ… ๊ธฐ๋Šฅ์— ์ดˆ์ ์ด ๋งž์ถฐ์ง„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๊ฒŒ์ž„ ์ง„ํ–‰์— ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ "SSAFIA"๋Š” ๋งˆํ”ผ์•„ ๊ฒŒ์ž„ ๊ธฐ๋Šฅ์— ์ดˆ์ ์„ ๋งž์ถ˜ ํ™”์ƒ ์ฑ„ํŒ… ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์ž„ ๊ทœ์น™

  • ์ธ์› ์ˆ˜์— ๋”ฐ๋ฅธ ์ง์—… ๋ถ„๋ฐฐ

    • ์ตœ์†Œ 4์ธ์ด ๊ฐ–์ถฐ์ ธ์•ผ ๊ฒŒ์ž„ ์‹œ์ž‘ ๊ฐ€๋Šฅ
    • 4์ธ์˜ ๊ฒฝ์šฐ ํŠน์ˆ˜์ง์—… ์—†์ด ๋งˆํ”ผ์•„ 1, ์‹œ๋ฏผ 3์œผ๋กœ ์‹œ์ž‘
    • 5์ธ์˜ ๊ฒฝ์šฐ ํŠน์ˆ˜์ง์—… ์˜์‚ฌ ์ถ”๊ฐ€, ์˜์‚ฌ1, ๋งˆํ”ผ์•„1, ์‹œ๋ฏผ3์œผ๋กœ ์‹œ์ž‘
    • 6์ธ๋ถ€ํ„ฐ๋Š” ํŠน์ˆ˜์ง์—… ์˜์‚ฌ์™€ ๊ฒฝ์ฐฐ ๋ชจ๋‘ ๋“ฑ์žฅ, ์˜์‚ฌ1, ๊ฒฝ์ฐฐ1, ๋งˆํ”ผ์•„ (์ธ์›์ˆ˜//3), ์‹œ๋ฏผ (๋‚˜๋จธ์ง€)๋กœ ์‹œ์ž‘
  • ์Šน๋ฆฌ์กฐ๊ฑด

    • ๋งˆํ”ผ์•„์˜ ๊ฒฝ์šฐ: ์‹œ๋ฏผ์˜ ์ˆ˜๊ฐ€ ๋งˆํ”ผ์•„์™€ ๊ฐ™์•„์ง€๋ฉด ๊ฒŒ์ž„ ์Šน๋ฆฌ
    • ์‹œ๋ฏผ, ์˜์‚ฌ, ๊ฒฝ์ฐฐ์˜ ๊ฒฝ์šฐ: ๋ชจ๋“  ๋งˆํ”ผ์•„๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๊ฒŒ์ž„ ์Šน๋ฆฌ, ํ˜น์€ ์ œํ•œ๋œ ํ„ด์ด 15ํ„ด ์•ˆ์— ๊ฒŒ์ž„์ด ๋๋‚˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์Šน๋ฆฌ
  • ํˆฌํ‘œ ๊ทœ์น™

    • ํˆฌํ‘œ์˜ ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€
      • ๋‚ฎ ํˆฌํ‘œ: ์‚ด์•„์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ฐธ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ํˆฌํ‘œ๋กœ ์—ฌ๊ธฐ์„œ ์ตœ๋‹ค๋“ํ‘œ์ž๋Š” ์ตœ์ข…ํˆฌํ‘œ ํ›„๋ณด๊ฐ€ ๋จ
      • ์ตœ์ข… ํˆฌํ‘œ: ์ตœ์ข…ํˆฌํ‘œ ํ›„๋ณด์ž๋ฅผ ์ œ๊ฑฐํ• ์ง€ ์•„๋‹์ง€๋ฅผ ์ •ํ•˜๋Š” ํˆฌํ‘œ
      • ๋ฐค ํˆฌํ‘œ: ์‹œ๋ฏผ์˜ ์ œ์™ธํ•œ ๋งˆํ”ผ์•„, ๊ฒฝ์ฐฐ, ์˜์‚ฌ๊ฐ€ ํ•˜๋Š” ํˆฌํ‘œ๋กœ ๊ฐ๊ฐ์˜ ์ง์—…๋งˆ๋‹ค ๋‹ค๋ฅธ ํšจ๊ณผ๋ฅผ ์ง€๋‹˜
        • ๋งˆํ”ผ์•„: ๋™๋ฃŒ๋ผ๋ฆฌ ์†Œํ†ตํ•ด ์‹œ๋ฏผ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Œ
        • ๊ฒฝ์ฐฐ: ํˆฌํ‘œํ•œ ์‚ฌ๋žŒ์˜ ์ง์—…์„ ์•Œ ์ˆ˜ ์žˆ์Œ
        • ์˜์‚ฌ: ํˆฌํ‘œํ•œ ์‚ฌ๋žŒ์€ ์ด๋ฒˆ ๋ฐค ํˆฌํ‘œ์—์„œ ์‚ด๋ฆด ์ˆ˜ ์žˆ์Œ
    • ๋ชจ๋“  ํˆฌํ‘œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์„ ๋”ฐ๋ฆ„
      • ๊ฐ ํŽ˜์ด์ฆˆ๋ณ„ ๋‚จ์•„์žˆ๋Š” ์‹œ๊ฐ„๋™์•ˆ ๋งˆ์Œ๊ป ํˆฌํ‘œ๋Œ€์ƒ์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‚ด๊ฐ€ ํ•œ ํˆฌํ‘œ๋ฅผ ์ทจ์†Œํ•  ์ˆ˜๋„ ์žˆ์Œ
      • ๊ธฐ๋ณธ์ ์œผ๋กœ ํˆฌํ‘œํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ด๋Š” ๋ฌดํšจํ‘œ๋ฅผ ๋˜์ง„ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ
      • ๋‚ฎ ํˆฌํ‘œ๋Š” ์œ ๊ธฐ๋ช… ํˆฌํ‘œ๋กœ ์ž์‹ ์ด ๋ˆ„๊ตฌ์—๊ฒŒ ํˆฌํ‘œํ–ˆ๋Š”์ง€๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜
      • ๋ฐค ํˆฌํ‘œ์˜ ๊ฒฝ์šฐ ๋งˆํ”ผ์•„๋ผ๋ฆฌ๋งŒ ์ž์‹ ์ด ๋ˆ„๊ตฌ์—๊ฒŒ ํˆฌํ‘œํ–ˆ๋Š”์ง€๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜
      • ๋ฌดํšจํ‘œ์™€ ๋™๋ฅ ์— ๊ด€ํ•œ ์กฐํ•ญ
        • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌดํšจํ‘œ๊ฐ€ ๊ณผ๋ฐ˜์ด ๋„˜์–ด๊ฐ€๋ฉด ๊ทธ ํˆฌํ‘œ๋Š” ๋ฌดํšจ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค์Œ ํŽ˜์ด์ฆˆ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.
        • ๋‚ฎ ํˆฌํ‘œ์—์„œ ์ƒ์กด์ž๊ฐ€ 5์ธ ์ดํ•˜์ผ๊ฒฝ์šฐ 2๋ช…, ์ƒ์กด์ž๊ฐ€ 6์ธ ์ด์ƒ์ผ๊ฒฝ์šฐ 3๋ช…๊นŒ์ง€ ์ตœ์ข…ํˆฌํ‘œ ํ›„๋ณด์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
        • ๋ฐคํˆฌํ‘œ์™€ ์ตœ์ข…ํˆฌํ‘œ์˜ ๊ฒฝ์šฐ ๋™๋ฅ ์ด ๋‚˜์˜ค๋ฉด ํˆฌํ‘œ๊ฒฐ๊ณผ๋ฅผ ๋ฌดํšจ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ง„ํ–‰ํ•œ๋‹ค.

๊ฒŒ์ž„ FLOW

  1. ์‹œ์ž‘: ๊ฐ ํ”Œ๋ ˆ์ด์–ด๋Š” ์ž์‹ ์˜ ์ง์—…์ด ๋ฌด์—‡์ธ์ง€ ๋ฐ›์•„๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  2. ๋‚ฎ ํˆฌํ‘œ: ๊ฐ ํ”Œ๋ ˆ์ด์–ด๋Š” ์˜์‹ฌ์Šค๋Ÿฌ์šด ์‚ฌ๋žŒ์„ ํˆฌํ‘œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ตœ์ข… ํˆฌํ‘œ: ์ตœ์ข… ๋ณ€๋ก ์ž๋Š” ์ฃผ์–ด์ง„ ์‹œ๊ฐ„ ๋™์•ˆ ๋ณ€๋ก ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ํ”Œ๋ ˆ์ด์–ด๋Š” ์ตœ์ข… ๋ณ€๋ก ์ž์—๊ฒŒ KILL/SAVE ํˆฌํ‘œํ•ฉ๋‹ˆ๋‹ค. ๋‚ฎ ํˆฌํ‘œ๊ฐ€ ๋ฌดํšจ์ฒ˜๋ฆฌ๋  ๊ฒฝ์šฐ ์Šคํ‚ต๋ฉ๋‹ˆ๋‹ค.
  4. ์ตœ์ข… ํˆฌํ‘œ ๊ฒฐ๊ณผ ๋ฐœํ‘œ: ์ตœ์ข… ํˆฌํ‘œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  5. ๋ฐค ํˆฌํ‘œ: ์˜์‚ฌ, ๋งˆํ”ผ์•„, ๊ฒฝ์ฐฐ์€ ๊ฐ๊ฐ ํˆฌํ‘œ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  6. ๋ฐค ํˆฌํ‘œ ๊ฒฐ๊ณผ ๋ฐœํ‘œ: ์˜์‚ฌ, ๋งˆํ”ผ์•„, ๊ฒฝ์ฐฐ์˜ ํˆฌํ‘œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  7. ์‚ฌ๋ง ์‹œ: ์‚ฌ๋ง์‹œ ๊ด€์ „์ž ๋ชจ๋“œ๊ฐ€ ๋˜์–ด ์˜ค๋””์˜ค์™€ ๋น„๋””์˜ค๊ฐ€ ๊ฐ•์ œ๋กœ ๊บผ์ง‘๋‹ˆ๋‹ค. ๊ด€์ „์ž๋Š” ๋ชจ๋“  ํ”Œ๋ ˆ์ด์–ด์˜ ์˜ค๋””์˜ค์™€ ๋น„๋””์˜ค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ง์—… ๋˜ํ•œ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  8. ์ข…๋ฃŒ: ์–ด๋Š์ธก์ด ์Šน๋ฆฌํ–ˆ๋Š”์ง€๋ฅผ ๋ฐœํ‘œํ•˜๊ฒŒ ๋˜๋ฉฐ, ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

ํšŒ์›๊ฐ€์ž… ์—†์ด ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์œผ๋กœ ๋ฐฉ ์ƒ์„ฑ

SSAFIA๋Š” ํšŒ์›๊ฐ€์ž…์„ ๋”ฐ๋กœ ํ•˜์ง€ ์•Š์•„๋„ ๊ธฐ์กด ๊ตฌ๊ธ€ ์•„์ด๋””๋กœ ๋กœ๊ทธ์ธํ•˜๋ฉด ๋ฐ”๋กœ ๋ฐฉ์„ ๋งŒ๋“œ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

login

  • ๊ฒŒ์ž„ ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ , ๋‹‰๋„ค์ž„์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฐฉ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ๋ฐฉ์žฅ์€ url์„ ํ†ตํ•ด ์นœ๊ตฌ๋ฅผ ์ดˆ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

แ„‡แ…กแ†ผแ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผ

ํ™”์ƒ ๋ฏธํŒ… ๊ธฐ๋Šฅ

openvidu๋ฅผ ํ™œ์šฉํ•ด ํ™”์ƒ์ฑ„ํŒ…์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋ ˆ์ด์–ด๋“ค์€ ๋Œ€ํ™”๋ฅผ ํ†ตํ•ด ์‹ธํ”ผ์•„ ๊ฒŒ์ž„์„ ํ”Œ๋ ˆ์ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

talk

  • ๋™์‹œ์— ๋งํ•  ๋•Œ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๋„๋ก ํ˜„์žฌ ๋งํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋งˆํ”ผ์•„ ๊ฒŒ์ž„ ๊ธฐ๋Šฅ

์‹ค์ œ ์นœ๊ตฌ๋“ค๊ณผ ๋ชจ์—ฌ์„œ ํ•˜๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋งํ•˜๊ณ , ํˆฌํ‘œํ•˜๊ณ , ์ •์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • webSocket์„ ์ด์šฉํ•ด ๋งˆํ”ผ์•„ ๊ฒŒ์ž„ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

แ„‡แ…กแ†ท-แ„†แ…กแ„‘แ…ตแ„‹แ…ก

  • ๋ฐค์— ๋งˆํ”ผ์•„๋“ค์€ ๊ณ ๊ฐœ๋ฅผ ๋“ค์–ด ๋ˆ„๊ตด ์ œ๊ฑฐํ•  ์ง€ ๊ณ ๋ฏผํ–ˆ๋˜ ๊ฒƒ ์ฒ˜๋Ÿผ ์‹ธํ”ผ์•„์—์„œ๋„ ๋˜‘๊ฐ™์€ ์ฒดํ—˜์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํˆฌํ‘œ๊ธฐ๋Šฅ

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

แ„‡แ…กแ†ท-แ„€แ…ชแ†ซแ„Œแ…ฅแ†ซแ„Œแ…ก

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

โš™๏ธ ๊ธฐ์ˆ  ์Šคํƒ

  • frontend
    • vue 3.1.5
    • vuex 4.0.2
    • vue-router 4.0.10
    • sockjs-client 1.5.1, webstomp-client 1.2.6
  • backend
    • MariaDB 10.4.20
    • redis 6.2.4
    • spring Boot 2.5.2
  • ํ™”์ƒ๋ฏธํŒ… ๊ด€๋ จ
    • openvidu-browser 2.19.0
    • openvidu 2.19.0
  • ๋ฐฐํฌ
    • aws
    • nginx
    • jenkins

๐Ÿ‘ conventionss

commit message convention

  • algular commit message convention
    • type(scope): short summary
    • type ์ข…๋ฅ˜
      • feat : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
      • fix : ๋ฒ„๊ทธ ์ˆ˜์ •
      • docs : ๋ฌธ์„œ ๊ด€๋ จ
      • style : ์Šคํƒ€์ผ ๋ณ€๊ฒฝ (ํฌ๋งคํŒ… ์ˆ˜์ •, ๋“ค์—ฌ์“ฐ๊ธฐ ์ถ”๊ฐ€, โ€ฆ)
      • refactor : ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
      • test : ํ…Œ์ŠคํŠธ ๊ด€๋ จ ์ฝ”๋“œ
      • build : ๋นŒ๋“œ ๊ด€๋ จ ํŒŒ์ผ ์ˆ˜์ •
      • ci : CI ์„ค์ • ํŒŒ์ผ ์ˆ˜์ •
      • perf : ์„ฑ๋Šฅ ๊ฐœ์„ 
    • short summary
      • ๋งˆ์นจํ‘œ ์“ฐ์ง€ ์•Š๊ธฐ
      • ํ•œ๊ธ€ ์˜๋ฌธ, ๋ชจ๋‘ ๊ฐ€๋Šฅ

git branch convention

  • master - develop - feature
  • ๊ฐœ์ธ ๊ฐœ๋ฐœํ•œ ๊ฒƒ๋“ค์€ ๋ชจ๋‘ feature/๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜์—์„œ ์ˆ˜ํ–‰
  • ํ”„๋ก ํŠธ์™€ ๋ฐฑ์—์„œ asignee๋กœ ์ง€๋ช…๋œ ์ด๋“ค์ด ์‹ฌ์‚ฌํ›„ develop์œผ๋กœ merge
  • master์— mergeํ•  ๊ฒฝ์šฐ ํŒ€์› ๋ชจ๋‘ ๋ชจ์—ฌ์„œ ํšŒ์˜ ํ›„ ์ง„ํ–‰

๐ŸŒ ๋ฐฐํฌ ๋ฐฉ๋ฒ•

frontend/src/constant/prod.js์—์„œ ์˜ฌ๋ฐ”๋ฅธ ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

WebRTC๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— STUN/TURN ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ธ coturn์„ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

sudo apt-get update && sudo apt-get install --no-install-recommends --yes coturn

/etc/default/coturn์˜ ๋‚ด์šฉ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

TURNSERVER_ENABLED=1

/etc/turnserver.conf์˜ ๋‚ด์šฉ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

listening-port=3478
tls-listening-port=5349
listening-ip=<EC2์˜ ํ”„๋ผ์ด๋น— IPv4 ์ฃผ์†Œ>
external-ip=<EC2์˜ ํผ๋ธ”๋ฆญ IPv4 ์ฃผ์†Œ>/<EC2์˜ ํ”„๋ผ์ด๋น— IPv4 ์ฃผ์†Œ>
relay-ip=<EC2์˜ ํ”„๋ผ์ด๋น— IPv4 ์ฃผ์†Œ>
fingerprint
lt-cred-mech
user=myuser:mypassword
realm=myrealm
log-file=/var/log/turn.log
simple-log

coturn์„ ์žฌ๊ธฐ๋™ํ•ฉ๋‹ˆ๋‹ค.

sudo service coturn restart

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด coturn์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

sudo systemctl status coturn

๋ฐฐํฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„์— docker์™€ docker-compose๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
docker๋Š” ๊ณต์‹ ์›นํŽ˜์ด์ง€์— ๋‚˜์™€ ์žˆ๋Š” debian์—์„œ์˜ ์„ค์น˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค์น˜ํ•˜๋ฉด ๋˜๊ณ , docker-compose๋Š” apt-get ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์„ค์น˜๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ root ์œ„์น˜์—์„œ docker-compose๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ๊นŒ์ง€ ์ž๋™์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

docker-compose up -d

๋‹จ, docker-compose๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” prod.env ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. prod.env์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

# backend
GOOGLE_CLIENT_ID=1q2w3e4r-1q2w3e4r.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=4r3e2w1q4r3e2w1q
SPRING_DATASOURCE_USERNAME=a104
SPRING_DATASOURCE_PASSWORD=a1041234
JWT_SECRET=1q2w3e4r
#OPENVIDU_URL=https://<service domain name>:3333/
OPENVIDU_URL=https://openvidu:3333/
APP_BASE_URL=https://<service domain name>

# openvidu
KMS_STUN_IP=<coturn server ip>
KMS_STUN_PORT=3478
KMS_TURN_URL=myuser:mypassword@<coturn server ip>:3478?transport=udp
DOMAIN_OR_PUBLIC_IP=<service domain name>

# backend & openvidu
OPENVIDU_SECRET=MY_SECRET

# mysql
MYSQL_USER=a104
MYSQL_PASSWORD=a1041234
MYSQL_ROOT_PASSWORD=a1041234

์ฒซ ๋ฐฐํฌ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ

์ฒซ ๋ฐฐํฌ์‹œ์—๋Š” init-letsencrypt.sh์„ ์‹คํ–‰์‹œ์ผœ certbot์— ์˜ํ•ด SSL/TLS ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

init-letsencrypt.sh ๋‚ด์šฉ์—์„œ domains์™€ data_path, email์„ ์•Œ๋งž๊ฒŒ ์ˆ˜์ •ํ•œ ๋’ค ์‹คํ–‰์‹œํ‚ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ

redis/redis-data์™€ mysql/mysql-data๋Š” ๊ฐ๊ฐ redis container์™€ mysql(mariadb) container์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ directory๋ฅผ mountํ•˜๊ณ  ์žˆ์œผ๋‹ˆ ๊ฐ๋ณ„ํžˆ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

About

๐Ÿ•ต๏ธํ™”์ƒ๊ธฐ๋ฐ˜ ๋งˆํ”ผ์•„ ๊ฒŒ์ž„ ์‹ธํ”ผ์•„๐Ÿ•ต๏ธโ€โ™€๏ธ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published