-
Notifications
You must be signed in to change notification settings - Fork 4
๐น ๋์์ ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ ํ๋กํ ์ฝ์ ์์๋ณด์
์๋น์ค์ ๋ ํผ๋ฐ์ค๋ก Zoom๊ณผ ์น์ง์ง ๋ฑ ์ฌ๋ฌ ์คํธ๋ฆฌ๋ฐ ์๋น์ค์ ๋์์๋ฆฌ๋ฅผ ์กฐ์ฌํ๋ ์ค, ๊ฐ ์๋น์ค๋ณ๋ก ์๋ก ๋ค๋ฅธ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ ์ ์์๋ค.
์์ ์ก์ถ์ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์ ์กฐ์ฌํ๊ณ ์ฐ๋ฆฌ ์๋น์ค์ ์ ํฉํ ํ๋กํ ์ฝ์ ์ ์ ํ๊ณ ์ ํ๋ค!
- ๋์์ ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ ํ๋กํ ์ฝ
-
HLS - ์ง์ฐ์๊ฐ์ด ๋์ง๋ง ํธํ์ฑ์ด ์ข์ (์น์ง์ง) - ๋ฏผ์ง, ์๊ธธ
- ์ ๋ค๋ฅธ ํ๋กํ ์ฝ์ ๋นํด ์ง์ฐ์๊ฐ์ด ๊ธธ๊น?
- ์ด๋ป๊ฒ ์ง์ฐ์๊ฐ์ ๋ฎ์ถ ์ ์์๊น?
- WebRTC - ์ง์ฐ์๊ฐ์ด ๋ฎ์ง๋ง P2P์ ์ ํฉ (๊ตฌ๊ธ๋ฏธํธ) - ์ฐฝํ
- RTMP - ์ง์ฐ์๊ฐ ๋ฎ์ (ํธ์์น) - ์ค์, ์ง์
- Dynamic Adapltive Streaming over HTTP
- SRT
- RTSP
-
HLS - ์ง์ฐ์๊ฐ์ด ๋์ง๋ง ํธํ์ฑ์ด ์ข์ (์น์ง์ง) - ๋ฏผ์ง, ์๊ธธ
์คํธ๋ฆฌ๋ฐ์ ์์์ด๋ผ๊ณ ๋งํ ์ ์๋ค. 1996๋ ๋ฑ์ฅํ์์ผ๋ฉฐ RTSP๊ฐ ๋ฑ์ฅ ์ ์์, ์์ ๋ฑ ๋ฉํฐ๋ฏธ๋์ด ์ ๋ณด๋ฅผ ์์ ํ ๋ค์ด๋ก๋ํ ํ ์์ฒญํ ์ ์์์.
๋ค๋ง ์ค๋๋ ๊ธฐ์ ์ด๋ผ ํ์ง ์ ํ, ๋ฏธ๋์ด ์๋ฒ ์ด์์ ๋ํ ๋์ ๋์ด๋ ๋ฑ์ผ๋ก ๋ํ๋๊ณ ์๋ ์ค์ .
- ์ ํ์ HLS๊ฐ ๊ฐ๋ฐ๋๊ธฐ ์ด์ ์ RTSP ๊ธฐ๋ฐ์ QTSS๋ก ๋น๋์ค์ ์ค๋์ค๋ฅผ ์ฒ๋ฆฌํ์์
- ํ์ง๋ง QTSS๊ฐ ์ ํ ์ํ๊ณ์์๋ง ์ต์ ํ๊ฐ ๋์ด์์๊ธฐ ๋๋ฌธ์ ํธํ์ฑ ์ด์ ๊ฐ ์์์
- RTSP๋ HTTP ๊ธฐ๋ฐ์ด ์๋ TCP, UDP ์ฌ์ฉ โ ๋คํธ์ํฌ ์ํ๋ ๋ฐฉํ๋ฒฝ ๋ฌธ์ ๋ก ์ธํด HTTP๋ณด๋ค ํธํ์ฑ ๋ฎ์
- CCTV์์ ์ฌ์ฉํ๊ณ ์๋ ํ๋กํ ์ฝ
์คํธ๋ฆฌ๋จธ โ rtmp โ ์๋ฒ โ hls โ ํด๋ผ์ด์ธํธ
์ฐธ๊ณ ์๋ฃ
https://medium.com/@delivalue100/hls-http-live-streaming-4fb1d2992d57
-
RTSP๋ ๊ณ ์ ๋ ๋นํธ๋ ์ดํธ๋ก ์ฝํ ์ธ ์คํธ๋ฆฌ๋ฐ์ ์ต์ ํ
- ๊ณ ์ ๋นํธ๋ ์ดํธ์ ๊ฒฝ์ฐ ํ๊ฐ์ง ์๋๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค ๋ณด๋ ๋คํธ์ํฌ ์ํ๊ฐ ๋ณํ ๋์๋ ๋์ผํ ๋นํธ๋ ์ดํธ๋ก ์คํธ๋ฆฌ๋ฐ์ ์ ์งํด์ผํ๋ค๋ ๋ฌธ์ ๊ฐ ์์
โ ๋ฐ๋ผ์ ํธํ์ฑ์ด ๋์ HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, ๋คํธ์ํฌ ์ํ์ ๋ฐ๋ผ ๋น๋์ค ํ์ง์ ์ค์๊ฐ์ผ๋ก ์กฐ์ ๊ฐ๋ฅํ ๊ฐ๋ณ ๋นํธ๋ ์ดํธ ๊ธฐ๋ฅ๊น์ง ๋์ ๋ ๊ฒ์ด HLS
- HTTP๊ธฐ๋ฐ์ ๋จ๋ฐฉํฅ ๋ฏธ๋์ด ์คํธ๋ฆฌ๋ฐ ํ๋กํ ์ฝ
- ์ผ๋ฐ ์น์๋ฒ + CDN์ ํ์ฉํด ์ฝํ ์ธ ๋ฐฐํฌ
- [๋น๋์ค โ HTTP ํ์ผ ์กฐ๊ฐ์ผ๋ก ๋๋ โ ์ ์ก โ] ์ฌ์
- HTTP ํ์ผ๋ก ๋๋๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์ ์ฉ ์๋ฒ๊ฐ ํ์ํ์ง ์๋ค.
- m3u8 : ๋ฉํ๋ฐ์ดํฐ
- ์์ ํ๊ทธ
- hls ํ๋กํ ์ฝ ๋ฒ์
- ์ธ๊ทธ๋จผํธ์ ์ต๋ ๊ธธ์ด
- ์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ์ ์ํ์ค ๋ฒํธ
- ์ค์ ์ธ๊ทธ๋จผํธ์ ๊ธธ์ด, ๋ค์ ์ธ๊ทธ๋จผํธ ์ธ๋ฑ์ค
- ์ข ๋ฃ ํ๊ทธ
- ts : ์ค์ ๋น๋์ค์ ์กฐ๊ฐ๋ค์ ๋ด๊ณ ์๋ ์ปจํ ์ด๋
์ง์ฐ์๊ฐ์ด ๊ธด ๊ฒ์๋ ๋ค์ํ ์์ธ์ด ์์์
- UDP ๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํ๋กํ ์ฝ๋ค๊ณผ ๋ฌ๋ฆฌ HLS ๋
TCP๋ฅผ ์ฌ์ฉํ๋ค. - HLS ๋ ์คํ๋ ค ์ค์๊ฐ์ ์ง์คํ๊ธฐ ๋ณด๋ค๋ ๋ฐ์ดํฐ์ ์ ๋ขฐ์ฑ๊ณผ ํจ์จ์ฑ์ ์ง์คํ ํ๋กํ ์ฝ์ด๋ค.
- ๋์ ๋ฐฉ์์ผ๋ก ์ธํ ์ง์ฐ
- ์๋ฒ์์ ์คํธ๋ฆฌ๋ฐํ ๋น๋์ค ํ์ผ์ ์งง์ ์ธ๊ทธ๋จผํธ(2~10์ด)๋ก ๋ถํ โ ์ฌ์์ ์์ํ๊ธฐ ์ํด์ ์ ์ด๋ ๋ช ๊ฐ์ ์ธ๊ทธ๋จผํธ๊ฐ ํ์ํด ์ด๊ธฐ ๋ฒํผ๋ง ์๊ฐ์ด ๊ธธ์ด์ง (์ธ๊ทธ๋จผํธ ๊ธธ์ด๊ฐ ๊ธธ์๋ก ์ง์ฐ์ด ์ปค์ง ์ ์์) โ CDN์ผ๋ก ์ธ๊ทธ๋จผํธ ์บ์ฑํด์ ๋ฐ์ดํฐ ์ ์ก ์๊ฐ์ ๊ฐ์ ํ๋ คํจ
- HTTP ๊ธฐ๋ฐ ์์ฒญ-์๋ต ์ง์ฐ
- HTTP ๊ธฐ๋ฐ์ด๋ฏ๋ก ๊ฐ ์ธ๊ทธ๋จผํธ ๋ง๋ค ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ํ์. ๋คํธ์ํฌ์ ์ํ๋ ์๋ต ์๋์ ์ข ์
- ๊ฐ๋ณ ๋นํธ๋ ์ดํธ ์ง์ฐ
- ๋คํธ์ํฌ ์ํ์ ๋ฐ๋ผ ์ต์ ์ ๋นํธ๋ ์ดํธ๋ฅผ ์ ํํ๊ธฐ ์ํ ๋ชจ๋ํฐ๋ง ์งํ โ ์ด ๊ณผ์ ์์ ๋นํธ๋ ์ดํธ๋ฅผ ์ ํํ๋ฉฐ ์ง์ฐ์ด ๋ฐ์ํจ โ ์ง์ฐ์ด ์์ฒญ ํ๊ฒฝ์ ๊ฐ์ ํ์ง๋ง ์ค์๊ฐ์ฑ์์๋ ๋ถ๋ฆฌํจ!
- CDN ์บ์ฑ๊ณผ ์๋ฒ ์ต์ ํ ์ด์
- ์ธ๊ทธ๋จผํธ ํ์ผ์ด ์ฌ๋ฌ ์๋ฒ์ ์บ์๋์ด๋ ์ฌ์ ํ HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์ํด ์ถ๊ฐ์ ์ธ ํต์ ๊ณผ์ ํ์
- ํนํ ์ฌ์ฉ์ ๋ง์ ๋ผ์ด๋ธ๋ฐฉ์ก์์๋ CDN์ด ์ ์ ํ ๋ถ๋ฐฐ๋์ง ์์ผ๋ฉด ์ง์ฐ ๋ฐ์
โ ๋ฐ๋ผ์ HLS๋ ๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ๋ณด๋ค๋ ์ ์ ๋น๋์ค ํ๋ ์ด์ด์ ๋ ์ ํฉ
โ ๊ฒฐ๊ตญ ํด๋ผ์ด์ธํธ๊ฐ ํ๋ ์ด๋ฆฌ์คํธ์ ๋ฏธ๋์ด ์ธ๊ทธ๋จผํธ๋ค์ ์์ฐจ์ ์ผ๋ก GETํ๊ณ ๋ง์ง๋ง์ฏค์ ์๋ก์ด ์ธ๊ทธ๋จผํธ๋ฅผ ์์ฒญํ๋ ํ๋ฆ์ด๊ธฐ ๋๋ฌธ์ ๋จ๋ฐฉํฅ ํต์ ์ผ๋ก ๋์ํ๋ค.
+) ๋ค๋ก ๋๋ ค๋ณด๊ธฐ ์๋๋ ์ด์ ..? ๋๋ ค๋ณด๊ธฐ ์์ฒด์ ๋ฆฌ์์ค ์๋ชจ๊ฐ ํฐ๋ฏ. ๊ทธ๋ฅ ๋ฐฉ์ก ์ข ๋ฃ ํ ๋ค์๋ณด๊ธฐ ๊ธฐ๋ฅ์ ๋ฃ๋๊ฒ ์ด๋
https://www.cdnetworks.com/ko/blog/media-delivery/http-live-streaming/
- ์ธ๊ทธ๋จผํธ ๊ธธ์ด ๋จ์ถ
- 6์ด ์ด์์ ๊ธฐ๋ณธ์ ์ธ ์ธ๊ทธ๋จผํธ ๊ธธ์ด๋ฅผ 2~1์ด๋ก ์ค์ด๊ธฐ
- ์งง์์ง์๋ก ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด์ ์์ฒญ์ด ๋ง์ ๋ถํ๊ฐ ์๊ธธ ์ ์์ผ๋ ๊ท ํ์ ์ ์ฐพ์์ผํจ
- 6์ด ์ด์์ ๊ธฐ๋ณธ์ ์ธ ์ธ๊ทธ๋จผํธ ๊ธธ์ด๋ฅผ 2~1์ด๋ก ์ค์ด๊ธฐ
- LL-HLS ๋์
- ์ ํ์ด ๊ฐ๋ฐํ HLS์ ์ด์ ์ง์ฐ ๋ฒ์
- ์ธ๊ทธ๋จผํธ ๋ด์์ ๋ ์์ ๋จ์์ธ ํํธ๋ก ๋๋ ์ ์กํ๋ฉฐ, ์ธ๊ทธ๋จผํธ๊ฐ ์์ ํ ์ค๋น๋์ง ์์๋ ์ผ๋ถ๋ฅผ ๋จผ์ ์ ์กํจ
- ์ธ๊ทธ๋จผํธ ํ๋ฆฌํ์นญ
- ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฏธ๋ฆฌ ์์ธกํ๊ณ ์ฌ์ ๋ค์ด๋ก๋
- ์ก์ถ ํ๊ฒฝ ์ต์ ํ
- ์น์ง์ง ๊ณต์ง์ฌํญ์ ๋ณด๋ ์ก์ถ ํ๋ก๊ทธ๋จ์ ์ต์ ํํ๋ ๋ฐฉ๋ฒ๋..
- ์คํธ๋ฆฌ๋จธ๊ฐ ํคํ๋ ์ ๊ฐ๊ฒฉ์ ๋๋ฌด ์งง๊ฒ ์ค์ โ์ธ๊ทธ๋จผํธ๊ฐ ๋๋ฌด ์งง์์ง, ์๋ฒ ๋ถํ โ ๋ฒํผ๋ง ๋ง์์ง ์ด์์ธ๋ฏ
-
๋นํธ๋ ์ดํธ
-
m3u8ํ๋ ์ด๋ฆฌ์คํธ ํ์ผ ์์ -
EXT-X-STREAM-INFํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋นํธ๋ ์ดํธ๋ฅผ ์ค์ #EXTM3U #EXT-X-VERSION:3 #EXT-X-STREAM-INF:BANDWIDTH=1500000 # ์ด ์คํธ๋ฆผ์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ # BANDWIDTH=1500000์ ์ด ์คํธ๋ฆผ์ ๋์ญํญ ์๊ตฌ ์ฌํญ์ด 1,500,000 ๋นํธ(1.5 Mbps)์์ ๋ํ๋ stream_1500.m3u8 -
์ถ๊ฐ์ ์ธ ํ๊ทธ ์ค๋ช
-
#EXT-X-DISCONTINUITY: ์ด์ ์ธ๊ทธ๋จผํธ์์ ์ฐ์์ฑ์ด ๋์ด์ง์ ํ์ํฉ๋๋ค. ์ด๋ ๊ด๊ณ ์ ๊ฐ์ ๋ค๋ฅธ ์ ํ์ ๋ฏธ๋์ด๋ฅผ ์ฝ์ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
m3u8 #EXT-X-DISCONTINUITY- ์์: ์ด ํ๊ทธ ๋ค์ ์ค๋ ์ธ๊ทธ๋จผํธ๋ ์ด์ ๋ฏธ๋์ด์๋ ๋ค๋ฅด๊ฒ ์ธ์ฝ๋ฉ๋์๊ฑฐ๋ ๋ค๋ฅธ ํ์ ์ ๋ฏธ๋์ด์์ ์๋ฏธํฉ๋๋ค.
-
#EXT-X-STREAM-INF: ๋ค์ค ๋นํธ๋ ์ดํธ ์คํธ๋ฆผ ๋๋ ์ ์ํ ์คํธ๋ฆฌ๋ฐ์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ๋ฌ ๋นํธ๋ ์ดํธ๋ฅผ ๊ฐ์ง ๋์ฒด ์คํธ๋ฆผ์ด ์์ ๋, ํด๋ผ์ด์ธํธ๊ฐ ๋คํธ์ํฌ ์ํ์ ๋ฐ๋ผ ์ ์ ํ ์คํธ๋ฆผ์ ์ ํํ ์ ์๋๋ก ํฉ๋๋ค.
m3u8 #EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=640x360 low.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1500000,RESOLUTION=1280x720 medium.m3u8-
์์: 800kbps, 1500kbps๋ก ๊ฐ๊ฐ ๋ค๋ฅธ ํด์๋์ ์คํธ๋ฆผ์ ์ ๊ณตํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋คํธ์ํฌ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ
m3u8ํ์ผ์ ์ ํํ๊ฒ ๋ฉ๋๋ค.
-
์์: 800kbps, 1500kbps๋ก ๊ฐ๊ฐ ๋ค๋ฅธ ํด์๋์ ์คํธ๋ฆผ์ ์ ๊ณตํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋คํธ์ํฌ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ
-
#EXT-X-KEY: ์ธ๊ทธ๋จผํธ์ ์ํธํ ํค ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. HLS์์๋ ์ฝํ ์ธ ๋ณดํธ๋ฅผ ์ํด AES-128 ์ํธํ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๊ทธ๋จผํธ๋ฅผ ์ํธํํ ์ ์์ต๋๋ค.
m3u8 #EXT-X-KEY:METHOD=AES-128,URI="https://example.com/key"-
์์: ์ธ๊ทธ๋จผํธ๋ฅผ AES-128๋ก ์ํธํํ๋ฉฐ, ์ํธํ ํค๋ฅผ ๊ฐ์ ธ์ฌ ์์น๋
https://example.com/key์ ๋๋ค.
-
์์: ์ธ๊ทธ๋จผํธ๋ฅผ AES-128๋ก ์ํธํํ๋ฉฐ, ์ํธํ ํค๋ฅผ ๊ฐ์ ธ์ฌ ์์น๋
-
-
-
-
์ธ๊ทธ๋จผํธ
-
FFmpeg๋ก ๋น๋์ค๋ฅผ ์ฌ๋ฌ ํด์๋๋ก ์ธ์ฝ๋ฉํ ๋
-hls_time์ ์ฌ์ฉํ์ฌ ์ธ๊ทธ๋จผํธ์ ๊ธธ์ด๋ฅผ ์ค์ (๊ธฐ๋ณธ 10์ด) -
- ffmpeg -i hasashin.mp4 -b:v 1M -g 60 -hls_time 2 -hls_list_size 0 -hls_segment_size 500000 output.m3u8 ์ถ์ฒ: [https://frontdev.tistory.com/entry/ffmpeg๋ก-hls-๋ง๋ค๊ธฐ-์ต์ ์ ๋ฆฌ](https://frontdev.tistory.com/entry/ffmpeg%EB%A1%9C-hls-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%98%B5%EC%85%98%EC%A0%95%EB%A6%AC) [Front End Develop:ํฐ์คํ ๋ฆฌ]
-
-
๊ฒฐ๋ก
- ๋์ ๋นํธ๋ ์ดํธ์ ๊ธด ์ธ๊ทธ๋จผํธ: ๋์ ๋นํธ๋ ์ดํธ๋ฅผ ์ฌ์ฉํ๋ฉด์ ๊ธด ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์กํ ๊ฒฝ์ฐ, ๋คํธ์ํฌ ๋์ญํญ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ง๋ง, ์ง์ฐ ์๊ฐ์ด ์ฆ๊ฐ. ํนํ ๋ถ์์ ํ ๋คํธ์ํฌ์์๋ ์ฌ์ ํ์ง์ด ์ ํ๋จ.
- ๋ฎ์ ๋นํธ๋ ์ดํธ์ ์งง์ ์ธ๊ทธ๋จผํธ: ๋ฎ์ ๋นํธ๋ ์ดํธ์ ์งง์ ์ธ๊ทธ๋จผํธ๋ฅผ ์กฐํฉํ๋ฉด, ์ฌ์ ์์ ์ฑ์ด ๋์์ง๊ณ ์ง์ฐ ์๊ฐ ๊ฐ์, ๋น๋์ค ํ์ง์ ์ ํ. โ ์ด๊ฒ ์ฐ๋ฆฌ์๋น์ค์ ์ ํฉํ์ง ์์๊น?

- ํ๋๋น 10์ด ์ ๋์ธ ts ๊ฐ ์๋ 1์ด ์ดํ ์ ๋์ CMAF ์ปจํ ์ด๋์ ๋ด์์ ์์ฑ ์ฆ์ ์ ์กํ๋ค.
- ๋ํ m3u8 ํ์ผ์ ์ถ๊ฐ์ ์ธ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ค.
-
#EXT-X-PART-INF: ์ ์ง์ฐ HLS์์ ์ฌ์ฉ๋๋ ํ๊ทธ๋ก, ์ธ๊ทธ๋จผํธ๊ฐ **ํํธ(chunk)**์ผ๋ก ๋๋์ด ์ ์ก๋๋ ๊ฒฝ์ฐ ๊ฐ ํํธ์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
m3u8 #EXT-X-PART-INF:PART-TARGET=1.0- ์์: ๊ฐ ํํธ์ ํ๊ฒ ๊ธธ์ด๊ฐ 1์ด์์ ์๋ฏธํฉ๋๋ค.
-
#EXT-X-PRELOAD-HINT: LL-HLS์์ ์์ง ์๋ฃ๋์ง ์์ ์ธ๊ทธ๋จผํธ๋ ํํธ์ ๋ํด ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ฌ ํํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๊ฐ ์ง์ฐ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๋ฏธ๋ฆฌ ์ค๋นํ ์ ์์ต๋๋ค.
m3u8 #EXT-X-PRELOAD-HINT:TYPE=PART,URI="segment3_part1.ts"-
์์:
segment3_part1.tsํํธ์ ๋ฏธ๋ฆฌ ๋ก๋ํ ํํธ์ ๋๋ค.
-
์์:
์ ๋ฒ ๊ธ์์ผ์ ํ๊ณ ์๊ฐ์, Short Polling, Long Polling ์ด ๋์๋ ์ ์ด ์์๋๋ฐ ์ด์ ๋น์ทํ ๋ฐฉ์์ผ๋ก ์ง์ฐ ์๊ฐ์ ์ค์๋ค๊ณ ๋ณด๋ฉด ์ฌ์ธ ๊ฒ ๊ฐ๋ค.
Short Polling ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด์ ์ ๋ฐ์ดํธ ๋ ์ฌํญ์ด ์๋์ง๋ฅผ ์ฒดํฌํ๋ค. ๋ง์ฝ ์ ๋ฐ์ดํธ๋ ์ฌํญ์ด ์๋ค๋ฉด ์๋ฒ๋ 304(Not Modified), 200 ๋ฅผ ๋ฐํํ๋ค.
์ด๋ ํด๋ผ์ด์ธํธ๋ ์ ๋ฐ์ดํธ๋ ์ฌํญ์ด ์์ ๋ ๊น์ง ๋ ์์ฒญ์ ๋ณด๋ธ๋ค.
Long Polling (200) ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋์ ๋, ์ ๋ฐ์ดํธ๊ฐ ๋๊ธฐ ์ ๊น์ง๋ ์๋ฒ๊ฐ ์๋ต์ ๋๋๋ ค์ฃผ์ง ์๊ณ ์ฐ๊ฒฐ์ ์ ์ง(์ง์ฐ)ํ๋ค๊ฐ, ์ ๋ฐ์ดํธ๊ฐ ๋ ์๊ฐ ์๋ต์ ๋ณด๋ธ๋ค.
๊ธฐ์กด HLS๋ ๋ฉํ๋ฐ์ดํฐ(ํ๋ ์ด๋ฆฌ์คํธ) ์ธ .m3u8 ํ์ผ์ ์ง์์ ์ผ๋ก ์๋ฒ์ ์์ฒญํด์ .m3u8 ์ ํ ๋๋ก ์ธ๊ทธ๋จผํธ๋ฅผ ์ฌ์ํ๋ ๋ฐฉ์์ธ๋ฐ, ์ง์์ ์ผ๋ก ์๋ฒ์ ์์ฒญ ์ด ๊ณผ์ ์ด ์ง์ฐ์๊ฐ์ ์ฃผ๋ฒ์ด๋ค. ์ด ์๊ฐ ๋์ ํด๋ผ์ด์ธํธ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ๋๊ฒ ์๋๋ผ ๋๊ธฐ๋ฅผ ํด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์, ์ค์ ๋์์ ํ์ผ์ธ ์ธ๊ทธ๋จผํธ๋ฅผ ์
๋ฐ์ดํธ๊ฐ ๋๊ณ ๋์์ผ ๋ฐ์ ์ ์๋ค.
๊ธฐ์กด HLS ๋ HTTP ์์ฒญ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณด๋ด์ .m3u8 ์ด ์ ๋ฐ์ดํธ๊ฐ ๋์๋์ง ํ์ธ์ ํ๋ค. ๋ง์ฝ ์ ๋ฐ์ดํธ๊ฐ ๋์ง ์์๋ค๋ฉด ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ , ์ ๋ฐ์ดํธ๊ฐ ๋์๋ค๋ ์๋ต์ ๋ฐ๊ณ ๋์์ผ ์ค์ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ์ธ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์์จ๋ค.
LL-HLS ๋
-
ํด๋ผ์ด์ธํธ์ ํ๋ ์ด๋ฆฌ์คํธ ์์ฒญ:
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์
.m3u8ํ๋ ์ด๋ฆฌ์คํธ๋ฅผ ์์ฒญํฉ๋๋ค. ์ด๋ ํด๋ผ์ด์ธํธ๋ ์ต์ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์
-
์๋ฒ์ ์์ฒญ ์ง์ฐ(Blocking):
- ๋ง์ฝ ์๋ฒ์ ์๋ก์ด ์ธ๊ทธ๋จผํธ๊ฐ ์์ง ์์ฑ๋์ง ์์ ๊ฒฝ์ฐ, ์๋ฒ๋ ์ฆ์ ์๋ต์ ํ์ง ์๊ณ ์์ฒญ์ ์ผ์ ์๊ฐ ๋์ ๋๊ธฐ(Blocking) ์ํต๋๋ค. ์ด ๋๊ธฐ ์๊ฐ ๋์ ์๋ฒ๋ ์๋ก์ด ์ธ๊ทธ๋จผํธ๊ฐ ์์ฑ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
-
์๋ก์ด ์ธ๊ทธ๋จผํธ ์์ฑ ์ ์๋ต:
- ์๋ก์ด ์ธ๊ทธ๋จผํธ๊ฐ ์์ฑ๋๋ฉด ์๋ฒ๋ ๋๊ธฐ ์ค์ธ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ตํ์ฌ ์ต์ ํ๋ ์ด๋ฆฌ์คํธ๋ฅผ ๋ฐํํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์ด๋ฅผ ํตํด ๋ฐ๋ก ๋ค์ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ฐ์ ธ๊ฐ ์ฌ์์ ์์ํ ์ ์์ต๋๋ค.
-
์
๋ฐ์ดํธ ์ฃผ๊ธฐ ๋จ์ถ:
- ์ด๋ฌํ ๋ฐฉ์์ ๊ธฐ์กด์ ์ฃผ๊ธฐ์ ์ธ ํด๋ง ๋ฐฉ์๋ณด๋ค ์ง์ฐ ์๊ฐ์ ํจ์ฌ ์ค์ผ ์ ์์ต๋๋ค. ์ฆ, ํด๋ผ์ด์ธํธ๊ฐ ๊ณ์ํด์ ํ๋ ์ด๋ฆฌ์คํธ๋ฅผ ์์ฒญํ์ฌ ์ต์ ์ ๋ณด๋ฅผ ๋ฐ๊ธฐ ์ํด ๋๊ธฐํ์ง ์๋๋ก ํ์ฌ ์ง์ฐ ์๊ฐ์ ์ค์ ๋๋ค.
LL-HLS ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ ์งง๊ฒ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋น์ฐํ ์ธ๊ทธ๋จผํธ๋ฅผ ๋ ์์ฃผ ์์ฑํ๊ฒ ๋๊ณ , m3u8 ์ ์ ๋ฐ์ดํธ๋ ๋ ๋ง์ด ์ผ์ด๋๋ค. ๋ฐ๋ผ์ ์๋ฒ์ ๋ถ๋ด์ด ์ฆ๊ฐํ๊ฒ ๋๋ค.
์๋ฒ์ ๋ถ๋ด์ ์ค์ด๋ ๋ฐฉ๋ฒ์ ์์๊น?
-
CDN(Content Delivery Network) ์ฌ์ฉ
- LL-HLS์์ ์๋ฒ ๋ถํ๋ฅผ ์ค์ด๊ธฐ ์ํด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ CDN์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. CDN์ ์คํธ๋ฆฌ๋ฐ ์ฝํ ์ธ ๋ฅผ ์ฌ๋ฌ ์ง์ ์ ์บ์ํ๊ณ , ์ง๋ฆฌ์ ์ผ๋ก ๊ฐ๊น์ด ์ฌ์ฉ์์๊ฒ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ์๋ฒ์ ๋ถํ๋ฅผ ๋ถ์ฐ์ํต๋๋ค.
- CDN์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ์๋ฒ์ ์ฐ๊ฒฐํ๋ ๋์ CDN์์ ์ฝํ ์ธ ๋ฅผ ๋ฐ์๊ฐ๋ฏ๋ก, ์๋ฒ์ ์ง์ ์ ์ธ ์์ฒญ ์๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
-
ํจ์จ์ ์ธ ์ธ๊ทธ๋จผํธ ์์ฑ ๋ฐ ์บ์ฑ
- ์๋ฒ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ํจ์จ์ ์ผ๋ก ์์ฑํ๊ณ , ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ๊ทธ๋จผํธ๋ฅผ ์บ์ฑํจ์ผ๋ก์จ ๋ถํ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ํนํ, ํ๋ ์ด๋ฆฌ์คํธ์ ์ธ๊ทธ๋จผํธ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์, ์ด๋ฅผ ์ ์ ํ ์บ์ฑํ์ฌ ๋์ผํ ์ฝํ ์ธ ๋ฅผ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ๋ ๊ฒฝ์ฐ ์๋ฒ์์ ์ฌ์์ฑํ ํ์๊ฐ ์๋๋ก ํด์ผ ํฉ๋๋ค.
-
์ต์ ์ ํ๋ ์ด๋ฆฌ์คํธ ๋ฐ ์ธ๊ทธ๋จผํธ ๊ธธ์ด ์กฐ์
- LL-HLS์์๋ ์ง์ฐ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ์ธ๊ทธ๋จผํธ๋ฅผ ์์ ํฌ๊ธฐ๋ก ๋๋์ง๋ง, ๋๋ฌด ์์ ๋จ์์ ์ธ๊ทธ๋จผํธ๋ ์๋ฒ ๋ถํ๋ฅผ ํฌ๊ฒ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์ ํ ์ธ๊ทธ๋จผํธ ๊ธธ์ด์ ํ๋ ์ด๋ฆฌ์คํธ ๊ฐฑ์ ์ฃผ๊ธฐ๋ฅผ ์ค์ ํ์ฌ ์๋ฒ ๋ถํ์ ์ง์ฐ ์๊ฐ์ ๊ท ํ ์๊ฒ ๋ง์ถ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋์ safari ๋ฅผ ์ ์ธํ ๋ธ๋ผ์ฐ์ ์์๋ ํ๊ทธ๋ง์ผ๋ก๋ ์ฌ์์ด ๋ถ๊ฐ๋ฅํ๋ค. HLS ์คํธ๋ฆผ ๋ณํ์ด ํ์ํ๋ค.
- hls.js โ hls ์คํธ๋ฆผ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ํฌ๋งท์ผ๋ก ๋ณํํ์ฌ ์์์ ์ ๋ฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์น ๋ธ๋ผ์ฐ์ ๊ฐ์ย ํ๋ฌ๊ทธ์ธ์ ๋์ ์์ด ์๋ก ํต์ ํ ์ ์๋๋ก ์ค๊ณ๋ย Javascript API
โ ๋ณ๋ค๋ฅธ ์ํํธ์จ์ด ์์ด ์นด๋ฉ๋ผ, ๋ง์ดํฌ ๋ฑ์ ์ฌ์ฉํ์ฌ ์ค์๊ฐ ์ปค๋ฎค๋์ผ์ด์ ์ ์ ๊ณต
์์ฑ ํตํ, ์์ ํตํ, P2P ํ์ผ ๊ณต์ ๋ฑ์ผ๋ก ํ์ฉ๋จ
-
WebRTC๋ **
P2P(peer-to-peer)๋ฐฉ์**์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ก- P2P๋ ์ค๊ฐ ์๋ฒ๋ฅผ ๊ฑฐ์น์ง ์์
-
WebRTC๋ UDP ๊ธฐ๋ฐ์ผ๋ก ์๋ํ์ฌ ์ ์ํ๊ฒ ํจํท์ ์ ์ก
- HLS์ RTMP๋ TCP ๊ธฐ๋ฐ

- WebRTC๋ P2P(peer-to-peer) ๊ตฌ์กฐ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ๊ฐ ์ฌ์ฉ์ ๊ฐ์ ์ง์ ์ ์ธ ์ฐ๊ฒฐ์ ์ค์
- ์ฌ์ฉ์๊ฐ ๋ง์์ง์๋ก ํ์ํ ์ฐ๊ฒฐ ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํจ
- N๋ช
์ ์ฌ์ฉ์๊ฐ ์์ ๋ ์ฌ์ฉ์ ํ๋ช
์ด ์ถ๊ฐ๋๋ฉด N๊ฐ์ ์ฐ๊ฒฐ์ด ํ์
- ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ชจ๋์ ํฐ ๋ถ๋ด
- ๋คํธ์ํฌ ๋์ญํญ๊ณผ ์ฑ๋ฅ ์ ํ ์ด๋
- ์ค์๊ฐ ๋น๋์ค์ ์ค๋์ค ์คํธ๋ฆฌ๋ฐ์ ์ํด ์๋นํ ๋์ญํญ์ ์๋ชจ
- ํนํ ๊ณ ํ์ง ๋น๋์ค ์คํธ๋ฆผ์ ๋ง์ ๋์ญํญ์ ์๊ตฌ
- ๋์ญํญ์ด ์ ํ๋ ํ๊ฒฝ์์๋ ํจํท ์์ค์ด ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ ์ ์ฒด ์คํธ๋ฆผ์ ํ์ง ์ ํ๋ก ์ด์ด์ง
- WebRTC๋ UDP ๊ธฐ๋ฐ์ด๋ฏ๋ก ํจํท ์์ค์ด ์ผ์ด๋ ์ ์์
- ๋ค์์ ์ฌ์ฉ์๊ฐ ๋์์ ์คํธ๋ฆฌ๋ฐ์ ์๋ํ๋ฉด ๋์ญํญ์ด ๊ณ ๊ฐ๋ ์ํ
-
์์ธก ๋ถ๊ฐ๋ฅํ ๋์ญํญ ์๋ชจ
-
HLS๋ RTMP์ ์์ธก ๊ฐ๋ฅํ ๋ฐฉ์
- HLS๋ RTMP๋ ์ค์ ์๋ฒ์์ ์คํธ๋ฆฌ๋ฐ์ ๊ด๋ฆฌํ๊ณ ์ผ๋ฐ์ ์ผ๋ก ๋ฏธ๋ฆฌ ์ธ์ฝ๋ฉ๋ ๋น๋์ค ์กฐ๊ฐ์ ์ ์ก
- ์ค์ผ์ผ๋ง ๊ฐ๋ฅ : ์๋ง์ ์ฌ์ฉ์์๊ฒ ์ฝํ ์ธ ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ฐฐํฌํ ์ ์์
- WebRTC๋ ๋ฏธ๋ฆฌ ์ธ์ฝ๋ฉ๋ ์คํธ๋ฆผ์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๋์ญํญ์ด ๋น๋์ค ํ์ง๊ณผ ์ฌ์ฉ์ ์์ ๋ฐ๋ผ ์ฆ๊ฐ์ ์ผ๋ก ๋ณ๋ํจ
-
HLS๋ RTMP์ ์์ธก ๊ฐ๋ฅํ ๋ฐฉ์
- WebTransport๋ UDP ๊ธฐ๋ฐ์ผ๋ก ํต์
- WebRTC์ signaling ์์ด๋ ์๋ฒ์์ ์ค์๊ฐ ๋ฐ์ดํฐ ๊ตํ ๊ฐ๋ฅ
๊ทธ๋ฌ๋ WebTransport๋ ์์ง ๊ฐ๋ฐ ๋จ๊ณ์ด๋ฉฐ, ์์ ์ ์ธ ํ์คํ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์์ ์ง์์ด ๋ถํ์ค
WebRTC์ฒ๋ผ ์ค์๊ฐ ์ค๋์ค์ ๋น๋์ค ์ ์ก์ ์ํ ์ต์ ํ๊ฐ ์ถฉ๋ถํ์ง ์์
HLS(HTTP Live Streaming)์ WebRTC๋ ๋ชจ๋ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ์ ์ํ ๊ธฐ์ ์ด์ง๋ง, ์ฌ์ฉ ๋ชฉ์ , ์ง์ฐ ์๊ฐ, ๋ณด์ ๋ฐ ํธํ์ฑ ์ธก๋ฉด์์ ํฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์ฌ์ฉํ๋ ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํ์ ๋ฐ๋ผ ๊ฐ ๊ธฐ์ ์ ์ฅ๋จ์ ์ ๋น๊ตํด๋ณด๊ณ ์ด๋ค ๊ฒ์ด ๋ ์ ํฉํ์ง ์ ํํด์ผ ํฉ๋๋ค. ์๋๋ HLS์ WebRTC๋ฅผ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ์น ์๋น์ค์ ๊ด์ ์์ ๋น๊ตํ ๊ฒ์ ๋๋ค.
-
HLS:
- ์ง์ฐ ์๊ฐ: HLS๋ HTTP ๊ธฐ๋ฐ ํ๋กํ ์ฝ๋ก ์ค๊ณ๋์ด ์์ผ๋ฉฐ, 10~30์ด์ ์ง์ฐ ์๊ฐ์ด ๋ฐ์ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ์ฌ์ง์ด **์ ์ง์ฐ HLS(LL-HLS)**๋ฅผ ์ฌ์ฉํ๋๋ผ๋ 2~5์ด ์ ๋์ ์ง์ฐ ์๊ฐ์ด ์กด์ฌํ ์ ์์ต๋๋ค.
- ์ฉ๋: ๋ฐ๋ผ์ HLS๋ ์ค์๊ฐ์ฑ์ด ์๊ตฌ๋์ง ์๋ ์คํธ๋ฆฌ๋ฐ์ ์ ํฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ด์ค ๋ฐฉ์ก, ์คํฌ์ธ ๊ฒฝ๊ธฐ, ๊ฐ์ ๋ฑ์ ์ํฉ์์ ๋ช ์ด ์ ๋์ ์ง์ฐ์ด ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๋ฉด HLS๊ฐ ์ ํฉํฉ๋๋ค.
-
WebRTC:
- ์ง์ฐ ์๊ฐ: WebRTC๋ 1์ด ๋ฏธ๋ง์ ๋งค์ฐ ๋ฎ์ ์ง์ฐ ์๊ฐ์ ๋ชฉํ๋ก ์ค๊ณ๋์ด, ์ค์๊ฐ ์ธํฐ๋ํฐ๋ธํ ํต์ ์ ์ ํฉํฉ๋๋ค.
- ์ฉ๋: ํ์ ํ์, ๊ฒ์ ์คํธ๋ฆฌ๋ฐ, ์ค์๊ฐ ์๊ฒฉ ์กฐ์ ๋ฑ ๋งค์ฐ ๋น ๋ฅธ ๋ฐ์์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค. WebRTC์ P2P ์ฐ๊ฒฐ ๋ฐฉ์ ๋๋ถ์ ์ง์ฐ ์๊ฐ์ ์ต์ํํ ์ ์์ต๋๋ค.
-
HLS:
- ์ฃผ๋ก ๋๊ท๋ชจ ์์ฒญ์ ๋์์ ์คํธ๋ฆฌ๋ฐ: HLS๋ ๋๊ท๋ชจ ์คํธ๋ฆฌ๋ฐ ์๋น์ค(์: YouTube, Twitch ๋ฑ)์์ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค. HTTP ๊ธฐ๋ฐ์ด๋ผ ๊ธฐ์กด CDN(Content Delivery Network) ์ธํ๋ผ๋ฅผ ํ์ฉํด ์์ฝ๊ฒ ์ฝํ ์ธ ๋ฅผ ์ ์กํ ์ ์์ผ๋ฉฐ, ์์ฒ์์ ์๋ฐฑ๋ง ๋ช ์ ์์ฒญ์๊ฐ ๋์์ ์คํธ๋ฆฌ๋ฐ์ ๋ณด๋ ๋ฐ ์ ํฉํฉ๋๋ค.
- ์ ์ํ ์คํธ๋ฆฌ๋ฐ: ๋คํธ์ํฌ ์ํ์ ๋ฐ๋ผ ๋น๋์ค ํ์ง์ ์กฐ์ ํ๋ ์ ์ํ ์คํธ๋ฆฌ๋ฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ฏ๋ก, ์์ฒญ์์ ๋คํธ์ํฌ ํ๊ฒฝ์ ๋ง์ถฐ ๋๊น ์์ด ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
-
WebRTC:
- 1:1 ํน์ ์๊ท๋ชจ ๊ทธ๋ฃน ํต์ : WebRTC๋ ํ์ ํตํ, ํ์ ํ์, ์จ๋ผ์ธ ํ์ ํด ๋ฑ ์๊ท๋ชจ ์ค์๊ฐ ์ปค๋ฎค๋์ผ์ด์ ์ ์ต์ ํ๋์ด ์์ต๋๋ค. ๋ํ, ๊ฒ์ ์คํธ๋ฆฌ๋ฐ๊ณผ ๊ฐ์ ์ค์๊ฐ ๋ฐ์์ด ์ค์ํ ์ํฉ์๋ ์ ํฉํฉ๋๋ค.
- P2P ์ฐ๊ฒฐ: WebRTC๋ ์ฃผ๋ก P2P ์ฐ๊ฒฐ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ ์กํ๋ฏ๋ก ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ผ ์ ์์ง๋ง, ๋๊ท๋ชจ ์์ฒญ์๋ฅผ ๋์์ผ๋ก ํ๊ธฐ์ ํจ์จ์ ์ด์ง ์์ ์ ์์ต๋๋ค.
-
HLS:
- ๋๊ท๋ชจ ์คํธ๋ฆฌ๋ฐ์ ์ต์ : HLS๋ HTTP ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ CDN์ ์ฌ์ฉํ์ฌ ํ์ฅ์ฑ์ ์ฝ๊ฒ ํ๋ณดํ ์ ์์ต๋๋ค. ์์ฒ ๋ช ์ด์์ ์ฌ์ฉ์๊ฐ ๋์์ ์คํธ๋ฆฌ๋ฐ์ ์๋นํ ์ ์์ผ๋ฉฐ, ์๋ฒ ๋ถ๋ด์ ๋ ์ ์์ต๋๋ค.
-
WebRTC:
- ์ ํ๋ ํ์ฅ์ฑ: WebRTC๋ ๋ธ๋ผ์ฐ์ ๊ฐ P2P ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ฏ๋ก, ์ง์ ์ฐ๊ฒฐ์ ์๊ฐ ์ฆ๊ฐํ ์๋ก ํ์ฅ์ฑ์ด ์ ํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ง์ ์ฐธ๊ฐ์ ๊ฐ์ ์ฐ๊ฒฐ์ด ํ์ํ๋ฉด ๊ฐ ํด๋ผ์ด์ธํธ์ ๋คํธ์ํฌ ๋ฐ CPU ์์์ด ๊ธ๊ฒฉํ ์๋ชจ๋ฉ๋๋ค.
- SFU ์ฌ์ฉ: ํ์ฅ์ฑ์ ๋๋ฆฌ๊ธฐ ์ํด **SFU(Selective Forwarding Unit)**๋ฅผ ๋์ ํ์ฌ ๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ๋ชจ๋ ์ฐธ๊ฐ์์ ์ง์ ์ฐ๊ฒฐํ์ง ์๊ณ ์ค์ ์๋ฒ๋ฅผ ํตํด ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ 100๋ช ์ด์์ ์ฌ์ฉ์๊น์ง ํ์ฅ ๊ฐ๋ฅํฉ๋๋ค.
-
HLS:
- HTTP ๊ธฐ๋ฐ ์ ์ก: HLS๋ HTTP ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์, ๋๋ถ๋ถ์ ๋ฐฉํ๋ฒฝ์ ํต๊ณผํ๊ณ ๋คํธ์ํฌ ํธํ์ฑ์ด ๋งค์ฐ ๋ฐ์ด๋ฉ๋๋ค.
- ์์ ์ : HTTP์ TCP๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ ์ก์ด ์ ๋ขฐ์ ์ด๋ฉฐ, ์ค๊ฐ์ ๋ฐ์ํ๋ ํจํท ์์ค์ ์ฌ์ ์กํ๋ ๋ฉ์ปค๋์ฆ์ด ์์ด ์์ ์ ์ธ ์คํธ๋ฆฌ๋ฐ์ ์ ๊ณตํฉ๋๋ค.
-
WebRTC:
- NAT Traversal: WebRTC๋ P2P ์ฐ๊ฒฐ์ ์ํด STUN ๋ฐ TURN ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ NAT ๋ค์ ์๋ ํด๋ผ์ด์ธํธ๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. ํ์ง๋ง ๋คํธ์ํฌ ํ๊ฒฝ์ ๋ฐ๋ผ ์ฐ๊ฒฐ ์ค์ ์ด ๋ณต์กํด์ง๊ฑฐ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- UDP ๊ธฐ๋ฐ ์ ์ก: ์ฃผ๋ก UDP๋ฅผ ์ฌ์ฉํ์ฌ ๋ฎ์ ์ง์ฐ ์๊ฐ์ ์ ๊ณตํ์ง๋ง, ํจํท ์์ค ์ ์ฌ์ ์ก์ ๋ณด์ฅํ์ง ์์ ๋คํธ์ํฌ ์ํ๊ฐ ์ข์ง ์์ ๋ ํ์ง ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
-
HLS:
- HTTPS์ ํจ๊ป ์ฌ์ฉ: HLS๋ HTTP ๊ธฐ๋ฐ์ผ๋ก, HTTPS๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ํธํํ ์ ์์ต๋๋ค. ๋ํ, **DRM(๋์งํธ ๊ถ๋ฆฌ ๊ด๋ฆฌ)**๊ณผ ํจ๊ป ์ฌ์ฉํด ์ฝํ ์ธ ๋ณดํธ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
-
WebRTC:
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ํธํ๋ ํต์ : WebRTC๋ ๋ชจ๋ ์ค๋์ค, ๋น๋์ค, ๋ฐ์ดํฐ ์คํธ๋ฆผ์ DTLS(Datagram Transport Layer Security)์ SRTP(Secure Real-Time Transport Protocol)๋ฅผ ์ฌ์ฉํด ์ํธํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋ ฅํ ๋ณด์์ด ๋ด์ฅ๋์ด ์์ต๋๋ค.
-
HLS:
- Safari์ iOS ๋ค์ดํฐ๋ธ ์ง์: Apple ๊ธฐ๊ธฐ์ Safari ๋ธ๋ผ์ฐ์ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง๋ง, Chrome, Firefox ๋ฑ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ(hls.js)๊ฐ ํ์ํฉ๋๋ค.
-
WebRTC:
- ๋ชจ๋ ์ต์ ๋ธ๋ผ์ฐ์ ์ง์: WebRTC๋ Chrome, Firefox, Safari, Edge ๋ฑ ๋๋ถ๋ถ์ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ๋ค์ดํฐ๋ธ๋ก ์ง์๋ฉ๋๋ค. ์ถ๊ฐ์ ์ธ ํ๋ฌ๊ทธ์ธ์ด ํ์ ์์ด ์ค์๊ฐ ํต์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- HLS๋ ๋๊ท๋ชจ ์คํธ๋ฆฌ๋ฐ์ ์ ํฉํ๋ฉฐ, ์๋์ ์ผ๋ก ๊ธด ์ง์ฐ ์๊ฐ์ ํ์ฉํ ์ ์๋ ๋ฐฉ์ก, ๊ต์ก, ์ํฐํ ์ธ๋จผํธ์ ๊ฐ์ ์๋น์ค์์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. HTTP ๊ธฐ๋ฐ์ด๋ฏ๋ก ๋คํธ์ํฌ ํธํ์ฑ์ด ๋๊ณ , ๊ธฐ์กด CDN ์ธํ๋ผ๋ฅผ ํ์ฉํ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค.
- WebRTC๋ ์ฆ๊ฐ์ ์ธ ๋ฐ์์ด ํ์ํ ์ค์๊ฐ ์ธํฐ๋ํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค. ๋ฎ์ ์ง์ฐ ์๊ฐ๊ณผ ๋ณด์์ฑ์ ๊ฐ์ถ๊ณ ์์ด ํ์ ํ์, ์ค์๊ฐ ํต์ , ์จ๋ผ์ธ ํ์ ๋๊ตฌ ๋ฑ์ ์ ํฉํ๋ฉฐ, ๋ธ๋ผ์ฐ์ ์์ ๋ค์ดํฐ๋ธ๋ก ์ง์๋๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋ค๋ง, ํ์ฅ์ฑ ์ธก๋ฉด์์๋ SFU์ ๊ฐ์ ๊ตฌ์กฐ์ ๋ณด์์ด ํ์ํฉ๋๋ค.
๋ฐ๋ผ์, ๋๊ท๋ชจ ์์ฒญ์์์ ๋ฐฉ์ก์๋ HLS๊ฐ ์ ํฉํ๊ณ , ์๊ท๋ชจ ์ค์๊ฐ ์ํธ์์ฉ์ด๋ ๋ฎ์ ์ง์ฐ ์๊ฐ์ด ํ์ํ ์๋น์ค์๋ WebRTC๊ฐ ๋ ๋์ ์ ํ์ด ๋ ๊ฒ์ ๋๋ค.
์ฐธ๊ณ ์๋ฃ https://www.cdnetworks.com/ko/blog/media-delivery/what-is-rtmp-ingest/ https://ossrs.net/lts/en-us/docs/v6/doc/flv https://growthvalue.tistory.com/178 https://ossrs.net/lts/en-us/docs/v4/doc/delivery-http-flv https://medium.com/@delivalue100/rtmp-realtime-messaging-protocol-c4474e464ffd https://obsproject.com/forum/whats-new/posts/2763754/ - OBS ํฌ๋ผ https://devocean.sk.com/blog/techBoardDetail.do?ID=164296 https://blog.naver.com/mingyo01/222050438291 https://velog.io/@chosj1526/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8A%B8%EC%9C%84%EC%B9%98-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%94%94%EC%9E%90%EC%9D%B8

-
๊ฐ๋ฐ์: Adobe Systems (์๋ Macromedia๊ฐ ๊ฐ๋ฐ)
-
์ถ์ ์๊ธฐ: 2003๋
-
์ฃผ์ ์ฉ๋: ์ค์๊ฐ ๋น๋์ค ๋ฐ ์ค๋์ค ์คํธ๋ฆฌ๋ฐ, ํนํ ๋ผ์ด๋ธ ๋ฐฉ์ก
-
ํน์ง:
์ด๋๋ธ์์ ๊ท์ ํ ๋งํผ ๊ธฐ์กด์๋ Flash Player์ ์ง์ํ๊ธฐ ์ํด ์์ฑ๋ ๊ธฐ์ ์ด์๋ค.
๊ทธ๋ฌ๋ ์ต๊ทผ ์ด๋๋ธ์์ Flash Player์ ์ง์์ ์ค๋จํ ๋งํผ ์ ์ฐจ ์ฌ์ฉ๋ฅ ์ด ์ ์กฐํด์ง๊ณ ์๋ค.
ํ์ง๋ง ์ด๋ ํด๋ผ์ด์ธํธ ๋จ์์์ ๋ฌธ์ ์ ์ด๊ณ , ์์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ฎ๊ธฐ๊ณ ์ ์ฅํ๋ ๋ฐ์ ์์ด์๋ ๋์ ์ง์ฐ ์๊ฐ๊ณผ ํจ์จ์ ๊ฐ์ง๊ณ ์๊ธฐ์, HLS, MPEG-DASH, HTTP-FLV์ ๊ฐ์ ๊ธฐ์ ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ค.
- ์ ์ง์ฐ ์คํธ๋ฆฌ๋ฐ: ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ์ ์ ํฉํ ๋ฎ์ ์ง์ฐ ์๊ฐ
- ์๋ฐฉํฅ ํต์ : ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์ก ๊ฐ๋ฅ
- ์ ์ฐ์ฑ: ๋น๋์ค, ์ค๋์ค, ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋์์ ์ ์ก
- ์ง์์ ์ธ ์ฐ๊ฒฐ ์ ์ง: RTMP๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ง์์ ์ธ TCP ์ฐ๊ฒฐ์ ์ ์งํฉ๋๋ค. ์ด๋ ๋ฐ์ดํฐ ์ ์ก ์๋ง๋ค ์๋ก์ด ์ฐ๊ฒฐ์ ์ค์ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ ์ค์ ์ ๋ฐ๋ฅธ ์ค๋ฒํค๋๋ฅผ ์ค์ฌ์ค๋๋ค.
- ์์ ์ฒญํฌ(chunk) ๋จ์ ์ ์ก: ๋ฐ์ดํฐ๋ฅผ ์์ ์ฒญํฌ๋ก ๋ถํ ํ์ฌ ์ ์กํจ์ผ๋ก์จ, ๋ฐ์ดํฐ๊ฐ ์ค๋น๋๋ ์ฆ์ ์ ์กํ ์ ์์ต๋๋ค. ์ด๋ ๋ฒํผ๋ง ์๊ฐ์ ์ต์ํํ๊ณ , ์ค์๊ฐ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
ํธ์์น์ ๊ฒฝ์ฐ ์คํธ๋ฆฌ๋จธ โ Ingest โ Transcode โ Replication โ Edge โ ์์ฒญ์๋ฅผ ๊ฑฐ์น๋ฉฐ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ก

- Ingest - ์คํธ๋ฆฌ๋จธ์ ๋น๋์ค ์์์ด ํธ์์น ๋ฐ์ดํฐ ์ผํฐ๋ก ๊ฐ๋ ๊ฒ
- Transcode - ๋น๋์ค ํ์์ ๋ฐ๊พธ๋ ๊ฒ
- Replication - ๋ณต์ฌ. ์์ ์ฑ์ ์ํด
- Edge - CDN์ด๋ผ๊ณ ๋ ๋ถ๋ฆ
- ๋ณด์: ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณด์ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์ง ์์ ๋ฐ์ดํฐ ์ํธํ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ถ๊ฐ ์ค์ ์ด ํ์ํจ
- ๋ฐฉํ๋ฒฝ ๋ฌธ์ : ์ ์ฉ ํฌํธ(๊ธฐ๋ณธ์ ์ผ๋ก 1935)๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ผ๋ถ ๋คํธ์ํฌ ํ๊ฒฝ์์๋ ์ฐจ๋จ๋ ์ ์์
- ๋ชจ๋ฐ์ผ ์ง์ ๋ถ์กฑ: HTTP ๊ธฐ๋ฐ ์คํธ๋ฆฌ๋ฐ ํ๋กํ ์ฝ(HLS, MPEG-DASH)์ ๋นํด ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์์ ์ง์์ด ์ ํ์
- ํ์ฅ์ฑ: ๋๊ท๋ชจ
OBS ์ฌ์ฉ
- ๊ฐ๋ฐ์: Haivision
- ์ถ์ ์๊ธฐ: 2017๋
- ์ฃผ์ ์ฉ๋: ๋ถ์์ ํ ๋คํธ์ํฌ ํ๊ฒฝ์์๋ ์์ ์ ์ด๊ณ ๋ณด์์ด ๊ฐํ๋ ๋น๋์ค ์คํธ๋ฆฌ๋ฐ
-
ํน์ง:
- ๋ณด์ ๊ฐํ: AES ์ํธํ๋ฅผ ํตํด ๋ฐ์ดํฐ ์ ์ก ์ ๋ณด์์ ๋ณด์ฅ
- ์ ๋ขฐ์ฑ: ํจํท ์์ค, ์ง์ฐ, ๋คํธ์ํฌ ๋ณ๋์ฑ์ ๊ฐํ ๋ด์ฑ์ ๊ฐ์ง
- ์ ์์ฑ: ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๋ง์ถฐ ๋์ ์ผ๋ก ์กฐ์
- ์คํ ์์ค: SRT๋ ์คํ ์์ค ํ๋ก์ ํธ๋ก, ๋ค์ํ ํ๋ซํผ๊ณผ ์ฝ๊ฒ ํตํฉ ๊ฐ๋ฅ
- ์ํธํ: ์ ์ก ์ค์ธ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ๋์ฒญ ๋ฐ ๋ฐ์ดํฐ ๋ณ์กฐ๋ฅผ ๋ฐฉ์ง
- ์ฌ์ ์ก ๋ฉ์ปค๋์ฆ: ํจํท ์์ค ์ ์ฌ์ ์ก์ ํตํด ๋ฐ์ดํฐ์ ์์ ์ฑ์ ์ ์ง
- ๋์ ๋นํธ๋ ์ดํธ ์กฐ์ : ๋คํธ์ํฌ ์ํ์ ๋ฐ๋ผ ๋นํธ๋ ์ดํธ๋ฅผ ์๋์ผ๋ก ์กฐ์ ํ์ฌ ์คํธ๋ฆฌ๋ฐ ํ์ง์ ์ต์ ํ
- ๋ฐฉํ๋ฒฝ ์ฐํ: UDP ๊ธฐ๋ฐ์ด์ง๋ง, NAT ๋ฐ ๋ฐฉํ๋ฒฝ ํ๊ฒฝ์์๋ ์์ ์ ์ผ๋ก ๋์
- ๋ณด์: RTMP์ ๋ฌ๋ฆฌ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ ์ํธํ๋ฅผ ์ง์ํ์ฌ ๋ณด์์ฑ์ด ๋ฐ์ด๋จ
- ์ ๋ขฐ์ฑ: ๋ถ์์ ํ ๋คํธ์ํฌ ํ๊ฒฝ์์๋ ์์ ์ ์ธ ๋ฐ์ดํฐ ์ ์ก์ ๋ณด์ฅ
- ์ ์ฐ์ฑ: ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์ ์ ์ํ์ฌ ์ต์ ์ ์คํธ๋ฆฌ๋ฐ ํ์ง ์ ๊ณต
- ํ์ฅ์ฑ: ๋๊ท๋ชจ ์คํธ๋ฆฌ๋ฐ ํ๊ฒฝ์์๋ ํจ์จ์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅ
- ์คํ ์์ค: ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ์ปค๋ฎค๋ํฐ ์ง์์ ํตํด ์ง์์ ์ผ๋ก ๊ฐ์ ๋จ
- ์ฑํ๋ฅ : RTMP์ ๋นํด ์๋์ ์ผ๋ก ์ต๊ทผ์ ๋ฑ์ฅํ ํ๋กํ ์ฝ๋ก, ๊ธฐ์กด ์ธํ๋ผ์์ ํธํ์ฑ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ
- ์ค์ ๋ณต์ก์ฑ: ์ด๊ธฐ ์ค์ ๊ณผ ์ต์ ํ๋ฅผ ์ํด ๊ธฐ์ ์ ์ธ ์ง์์ด ํ์ํ ์ ์์
| ํน์ง | RTMP | SRT |
|---|---|---|
| ๋ณด์ | ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณด์ ๊ธฐ๋ฅ ์์ (RTMPS๋ก ๋ณด์ ๊ฐํ ๊ฐ๋ฅ) | AES ์ํธํ ๋ด์ฅ, ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณด์ ๊ฐํ |
| ์ ์ก ํ๋กํ ์ฝ | TCP ๊ธฐ๋ฐ | UDP ๊ธฐ๋ฐ |
| ์ ๋ขฐ์ฑ | TCP์ ์ ๋ขฐ์ฑ ์ ๊ณต, ๊ทธ๋ฌ๋ ๋คํธ์ํฌ ๋ณ๋์ฑ์ ์ทจ์ฝ | ํจํท ์์ค ๋ณต๊ตฌ, ๋คํธ์ํฌ ๋ณ๋์ฑ์ ๊ฐํ ๋ด์ฑ |
| ์ง์ฐ ์๊ฐ | ๋ฎ์ | ๋ฎ์ |
| ๋ฐฉํ๋ฒฝ ์ฐํ | ์ ์ฉ ํฌํธ ์ฌ์ฉ, ๋ฐฉํ๋ฒฝ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ | NAT ๋ฐ ๋ฐฉํ๋ฒฝ ํ๊ฒฝ์์๋ ์์ ์ ๋์ |
| ํ์ฅ์ฑ | ๋๊ท๋ชจ ๋ถ์ฐ ํ๊ฒฝ์์ ์ถ๊ฐ ์ค์ ํ์ | ๋๊ท๋ชจ ์คํธ๋ฆฌ๋ฐ ํ๊ฒฝ์์ ํจ์จ์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅ |
| ์คํ ์์ค | ์๋์ค | ์ (์คํ ์์ค ํ๋ก์ ํธ) |
- ์ค๋ช : ISO ํ์ค์ HTTP ๊ธฐ๋ฐ ์คํธ๋ฆฌ๋ฐ ํ๋กํ ์ฝ๋ก, ์ ์ํ ๋นํธ๋ ์ดํธ๋ฅผ ์ง์ํ๋ฉฐ ๋ค์ํ ๋ฏธ๋์ด ํ์์ ์ง์ํฉ๋๋ค.
- ํน์ง: ๊ฐ๋ฐฉํ ํ์ค, ๋ค์ํ ํ๋ซํผ๊ณผ ํธํ.
- ๐ ์น ์์ผ์ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ (feat. WS vs Socket.io)
- ๐คธโโ๏ธ ๋น์ ์ด ์ปดํฌ๋ํธ๋ก ๋ ๋๋ง ์ต์ ํ ํ๊ธฐ
- ๐ทโโ๏ธ Shared Worker๋ก ํด๋ผ์ด์ธํธ์ ์์ผ ํต์ ๊ฐ์ ํ๊ธฐ
- ๐จโ๐ฉโ๐งโ๐ฆ ๋ค์ค ํญ์์ ํ๋์ ์์ผ์ ๊ณต์ ํ ์ ์์๊น?
- ๐ [Socket.io] ํด๋ผ์ด์ธํธ์ ์ค์๊ฐ ์ฑํ ๊ตฌํ๊ธฐ
- ๐ฌ ์๋ฒ๋ฅผ docker swarm ์ผ๋ก ๊ด๋ฆฌํด๋ณด์
- ๐ฌ ์ปจํ ์ด๋๋ผ๋ฆฌ env ๊ณต์ ํ๊ธฐ
- ํ์ฅ์ฑ์ ๊ณ ๋ คํ ์๋ฒ ์ค๊ณ
- ncp ์๋ฒ ์ ํ
- ์ฑํ ์๋ฒ์ Redis ๋ฅผ ์ด ์ด์
- โ NestJS๋ฅผ ํตํ ์ผ๊ด์ ์ธ ์์คํ ์ค๊ณ
โ๏ธ ์ธ๋ถ์ ์ฌ์ฉ์๊ฐ Object Storage์ ์ ๊ทผํ์ง ๋ชปํ๋ ๊ถํ ์ ์ด- ๐ฆข nestjs์์ swagger ์ฌ์ฉํด๋ณด๊ธฐ
- ๐ NestJS Nginx Request Data Size ๋ฌธ์
- ๐ ๋ค์๋ณด๊ธฐ๋ฅผ ์ํ NodeโMediaโServer, FFMpeg ๋ถ์
- ๐ฆ ํจํค์ง ๋งค๋์ ๋ฐ ๋ชจ๋ ธ๋ ํฌ ์ ํ๊ธฐ
- ๐ฐ ์ปค์คํ ESLint ๋ง๋ค๊ธฐ
- ๐คบ ์ปค์คํ react ์ค๋ํซ ๋ง๋ค๊ธฐ
- ๐ธ ๋ฐ์ํ ๋น๋์ค ํ๋ ์ด์ด ๊ตฌํ: ํจ๋ฉ ํ ๊ธฐ๋ฒ
- ๋ฆฌ์กํธ ํ ํผ ๋ฅ๋ค์ด๋ธ