본문 바로가기
슬기로운 자바 개발자 생활/스프링 및 자바웹 서비스

GRPC 자바 첫번째 알아보기

by 슬기로운 동네 형 2022. 12. 5.
반응형

GRPC는 무엇이고 누가 만들었는가?

 

GRPC는 기존 RPC개념을 구글이 도입, 자사의 마이크로서비스에 사용하던 범용 RPC 프레임워크입니다.

마이크로서비스(MSA)란? 용어가 나오니 분산 컴퓨팅 환경(DCE)에서 사용되는 기술일 것이고, 당연히 이런저런 프로그래밍 언어로도 사용 가능하지 않을까?

 

 이런 기술들이 대부분 범용성을 지니게 된다. 특징들을 살펴보면 JSON, XML 포맷들처럼 규칙들이 존재하는데 동일한 어떤 양식을 정의하고 그 양식을 각 언어별로 변화/Porting/Change 하면 서비스나 클라이언트 소스를 자동으로 만들어주곤 한다. 언어마다 툴마다 사용하는 방식이 모두 다르겠지만, 분산 네트워크 환경에서는 꼭 필요한 꼭 필요한 연계 방식이다.

 

RPC에 대한 정의 (위키백과)

 

원격 프로시저 호출 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 원격 프로시저 호출(영어: remote procedure call, 리모트 프로시저 콜, RPC)은 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수

ko.wikipedia.org

 

꽤 추상적인 설명들이고 와닿지 않을 수 있다. 조금 더 자세히 설명하자면,

 분산되어 있고 독립된 각 서비스(DB, WAS 가 특정 도메인 즉, 업무별로 나뉜 MSI 환경) 끼리 실시간, 주기적 통신을 할 수 있도록 구현하는 도움 라이브러리 또는 프레임워크의 한 종류라고 생각하면 된다.

 Rest API, WSDL, MQ, JMS 등도 비슷하다.

 

분산네트워크 환경, MSA Service(마이크로서비스)

 최근 5년간, 클라우드 서비스의 등장과 성장으로 서비스들의 개발과 운영 방식은 기존 모놀리식으로는 한계점에 왔다.

 패러다임의 변화가 감지되고 있다.

 분산 네트워크 환경, MSA 서비스들을 구성/구축하고 운영하기 위해서는 궁합이 맞는 통신기술과 프로그래밍 개념과 기법들을 개발자들은 익혀야 한다.

 관련된 것으로 이벤트 드리븐, 리액티브, 비동기, 논블럭 등, 결국 loosely coupled system을 구현하기 위한 기법들이다.

 

zdnet korea 기사 링크 

 

아마존 CTO "이벤트 드리븐 아키텍처로 가라"

“실제 세계는 비동기적(asynchronus)이다. 동기적(synchronus)인 것은 하나도 없다. 많은 일이 항상 일어나고 있다. 자연은 비동기식으로 작동한다. 컴퓨터 시스템도 비동기식으로 만들어지는 게 자연

n.news.naver.com

 

GRPC 사용하는 서비스들은?

국내에서는 당근, 네이버 클라우드 서비스들이 GRPC를 도입해서 사용하고 있다고 한다.

넷플릭스, 시스코, 주니퍼도 있다.

출처 grpc.io

GRPC의 장점

우리가 기존에 자주 사용하는 REST API보다 어떤 장점이 있는지 알아보자.

 

* 성능

속도가 빠르고 범용적이다.

GRPC는 Protobuf 사용하여 빠르게 직렬화 한다.

용량이 적게 포맷된 데이터로 모바일 앱과 같은 제한된 하드웨어에서 큰 이점을 갖는다.

참고 - HTTP/2 통신 프로토콜을 사용하여 바이너리 통신을 한다.

 

* 코드 생성

xxxx.proto 파일을 만든다. 이 형식은 각 프로그래밍 언어 소스로 변경된다. 즉 서버, 클라이언트 코드를 생성시켜 준다.

 

이 정도만 장점을 설명하겠다. 단점도 있다. 규칙과 형식이 있기에 proto 파일을 꼭 사용해서 서버와 클라이언트 소스를 만들어야 한다는 정도? 그리고 MQ처럼 스택이 아니라는 거?

 

모든 기술은 구현하고자 하는 서비스들과 궁합이 맞는지를 봐야 한다.
절대 좋은 것도 절대 나쁜 것도 없다는 뜻이다.

 

출처 : https://grpc.io/docs/what-is-grpc/introduction/

소스코드 생성/변환을 제공하는 프로그래밍 언어들

 

 

2 편에서 proto 파일을 이용한, 코드생성.  3편에서는 생성된 코드를 이용해 서버와 클라이언트 프로그램을 만들어보자.

2. GRPC 자바 두 번째 - proto 파일을 이용한 코드 생성

 

GRPC 자바 두번째 코드생성

전 포스팅에서 개념에 대해 알아봤다. 이번에는 .proto 파일을 정의하고 코드를 생성하는 방법을 알아보자. 난이도가 낮으니 소개한 대로만 크게 어려움은 없을 듯싶다. 준비물 자바 1.8, 메이븐,

ecolumbus.tistory.com

 

3.GRPC 자바 세번째 서버와 클라이언트 만들기

 

GRPC 자바 세번째 서버와 클라이언트 만들기

저번 포스팅에서 생성된 코드를 갖고 서버와 클라이언트 프로그램을 만들어본다. 이번 포스팅에서 만든 예제를 첨부함. 이클립스에서 작성한 프로젝트. 1. GreeterGrpc 를 사용해서 서버를 만들 수

ecolumbus.tistory.com

 

반응형

댓글