Spring에서 코루틴으로 http2 전이중 통신 구현
http2(이하 h2)는 기존과 달리 헤더 압축과 프레임 단위 전송을 도입해 성능을 크게 개선했다. 모든 데이터는 하나의 TCP 연결 위에서 다중 스트림으로 교차 처리되며, 서버는 요청을 기다리지 않고 준비된 응답을 먼저 보낼 수 있다. 이로써 클라이언트와 서버는 서로 독립적으로 데이터를 주고받는 전이중 통신을 실현한다. 스프링프레임웍은 MVC로는 이러한 전이중(duplex)의 구조를 활용할 수 없고 웹플럭스기반의 아키텍쳐에서만 사용할 수 있다. h2의 대표적인 기능 중엔 널리 알려진 SSE가 있다. 이는 http1.1의 롱폴링(long polling)과는 다르다. 확보된 TCP세션안에서 필요할 때 프레임을 전송하는 기술이다. 하지만 SSE조차 그저 응답시의 프레임을 사용할 뿐이다. 진정한 전이중은 요청과 응답을 별도로 처리할 수 있어야한다.