/ggomalggomal

๐Ÿ† SSAFY 10๊ธฐ ์ž์œจํ”„๋กœ์ ํŠธ ์šฐ์ˆ˜ | ๐ŸŽค ์–ธ์–ด์žฅ์•  ์•„๋™์„ ์œ„ํ•œ ๋†€์ดํ˜• ์–ธ์–ด์น˜๋ฃŒ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

Primary LanguageDart

๊ผฌ๋ง๊ผฌ๋ง

๊ผฌ๊ผฌ๋งˆ๋“ค์ด ๋ง์„ ์ž˜ํ•˜๋Š” ์„ธ์ƒ

image


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

โœจSSAFY 10๊ธฐ 2ํ•™๊ธฐ ์ž์œจ ํ”„๋กœ์ ํŠธ - ์šฐ์ˆ˜์ƒ (2์œ„) ์ˆ˜์ƒ โœจ 2024.04.08 ~ 2024.05.20 (43์ผ)


๋ชฉ์ฐจ

1. ๊ธฐํš ๋ฐฐ๊ฒฝ
2. ์„œ๋น„์Šค ์†Œ๊ฐœ
3. ์ฃผ์š” ๊ธฐ๋Šฅ
4. ๊ธฐ์ˆ  ์ฐจ๋ณ„์ 
5. ๊ธฐ๋Œ€ ํšจ๊ณผ
6. ํ˜„์—… ์ „๋ฌธ๊ฐ€ ํ”ผ๋“œ๋ฐฑ
7. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ
8. ERD
9. ์•„ํ‚คํ…์ฒ˜
10. ํ˜‘์—…ํ™˜๊ฒฝ
11. ํŒ€์› ์†Œ๊ฐœ
12. ์‚ฐ์ถœ๋ฌผ
13. ๋ฐœํ‘œ ์ž๋ฃŒ



1. ๊ธฐํš ๋ฐฐ๊ฒฝ

์ฝ”๋กœ๋‚˜ ์ดํ›„๋กœ ๋ง์ด ๋Šฆ๋Š” ์•„์ด๋“ค์˜ ๋น„์œจ์ด ๋Š˜์–ด๋‚ฌ๋‹ค๋Š” ๊ธฐ์‚ฌ, ๋ณด์‹  ์  ์žˆ๋‚˜์š”?

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

ํ•˜์ง€๋งŒ ์–ธ์–ด์น˜๋ฃŒ๋Š” ์น˜๋ฃŒ๋น„์šฉ์ด ๋น„์‹ธ๊ณ , ์น˜๋ฃŒ๊นŒ์ง€ ๋Œ€๊ธฐ๊ฐ€ ๊ธธ๊ณ , ๊ฐ€์ •์—์„œ์˜ ํ›ˆ๋ จ ๋ณ‘ํ–‰์ด ์–ด๋ ค์šด ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ๋ฏผ ๋์— ํƒ„์ƒํ•œ ํ”„๋กœ์ ํŠธ! ๊ผฌ๋ง๊ผฌ๋ง ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.


2. ์„œ๋น„์Šค ์†Œ๊ฐœ

image

๋ชจ๋“  ๊ผฌ๊ผฌ๋งˆ๋“ค์ด ๋ง์„ ์ž˜ํ•˜๋Š” ์„ธ์ƒ์„ ๊ฟˆ๊พธ๋Š” ์–ธ์–ด์žฅ์•  ์•„๋™์„ ์œ„ํ•œ ๋†€์ดํ˜• ์–ธ์–ด์น˜๋ฃŒ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

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

๊ผฌ๋ง๊ผฌ๋ง์˜ ๊ธฐ๋Šฅ๋“ค์€ ์‹ค์ œ ์–ธ์–ด์น˜๋ฃŒ์‚ฌ์™€์˜ ์ง€์†์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ์ „๋ฌธ์„ฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ์ €ํฌ ๊ผฌ๋ง๊ผฌ๋ง์€ ์–ธ์–ด์น˜๋ฃŒ ์„ผํ„ฐ์—์„œ๋„ ๊ต๋ณด์žฌ๋กœ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ฐฉํ–ฅ์„ฑ์„ ์žก์•˜์Šต๋‹ˆ๋‹ค.

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


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

