회사 프로젝트중에 모바일 푸시 서비스 관련 개발을 하다가 우연히 HTTP2 프로토콜에 대해 접하게 되었다.

HTTP2 프로토콜이란.. 결론적으로 HTTP/1.x 방식에 비해 빠르다는 것이다.

정확한 내용은 아래의 URL을 참고하자.

https://developers.google.com/web/fundamentals/performance/http2/?hl=ko

또한 HTTP2 프로토콜은 HTTP/1.x 을 대체하는 것이 아니라, 확장한다는 개념이기 때문에 HTTP2프로토콜로 사용한다고 해서 기존 어플리케이션을 코드를 수정할 필요는 없고 단순히 프로토콜을 사용하기 위한 설정만 해주면 된다.

먼저, HTTP2를 사용하기 위해서는 HTTPS를 설정해야 한다.

때문에, tomcat에서 SSL을 사용하기 위한 개발용 keystore 파일을 생성해보자.(pkcs12 포맷으로 생성)

sts terminal창에서 아래의 명령어를 실행한 후 아래와 같이 패스워드와 기타 정보들을 입력하면 생성이 된다.

keytool -genkey -alias javaboja -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 4000

생성한 후에, application.properties에서 ssl 설정과 HTTP2 설정을 하면 끝이다.

<application.properties>

server.ssl.key-store=keystore.p12
server.ssl.key-store-type=PKCS12
server.ssl.key-store-password=
server.ssl.key-alias=javaboja
server.port=443
server.http2.enabled=true

실제 HTTP2프로토콜 사용을 확인하기 위해 test용 controller와 html을 생성하자.

 

<HomeController.java>

package com.javaboja.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

	@GetMapping("/test")
	public String test() {
		return "test";
	}

}

<test.html>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	Hello!!
</body>
</html>

 

프로젝트를 실행한 후 크롬 콘솔창을 보면 Protocol에 h2라고 되어있는데 HTTP2 프로토콜을 사용하고 있다는 것을 의미한다.

+ Recent posts