Post

๐Ÿฅœ [Conference] CS ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๊ฐœ๋ฐœ ์ด์•ผ๊ธฐ (GDSC Kprintf)

image-01 (GDSC Kprintf)

ํ•ด๋‹น์ž๋กœ๋Š” GDSC ์ปจํผ๋Ÿฐ์Šค์— ์ฐธ์—ฌํ•˜์—ฌ ๋“ค์€ ๊ฐ•์˜ ๋‚ด์šฉ ์†Œ๊ฐ์„ ๋ฐ”ํƒ•์œผ๋กœ

์ž‘์„ฑ ๋œ ํฌ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค.

๊ฐœ์š”

์š”์ฆ˜๋“ค์–ด ๋ฉด์ ‘ ์งˆ๋ฌธ์„ ์ค€๋น„ํ•˜๋‹ค๋ณด๋ฉด ๊ธฐ์ˆ  ๋ฉด์ ‘ ์™ธ์—๋„ CS ๊ด€๋ จ ๋ฉด์ ‘๋„ ๋งŽ์•„์ง„ ์ถ”์„ธ์ด๋‹ค.

์ „๊ณตํ•™์ ๋งŒ ๋†’์œผ๋ฉด ๋˜๋Š”๊ฑฐ ์•„๋ƒ? ๋ผ๋Š”

์–„ํŒํ–ˆ๋˜ ๋‚ด ์ž์‹ ์„ ํ•œ์‹ฌํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉฐ ๋ˆˆ๋ฌผ์˜ ํฌ์ŠคํŒ…์„ ๋‚จ๊ธด๋‹คโ€ฆ



CS ๋Š” ์™œ ํ•ด์•ผ ํ• ๊นŒ?

์ด์ œ๋Š” ๊ฐœ๋ฐœ์ž์˜ ๋ฌธํ„ฑ์ด ๋‚ฎ์•„์ง„ ์ƒํ™ฉ, ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ์‚ฌ๋žŒ์€ ๋งŽ์•„์กŒ๋‹ค.

๊ทธ๋ž˜์„œ ํ”„๋กœ๊ทธ๋žจ์„ โ€˜์ž˜โ€™ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

๊ทธ๋ ‡๊ธฐ์— ์–ด๋– ํ•œ ํฌํ…์…œ์„ ๊ฐ–๊ณ ์žˆ๋Š๋ƒ๋กœ ํ‰๊ฐ€ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์šฐ๋ฆฌ์˜ ํ† ์ดํ”„๋กœ์ ํŠธ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ˆซ์ž๊ฐ€ ์ ๋‹ค.

ํ•˜์ง€๋งŒ ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆฐ๋‹ค๋ฉด..

CLIENT -> SERVER -> DATABASE

Server ์˜ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€๋‹ค๋Š” ๊ฒƒ์€ -> ์ฝ”๋“œ๊ฐ€ ๋ฐ”๋€๋‹ค๋Š” ๊ฒƒ -> ๊ทธ๋™์•ˆ ์ง  ์ฝ”๋“œ๋Š” ์–ด๋–กํ•ด?

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€๋‹ค๋Š” ๊ฒƒ์€ -> ์šด์˜์ค‘์— ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟ”? / ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–กํ•ด?

ํ•ด๋‹น ์ƒํ™ฉ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋งˆ๋ จ์ด๋‹ค.



Transaction Per Second

TPS ๋ž€ ๋ฌด์—‡์ธ๊ฐ€

์„œ๋ฒ„๊ฐ€ ์ดˆ๋‹น ์ฒ˜๋ฆฌํ•œ ์‚ฌ์šฉ์ž ์š”์ฒญ์˜ ์ˆ˜

๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋น„์Šค ๊ทœ๋ชจ๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜์น˜๋กœ ์‚ฌ์šฉ

์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ํŒ๋‹จ ํ•  ์ˆ˜ ์žˆ์Œ

๊ฐœ๋ฐœ์„ ํ•  ๋•Œ๋Š” ์ผ๋ถ€๋Ÿฌ ํŠธ๋ž˜ํ”ฝ ์ƒํ™ฉ์„ ๊ฑธ์–ด์„œ TPS ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ชฐ๋ฆฌ๋Š” ์ง€๋กœ ํ™•์ธํ•œ๋‹ค.

Q. ๊ทธ๋ง์ด ๊ณง ๋™์‹œ์ ‘์†์ž ๋ผ๋Š” ๋ง ์•„๋‹ˆ์•ผ?

ํ•˜์ง€๋งŒ ์—„์—ฐํžˆ ๋‹ค๋ฅด๋‹ค.


๋™์‹œ ์‚ฌ์šฉ์ž๋ถ€ํ•˜ ์‚ฌ์šฉ์ž
์ ‘์† ์‚ฌ์šฉ์ž์ค‘ ํ˜„์žฌ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž๋™์‹œ ์‚ฌ์šฉ์ž ์ค‘ ํŠธ๋žœ์žญ์…˜์„ ๋ฐœ์ƒํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž

