HTTP/3(QUIC)
안녕하세요, AIPD팀 최주영입니다.
AIPD팀에서 서비스 중인 ADS, SecureBridge의 게이트웨이 성능 최적화 관점에서, HTTP/3 (QUIC)의 실효성과 적용 가능성을 확인하기 위해 이 글을 작성했습니다.
QUIC (Quick UDP Internet Connections) 는 Google 에서 처음 제안하고, 현재는 IETF 표준(RFC 9000) 으로 정의된 차세대 전송 프로토콜입니다.
기존 TCP 위에서 동작하는 HTTP/1.1, HTTP/2와는 달리, QUIC 은 UDP 기반으로 설계되었으며, 이를 통해 연결 지연을 최소하고 네트워크 성능을 크게 개선하는 것을 목표로 합니다.
HTTP/3 는 바로 이 QUIC 을 전송 계층으로 사용하는 HTTP 프로토콜입니다.


기존 HTTP 통신(HTTP/1.1 or HTTP/2)을 HTTP3으로 변경하기
HTTP/1.1이나 HTTP/2 프로토콜로 동작하면 REST API 를 코드 변경 없이 HTTP 프로토콜로 변경할 수 있습니다.
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
runtimeOnly 'io.netty.incubator:netty-incubator-codec-http3:0.0.28.Final'package com.ahnlab.fogger.http3;
import org.springframework.boot.ssl.SslBundle;
import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;
import reactor.netty.http.Http3SslContextSpec;
import reactor.netty.http.HttpProtocol;
import java.time.Duration;
@Component
class Http3NettyWebServerCustomizer implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> {
@Override
public void customize(NettyReactiveWebServerFactory factory) {
factory.addServerCustomizers(server -> {
SslBundle sslBundle = factory.getSslBundles().getBundle("server-http3");
Http3SslContextSpec sslContextSpec =
Http3SslContextSpec.forServer(sslBundle.getManagers().getKeyManagerFactory(), sslBundle.getKey().getPassword());
return server
// Configure HTTP/3 protocol
.protocol(HttpProtocol.HTTP3)
// Configure HTTP/3 SslContext
.secure(spec -> spec.sslContext(sslContextSpec))
// Configure HTTP/3 settings
.http3Settings(spec -> spec.idleTimeout(Duration.ofSeconds(5))
.maxData(10_000_000)
.maxStreamDataBidirectionalRemote(1_000_000)
.maxStreamsBidirectional(100));
});
}
}spring:
ssl:
bundle:
jks:
server-http3:
keystore:
location: <key file path>
password: <password>
type: PKCS12@GetMapping("/hello")
String hello() {
return "Hello HTTP/3!";
}
데이터의 용량이 클수록 TCP 통신보다 QUIC 통신이 빠른 것을 알 수 있습니다.