๊ผฌ๋ง๊ผฌ๋ง์€ ์•„์ด/๊ด€๋ฆฌ์ž ๋‘ ๊ฐ€์ง€ ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

<์•„์ด ๋ชจ๋“œ>

image
๐Ÿธ ๊ฐœ๊ตฌ๋ฆฌ์ง‘

  • ๋ชฉ์  : ํ˜€ ๊ทผ์œก ๊ฐ•ํ™”
  • ์‹ค์ œ ์–ธ์–ด์น˜๋ฃŒ์—์„œ ํ˜€ ๊ทผ์œก ๋ฐœ๋‹ฌ์„ ์œ„ํ•ด ์ง„ํ–‰ํ•˜๋Š” ํ˜€ ์ŠคํŠธ๋ ˆ์นญ์„ ๊ฒŒ์ž„์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์•„์ด๊ฐ€ ํ˜€๋ฅผ ๋‚ด๋ฐ€๋•Œ๋งˆ๋‹ค AI๊ฐ€ ์ธ์‹ํ•˜๊ณ  ๋”ธ๊ธฐ๋ฅผ ๋จน์Šต๋‹ˆ๋‹ค.




๐Ÿณ ๊ณ ๋ž˜์ง‘

  • ๋ชฉ์  : ๊ตํ˜ธ์šด๋™์„ ํ†ตํ•œ ๊ธฐ์ดˆ ๋‹จ๋ชจ์Œ (์•„, ์—, ์ด, ์˜ค, ์šฐ) ํ•™์Šต
  • ๋ชฉํ‘œ์— ๋‹ฌ์„ฑํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต ํ•™์Šต์„ ํ†ตํ•ด ๊ธฐ์ดˆ ๋ชจ์Œ์„ ๋ฐœํ™”ํ•ฉ๋‹ˆ๋‹ค.




๐Ÿป ๊ณฐ์ง‘

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




๐Ÿฃ ๋ณ‘์•„๋ฆฌ์ง‘

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




๐Ÿ‘ฉ๐Ÿป ๋‚˜์˜ ์ง‘

  • ์•„์ด์˜ ํฅ๋ฏธ ์œ ๋ฐœ์„ ์œ„ํ•ด ๊ฒŒ์ž„ ์„ฑ๊ณตํ• ๋•Œ๋งˆ๋‹ค ์‚ฌํƒ•์ด๋ผ๋Š” ๋ณด์ƒ์„ ์ค๋‹ˆ๋‹ค.
  • ์‚ฌํƒ•์œผ๋กœ ์ง‘์˜ ๊ฐ€๊ตฌ๋ฅผ ์‚ฌ์„œ ์ฑ„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์–ธ์–ด ์ž๊ทน, ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•ด ๊ฐ€๊ตฌ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์†Œ๋ฆฌ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒŒ์ž„์„ ํ†ตํ•ด ๋ฐœํ™”ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์€ AI๊ฐ€ ๋ฐœ์Œ์„ ํ‰๊ฐ€ํ•˜์—ฌ ํ•™์Šต ํ˜„ํ™ฉ์—์„œ ์ˆ˜์น˜ํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์–ธ์–ด์น˜๋ฃŒ์‚ฌ๊ฐ€ ๋‚จ๊ฒจ์ฃผ๋Š” ์•Œ๋ฆผ์žฅ์œผ๋กœ ์•„์ด์— ๋Œ€ํ•œ ์ •๋ณด์™€ ์ˆ™์ œ๋ฅผ ์—ด๋žŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.




<๊ด€๋ฆฌ์ž ๋ชจ๋“œ>

