Skip to content

๐ŸŽค AI ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ๋ฉด์ ‘ ์—ฐ์Šต ํ”Œ๋žซํผ

Notifications You must be signed in to change notification settings

today-is-first/kkori

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

๐Ÿ—‚๏ธ ํŒ€ ๋ฌธ์„œ & ์ž๋ฃŒ ๋งํฌ

๐Ÿ“’ ํŒ€ ๋…ธ์…˜ ย |ย  ๐Ÿ“š ๊ฐœ๋ฐœ ์œ„ํ‚ค ย |ย  ๐Ÿ“ ๊ทธ๋ผ์šด๋“œ ๋ฃฐ ย |ย 



๐Ÿง‘โ€๐Ÿ’ป ์—ญํ•  ๋ฐ ๊ธฐ์—ฌ

๋‹ด๋‹น์ž ์ฃผ์š” ์ž‘์—…
์ด์ฐฌ - Lighthouse ์„ฑ๋Šฅ ๊ฐœ์„  (LCP 2.5s โ†’ 0.6s)
- ์–ธ๋งˆ์šดํŠธ/๋ฆฌ๋งˆ์šดํŠธ ์‹œ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆผ ๋Š๊น€ ํ˜„์ƒ ํ•ด๊ฒฐ
- ์—ญํ•  ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ์—์„œ ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ(FSD)๋กœ ๋ฆฌํŒฉํ† ๋ง
- ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ ๊ณ ๋„ํ™” ๋ฐ ๋ฆฌํŒฉํ† ๋ง
- OAuth ๋กœ๊ทธ์ธ ๋กœ์ง ์„ค๊ณ„ ๋ฐ ํ”„๋ก ํŠธ ๊ตฌํ˜„
- ํ”„๋ก ํŠธ์—”๋“œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ์ฐธ๊ณ 1 ์ฐธ๊ณ 2
- ๋ฉด์ ‘ ์งˆ๋ฌธ ์„ธํŠธ ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ตฌ์กฐ ์„ค๊ณ„
- ๋ฉด์ ‘ ์งˆ๋ฌธ ์„ธํŠธ ์ƒ์„ฑ / ์ˆ˜์ • ํŽ˜์ด์ง€ ๊ตฌํ˜„
- ๋‚ด๊ฐ€ ๋งŒ๋“  ์„ธํŠธ / ๊ฐ€์ ธ์˜จ ์„ธํŠธ ๋งˆ์ดํŽ˜์ด์ง€ ๊ตฌํ˜„


ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ ์˜์ƒ

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ ์˜์ƒ

๐Ÿ‘‹ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๐ŸŽค "AI ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ๋ฉด์ ‘ ์—ฐ์Šต ํ”Œ๋žซํผ"

Kkori๋Š” ์‚ฌ์šฉ์ž๊ฐ€ WebSocket๊ณผ WebRTC๋ฅผ ํ™œ์šฉํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฉด์ ‘์„ ์—ฐ์Šตํ•˜๊ณ ,
AI ๊ธฐ๋ฐ˜ ์Œ์„ฑ ์ธ์‹๊ณผ ๊ผฌ๋ฆฌ์งˆ๋ฌธ ์ƒ์„ฑ์œผ๋กœ ์‹ค์ œ ๋ฉด์ ‘๊ณผ ๊ฐ™์€ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ๋ฉด์ ‘ ์—ฐ์Šต ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž๋Š” ํ˜ผ์ž ์—ฐ์Šต ๋˜๋Š” ๋‘˜์ด์„œ ์—ฐ์Šต ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ์ธ์‹(STT) ์œผ๋กœ ๋‹ต๋ณ€์„ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  AI๊ฐ€ ๊ผฌ๋ฆฌ์งˆ๋ฌธ์„ ์ž๋™ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • WebRTC ๊ธฐ๋ฐ˜ ์˜์ƒ/์Œ์„ฑ ํ†ตํ™”์™€ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์œผ๋กœ ์ƒ์ƒํ•œ ๋ฉด์ ‘ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ด์š”.


๐Ÿงฉ ๊ณ ๋ฏผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

๐Ÿš€ ํ”„๋ก ํŠธ

Core Web Vital ๊ฐœ์„ ํ•˜๊ธฐ

์‚ฌ์šฉ์ž ์ง„์ž… ์‹œ์  UX ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด CWV๋ฅผ ๊ฐœ์„ ํ•  ํ•„์š”๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

