COVID 19 ๋ฑ์ฅ ์ดํ์ '์ธํํธ'์ ์๋๋ฅผ ์ํ ๐ง์์ด์ค ๋ธ๋ ์ดํน ํ์ ์น ์๋น์ค๐จโ๐ป๐ฉโ๐ป (๊ฐ๋ฐ ๊ธฐ๊ฐ: 22.03 - 22.05)
๐โโ๏ธ ์ฑํ
๋ฐฉ์์ ์์ ๋ก์ด ํ์ ํ์๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๐โโ๏ธ ์์ด์ค ๋ธ๋ ์ดํน์ ์ํด ์ด์ฑ ๊ฒ์์ ์งํํ ์ ์์ต๋๋ค.
ย
ย ย
ย
1. WebRTC ๐
WebRTC(Web Real-Time Communications)๋, ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์ฌ์ดํธ๋ค์ด ๋ณ๋์ ์ํํธ์จ์ด ์์ด ์์ฑ, ์์ ๋ฏธ๋์ด ํน์ ํ ์คํธ, ํ์ผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ P2P ๋ฐฉ์์ผ๋ก ๋ธ๋ผ์ฐ์ ธ๋ผ๋ฆฌ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๋ง๋ JavaScript ๊ธฐ๋ฐ ์คํ์์ค์ ๋๋ค. ๐ป
WebRTC๋ Latency๊ฐ ์งง๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋๋ฌธ์ ์ง์ฐ์๊ฐ์ด ๊ฑฐ์ ์๋ REAL-TIME ๋ฐฉ์ก์ด ๊ฐ๋ฅํด์ง๋๋ค. ๋ณ๋ค๋ฅธ ๋ฏธ๋์ด ์ก์ถ ๊ด๋ จ ์ํํธ์จ์ด์ ์ค์น ์์ด ์ค์๊ฐ ์ปค๋ฎค๋ํฐ๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ๋ ์ฅ์ ์ ๋๋ค. ๐
ํ์ง๋ง ์ฌ๋๋ค์ด ์ ์ฌ์ฉํ์ง ์๋ ๋ธ๋ผ์ฐ์ ๋ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ์ง ์๋ ์ฌ์ฉ์๋ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ๋ํ P2P ํต์ ์ ํ๊ธฐ ์ํด์๋ ์ฌ์ฉ์์ IP์ฃผ์๋ฅผ ์์์ผ ํ๋๋ฐ, ์ด๋ฅผ ์ํด STUN/TURN ์๋ฒ๊ฐ ํ์ํ๋ค๋ ๊ฒ ์ญ์ ๋จ์ ์ด ๋ ์ ์์ต๋๋ค. ๐ค
ย
WebSocket์ ํ๋์ TCP ์ ์์ ์ ์ด์ค ํต์ ์ฑ๋์ ์ ๊ณตํ๋ ์ปดํจํฐ ํต์ ํ๋กํ ์ฝ์ ๋๋ค. ์ฝ๊ฒ ์ด์ผ๊ธฐํ๋ฉด ์น ๋ฒ์ ์ TCP๋๋ Socket์ด๋ผ๊ณ ์ดํดํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ Socket Connection์ ์ ์งํด์ ์ธ์ ๋ ์๋ฐฉํฅ ํต์ ๋๋ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํด์ง๋๋ก ํ๋ ๊ธฐ์ ๋ก, ๋ณธ ํ๋ก์ ํธ์์๋ ํ์์ฑํ ๊ตฌํ์ ์ํ์ฌ ์ฌ์ฉ๋์์ต๋๋ค. ๐น
์ค์๊ฐ ํต์ ์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ธ์๋ ํด๋ผ์ด์ธํธ์ ํ ๋ฒ ์ฐ๊ฒฐ์ด ๋๋ฉด ๊ณ์ ๊ฐ์ ๋ผ์ธ์ ์ฌ์ฉํด์ ํต์ ํ๋ฏ๋ก HTTP์ TCP์ฐ๊ฒฐ ํธ๋ํฝ์ ํผํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๐ฅ
ย
STT(Speech-to-Text)๋ ์ฌ๋์ด ๋งํ๋ ์์ฑ ์ธ์ด๋ฅผ ์ปดํจํฐ๊ฐ ํด์ํ์ฌ ๊ทธ ๋ด์ฉ์ ๋ฌธ์ ๋ฐ์ดํฐ๋ก ์ ํํ๋ ์ฒ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค. ์ ๋ ฅ ์์ฑ์ ์ ์ฒ๋ฆฌํ ํ, ๋ง์ ์์ฑ ๋ฐ์ดํฐ์ ์ํด ํธ๋ ์ด๋๋ ๋ชจ๋ธ๊ณผ ๋น๊ตํ์ฌ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์, ์ผ๋ง๋ ๋ค์ํ ์์ฑ ๋ฐ์ดํฐ๋ก ํธ๋ ์ด๋์ ํ๋์ง, ์ผ๋ง๋ ํนํ๋ ์๊ณ ๋ฆฌ์ฆ์ ํตํ์ฌ ๋ชจ๋ธ์ ์์ฑํ๋์ง ๋ฑ ๋ค์ํ ๊ธฐ์ ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ค๋ฅด๊ฒ ์ถ๋ ฅ๋ฉ๋๋ค.๐๏ธ
๋ํ์ ์ธ STT API ์๋น์ค๋ก๋ Google Cloud Speech API, Kakao Speech API, Naver CSR, Microsoft Azure STT ๋ฑ์ด ์์ต๋๋ค. ๋ณธ ํ๋ก์ ํธ์์๋ Web Speech API๋ฅผ ํ์ฉํ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ ๊ฐ๋ฅํ STT API๋ก ์คํ์์ค์ด๊ณ , MDN ๋ฌธ์๊ฐ ์์ฑ๋์ด ์์ด ์ฌ์ฉ์ ์ฉ์ดํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๐
ย
- nodejs: v16.6.1
- express: v4.17.3
- MySQL
- Docker
- AWS CLI: v2
- AWS EC2 ย
ย
$ npm install
$ yarn start $ npm start
$ yarn build
ย
์ด๋ฆ | github | ์ญํ | ์๊ฐ |
---|---|---|---|
๊น์น์ง | ๐๋งํฌ | ํ๋ก ํธ์๋ | ์ด๋์ ๋ ๋ง๋ค์ด์ง ์ฝ๋ ์์์๋ง ์์ ํ๋ค๊ฐ ํ๋ก์ ํธ์ initialization์ ์ง์ ํด๋ณผ ์ ์์๋ ๊ธฐํ์ฌ์ ๋ป๊น์๋ค. ํนํ ํ์ ํตํ ๊ธฐ์ ์ ์๋ฒ๋ถํฐ ๊ตฌํํด๋ณผ ์ ์์ด์ WebSocket์ ๋์์ ๋ํด ์ดํดํ ์ ์๊ฒ ๋์๋ค. ์๋๋ Google Cloud์ STT ๊ธฐ์ ๋ง ๊ฒฝํํด๋ดค์๋๋ฐ ๊ฝค ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก React์์ STT ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์๋ ๊ฒ์ด ์ ๊ธฐํ๋ค. ๋ค๋ฅธ ํ๋ก ํธ ์๋ ์์ง๋์ด๊ฐ ์์๊ธฐ ๋๋ฌธ์ ์๋ฒ ์์ง๋์ด๋ค๊ณผ ์ํตํ๋ ๋ฒ์ ๋ง์ ์ํ์ฐฉ์ค๋ฅผ ํตํด ๋ฐฐ์ด ๊ฒ ๊ฐ๋ค. ์ด๋ฐ ๊ฒฝํ์ด ์์ผ๋ก์ ์์ ์ ํฐ ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. |
๊น์์ง ย ย ย ย ย ย ย ย | ๐๋งํฌ ย ย ย ย ย ย | ย ํ์ฅ ย ๋ฐฑ์๋ ๋์์ธ ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย |
Node.js๋ฅผ ํ์ฉํ ๋ฐฑ์๋ ๊ฐ๋ฐ๊ณผ ์ค์๊ฐ ์น์์ผ ํต์ ๋ค๋ฃจ๊ธฐ, STT API ์ฌ์ฉํ๊ธฐ, ์๋ฒ ๋ฐฐํฌ, ๋์ปค ์ฌ์ฉ, ์น ๋์์ธ ๋ฑ ์๋กญ๊ณ ๋ค์ํ ๊ฒฝํ์ ํ ์ ์์๋ ํ๋ก์ ํธ์ ๋๋ค. ์ด๋ ต๊ฒ ๋๊ปด์ง๋ ๋ถ๋ถ๋ ์์์ง๋ง ๊ทธ๋งํผ ๋ ์ฑ์ฅํ ์ ์์์ต๋๋ค. ํ์๋ค๊ณผ ํจ๊ป ์๋ง์ ์๋ฌ์ ์ญ๊ฒฝ์ ์ด๊ฒจ๋ด๊ณ ํธํก์ ๋ง์ถ๋ฉด์ ํ์ํฌ๊ฐ ์ด๋ค ๊ฑด์ง ๋๊ผ์ต๋๋ค. ๐ฑ |
๋ ธ์ง์ฃผ ย ย ย ย ย ย ย ย | ๐๋งํฌ ย ย ย ย ย ย | ๋ฐฑ์๋ ย ย ย ย ย ย ย ย | ์ด๋ฒ ํ๋ก์ ํธ๋ก Postman, DataGrip, Figma ๋ฑ ์๋ก ์ ํ๋ ํด๋ค์ ์ฌ์ฉ์ ์ต์ํด์ง ์ ์์์ต๋๋ค. ํ์๋ค๊ณผ ์ฝ๋๋ฅผ ๋ฆฌ๋ทฐํ๋ฉฐ Node.js์ ๋ผ์ฐํ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์ ๊ดํด ๊ณต๋ถํ ์ ์์๊ณ , ํ๋ก์ ํธ๋ฅผ ์์ธํ ๊ธฐํํ๊ณ ์ญํ ์ ๋ถ๋ดํ๋ ๊ณผ์ ์ ํตํด ํ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์์ต๋๋ค. ์ข์ ํ์๋ค๊ณผ ํจ๊ปํด ๋์ฑ ๋ง์ด ๋ฐฐ์ธ ์ ์์๋ ๋ป๊น์ ์๊ฐ์ด์์ต๋๋ค. ๐ |
์ด์๋ฏผ | ๐๋งํฌ | ๋ฐฑ์๋ | Node.js + TypeScript + Express๋ผ๋ ์๋ก์ด ํ๋ ์์ํฌ์ ๋์ ํ๋ฉด์ ์ด๋ ต๊ฒ ๋๊ปด์ง๋ ๋ถ๋ถ๋ค์ด ๋ง์์ง๋ง, ๋๋ถ์ ๋์ฑ ์ฑ์ฅํ ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฐฑ์๋ ๊ฐ๋ฐ ์ด์ธ์๋ ์์ด์ดํ๋ ์ ์ ์๊ณผ WebRTC, STT API, AWS ์ฐ๋ ๋ฑ ๋ค์ํ ๊ฒฝํ์ ํด๋ณผ ์ ์์๊ธฐ์ ์๋ฏธ๊ฐ ํฐ ํ๋ก์ ํธ์์ต๋๋ค. ์์ด๋์ด๋ฅผ ๋๋ฒจ๋กญํ๊ณ , ๊ตฌํ์ ์งํํ๋ ๊ณผ์ ์์ ์ด๋ ค์ด ์ ๋ค๋ ๋ง์์ง๋ง ํ์๋ค๊ณผ ํจ๊ป ํ๋ํ๋ ํด๊ฒฐํด ๋๊ฐ๊ธฐ์ ๋์ฑ ๊ฐ์ง ๊ฒฝํ์ด์์ต๋๋ค. โจ |