๐Ÿ“… ์ˆ˜์—… ์ผ์ • ๊ด€๋ฆฌ

  • ์–ธ์–ด์น˜๋ฃŒ์‚ฌ ์„ ์ƒ๋‹˜์ด ์•„์ด๋“ค์˜ ์ˆ˜์—… ์ผ์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Š ์•„์ด ํ•™์Šตํ˜„ํ™ฉ

  • ์•„์ด๊ฐ€ ๊ฒŒ์ž„์œผ๋กœ ๋ฐœํ™”ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์„ AI๊ฐ€ ๋ฐœ์Œ์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ์กฐ์Œ๋ณ„, ๋‚ ์งœ๋ณ„, ๋‹จ์–ด๋ณ„ ๋ฐœ์Œ์„ ํ‰๊ฐ€ํ•œ ์ ์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ์•Œ๋ฆผ์žฅ

  • ๋ณดํ˜ธ์ž์—๊ฒŒ ๋‚จ๊ธฐ๋Š” ์•Œ๋ฆผ์žฅ์ž…๋‹ˆ๋‹ค.
  • ์•Œ๋ฆผ์‚ฌํ•ญ, ์˜ค๋Š˜์˜ ์ˆ™์ œ ๋“ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.



4. ๊ธฐ์ˆ  ์ฐจ๋ณ„์ 

1. AI ํ˜€ ๊ฐ์ฒด ์ธ์‹

Yolo ๋ชจ๋ธ์€ ๋‹จ์ผ ์‹ ๊ฒฝ๋ง ๋ฐฉ์‹์˜ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ๋กœ, ํ•œ๋ฒˆ์˜ ์ด๋ฏธ์ง€ ์ „๋‹ฌ์— ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋น ๋ฅธ ์‘๋‹ต์†๋„ ๋•๋ถ„์— ์‹ค์‹œ๊ฐ„ ๊ฐ์ฒด ๊ฒ€์ถœ์— ํŠนํžˆ ํ™œ์šฉ๋„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ์—†์ด On-device ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด 'ONNX' ํ˜•์‹์„ ๊ฑฐ์ณ 'Tesorflow lite' ๋ชจ๋ธ๋กœ ๋ณ€ํ™˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋†’์€ ์ •ํ™•๋„์™€ ์‘๋‹ต์†๋„๋กœ ํ˜€๋ฅผ ์ธ์‹ํ•˜๊ณ  ๊ฒŒ์ž„์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

2. AI CLOVA Speech Recognition

STT๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์™ธ๋ถ€ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
REST APIํ˜•ํƒœ๋กœ ์Œ์„ฑ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฌธ์ž๋กœ ์‘๋‹ต๋ฐ›์Šต๋‹ˆ๋‹ค.

๊ณฐ ์ง‘, ๋ณ‘์•„๋ฆฌ ์ง‘์— ๋ฐœ์Œํ•œ ๋‹จ์–ด๋ฅผ ๋ถ„์„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

API ์š”์ฒญ์€ ์‚ฌ์šฉ์ž ์‘๋‹ต ํ›„์— ์‹œ์ž‘๋˜๋„๋ก ์„ค๊ณ„ํ•˜์—ฌ, ์‘๋‹ต์†๋„๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ดํ›„ ๋ณ€ํ™˜๋œ text๋Š” DB์— ์ €์žฅํ•˜์—ฌ ํ†ต๊ณ„๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

3. AI Speechsuper

์Œ์ ˆ๋ณ„ ๋ฐœ์Œ ์ •ํ™•๋„๋ฅผ ํ‰๊ฐ€ํ•ด์ฃผ๋Š” ์™ธ๋ถ€ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
REST APIํ˜•ํƒœ๋กœ ์Œ์„ฑ๋ฐ์ดํ„ฐ, ๋ฐœ์Œํ•œ text๋ฅผ ๋ณด๋‚ด๊ณ , JSON ํ˜•ํƒœ์˜ ๋ฐœ์Œ ์ ์ˆ˜๋ฅผ ์‘๋‹ต๋ฐ›์Šต๋‹ˆ๋‹ค.

๊ณ ๋ž˜ ์ง‘, ๊ณฐ ์ง‘, ๋ณ‘์•„๋ฆฌ ์ง‘์—์„œ ๋ฐœ์Œํ•œ ๋‹จ์–ด(๋ฌธ์žฅ)์„ ํ‰๊ฐ€ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

4. Web Socket