MVP ๊ฐœ๋ฐœ ํ›„ ์ตœ์ดˆ๋กœ LCP๋ฅผ ์ธก์ •ํ–ˆ์„ ๋•Œ 2.5s๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

๊ตฌ๊ธ€์—์„œ๋Š” LCP๊ฐ€ 2.5์ดˆ๊ฐ€ ๋„˜์œผ๋ฉด ๊ฐœ์„ ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์–ด์„œ, LCP ๊ฐœ์„  ํ•„์š”์„ฑ์„ ๋А๊ผˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฐœ์„ , ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŠธ, SEO ๊ฐœ์„  3๊ฐ€์ง€๋ฅผ ์‹œ๋„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ตœ์ข…์ ์œผ๋กœ LCP 2.5์ดˆ์—์„œ 0.6์ดˆ๋กœ ๊ฐœ์„ ํ•˜์˜€๊ณ , Performance, SEO ํ•ญ๋ชฉ์„ 100์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Wiki๋กœ ์ž์„ธํžˆ ๋ณด๊ธฐ

์–ธ๋งˆ์šดํŠธ/๋ฆฌ๋งˆ์šดํŠธ ์‹œ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆผ ๋Š๊น€ ํ˜„์ƒ ํ•ด๊ฒฐ

์ƒˆ๋กœ๊ณ ์นจ๊ณผ ๊ฐ™์€ ์–ธ๋งˆ์šดํŠธ/๋ฆฌ๋งˆ์šดํŠธ ๊ณผ์ •์—์„œ ์‚ฌ์šฉ์ž๊ฐ„ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆผ ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋„คํŠธ์›Œํฌ ๋ณ€๋™ ์‹œ ๊ธฐ์กด ICE Candidate์ด ๋ฌดํšจํ™”๋˜์–ด ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์›์ธ์„ ๋ถ„์„ํ•˜์—ฌ ๊ธฐ์กด PeerConnection ๋ฐ MediaStream ๊ฐ์ฒด๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ปจํ…์ŠคํŠธ์—์„œ ์†Œ๋ฉธ๋˜์–ด, ์žฌ๋งˆ์šดํŠธ ์‹œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด ์ƒ์„ฑ์œผ๋กœ ๊ธฐ์กด ์—ฐ๊ฒฐ์ด ์œ ์ง€๋˜์ง€ ์•Š๋Š” ๊ฒŒ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ํŒŒ์•…ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆผ์„ ๊ด€๋ฆฌํ•˜๋Š” ์Šคํ† ์–ด์— ๋น„๋™๊ธฐ ์ž‘์—…์„ ๊ณต์œ ํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜๊ณ , deferred promise ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ, ๋ฆฌ๋ Œ๋”๋ง/์žฌ๋งˆ์šดํŠธ ์ƒํ™ฉ์—์„œ๋„ ์ค‘๋ณต ์ดˆ๊ธฐํ™” ๋ฐ Race Condition ์ƒํ™ฉ์„ ์ œ๊ฑฐํ•˜์—ฌ ์ผ๊ด€๋œ ์ดˆ๊ธฐํ™”๋ฅผ ๋ณด์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

Wiki๋กœ ์ž์„ธํžˆ ๋ณด๊ธฐ

๐Ÿ›ก๏ธ ๋ฐฑ

๐Ÿ”„ WebSocket ์žฌ์—ฐ๊ฒฐ ์ „๋žต์œผ๋กœ ์•ˆ์ •์ ์ธ ๋ฉด์ ‘ ํ™˜๊ฒฝ ๊ตฌ์ถ•

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

์ „ํ†ต์ ์ธ heartbeat๋‚˜ ping/pong ๋ฐฉ์‹์€ ์ง€์†์ ์ธ ๋ฉ”์‹œ์ง€ ๊ตํ™˜์œผ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ์šฐ๋ฆฌ ์„œ๋น„์Šค์˜ ํŠน์„ฑ์ƒ ๋Œ€๋ถ€๋ถ„์˜ ์ด๋ฒคํŠธ๊ฐ€ broadcast๋˜์–ด ์ฆ‰๊ฐ์ ์ธ ์—ฐ๊ฒฐ ๋Š๊น€ ๊ฐ์ง€๊ฐ€ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

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