๊ทธ๋ ‡๋‹ค๋ฉดโ€ฆ

TPS ๋งŒ ๋†’์œผ๋ฉด ๋‹ค์ผ ๊นŒ?

์•„๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ์˜ค๋ž˜ ์ผœ๋‘ฌ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— TPS ๊ฐ€ ๋†’์•„๋„ ๋ง‰์—ฐํžˆ ์ข‹์€๊ฒŒ ์•„๋‹ˆ๋‹ค.



์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ ํ•  ๋•Œ

ํ”„๋กœ์„ธ์Šค ์ž์ฒด๋Š” ์ง์ ‘์ ์œผ๋กœ ํ†ต์‹  ํ•  ์ˆ˜ ์—†๋‹ค.

๋”ฐ๋ผ์„œ Socket ์„ ์‚ฌ์šฉํ•ด์„œ ํ†ต์‹ ์„ ํ•˜๋Š”๋ฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด์—์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

PortSocket
ํ†ต์‹  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ƒํ˜ธ๊ตฌ๋ถ„์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฒˆํ˜ธ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ๋Œ์•„๊ฐ€๋Š” ๋‘ ํ”„๋กœ๊ทธ๋žจ๊ฐ„ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์˜ ์•ค๋“œํฌ์ธํŠธ

PORT ๋Š” ๋‹จ๋ฐฉํ–ฅ, Socket ์€ ์–‘๋ฐฉํ–ฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋ฒ„๋Š” ๋ฆฌํ€˜์ŠคํŠธ๊ฐ€ ์˜ฌ ์‹œ ์ด์— ๋”ฐ๋ฅธ Process/Thread ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๊ทธ๋Ÿผ ์ด์ œ ๊ฐ์ž ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์–ด๋–ค์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž



Tomcat

image-02 (apache tomcat)

์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์Šค๋ ˆ๋“œ๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋†“๊ณ , ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ์Šค๋ ˆ๋“œ๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•จ

Thread pool(์Šค๋ ˆ๋“œ๋ฅผ ์žฌํ™œ์šฉํ•จ)

image-03 (์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : LOGICBIC.COM)

์Šค๋ ˆ๋“œ ๊ฐฏ์ˆ˜๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด? ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐ๋ฅผ ํ•จโ€ฆ

Q 10000 ๊ฐœ์˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ I/O ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ?

๋‹จ์ˆœํžˆ Thread pool ์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด ๋˜๋Š”๊ฑฐ ์•„๋‹ˆ์•ผ?

ํ•˜์ง€๋งŒ ํ‹€๋ ธ๋‹ค.

Socket ๋„ 256 ๊ฐœ๋ผ๋Š” ๊ฐฏ์ˆ˜ ์ œํ•œ์ด ์žˆ๊ธฐ ๋–„๋ฌธ์ด๋‹คโ€ฆ

๋”ฐ๋ผ์„œ ํ•œ๋ฒˆ์— 256 ๊ฐœ์˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ฐ›์„ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.


MySQL

image-04 (mySQL)

MySQL ๋„ ์ปค๋„ฅ์…˜ ๋ณ„๋กœ ์†Œ์ผ“์„ ์—ด์–ด์„œ ํ†ฐ์บฃ์ฒ˜๋Ÿผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค

DATABASE ์€ ๋” ๋งŽ์€ ์†Œ์ผ“ ์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹คโ€ฆ

ํŒŒ์ผ ์—ด์–ด๋ณด๊ธฐ

1
2
File file1 = new File();
File file2 = new File();

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‰ฌ์šด๋ฐ,

ํ•œ๊ฐœ๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ์—ฌ๋Š” ๊ฒƒ๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.

์ฆ‰ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋„ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์†Œ์ผ“์„ ๊ด€๋ฆฌํ•œ๋‹ค๋ฉด ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋„ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ?

๊ทธ๊ฒŒ ๋ฐ”๋กœ

I/O Multiplexing


Redis

image-05 (redis)

Redis ๋Š” I/O Multiplexing ๋ฅผ ํ†ตํ•ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.



HTTP ์— ๋Œ€ํ•ด์„œ

์ต์ˆ™ํ•œ๊ฒŒ ๋‚˜์™”๋‹ค

HyperText Transfer Protocol ์€ W3 ์ƒ์—์„œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ TCP

ํ•˜์ง€๋งŒ HTTP3 ์—์„œ๋Š” UDP ๋ฅผ ํ™œ์šฉ

๊ทธ๋Ÿผ TCP ์™€ UDP ์˜ ์ฐจ์ด๋Š” ๋ญ์•ผ?

TCPUDP
์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ†ต์‹ ์ด ๊ฐ€๋Šฅ์‹ ๋ขฐ์„ฑ์€ ์—†์ง€๋งŒ ๋น ๋ฆ„

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 ์ฑ… ํŽด์•ผ์ง€

This post is licensed under CC BY 4.0 by the author.