Http/1.1, http/2, http/3?

์ง€๋‚œ ํ† ์š”์ผ๋ถ€ํ„ฐ ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ฒŒ ๋œ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค.

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด HTTP 1.1์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” REST API์— ๋Œ€ํ•ด ๊นŠ๊ฒŒ ์ƒ๊ฐ์•ˆํ•˜๊ณ  ์“ฐ๊ธฐ ๊ฐ„๋‹จํ•˜์—ฌ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. ์ €๋งŒ ํ•ด๋„ ๊ทธ๋žฌ๋Š”๋ฐ์š”. gRPC๊ฐ€ ๋น ๋ฅด๊ณ  ๋– ์˜ค๋ฅด๋Š” ์ตœ์‹  ๊ธฐ์ˆ ์ด๋ผ๊ณ ๋Š” ๋“ค์—ˆ์ง€๋งŒ, ๊ทธ๋ƒฅ REST API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜์ง€ ์™œ ๊ตณ์ด HTTP/2๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” gRPC๋ฅผ ์‚ฌ์šฉํ• ๊นŒ ์˜๋ฌธ์„ ๊ฐ€์ง„์ ์ด ์—†๋‹ค๊ฐ€ ์ง€๋‚œ ํ† ์š”์ผ์— ๊ฐ‘์ž๊ธฐ ๊ถ๊ธˆํ•ด์ ธ์„œ ๊ณต๋ถ€ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” REST API๋Š” HTTP/1.1์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค๋Š” ์ ์ด๊ณ  gRPC๋Š” HTTP/2๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ผ๋‹จ HTTP/2๋กœ ๋„˜์–ด๊ฐ€๋Š” ์ž์ฒด๋กœ ์ด๋ฏธ ๋งŽ์€ ๋‹จ์ ๋“ค์ด ์‚ฌ๋ผ์ง€๊ณ  ์ƒˆ๋กœ์šด ์žฅ์ ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ์„œ๋ฒ„๊ฐ€ REST API๋กœ ๊ฐœ๋ฐœ์ด ๋˜์–ด์„œ gRPC๋กœ ๋‹ค ๋œฏ์–ด ๊ณ ์น˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„์ƒ ์—ฌ์œ ๊ฐ€ ์—†์„ ๋“ฏ ํ•˜์—ฌ HTTP/2๋กœ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  1. ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ ๊ธ€์—์„œ HTTP/1.1 โ†’ HTTP/2 ๋กœ๋งŒ ๋ณ€๊ฒฝํ•ด๋„ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ๊ฐœ์„ ๋œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ์ฒด๊ฐ์„ ํ•˜์‹  ๋ถ„์ด ๊ณ„์‹ ๊ฐ€์š”?
  2. HTTP/2๋กœ๋„ ๊ธฐ์กด์˜ REST API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์•„๋ž˜ ์ •์„ฑํƒœ๋‹˜์˜ ๊ธ€์„ ๋ณด๋ฉด HTTP/2๊ฐ€ ์ง€์›๋˜์ง€ ์•Š๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•ด์„œ๋Š” ์ž๋™์œผ๋กœ HTTP/1.1 ๋กœ ๋™์ž‘ํ•œ๋‹ค๊ณ  ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค.

https://www.sysnet.pe.kr/2/0/12495

  1. ๊ทธ๋Ÿผ ์ด ๊ฒฝ์šฐ IIS๋ฅผ HTTP/2๋ฅผ ์ง€์›ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ด๋†“์•„๋„ ์„œ๋ฒ„๊ฐ€ REST API๋ฅผ ์“ฐ๋ฉด HTTP/1.1๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

