즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

블로그/나의생각

Google Protocol Buffer 사용 경험담

다물칸 2023. 6. 19. 14:45
728x90
반응형

일반적인 개론은 인터넷에 찾으면 많이 나오기 때문에 경험담 위주로 작성해봅니다. 

2015년 7월 한 회사에 들어갔더니 정부과제 3년짜리 중 1년 정도 남은 시점에 투입이 되었습니다. 

1년 중 6개월은 테스트 기간이라 실질 개발 시간은 6개월 밖에 되지 않았죠. 

 

GUI 화면설계는 전혀 되어 있지 않았고, 모듈 간 개념적인 페이로드 조차 상세화 되어 있지 않았습니다. 

정부과제 3차 중 2차 프로젝트로 진행되어 선행 프로젝트가 있었는데 페이로드를 전달하는 프로토콜을 gRPC를 사용하는 방식을 취하고 있었죠. 그 당시 선행 프로젝트에서 사용하던 것을 무조건 사용해야 하는 줄 알고 gRPC 및 Google Protocol Buffer를 파야만 했습니다. 나중에 알았지만 궂이 그것으로 할 필요는 없었지만, 필요악이긴 했습니다. 

 

리눅스 OS 최초 설치 시점에 화이트 스냅샵 형태로 뽑아서 저장해야 하는 그런 기능이었는데, 파일목록, 메모리 상주목록, 주요파일 해시 등 이를 하나의 파일로 쓰게 되면 약 2~300메가 정도 되는 양의 정보를 ProtoBuf를 이용하여 직렬화를 하면 2~3메가로 줄어드는 효과가 있었죠. 그래서 트래픽이 많이 발생되지 않았고, 별탈없이 6개월간의 검수를 마치고 과제를 완료했었 에피소드가 있었습니다. 

 

저는 GUI를 담당해서 C#, 나머지는 리눅스에서 데몬형태로 돌아야 했기 때문에 C++로 개발진행 했었죠. 

.proto 파일 포맷에 맞게 서로 가지고 있고, 이를 통해 직렬화 또는 역직렬화를 사용하면 REST API처럼 URI를 가지고 호출하는 방식이 아닌 자기함수 호출하듯 개발이 가능해집니다. 

 

아래 블로그에서 처럼 처음 학습곡선이 높지만 한번 배워놓으면 적절하게 사용할 수 있는 장점이 있었죠. 서로 주고 받는 데이터가 많은 경우에는 이보다 좋은 방법이 있을까요?

 

참고)

 

 

Protobuf 란?

오늘은 Protobuf에 대해서 설명하는 글을 작성하려고 합니다. Protobuf(Protocol Buffers)의 경우 사내 개발팀 내에서 이야기가 나오게 되었고 우리도 해당 기술의 도입을 검토할 필요가 있을 것 같다! 라

velog.io

 

 

[통신] RPC(Remote Procedure Call)의 개념 및 특징

RPC의 개념 : Remote Procedure Call(원격 프로시저 호출)의 약자로, 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 *함수나 **프로시저를 실행할 수 있게 하는 프로세스 간 통신 기술을 말한다.

co-no.tistory.com

 

반응형