2021. 4. 13. 23:09ㆍSpring Micro Services/gRPC
이 프로젝트를 시작하는 이유는 기존의 Micrso Service 또는 외부 API 연동은 RESTful 방식을 많이 사용해 왔는데 얼마전 udemy 에서 gRPC강의를 들은 후 프로젝트에 적용하기 위해 시작하게 되었다.
강의를 들은 다음에 의문점은 실제 DB에 연동하였을때는 어떻한 성능을 보일지 궁금 하여서 이 부분에 대한 성능 검증을 할려고 한다.
서비스아키텍처
아키텍처1
관련 Maven Module
- order_app
- payment-rest-server
아키텍처2
관련 Maven Module
- order_app
- payment-grpc-server
아키텍처3
관련 Maven Module
- order_app
- payment-load-balance
- payment-grpc-client
- payment-grpc-server
프로젝트구조
위의 서비스 아키텍처 바탕으로 Maven Module 프로젝트생성
proto module은 proto 파일 관리 및 genereated 소스 관리
원래는 proto 파일은 클라이언트쪽에서도 동일하게 생성 해야 하지만 본 프로젝트에서는 maven module로 관리하므로 서버에서만 생성한다.
개발환경
IDE: IntelliJ IDEA 2021.1.1 (Community Version)
Java Version: 9.0.4
DBMS: PostgreSQL
※ http2 사용을 위해서는 java9 이상을 설치하여야만 한다. 사용하지 않은 경우는 9이하를 설치해도 괜찮다.
테이블생성
테이블은 성능테스트를 위해 간단히 주문정보를 저장하는 테이블과 결제승인정보를 저장하는 테이블 두개를 생성한다.
01.시퀀스생성
CREATE SEQUENCE orderm_id_seq;
02.orderm
DROP TABLE public.orderm;
CREATE TABLE public.orderm (
id integer NOT NULL DEFAULT nextval('orderm_id_seq'),
order_no character varying(15) NOT NULL,
order_amt bigint NOT NULL,
order_dtm character varying(14) NOT NULL,
aprval_no character varying(15) NULL,
create_dtm TIMESTAMP default now()::timestamp
)
TABLESPACE pg_default;
COMMENT ON TABLE public.orderm IS '주문';
COMMENT ON COLUMN public.orderm.id IS 'ID';
COMMENT ON COLUMN public.orderm.order_no IS '주문번호';
COMMENT ON COLUMN public.orderm.order_amt IS '주문금액';
COMMENT ON COLUMN public.orderm.order_dtm IS '주문일자';
COMMENT ON COLUMN public.orderm.aprval_no IS '승인번호';
COMMENT ON COLUMN public.orderm.create_dtm IS '생성일시';
ALTER TABLE public.orderm ADD
CONSTRAINT orderm_pk PRIMARY KEY ( id );
03.payment_approval
DROP TABLE public.payment_approval;
CREATE TABLE public.payment_approval (
aprval_no character varying(15) NOT NULL,
aprval_amt bigint NOT NULL,
aprval_dtm character varying(14) NOT NULL,
create_dtm TIMESTAMP default now()::timestamp
)
TABLESPACE pg_default;
COMMENT ON TABLE public.payment_approval IS '결제승인';
COMMENT ON COLUMN public.payment_approval.aprval_no IS '승인번호';
COMMENT ON COLUMN public.payment_approval.aprval_amt IS '승인금액';
COMMENT ON COLUMN public.payment_approval.aprval_dtm IS '승인일자';
COMMENT ON COLUMN public.payment_approval.create_dtm IS '생성일시';
ALTER TABLE public.payment_approval ADD
CONSTRAINT payment_approval_pk PRIMARY KEY ( aprval_no );
keystore 생성
http2 테스트를 위해서 keystore 파일 생성
생성명령어: keytool -genkey -alias roopy -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 4000
'Spring Micro Services > gRPC' 카테고리의 다른 글
gRPC VS REST 성능 테스트II (0) | 2021.05.20 |
---|---|
proto module (0) | 2021.05.08 |
gRPC VS REST 성능 테스트I (0) | 2021.04.15 |