지난 토요일부터 관심을 가지게 된 주제입니다.
많은 사람들이 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로만 바꿔주려고 합니다.
- 여러 테스트 글에서 HTTP/1.1 → HTTP/2 로만 변경해도 성능이 크게 개선된다고 하는데 체감을 하신 분이 계신가요?
- HTTP/2로도 기존의 REST API를 사용할 수 있나요?
아래 정성태님의 글을 보면 HTTP/2가 지원되지 않는 서버에 대해서는 자동으로 HTTP/1.1 로 동작한다고 이해했습니다.
- 그럼 이 경우 IIS를 HTTP/2를 지원하도록 변경해놓아도 서버가 REST API를 쓰면 HTTP/1.1로 동작하는 것인지 궁금합니다.
HTTP/2로 바꾸는 자체는 IIS를 쓰는 서비스는 이 글을 따라해서 하려하고 Azure App Service로 되어있는 것은 그냥 HTTP/2로만 새로 인스턴스를 만들려고 합니다.
- .NET 6가 나오면서 QUIC이 지원된다고 하는데 QUIC이 되어서 HTTP/3를 사용하려면 기존의 REST API를 다른 방식으로 바꿔야하는 건가요?
개념이 잡히지 않아서 아직 알쏭달쏭한 상태에서 질문드립니다.
참고글
- HTTP/3는 왜 UDP를 선택한 것일까?
- https://m.blog.naver.com/sehyunfa/221680799006
- https://velog.io/@ziyoonee/HTTP1-부터-HTTP3-까지-알아보기
- https://docs.microsoft.com/ko-kr/aspnet/core/host-and-deploy/iis/protocols?view=aspnetcore-5.0
- https://www.sysnet.pe.kr/2/0/12495
- https://www.burndogfather.com/204
- gRPC 서비스와 HTTP API 비교 | Microsoft Learn
- REST API 제대로 알고 사용하기 : NHN Cloud Meetup
- .NET Core 3 - HTTP/2 Support | dot-net-core-3 Tutorial
- https://cloud-trends.medium.com/grpc-vs-restful-api-vs-graphql-web-socket-tcp-sockets-and-udp-beyond-client-server-43338eb02e37