JWT ๊ธฐ๋ฐ˜ ์‚ฌ์šฉ์ž ์ธ์ฆ๊ณผ userId ๋งคํ•‘์„ ํ†ตํ•ด ์žฌ์—ฐ๊ฒฐ ์‹œ ์ด์ „ ์„ธ์…˜ ์ƒํƒœ๋ฅผ ์ •ํ™•ํžˆ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์—ฐ๊ฒฐ ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด๋„ ๋น ๋ฅธ ์žฌ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•œ ์•ˆ์ •์ ์ธ ๋ฉด์ ‘ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.

Wiki๋กœ ์ž์„ธํžˆ ๋ณด๊ธฐ


๐Ÿ“š ๋ณต์žกํ•œ ์งˆ๋ฌธ์„ธํŠธ ๋ฒ„์ „ ๊ด€๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ

๋งŒ์•ฝ 1000๋ช…์ด ๊ฐ™์€ "Spring ๋ฉด์ ‘ ์งˆ๋ฌธ 30๊ฐœ"๋ฅผ ๊ฐ์ž ๋ณต์‚ฌํ•ด์„œ ์กฐ๊ธˆ์”ฉ๋งŒ ์ˆ˜์ •ํ•œ๋‹ค๋ฉด, ์‹ค์ œ๋กœ๋Š” ๊ฑฐ์˜ ๋™์ผํ•œ ์งˆ๋ฌธ๋“ค์ด 1000๋ฒˆ ์ค‘๋ณต ์ €์žฅ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

"์ž๋ฐ”๋ž€ ๋ฌด์—‡์ธ๊ฐ€?" ๋ผ๋Š” ์งˆ๋ฌธ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— 1000๋ฒˆ ๋˜‘๊ฐ™์ด ์ €์žฅ๋˜๋Š” ์ƒํ™ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜, ์งˆ๋ฌธ ์„ธํŠธ๋ฅผ '๊ฐ€์ ธ๊ฐ€๊ธฐ' ํ•˜๊ฒŒ ๋˜๋ฉด ์›๋ณธ ์ž‘์„ฑ์ž๊ฐ€ ์งˆ๋ฌธ์„ ์ˆ˜์ •ํ–ˆ์„ ๋•Œ, ๊ทธ๊ฑธ ๋ณต์‚ฌํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์˜ ์งˆ๋ฌธ ์„ธํŠธ๋„ ํ•จ๊ป˜ ๋ฐ”๋€Œ์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์งˆ๋ฌธ๊ณผ ๊ธฐ๋Œ€๋˜๋Š” ๋‹ต๋ณ€์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ๋ณ€ํ•˜์ง€ ์•Š๋„๋ก ๊ด€๋ฆฌํ•˜๊ณ , ํ•ด๋‹น ์งˆ๋ฌธ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฐœ๋ณ„ ์งˆ๋ฌธ ์„ธํŠธ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์งˆ๋ฌธ ์„ธํŠธ์˜ ๋ฒ„์ „๊ณผ ์งˆ๋ฌธ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์งˆ๋ฌธ ์„ธํŠธ ๋งต์„ ํ†ตํ•ด์„œ ๊ณต์œ ๋˜๋ฉด์„œ ๋…๋ฆฝ์ ์ธ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

Wiki๋กœ ์ž์„ธํžˆ ๋ณด๊ธฐ)

๐Ÿ”„ N+1 ๋ฌธ์ œ

๋ฉด์ ‘ ์—ฐ์Šต ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์งˆ๋ฌธ ์„ธํŠธ ๋ชฉ๋ก ์กฐํšŒ๊ฐ€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์‹œ๋‚˜๋ฆฌ์˜ค ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๊ฐœ๋ณ„ ์กฐํšŒํ•˜๋Š” ๋ฐ˜๋ณต์  ์กฐํšŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

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

Wiki๋กœ ์ž์„ธํžˆ ๋ณด๊ธฐ



๐ŸŽฏ ์ฃผ์š” ๊ธฐ๋Šฅ ์†Œ๊ฐœ

๐ŸŽค ์‹ค์‹œ๊ฐ„ ๋ฉด์ ‘ ์„ธ์…˜ ๊ด€๋ฆฌ

"ํ˜ผ์ž๋„, ๋‘˜์ด์„œ๋„! ๋‹ค์–‘ํ•œ ๋ฉด์ ‘ ์—ฐ์Šต ๋ชจ๋“œ"

