๐๋ค์ด๊ฐ๋ฉฐโฆ
django
์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ณ ๋ณ ์๊ฐ์์ด django-channels
๋ฅผ ์ฌ์ฉํด WebSocket
์ ๊ตฌํํ์ฌ ์ฌ์ฉํ๋ ์ค์ด์๋ค.
์คํ์ค๋ฒํ๋ก์ฐ ๊ธ์ ์ถ์ฒ์ผ๋ก worker๋ 2 x number_of_cores + 1
๋ก ์ค์ ํ์ฌ ๋์์ ์ต๋ worker ๊ฐ์ ์์
์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๊ฒ ์ค์ ํ๋ค.
์ ์ฌ์ฉํ๊ณ ์์๋๋ฐโฆ
๋ถํ๋ฏ WebSocket
ํต์ ์ด ๋ง์์ก์ ๋ ์๋ฒ ์ฑ๋ฅ์ด ๋จ์ด์ง ์๋ ์๊ฒ ๊ตฌ๋ ์๊ฐ์ด ๋ค์๋ค.
Socket์ด๋?
- TCP(Transmission Control Protocol) ์ฐ๊ฒฐ ์งํฅ์ ์ด๋ฉฐ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก์ ์ํ ํ๋กํ ์ฝ. ์คํธ๋ฆผ ์์ผ์ด๋ผ๊ณ ๋ ํ๋ฉฐ, ๋ฐ์ดํฐ ์์์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํจ
- UDP(User Datagram Protocol) ์ฐ๊ฒฐ์ ์ค์ ํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ํ๋กํ ์ฝ๋ก, ๋น ๋ฅธ ์๋๊ฐ ํ์ํ๊ณ ๋ฐ์ดํฐ์ ์ผ๋ถ ์์ค์ด ํ์ฉ๋๋ ์ํฉ์ ์ ํฉ
Socket์ ๋์
์์ผ ์์ฑ
์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ชจ๋ ์์ผ์ ์์ฑํจ. ์ด ์์ผ์ ํน์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ์์ ๋ค๋ฅธ ์๋ํฌ์ธํธ์ ํต์ ํ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต
์๋ฒ ์์ผ ๋ฐ์ธ๋ฉ
์๋ฒ๋ ์์ผ์ ํน์ IP ์ฃผ์์ ํฌํธ ๋ฒํธ์ ๋ฐ์ธ๋ฉํด์ผ ํจ. ์ด๋ ๊ฒ ํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ํด๋น IP์ ํฌํธ๋ก ์ฐ๊ฒฐ ์๋ํ ์ ์์
- ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ IP ์ฃผ์์ ํฌํธ ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ผ ์ฐ๊ฒฐ์ ์๋ํจ. ์ฐ๊ฒฐ์ด ์ฑ๊ณตํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ ํต์ ๊ฒฝ๋ก๊ฐ ์์ฑ๋จ
์ฐ๊ฒฐ ์ข ๋ฃ
๋ฐ์ดํฐ ๊ตํ ์๋ฃ ํ ์ฐ๊ฒฐ ์ข ๋ฃ. ์์คํ ๋ฆฌ์์ค๊ฐ ํด์ ๋๊ณ ๋ค๋ฅธ ์ฐ๊ฒฐ์ ์ฌ์ฉํ ์ ์๊ฒ ๋จ
WebSocket์ด๋?
WebSocket์ ๋์
handshake
Client
์Server
๊ฐ ์ด๊ธฐ ์ฐ๊ฒฐ์HTTP
๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํจ. ์ด ๋จ๊ณ์์Upgrade
ํค๋๊ฐ ์ฌ์ฉ๋์ด ์ดํ์ ํต์ ์ดWebSocket
ํ๋กํ ์ฝ๋ก ์ ๊ทธ๋ ์ด๋๋จ์ ๋ํ๋Data Transfer
์ฐ๊ฒฐ์ด ์ด๋ฆฐ ์ํ์์ ์๋ฐฉํฅ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ ๋กญ๊ฒ ์ ์กํจ
Connection Termination
ํ์์ ๋ฐ๋ผ ์ฐ๊ฒฐ์ ๋ซ์ ์ ์์ผ๋ฉฐ,
Server
๋๋Client
์์ ๋ซ์ ์ ์์
Socket vs Websocket
1. ํ๋กํ ์ฝ๊ณผ ๋ ์ด์ด
Sokcet
: TCP ๋๋ UDP์ ๊ฐ์ ์ ์ก ๊ณ์ธต ํ๋กํ ์ฝ์ ์ง์ ์ฌ์ฉํจ. OSI ๋ชจ๋ธ์Transport Layer
์์ ๋์WebSocket
: HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ์น ํ๊ฒฝ์์ ์ฌ์ฉํ๊ธฐ ์ํด ํน๋ณํ ์ค๊ณ๋ ํ๋กํ ์ฝ. OSI ๋ชจ๋ธ์Application Layer
์์ ๋์
2. ์ฐ๊ฒฐ ๋ฐฉ์
Sokcet
: ์ฅ๊ธฐ ๋๋ ๋จ๊ธฐ ์ฐ๊ฒฐ ์ค์ ํ๋ฉฐ,Client
์Server
๊ฐ์ ๋ฐ์ดํฐ ์ก์์ ๊ฐ๋ฅํจWebSocket
: ํ ๋ฒ ์ฐ๊ฒฐ์ด ์ค์ ๋๋ฉด ์ฐ๊ฒฐ์ด ์ ์ง๋๊ณ ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํจ. ์ฐ๊ฒฐ ์ ์ง๋ก ์ธํ ์ค์๊ฐ ์ํธ ์์ฉ์ด ๋ ์ฝ๊ฒ ๊ฐ๋ฅํจ
3. ์ฌ์ฉ ํ๊ฒฝ
Sokcet
: ์ผ๋ฐ์ ์ธ ๋คํธ์ํฌ ํต์ ๊ณผ ๋ค์ํ ์์ฉ ๋ถ์ผ์์ ์ฌ์ฉ ๊ฐ๋ฅํจWebSocket
: ์ฃผ๋ก ์น & ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค์๊ฐ ํต์ ์ ์ํด ์ค๊ณ๋จ. HTTP์ ํธํ๋์ด ์น ๋ธ๋ผ์ฐ์ ๊ฐ์ ์ฐ๊ฒฐ์ ์ต์ ํํจ
4. ๋ณด์
Sokcet
: ํ์ํ ๊ฒฝ์ฐ TLS/SSL ๊ณผ ๊ฐ์ ๋ณด์ ํ๋ก๊ทธ๋จ์ ๋ณ๋๋ก ์ ์ฉํด์ผ ํจWebSocket
: ์น์์บฃ ์์ฒด์wss://
์ ํตํ ๋ณด์ ์ฐ๊ฒฐ ์ต์ ์ด ์กด์ฌํจ
๊ฒฐ๋ก
์๋ฐ๋๋ ๊ฐ๋
์ด ์๋๊ธฐ์ ์์ ํ๊ฒ ๋น๊ต๋ ๋ถ๊ฐํ๋ค. ๊ฒฐ๊ตญ์๋ WebSocket
๊ตฌํ์ Socket
์ด ์ฌ์ฉ๋๋ค.
Sokcet
: ๋ ๋ฎ์ ๋ ๋ฒจ์ ์ฐ๊ฒฐ์ ์ ๊ณตํ์ฌ, ์ ์์ค ์ ์ด์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ์ ํ์ด ๋ ์ ์์WebSocket
: ์น๊ณผ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ ์ ํนํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ฉฐ, ์ ์ฉ์ด ๋ ์ฝ๊ณ ํจ์จ์ ์
โ ๋ด์ฉ ์ถ๊ฐ ์์ โฆ