๐ฅ [Conference] CS ์ ํจ๊ปํ๋ ๊ฐ๋ฐ ์ด์ผ๊ธฐ (GDSC Kprintf)
ํด๋น์๋ก๋ GDSC ์ปจํผ๋ฐ์ค์ ์ฐธ์ฌํ์ฌ ๋ค์ ๊ฐ์ ๋ด์ฉ ์๊ฐ์ ๋ฐํ์ผ๋ก
์์ฑ ๋ ํฌ์คํธ ์ ๋๋ค.
๊ฐ์
์์ฆ๋ค์ด ๋ฉด์ ์ง๋ฌธ์ ์ค๋นํ๋ค๋ณด๋ฉด ๊ธฐ์ ๋ฉด์ ์ธ์๋ CS ๊ด๋ จ ๋ฉด์ ๋ ๋ง์์ง ์ถ์ธ์ด๋ค.
์ ๊ณตํ์ ๋ง ๋์ผ๋ฉด ๋๋๊ฑฐ ์๋? ๋ผ๋
์ํํ๋ ๋ด ์์ ์ ํ์ฌํ๊ฒ ์๊ฐํ๋ฉฐ ๋๋ฌผ์ ํฌ์คํ ์ ๋จ๊ธด๋คโฆ
CS ๋ ์ ํด์ผ ํ ๊น?
์ด์ ๋ ๊ฐ๋ฐ์์ ๋ฌธํฑ์ด ๋ฎ์์ง ์ํฉ, ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ์ฌ๋์ ๋ง์์ก๋ค.
๊ทธ๋์ ํ๋ก๊ทธ๋จ์ โ์โ ๋ง๋ค์ด์ผ ํ๋ค.
๊ทธ๋ ๊ธฐ์ ์ด๋ ํ ํฌํ ์ ์ ๊ฐ๊ณ ์๋๋๋ก ํ๊ฐ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฐ๋ฆฌ์ ํ ์ดํ๋ก์ ํธ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ซ์๊ฐ ์ ๋ค.
ํ์ง๋ง ํธ๋ํฝ์ด ๋ชฐ๋ฆฐ๋ค๋ฉด..
CLIENT
-> SERVER
-> DATABASE
Server ์ ๊ตฌ์กฐ๊ฐ ๋ฐ๋๋ค๋ ๊ฒ์ -> ์ฝ๋๊ฐ ๋ฐ๋๋ค๋ ๊ฒ -> ๊ทธ๋์ ์ง ์ฝ๋๋ ์ด๋กํด?
๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๊ตฌ์กฐ๊ฐ ๋ฐ๋๋ค๋ ๊ฒ์ -> ์ด์์ค์ ์ด๋ป๊ฒ ๋ฐ๊ฟ? / ๊ธฐ์กด ๋ฐ์ดํฐ๋ ์ด๋กํด?
ํด๋น ์ํฉ๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๊ธฐ ๋ง๋ จ์ด๋ค.
Transaction Per Second
TPS ๋ ๋ฌด์์ธ๊ฐ
์๋ฒ๊ฐ ์ด๋น ์ฒ๋ฆฌํ ์ฌ์ฉ์ ์์ฒญ์ ์
๊ธฐ๋ณธ์ ์ผ๋ก ์๋น์ค ๊ท๋ชจ๋ฅผ ํ๋จํ๊ธฐ ์ํ ์์น๋ก ์ฌ์ฉ
์๋ฒ์ ์ฑ๋ฅ์ ํ๋จ ํ ์ ์์
๊ฐ๋ฐ์ ํ ๋๋ ์ผ๋ถ๋ฌ ํธ๋ํฝ ์ํฉ์ ๊ฑธ์ด์ TPS
๊ฐ ์ผ๋ง๋ ๋ชฐ๋ฆฌ๋ ์ง๋ก ํ์ธํ๋ค.
Q. ๊ทธ๋ง์ด ๊ณง ๋์์ ์์ ๋ผ๋ ๋ง ์๋์ผ?
ํ์ง๋ง ์์ฐํ ๋ค๋ฅด๋ค.
๋์ ์ฌ์ฉ์ | ๋ถํ ์ฌ์ฉ์ |
---|---|
์ ์ ์ฌ์ฉ์์ค ํ์ฌ ์์คํ ์ ์ฌ์ฉํ๊ณ ์๋ ์ฌ์ฉ์ | ๋์ ์ฌ์ฉ์ ์ค ํธ๋์ญ์ ์ ๋ฐ์ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ฌ์ฉ์ |
๊ทธ๋ ๋ค๋ฉดโฆ
TPS ๋ง ๋์ผ๋ฉด ๋ค์ผ ๊น?
์๋๋ค. ์๋ฒ๋ฅผ ์ค๋ ์ผ๋ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ TPS ๊ฐ ๋์๋ ๋ง์ฐํ ์ข์๊ฒ ์๋๋ค.
์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌ ํ ๋
ํ๋ก์ธ์ค ์์ฒด๋ ์ง์ ์ ์ผ๋ก ํต์ ํ ์ ์๋ค.
๋ฐ๋ผ์ Socket
์ ์ฌ์ฉํด์ ํต์ ์ ํ๋๋ฐ, ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
Port | Socket |
---|---|
ํต์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ํธ๊ตฌ๋ถ์ ์ํด ์ฌ์ฉํ๋ ๋ฒํธ | ๋คํธ์ํฌ ์์์ ๋์๊ฐ๋ ๋ ํ๋ก๊ทธ๋จ๊ฐ ์๋ฐฉํฅ ํต์ ์ ์ค๋ํฌ์ธํธ |
PORT ๋ ๋จ๋ฐฉํฅ, Socket ์ ์๋ฐฉํฅ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ํธํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ถ๋ถ์ ์๋ฒ๋ ๋ฆฌํ์คํธ๊ฐ ์ฌ ์ ์ด์ ๋ฐ๋ฅธ Process/Thread ๊ฐ ์์ด์ผ ํ๋ค.
๊ทธ๋ผ ์ด์ ๊ฐ์ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ด๋ค์์ผ๋ก ์ฒ๋ฆฌํ๋์ง ์์๋ณด์
Tomcat
์ฌ์ฉ์๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ ์ค๋ ๋๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ , ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์ค๋ ๋๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ฌ์ฉํจ
Thread pool
(์ค๋ ๋๋ฅผ ์ฌํ์ฉํจ)
(์ด๋ฏธ์ง ์ถ์ฒ : LOGICBIC.COM)
์ค๋ ๋ ๊ฐฏ์๊ฐ ๋ถ์กฑํ๋ฉด? ์ฒ๋ฆฌํ์ง ์๊ณ ๋๊ธฐ๋ฅผ ํจโฆ
Q 10000 ๊ฐ์ ํด๋ผ์ด์ธํธ๋ฅผ ๋์์ ์ฒ๋ฆฌ ํ ์ ์๋ ๋คํธ์ํฌ I/O ๋ฅผ ๋ง๋ค ์ ์์๊น?
๋จ์ํ Thread pool ์ ๊ฐฏ์๋ฅผ ๋๋ฆฌ๋ฉด ๋๋๊ฑฐ ์๋์ผ?
ํ์ง๋ง ํ๋ ธ๋ค.
Socket
๋ 256
๊ฐ๋ผ๋ ๊ฐฏ์ ์ ํ์ด ์๊ธฐ ๋๋ฌธ์ด๋คโฆ
๋ฐ๋ผ์ ํ๋ฒ์ 256
๊ฐ์ ํด๋ผ์ด์ธํธ๋ฅผ ๋ฐ์ ์ ๋ฐ์ ์๋ค.
MySQL
MySQL ๋ ์ปค๋ฅ์ ๋ณ๋ก ์์ผ์ ์ด์ด์ ํฐ์บฃ์ฒ๋ผ ๊ด๋ฆฌํ๊ณ ์๋ค
DATABASE ์ ๋ ๋ง์ ์์ผ ์๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋คโฆ
ํ์ผ ์ด์ด๋ณด๊ธฐ
1
2
File file1 = new File();
File file2 = new File();
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํ์ผ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋งค์ฐ ์ฌ์ด๋ฐ,
ํ๊ฐ๊ฐ ์๋ ์ฌ๋ฌ ํ์ผ์ ์ฌ๋ ๊ฒ๋ ๋ฌธ์ ๊ฐ ์๋ค.
์ฆ ํ๋์ ์ค๋ ๋๋ ํ์ผ์ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ์์ผ์ ๊ด๋ฆฌํ๋ค๋ฉด ํ๋์ ์ค๋ ๋๋ ์ฌ๋ฌ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ง ์์๊น?
๊ทธ๊ฒ ๋ฐ๋ก
I/O Multiplexing
Redis
Redis ๋ I/O Multiplexing
๋ฅผ ํตํด ๋ฉ์ธ ์ค๋ ๋๋ฅผ ๊ด๋ฆฌํ๋ค.
HTTP ์ ๋ํด์
์ต์ํ๊ฒ ๋์๋ค
HyperText Transfer Protocol ์ W3 ์์์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๋กํ ์ฝ
TCP
ํ์ง๋ง HTTP3 ์์๋
UDP
๋ฅผ ํ์ฉ
๊ทธ๋ผ TCP ์ UDP ์ ์ฐจ์ด๋ ๋ญ์ผ?
TCP | UDP |
---|---|
์ ๋ขฐ์ฑ ์๋ ํต์ ์ด ๊ฐ๋ฅ | ์ ๋ขฐ์ฑ์ ์์ง๋ง ๋น ๋ฆ |
Hand Shake
TCP ๋ฅผ ๋ ๋น ๋ฅด๊ฒ ํ ์ ์์ ๊น?
TTP/1.0
HTTP/1.0 ์์๋ ์น ํ๋ฉด ํ๋๋ฅผ ๋ฐ๊ธฐ ์ํด html
, js
, css
ํ์ผ์ ๋ฐ๋ก ์์ฒญ์ ์ฃผ๊ณ ๋ฐ๋๋ค.
์๋ก๊ณ ์นจ ํ๋ฉด?
Hand Shake
3ํโฆ์์ ๊ตฌ๋ฆฌ๋ค
TTP/1.1 Persistance
ํ์ผ์ ํ๋๋ก ๋ฌถ์ด์ ํ๋ฒ์ ์ ์ก
Hand Shake
1ํ
์๋ก๊ณ ์นจ ํ๋ฉด? Web Cashe ์ ์ฉ ์ 1ํ
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๊ฐ์ ์๋ฒ์์์ ๋ค๋ฅธ ์ฃผ์์ ๋ํด 3๋ฒ Hand Shake
๋ฅผ ํ๋คโฆ
๊ทธ๋ผ ์ ๋ขฐ์ฑ ์๋ ํต์ ์ ํ๊ธฐ ์ํด
Hand Shake
๋ฅผ ํ๋๊ฑด๋ฐ1ํ ์ฑ๊ณต ์ ๊ฒ์ ์ ๋ขฐ ํ๋ฉด ์๋๋ ๊ฑด๊ฐ์??
ํ ์ ์๋ค.
SYN
์ ํตํด Hand Shake ๋ฅผ ๊ฐ๋จํ ํ๋ค.
Syn + Cookie + Request
๋ฅผ ํ๊บผ๋ฒ์ ๋ณด๋ด์ฃผ๋ ๋ฐฉ๋ฒ์ ํตํด ๋น ๋ฅด๊ฒ ํ ์ ์๋ค.
์ด ๋ฐฉ๋ฒ์ TCP Fast Open
์ด๋ผ๊ณ ํ๋ค.
UDP ๋ ์ ๋ขฐ์ฑ์ด ์๋๋ฐ ์ ์ธ๊น?
- ์คํธ๋ฆฌ๋ฐ ์ฒ๋ผ ๊ตณ์ด ์ ๋ขฐ๋ฅผ ํ ํ์๊ฐ ์์ ๋
- ์๋๊ฐ ์ ์ผ ์ค์ํ ๋ ์ฌ์ฉ
DHCP* ์์ UDP ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๊ฐ ๋ฌด์ ์ธ๊ฐ?
- ๋ ๋น ๋ฅด๊ณ ๋ ๊ฐ๋จ
- ์ฐ๊ฒฐ ์งํฅ์ ์ผ ํ์๊ฐ ์์ผ๋๊น
- ์ ๋ขฐ์ฑ ๋ณด๋ค๋ ์๋๊ฐ ๋ ์ค์
- IP ์ฃผ์๊ฐ ์์ผ๋๊น
DHCP ์ ์ ์
์ฌ๋ฌ ์๋ฒ์์ ๊ฐ์ฅ ์๋ต์ด ๋น ๋ฅธ ์๋ฒ์ ํต์ ์ ํ๋ฉฐ IP ๋ฅผ ํ ๋น ๋ฐ์
TCP ๋ Hand Shake ๊ณผ์ ์ด ๋ฐ๋์ ๋ค์ด๊ฐ๋ฏ๋ก ๋ชจ๋ ํต์ ์ด 1:1๋ก ์ด๋ฃจ์ด์ง Unicast
๋ฐ๋ผ์ ๋น ํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ DHCP ๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
๊ทธ๋ผ ์ HTTP/3 ์ UDP ๋ฅผ ์ฌ์ฉํ ๊น?
- ๋๋ ค์
- TCP ๋ ๋๋ฌด ์์ ์ ๋ง๋ค์ด์ ธ์
๊ฐ์ ์ด์ ๊ฐ ์์ง๋ง ๊ฐ์ฅ ํฐ ์ด์ ๋
๋คํธ์ํฌ (OSI) 7 ๊ณ์ธต
์ ์๋ค.
- ๊ตฌํ์ ์ฉ์ดํจ (๊ฐ์ ๋ ์ด์ด๋ ๊ฐ์ ์ญํ ์ ์ถฉ์ค)
- ์๋ก ์์ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์ฉ ๊ฐ๋ฅ
๊ฒฐ๋ก ์ ์ผ๋ก Internet Protocol ์์ UDP ์์ ๋ ์ด์ด ๊ตฌ์กฐ๋ฅผ ์ถ๊ฐ๋ก ์น์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
(HTTP) (โฆ) (QUIC) (UDP) (INTERNET PROTOCOL)
vs
(HTTP) (โฆ) (TCP) (INTERNET PROTOCOL)
๋ง์น๋ฉฐโฆ
์ด๋์ ํญ์ CS ์ ๋ํ ์ง๋ฌธ์ ํญ์ ํ๋ ๊ฒ์ด์๊ตฌ๋ ์ถ์ ๋ฐค์ด๋ค.
์ผ๋ฅธ CS ์ฑ ํด์ผ์ง