해결된 질문
작성
·
660
·
수정됨
9
RPC가 일반적인 HTTP 를 이용한 API 서버보다 트래픽을 잘 처리할 수 있다고 강의에 말씀을 해주셨는데, 혹시 통상적으로 알려진 수치정보나 테스트 해보신 정보(동일한 서버 자원 스펙에서 처리 bps,tps 정보나 몇 배 더 빠르다 등)가 있을까요?
제가 이런 질문을 하는 이유는 실제 현업에서 HTTP에서 RPC로 변경 또는 도입을 하려면 객관적인 지표가 있어야 의사결정을 할 수 있을 것 같아서 질문합니다. 그렇기 때문에 객관적인 지표가 없다면, 혹시 강사님께서는 현업에서 어떤 근거? 기준? 으로 RPC 를 도입 또는 HTTP에서 변경하시는 지 알려주셔도 될 것 같습니다.
감사합니다.
답변 1
6
아주 좋은 질문입니다!!! 제 강의에서 이런 질문들이 많으면 너무 좋을꺼 같아요. 또한 실제 실무를 경험하고 계시는 분이 질문을 주시니 다른 분들에게 더 많은 도움이 될 꺼 같네요.
먼저 질문 너무 감사드립니다!!
--------------------------------------------
현업에서 HTTP로 구성을 할지, RPC로 구성을 할지 이런 부분에 대한 문제는 꽤나 복잡합니다. 이런 기본적인 설계는 경력에 따라 다르겠지만 일반적으로 경력이 많으신 분들이 결정을 하게 됩니다. 그러니 좀 더 부가적인 정보에 대해서 알고싶으시다면, 이런 방법을 고려하시는것도 괜찮을꺼 같아요.
결론부터 말씀드리자면, 해당 질문에 대해서는 제가 수치상으로 답변을 해드릴 수가 없습니다 ㅠㅠ
저희가 출근길에 사람이 얼마만큼 많은지 이런 질문에 대한 답변을 하기가 어렵잖아요??
이런 질문과 비슷한 질문이라고 생각이 들어요. 아무리 환경을 똑같이 구축을 한다고 해도, 그에 따른 차이는 발생할수밖에 없습니다.
굳이 정의를 내려보자면, RPC는 보통 다음과 같은 상황에서 많이 고려가 됩니다.
1. 기본적인 사용자 인증 처리
2. 결제 시스템의 범용적인 함수 사용
즉 다른 서버나 모듈 또는 시스템에서 사용하는 범용적인 함수가 필요한 경우에 대해서 RPC를 사용하신다고 보시면 됩니다.
또 생각보다 RPC를 많이 사용하지 않기도 해요. 상황에 따라서는
범용적인 함수 같은 경우는 라이브러리로 대체하는 경우도 있기 떄문이죠. RPC는 이런 범용적인 함수가 외부 다른 팀에서도 사용이 된다면, 그런 경우에 대해서 인터페이스 형태로 제공을 하기 위해서 많이 사용이 됩니다.
실제 배민에서도 이런 방식으로 사용을 하고 있죠 🙆♀
---------------------------------------------------
좀 더 부가적으로 설명을 해볼게요 👋
HTTP와 RPC에 대한 성능적인 측면은 앞서 말씀드렸듯이 측정하기가 굉장히 어렵습니다.
하지만 Call에 대한 리소스는 단언컨대 RPC가 더 효율적입니다.
HTTP는 좀 더 개발자가 보기 편하고, 좀 더 익숙한 사람들이 더 많습니다.
그런 만큼 컴퓨터는 이해하려면 따로 파싱해야 하는 부분이 필요한 프로토콜입니다.
당연히 기본적인 표현 방식이 JSON이고, 해당 JSON은 컴퓨터는 이해하지 못하기 떄문이죠
그런데 RPC는 달라요, JSON도 지원은 하지만 기본적으로 Protobuf라는 형태로 통신을 합니다.
이러면 기본적으로 Call하는 부분에 대한 담기는 사이즈가 압도적으로 작아요. 이것도 수치화하기는 어려운것은 당연히 요청마다 요청하는 값이 다르기 떄문이죠 🥵
그래서 성능적인 측면에 집중하는것도 좋지만 좀 더 리소스 효율적인 측면에 집중을 하여 처리하고 싶을 떄 RPC를 사용하게 됩니다.
---------------------------------------------------
제가 현재 실무에서 RPC를 사용하고 있는 통신은 사용자 인증에 대한 부분밖에 없습니다.
예를들어 Bearer토큰에 대한 DB조회 및 사용자 검증 이런 부분에 대해서 사용을 하고 있습니다.
질문자님께서 RPC를 고려하고 계시다고 하는데, 회사내에 RPC에 대한 개발자 경험이 적다면 그냥 HTTP를 사용하시는것도 고려해보시는게 좋을꺼같아요.
RPC가 효율적이다!! 라고는 하지만 개발자 경험이 부족하면 구현하기에 벅차고 타임라인에 대해서 시간이 부족 할수도 있지 않을까라는 생각도 들기는 하네요 ㅠㅠ 😵
이정도면 설명이 좀 되었을까요?? 추가로 질문이 있으면 편하게 더 질문 주시면 감사하겠습니다. 😉
먼저 답글을 이렇게 잘 달아주셔서 감사합니다.
어떤 지점에서 RPC를 주로 쓰고 도입 시 어떤 부분을 고려해야할 지 이해가 됩니다. ^^
감사합니다.
그리고. 다른 수강생들에게 공유해도 괜찮습니다
추가로 해당 질문을 다른 수강생들에게 공유드려도 괜찮을까요??
제가 저의 다른 강의에서도 좋은 질문이라고 생각이들면 한번씩 보면 도움이 된다고 생각을 하여 공유를 드리거든요!!
의견 한번만 부탁드립니다. 감사합니다!! 😉