1. Stateful Service
Stateful '๊ตฌ์กฐ'๋ Server์ Client๊ฐ ์ธ์ ์ 'State(์ํ)'์ ๊ธฐ๋ฐํ์ฌ Client์ response๋ฅผ ๋ณด๋ ๋๋ค.
์ด๋ฅผ ์ํด ์๋ฒ ์ฌ์ด๋์ 'ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๋์, ์ธ์ ์ํ ์ ๋ณด'๋ฅผ ์ ์ฅํ๋ค.
TCP
๋ํ์ ์ธ Stateful ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅด๋ ํ๋กํ ์ฝ๋ก TCP๊ฐ ์๋ค.
TCP์ 3-way handshaking ๊ณผ์ ์ ์๊ฐํด๋ณด๋ฉด, Server์ Client๋ 3-way handshaking ๊ณผ์ ์์ SYN๊ณผ SYNACK์ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ, ์๋จ๊ฐ ์ธ์ '์ํ'๋ฅผ establishedํ '์ํ'๋ก ๋ง๋ ๋ค.
์ธ์ '์ํ'๊ฐ established๊ฐ ๋๋ฉด client์ server๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค. ์ด๋ ๊ฒ TCP๋ ์ธ์ '์ํ'์ ๋ฐ๋ผ Server์ ์๋ต์ด ๋ฌ๋ผ์ง๋ Stateful ํ๋กํ ์ฝ์ด๋ค.
TCP์ ๋ฐ์ดํฐ ์ ์ก๊ณผ์ ๋ ํ์ธํด ๋ณด์.
server๋ client๋ก๋ถํฐ ์ก์ ๋ ํจํทํค๋๋ฅผ ํ์ฑํ์ฌ ์์ผ๋ก ์์ ํด์ผํ ๋ฐ์ดํฐ์ ํฌ๊ธฐ(window), sequence ๋ฒํธ ๋ฑ์ ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ํฌ๊ธฐ์ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์์ ๋ ๋๊น์ง client์์ ์ธ์ ์ ์ ์งํ๋ค. ์ด ๊ณผ์ ์์ server๋ ์์ผ๋ก ์์ ํ ๋ฐ์ดํฐ์ ํฌ๊ธฐ, sequence ๋ฒํธ ๋ฑ๊ณผ ๊ฐ์ด client์์ ์ธ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ TCP๋
- ์ฐ๊ฒฐ ํ์
- ๋ฐ์ดํฐ ์ ์ก
- ์ฐ๊ฒฐ ์ข ๊ฒฐ
์ด๋ผ๋ TCP handshaking ๊ณผ์ ์ ํตํด ์ฐ๊ฒฐ๋๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ์ ์กํด Client์์ ์ธ์ ์ ๋ณด๋ฅผ server์ ์ ์ฅํ๊ณ , ์ธ์ ์ํ์ ๊ธฐ๋ฐํ server์ ์๋ต์ด ๋ฌ๋ผ์ง๋ค๋ ์ ์์ Stateful ํ๋ค๊ณ ๋งํ ์ ์๋ค.
Stateful Service
Stateful Service๋ ์ด๋ฌํ Statefulํ ํน์ฑ, 1. ์ธ์ ์ ๋ณด๋ฅผ server์ ์ ์ฅ, 2. ์ธ์ 'State(์ํ)'์ ๋ฐ๋ฅธ ์๋ต ์ ๋ง์กฑํ๋๋ก ์ค๊ณ๋ ์๋น์ค ๊ตฌ์กฐ ์ด๋ค.
์์ ๊ฐ์ Stateful Service ๊ตฌ์กฐ๋ฅผ ์๊ฐํด ๋ณด์. ClientA ์ ์์ฒญ์ด ๋ก๋๋ฐธ๋ฐ์๋ฅผ ํตํด ์์์ ์๋ฒ(Server #1)์ ์ ๋ฌ๋๋ฉด Server#1 ์๋ ClientA ์ ์ธ์ ์ ๋ณด๊ฐ ์ ์ฅ๋๋ค.
๊ทธ๋ฌ๋ ๋ก๋๋ฐธ๋ฐ์์ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ server, ๊ทธ๋ฆผ์ ๊ฒฝ์ฐ Server#2, ์๋ ํด๋น ClientA์ ๋ํ ์ ๋ณด๊ฐ ์์ผ๋ฏ๋ก Server#2๋ Client A์์ ์ธ์ ์ธ์ฆ์ ์ฒ์๋ถํฐ ๋ค์ ํด์ผํ ํ์๊ฐ ์๋ค. ์ด๋ฌํ redundantํ ์์ ์ ์์ ๊ธฐ ์ํด ClientA์ ์์ฒญ์ Server#1์ ํฅํด ์ ์ง๋๋๋ก ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค. → Sticky Session
2. Stateless Service
Stateless '๊ตฌ์กฐ'๋ server์ ์๋ต์ด client์์ ์ธ์ '์ํ'์ ๋ ๋ฆฝ์ ์ด๋ค.
Stateless ๊ตฌ์กฐ์์ server๋ ๋จ์ํ ์์ฒญ์ด ์ค๋ฉด ์๋ต์ ๋ณด๋ด๋ ์ญํ ๋ง ์ํํ๋ฉฐ, ์ธ์ ๊ด๋ฆฌ๋ client์๊ฒ ์ฑ ์์ด ์๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ Stateless ๊ตฌ์กฐ๋ client์์ ์ธ์ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ ํ์๊ฐ ์์ผ๋ฏ๋ก, ์ด๋ฌํ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅํ์ง ์๋๋ค.
์ธ์
(์ํ)์ ๋ฌด๊ดํ ์๋ต์ ํ๊ฒ ์ค๊ณ๋ ์๋น์ค ๊ตฌ์กฐ.
๋์ ํ์์ ๋ฐ๋ผ ์ธ๋ถ DB์ ์ ์ฅํ์ฌ ๊ด๋ฆฌ ํ ์ ์๋ค. → Session Server
UDP
๋ํ์ ์ธ Stateless ํ๋กํ ์ฝ๋ก๋ UDP์ HTTP ๋ฑ์ด ์๋ค.
UDP๋ฅผ ์ค์ ์ ์ผ๋ก ์ดํด๋ณด์. UDP๋ TCP์ ๋ฌ๋ฆฌ handshaking ๊ณผ์ ์ ํตํด ์ฐ๊ฒฐ ์ธ์ ์ ์ธ์ฆํ๋ ์ ์ฐจ๋ฅผ ์ํํ์ง ์๋๋ค. ์ธ์ ์ํ์ ๊ด๊ณ ์์ด ๋จ์ํ ๋ฐ์ดํฐ๊ทธ๋จ์ source์์ destination ์ชฝ์ผ๋ก ์ ์กํ๋ฉฐ, client๊ฐ ์ก์ ํ๋ ค ํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ server์ชฝ์ ์์ ๋์๋์ง ํ์ธํ์ง ์๋๋ค. ๋ฐ๋ผ์ server์ชฝ์ client์์ ์ธ์ ์ ๋ณด๋ฅผ ์ ํ ์ ์ฅํ์ง ์๋๋ค.
๋ฐ๋ผ์ UDP๋ Client์์ ์ธ์ ์ํ์ ๊ด๊ณ์์ด ์์ฒญ์ ๋ํ ์๋ต๋ง์ ์ํํ๋ค. ๋ํ Client์์ ์ธ์ ์ ๋ณด๋ฅผ server๊ฐ ์ ์ฅํ์ง ์๋๋ค๋ ์ ์์ Stateless ํ๋ค๊ณ ๋งํ ์ ์๋ค.
Stateless Service
Stateless Service๋ ์ด๋ฌํ Statelessํ ํน์ฑ, 1. ์ธ์ ์ ๋ณด๋ฅผ server์ ์ ์ฅํ์ง ์์, 2. ์ธ์ 'State(์ํ)'์ ๋ฌด๊ดํ ์๋ต ์ ๋ง์กฑํ๋๋ก ์ค๊ณ๋ ์๋น์ค ๊ตฌ์กฐ์ด๋ค.
์์ ๊ฐ์ Stateless ์๋น์ค ๊ตฌ์กฐ๋ฅผ ์๊ฐํด ๋ณด์. Client A์ ์์ฒญ์ด ๋ก๋๋ฐธ๋ฐ์๋ฅผ ํตํด Server #1 ์ผ๋ก ์ ๋ฌ ๋์๋ค๊ณ ๊ฐ์ ํ ๋, Stateful ์๋น์ค ๊ตฌ์กฐ์์๋ server์ ์ง์ ClientA์์ ์ธ์ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง๋ง Stateless ์๋น์ค ๊ตฌ์กฐ์์๋ ์ด ์ ๋ณด๋ฅผ server์ ์ ์ฅํ์ง ์๊ณ , ์ธ๋ถ DB์ ์ ์ฅํ๋ค. → Session Server
๋ฐ๋ผ์ ClientA์ ์์ฒญ์ด Server#2๋ก ์ ๋ฌ ๋๋๋ผ๋, Server#2๋ DB๋ฅผ ํตํด ClientA ์ ๋ณด์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
์ด๋ฌํ Stateless ๊ตฌ์กฐ์์๋ ClientA์ ์์ฒญ์ Server#1์๋ง ์ ์ง๋๋๋ก ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค.
3. Stateless Service์ ์ฅ์
Statelss ๊ตฌ์กฐ๊ฐ Stateful ๊ตฌ์กฐ ๋๋น ๊ฐ๋ ๋ช๊ฐ์ง ์ฅ์ ๋ค๋ก ์ธํด ์ต๊ทผ์ ์น์๋น์ค ๊ตฌ์กฐ๋ ๋ชจ๋ Stateless ๊ตฌ์กฐ ๊ธฐ๋ฐ์ ๋ฐ๋ฅด๊ณ ์๋ค.
๊ทธ๋ ๋ค๋ฉด Stateless Service๊ฐ ์ด๋ค ์ ์์ ์ ๋ฆฌํ ๊น? ์ฌ๋ฌ๊ฐ์ง ์ด์ ๊ฐ ์๊ฒ ์ง๋ง, stateless ๊ตฌ์กฐ์ ๊ฐ์ฅ ํฐ ์ด์ ์ ๋ฐ๋ก Scaling์ด ์์ ๋กญ๋ค๋ ๊ฒ์ด๋ค.
ํธ๋ํฝ์ ๊ธ์ฆ์ผ๋ก ์๋ฒ๊ฐ scale out๋ ์ํฉ์ ์๊ฐ ํด๋ณด์.
- Stateful ์๋น์ค์ ๊ฒฝ์ฐ,
- client์ ์ธ์ ์ ๋ณด๊ฐ ์๋ก scale out๋ ์๋ฒ์ ์ ์ฅ ๋์ด ์์ง ์๋ค
- ๋ฐ๋ผ์ ์ธ์ ์ ๋ณด๋ฅผ ์ฎ๊ฒจ์ฃผ๋ ๋ฑ์ ๋ถ์์ ์ธ ๊ด๋ฆฌ๊ฐ ์๊ตฌ๋๋ค.
- Stateless ์๋น์ค์ ๊ฒฝ์ฐ,
- ์ด์ฐจํผ server๋ client ์ธ์ ๊ด๋ฆฌ๋ฅผ ํ์ง ์์ผ๋ฏ๋ก, ๊ฑฑ์ ํ ํ์๊ฐ ์๋ค!
scaling์ ์ต๊ทผ ์น ์๋น์ค๋ค์ด ์๊ตฌํ๋ ์ค์ํ ๊ธฐ๋ฅ์ด๋ค. serverless ๊ตฌ์กฐ์ ์๋น์ค ๊ตฌํ์์๋ ํ์์ ์ด๊ธฐ ๋๋ฌธ์ ์ต๊ทผ ์น ์๋น์ค ํธ๋ ๋ ๋ํฅ์ ๋ฐ๋ง์ถฐ, scaling์ด ์์ ๋ก์ด Stateless ์๋น์ค ๊ตฌ์กฐ๊ฐ ๊ฐ๊ด๋ฐ๊ณ ์๋ค.
4. Stateless Service
stateless service๋ฅผ ๊ฒ์ํ๋ฉด ๋์ค๋ ์ฐ๊ด ๊ฒ์์ด๋ค์ด HTTP, REST ์ด๋ค.
HTTP๋ Statelessํ ํ๋กํ ์ฝ์ด๋ค.
REST(Representational State Transfer)๋ '๊ตฌ์กฐ(Architecture)' ์ ์ด๋ฆ์ด๊ณ , HTTP ํ๋กํ ์ฝ ์์ ๊ตฌํ๋ Resource Oriented Architecture(ROA) ์ค๊ณ ๊ตฌ์กฐ์ด๋ค.
์ ๋ฆฌ
HTTP์ REST ๋ชจ๋ Statelessํ ์ฑ๊ฒฉ์ ๊ฐ์ง ๋ ์๋ค์ด๋ฉฐ,
HTTP๋ Statelssํ ์ฑ๊ฒฉ์ ๊ฐ์ง 'ํ๋กํ ์ฝ'REST๋ Statelessํ ์ฑ๊ฒฉ์ ๊ฐ์ง '์ค๊ณ ๊ตฌ์กฐ' ์ด๋ค.
์ฐธ๊ณ
'๐CS > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Web] ์คํฌ๋ํ vs ํฌ๋กค๋ง (0) | 2021.08.24 |
---|---|
[Web] HTTP์ HTTPS ์ฐจ์ด์ (0) | 2021.08.18 |
[Web] XSS์ CSRF(XSRF)์ ์ฐจ์ด์ (0) | 2021.08.04 |
[Web] Web Server ์ WAS์ ์ฐจ์ด (0) | 2021.08.04 |
[Web] GET๊ณผ POST ์ฐจ์ด (0) | 2021.08.03 |
๋๊ธ