๋Œ€์ƒ์ž์™€ ์ง€๋„์ž ๊ฐ„์˜ ๋น™๊ณ  ๊ฒŒ์ž„์„ ๊ตฌํ˜„ํ•˜๊ธฐ์œ„ํ•ด Web socket ํ†ต์‹ ์„ ํ™œ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋น™๊ณ  ๊ฒŒ์ž„์€ ์ž‘์€ ์‘๋‹ต์„ ์ž์ฃผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ํ™˜๊ฒฝ์ด์—ˆ๊ณ , ์ด ๋•Œ Web socket์€ ํฐ ์žฅ์ ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
http ํ†ต์‹ ์€ ํด๋ง์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ์ฆ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜๊ณ , ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Webflux ํ™˜๊ฒฝ์—์„œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ์œ„ํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด Room๊ณผ handler๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

5. Web Flux

์ œํ•œ๋œ ์Šค๋ ˆ๋“œ์—์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” Spring ๊ธฐ๋ฐ˜์˜ Framework์ž…๋‹ˆ๋‹ค.
Netty๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ํŠน์„ฑ์ƒ ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•˜๋Š” ์งง์€์‹œ๊ฐ„๋™์•ˆ ์š”์ฒญ์ด ์ง‘์ค‘๋ฉ๋‹ˆ๋‹ค.
์š”์ฒญ๋งˆ๋‹ค ์Šค๋ ˆ๋“œ๋ฅผ ํ• ๋‹นํ•˜๋Š” MVC์™€ ๋‹ฌ๋ฆฌ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์—์„œ ์•ˆ์ •์ ์ธ ์‘๋‹ต์„ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์Šคํƒ


BACKEND | ์Šคํ”„๋ง๋ถ€ํŠธ sequrity webflux JWT Reactive WebSocket

FRONTEND-APP | flutter react tailwindCSS http websocket

CI/CD | Jenkins Docker

SERVER | Nginx s3 EC2




5. ๊ธฐ๋Œ€ ํšจ๊ณผ

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



6. ํ˜„์—… ์ „๋ฌธ๊ฐ€ ํ”ผ๋“œ๋ฐฑ


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

์š”๊ตฌ์‚ฌํ•ญ

  1. ๊ตฌ๊ฐ• ์ŠคํŠธ๋ ˆ์นญ์„ ์žฌ๋ฐŒ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ฒŒ์ž„์œผ๋กœ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
  2. ๋‹จ์–ด + ๋ช…์‚ฌ๋ฅผ ๊ฒฐํ•ฉํ•ด ํŠน์ •ํ•œ ์ƒํ™ฉ์— ๋Œ€ํ•ด ๋ฌธ์žฅ์œผ๋กœ ๋งํ•˜๋Š” ์—ฐ์Šต์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
  3. ์–ธ์–ด ๋ฐœ๋‹ฌ์„ ์œ„ํ•œ ํ›ˆ๋ จ์„ ๋‹จ๊ณ„๋ณ„๋กœ ํ•˜๊ฒŒ๋” ํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
  4. ๋‹จ์–ด๋ฅผ ๋งํ•˜๊ธฐ ์ด์ „์— ๊ธฐ๋ณธ ๋ฐœ์Œ์„ ์ •ํ™•ํ•˜๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ์Šตํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
  5. ์ง‘์—๊ฐ€์„œ๋„ ํ›ˆ๋ จ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. (์ˆ™์ œ ๊ธฐ๋Šฅ)
  6. ์•„์ด์˜ ํ›ˆ๋ จ ํ˜„ํ™ฉ์„ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