์‚ฌ์šฉ์ž๋Š” SOLO ๋˜๋Š” PAIR ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•ด ๋ฉด์ ‘์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
WebSocket ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์œผ๋กœ ๋ฉด์ ‘ ์ƒํƒœ๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋™๊ธฐํ™”๋˜๋ฉฐ,
๋ฉด์ ‘๊ด€/๋ฉด์ ‘์ž ์—ญํ• ์„ ์ž์œ ๋กญ๊ฒŒ ๋ฐ”๊ฟ”๊ฐ€๋ฉฐ ์—ฐ์Šตํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋ฉด์ ‘ ์„ธ์…˜ ๊ด€๋ฆฌ



๐Ÿค– AI ๊ธฐ๋ฐ˜ ๊ผฌ๋ฆฌ์งˆ๋ฌธ ์ƒ์„ฑ

"๋‹ต๋ณ€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๋˜‘๋˜‘ํ•œ ์งˆ๋ฌธ!"

์‚ฌ์šฉ์ž์˜ ๋‹ต๋ณ€์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถ„์„ํ•˜์—ฌ
GPT API๋ฅผ ํ†ตํ•ด ๋งž์ถคํ˜• ๊ผฌ๋ฆฌ์งˆ๋ฌธ์„ ์ž๋™ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
STT(Speech-to-Text) ๊ธฐ์ˆ ๋กœ ์Œ์„ฑ ๋‹ต๋ณ€์„ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ ,
์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐœ์ธํ™”๋œ ํ›„์† ์งˆ๋ฌธ์„ ์ œ๊ณตํ•ด์š”.

AI ๊ผฌ๋ฆฌ์งˆ๋ฌธ



๐Ÿ’ฌ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ์‹œ์Šคํ…œ

"๋ฉด์ ‘ ์ค‘์—๋„ ์†Œํ†ต์€ ๊ณ„์†๋˜์–ด์•ผ์ฃ !"

WebSocket ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์œผ๋กœ ๋ฉด์ ‘ ์ง„ํ–‰ ์ค‘
์ฐธ์—ฌ์ž๋“ค์ด ์ฆ‰์‹œ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐฉ๋ณ„ ์ฑ„ํŒ…๋ฐฉ ๊ด€๋ฆฌ์™€ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์œผ๋กœ
์›ํ™œํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์ง€์›ํ•ด์š”.

์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ์‹œ์Šคํ…œ


๐Ÿ” ์นด์นด์˜ค ์†Œ์…œ ๋กœ๊ทธ์ธ

"๊ฐ„ํŽธํ•˜๊ณ  ์•ˆ์ „ํ•œ ๋กœ๊ทธ์ธ!"

์นด์นด์˜ค OAuth2 ์—ฐ๋™์œผ๋กœ ๋ณต์žกํ•œ ํšŒ์›๊ฐ€์ž… ์ ˆ์ฐจ ์—†์ด ์›ํด๋ฆญ์œผ๋กœ ๋น ๋ฅธ ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
JWT ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์œผ๋กœ ๋ณด์•ˆ์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ํ†ตํ•ด ์•ˆ์ •์ ์ธ ์„ธ์…˜ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•ด์š”.

์นด์นด์˜ค ์†Œ์…œ ๋กœ๊ทธ์ธ

๐Ÿ‘ค ๊ฒŒ์ŠคํŠธ ๋กœ๊ทธ์ธ

"ํšŒ์›๊ฐ€์ž… ์—†์ด๋„ ๋ฐ”๋กœ ์ฒดํ—˜!"

์ต๋ช… ์‚ฌ์šฉ์ž๋„ ์ฆ‰์‹œ ๋ฉด์ ‘ ์—ฐ์Šต์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ž„์‹œ ๊ฒŒ์ŠคํŠธ ๊ณ„์ • ์ƒ์„ฑ์œผ๋กœ ์„œ๋น„์Šค ์ œํ•œ ์—†์ด ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ž์œ ๋กญ๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.
๋ถ€๋‹ด ์—†๋Š” ์„œ๋น„์Šค ์ฒดํ—˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ต๋ช… ๊ฒŒ์ŠคํŠธ ๋กœ๊ทธ์ธ

๐Ÿ“‹ ์งˆ๋ฌธ ์„ธํŠธ ์กฐํšŒ

"๋ชจ๋“  ์งˆ๋ฌธ ์„ธํŠธ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ!"