HTTP/2๋กœ ๋ฐ”๊พธ๋Š” ์ž์ฒด๋Š” IIS๋ฅผ ์“ฐ๋Š” ์„œ๋น„์Šค๋Š” ์ด ๊ธ€์„ ๋”ฐ๋ผํ•ด์„œ ํ•˜๋ คํ•˜๊ณ  Azure App Service๋กœ ๋˜์–ด์žˆ๋Š” ๊ฒƒ์€ ๊ทธ๋ƒฅ HTTP/2๋กœ๋งŒ ์ƒˆ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  1. .NET 6๊ฐ€ ๋‚˜์˜ค๋ฉด์„œ QUIC์ด ์ง€์›๋œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ QUIC์ด ๋˜์–ด์„œ HTTP/3๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ธฐ์กด์˜ REST API๋ฅผ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊ฟ”์•ผํ•˜๋Š” ๊ฑด๊ฐ€์š”?

๊ฐœ๋…์ด ์žกํžˆ์ง€ ์•Š์•„์„œ ์•„์ง ์•Œ์ญ๋‹ฌ์ญํ•œ ์ƒํƒœ์—์„œ ์งˆ๋ฌธ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๊ธ€

2๊ฐœ์˜ ์ข‹์•„์š”

์ผ๋‹จ 4๋ฒˆ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹จ์ง€ ํ”„ํ† ํ† ์ฝœ ๋ ˆ์ด์–ด์—์„œ TCP๋Œ€์‹  UDP๊ธฐ๋ฐ˜์˜ QUIC๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด๊ณผ ๋™์ผํ•˜๊ฒŒ REST API๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP/3๋ฅผ ์ง€์›์€ ํ•ด์•ผ๊ฒ ์ง€์š”.

2๊ฐœ์˜ ์ข‹์•„์š”

์ œ๊ฐ€ ์ง€๊ธˆ ๊ฐœ๋…์ด ์•„๋ฆฌ์†กํ•œ ๊ฒƒ์ด REST API ์ž์ฒด๊ฐ€ HTTP/1.1 ์ด ์•„๋‹Œ๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ ๋•Œ๋ฌธ์ธ๋ฐ, REST API๋ฅผ HTTP/3 ์ŠคํŽ™์œผ๋กœ ์š”์ฒญํ•˜๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”๊ฑด๊ฐ€์š”? ๋ฌผ๋ก  HttpClient๊ฐ™์€ QUIC์šฉ ํด๋ผ์ด์–ธํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์žˆ์–ด์•ผ๊ฒ ์ง€๋งŒโ€ฆ

1๊ฐœ์˜ ์ข‹์•„์š”

๊ธ€์Ž„์š”. REST API๋Š” ๋ณ„๋„์˜ HTTP ๋ฒ„์ ผ์ œ์•ฝ์€ ์—†๋Š”๊ฑธ๋กœ ์•Œ๊ณ  ์Šต๋‹ˆ๋‹ค.

3๊ฐœ์˜ ์ข‹์•„์š”

์™œ ์•„๊นŒ๋Š” ์ด ๋ฌธ์„œ๋“ค์„ ๋ชป์ฐพ์•˜์„๊นŒ ํ•œ์‹ฌํ•˜๋„ค์š”โ€ฆใ…Žใ…Ž;;
๋ง์”€ํ•˜์‹ ๋Œ€๋กœ REST API๋Š” HTTP์ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
HTTP/1.1 ์˜ REST API ์„œ๋ฒ„๋ฅผ HTTP/2๋กœ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP/2๋กœ ์š”์ฒญํ•  ๋•Œ HTTP/2ํ˜•ํƒœ๋กœ REST API ํ†ต์‹ ์„ ํ•œ๋‹ค๊ณ  ํ•˜๋„ค์š”.

2๊ฐœ์˜ ์ข‹์•„์š”

์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๊ณ ์„œ gRPC์˜ ์“ฐ์ž„์ƒˆ์— ๋Œ€ํ•ด์„œ ๋งŽ์ด ์ดํ•ดํ•˜์˜€์Šต๋‹ˆ๋‹ค.
gRPC๋Š” http๊ธฐ๋ฐ˜์˜ RPC๋กœ ์ดํ•ด ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”