ํ”ผ๋“œ๋ฐฑ ๋ฐ›์€ ๋ถ€๋ถ„

  • ์ƒํ™ฉ ์—ฐ์Šต์„ ํ•  ๋•Œ ์•„์ด๋“ค์ด ์‹ค์ƒํ™œ์—์„œ ๋งŽ์ด ์“ฐ๋Š” ๋‹จ์–ด๋‚˜ ๋ฌธ์žฅ๋“ค๋กœ ๊ตฌ์„ฑํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. -> ๋ณ‘์•„๋ฆฌ ๊ฒŒ์ž„ ๋ฌธ์žฅ ์ˆ˜์ •ํ•จ
  • ๋‹จ์–ด ์ด์ „์— ๋ฐœํ™”ํ›ˆ๋ จ์„ ํ• ๋•Œ์— ์ž์Œ๋ณด๋‹ค ๋‹จ๋ชจ์Œ์œผ๋กœ ํ›ˆ๋ จ์„ ๋งŽ์ด ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ๋ชจ์Œ์œผ๋กœ ๊ณ ๋ž˜๊ฒŒ์ž„์„ ๊ตฌ์„ฑํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. -> ๊ณ ๋ž˜๊ฒŒ์ž„ "์•„์—์ด์˜ค์šฐ" ๋ฅผ ํ•œ ์„ธํŠธ๋กœ ํ•˜์—ฌ ๊ตฌ์„ฑํ•จ
  • ๊ฐœ๊ตฌ๋ฆฌ ๊ฒŒ์ž„์—์„œ ์•„์ด์˜ ์–ผ๊ตด์ด ํ™”๋ฉด ์ „์ฒด์ ์œผ๋กœ ๋‚˜์™”์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
  • ๋น™๊ณ ๊ฒŒ์ž„์—์„œ ๊ทธ๋ฆผ๊ณผ ํ•จ๊ป˜ ๋‹จ์–ด๊ฐ€ ๋‚˜์™”์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

์‚ฌ์šฉํ•ด๋ณธ ํ›„๊ธฐ

UCC ์˜์ƒ




7. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

Server

  • AWS EC2

CI/CD

  • Ubuntu 20.04 LTS
  • Nginx 1.18.0
  • OpenSSL 1.1.1f
  • Jenkins 2.455

IDE

  • Android Studio 2023.2.1 patch 1
  • Visual Studio Code 1.85.1
  • IntelliJ IDEA 2023.03.02 (Ultimate Edition)
  • Terminus

FE

  • Flutter SDK 3.19.5
  • React ^18.2.0
  • vite ^5.2.0
  • NodeJs 22.0.0
  • Tailwindcss ^3.4.3

BE

  • Springboot 3.2.5
  • MySQL 8.3.0
  • Java 17

UI/UX

  • Figma

ํ˜•์ƒ / ์ด์Šˆ๊ด€๋ฆฌ

  • GitLab
  • Jira
  • Gerrit

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

  • Mattermost
  • Notion
  • Discord

๊ธฐํƒ€ ์™ธ๋ถ€ Tools

  • speechsuper
  • clova tts
  • clova voice



8. ERD

image


9. ์•„ํ‚คํ…์ฒ˜

image


10. ํ˜‘์—…ํ™˜๊ฒฝ

Git

  • Git branch ์ „๋žต์„ ์„ธ์šฐ๊ณ  ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ Git์„ ๊ด€๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Git branch ์ „๋žต

Jira

  • ์›”์š”์ผ๋งˆ๋‹ค ์Šคํ”„๋ฆฐํŠธ ํšŒ์˜๋ฅผ ํ†ตํ•ด ํ•œ ์ฃผ๊ฐ„์˜ ๋ชฉํ‘ค๋ฅด ์„ธ์šฐ๊ณ  ์ผ์ •์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ, ํŒ€ ํšŒ์˜, ๊ฐœ์ธ ๊ฐœ๋ฐœ ์ผ์ • ๋“ฑ ๊ตฌ์ฒด์ ์ธ ์ผ์ •์„ ์„ธ์šฐ๊ณ  ๊ณ„ํšํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Notion

  • ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จ๋œ ๊ฐ์ข… ๋ฌธ์„œ, ์ •๋ณด, ๋ฌธ์„œ, ๊ธฐํš์„œ ๋“ฑ์˜ ์ž๋ฃŒ๋ฅผ Notion์„ ํ†ตํ•ด ์ž‘์„ฑ ๋ฐ ๊ด€๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Gerrit

  • Gerrit์„ ํ†ตํ•ด ํŒ€์›๋“ค์˜ ์ฝ”๋“œ๋ฅผ commit ๋‹จ์œ„๋กœ ๋ฆฌ๋ทฐํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค.
  • ํŒ€์› ๊ฐ„ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ†ตํ•ด ํด๋ฆฐํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ ์ž ํ•˜์˜€์Šต๋‹ˆ๋‹ค.



11. ํŒ€์› ์†Œ๊ฐœ




12. ์‚ฐ์ถœ๋ฌผ




13. ๋ฐœํ‘œ ์ž๋ฃŒ