ํƒœ๊ทธ๋ณ„ ํ•„ํ„ฐ๋ง ์‹œ์Šคํ…œ์œผ๋กœ ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰๊ณผ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋กœ ํšจ์œจ์ ์ธ ์งˆ๋ฌธ ์„ธํŠธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
**๋‚ด ์งˆ๋ฌธ์„ธํŠธ(/my)**์™€ ๊ณต๊ฐœ ์งˆ๋ฌธ์„ธํŠธ ๋ถ„๋ฆฌ ์กฐํšŒ๋กœ ์ฒด๊ณ„์ ์ธ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์š”.

์งˆ๋ฌธ ์„ธํŠธ ์กฐํšŒ

โž• ์งˆ๋ฌธ ์„ธํŠธ ์ƒ์„ฑ

"๋‚˜๋งŒ์˜ ๋งž์ถค ์งˆ๋ฌธ ์„ธํŠธ ๋งŒ๋“ค๊ธฐ!"

์ง๊ด€์ ์ธ UI๋กœ ์งˆ๋ฌธ๊ณผ ์˜ˆ์ƒ ๋‹ต๋ณ€์„ ํ•œ ๋ฒˆ์— ๋“ฑ๋กํ•˜๊ณ , ํƒœ๊ทธ ์‹œ์Šคํ…œ์œผ๋กœ ์ฒด๊ณ„์ ์ธ ๋ถ„๋ฅ˜๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๊ณต๊ฐœ/๋น„๊ณต๊ฐœ ์„ค์ •์œผ๋กœ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€์˜ ๊ณต์œ  ์—ฌ๋ถ€๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.

์งˆ๋ฌธ ์„ธํŠธ ์ƒ์„ฑ

๐Ÿ“ฅ ์งˆ๋ฌธ ์„ธํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ

"๋งˆ์Œ์— ๋“œ๋Š” ์งˆ๋ฌธ์„ ๋‚ด ๊ฒƒ์œผ๋กœ!"

๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๊ณต์œ ํ•œ ์งˆ๋ฌธ ์„ธํŠธ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค๋ฉด ํด๋ฆญ ํ•œ ๋ฒˆ์œผ๋กœ ๋‚ด ๊ณ„์ •์— ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ œ๋ชฉ๊ณผ ์„ค๋ช…์„ ์ž์œ ๋กญ๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.

์งˆ๋ฌธ ์„ธํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ๊ธฐ

โœ๏ธ ์งˆ๋ฌธ ์„ธํŠธ ์ˆ˜์ •

"๊ธฐ์กด ์งˆ๋ฌธ์˜ ๋‹ต์„ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”!"

๋‚ด ์†Œ์œ ์˜ ์งˆ๋ฌธ ์„ธํŠธ๋ฅผ ์ˆ˜์ •ํ•ด ๊ธฐ์กด ๋‹ต๋ณ€์„ ๋” ์ข‹๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ ์„ธํŠธ ์ˆ˜์ •

๐Ÿ—‘๏ธ ์งˆ๋ฌธ ์„ธํŠธ ์‚ญ์ œ

"์‹ค์ˆ˜๋„ ๊ฑฑ์ •์—†๋Š” ์†Œํ”„ํŠธ ์‚ญ์ œ!"

๋‚ด๊ฐ€ ๋งŒ๋“  ์งˆ๋ฌธ ์„ธํŠธ๋งŒ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์งˆ๋ฌธ ์„ธํŠธ๋Š” ์‚ญ์ œํ•ด ๋‚ด ์งˆ๋ฌธ ์„ธํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ ์„ธํŠธ ์‚ญ์ œ


โœ… ์„œ๋น„์Šค ๊ตฌ์กฐ๋„

Kkori ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜



โš’๏ธ Tech Stacks

๋ถ„๋ฅ˜ ๊ธฐ์ˆ  ์Šคํƒ
Frontend My Skills
Backend My Skills
Database / Infra My Skills
๋ฐฐํฌ My Skills
ํ˜‘์—… / ๊ฐœ๋ฐœ๋„๊ตฌ My Skills


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

์ด์ฐฌ ๊น€ํ˜•์ง„ ๊ฐ•์ง„๊ทœ ๋ฐฐ์ˆ˜ํ•œ ์œ ์œค์ง€ ์žฅ๋™ํ˜„
Frontend Frontend Backend Backend Backend Backend
@today-is-first @hyeongjin-kim @jin0410 @SwnBae @llcodingll @SuitGGam

About

๐ŸŽค AI ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ๋ฉด์ ‘ ์—ฐ์Šต ํ”Œ๋žซํผ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages