[MSA] SpringBoot에 gRPC 클라이언트 구성하기
·
gRPC
시작하며안녕하세요. 개발자 stark입니다. 이전 포스팅에서는 gRPC 서버를 구성해 봤습니다. 이번에는 gRPC 클라이언트 서버를 구성해 봅시다.지금 구성중인 프로젝트는 MSA이기 때문에 최소 2개의 서버가 필요합니다. 그래서 저는 어떤 도메인을 예시로 들지 고민하다 가장 예시로 설명하기 쉬운 회원 도메인을 적용해서 메인 서버를 구성했고 내부에 gRPC 서버를 구성하였습니다. 아래 다이어그램을 보시면 gRPC 서버는 SpringBoot 내부에 들어가 있는 것을 확인하실 수 있습니다. 그 이유는 gRPC는 SpringBoot에서 일반적으로 사용하는 tomcat과 별개로 netty 서버를 띄워줘야 하기 때문입니다. 반면 클라이언트 서버들은 netty 서버 구성을 하지 않고 SpringBoot의 기본 tom..
[MSA] SpringBoot에 gRPC 서버 구성하기: 회원 서비스 만들기
·
gRPC
시작하며안녕하세요. 개발자 stark입니다.최근 업무가 조금 바빠져서 블로그에 글을 작성하지 못했는데요. 설이기도 하고 정리할 시간이 생겨서 오랜만에 글을 적게 되었습니다. 제가 이번 연도에 작성할 주요 시리즈 중 하나는 gRPC였는데요. 왜냐하면 원할 때 언제든지 적용해서 사용하기에는 생각보다 관련된 정보가 부족하다고 느꼈기 때문입니다. (제 정보력이 부족한 걸 수도 있지만요 ㅎㅎ) 그래서 저는 Spring에 gRPC를 적용하고 MSA 서버 간 통신이 가능하도록 프로젝트를 구성했고 이것을 천천히 공유드리고자 합니다. 총 2개의 SpringBoot 프로젝트를 만들어야 하고 각 프로젝트에 gRPC 서버, gRPC 클라이언트를 구성해야 합니다. 조금 특이하다고 느낄만한 것이 있는데 일반적으로 MSA를 구축할..
gRPC 인터셉터를 사용한 JWT 인증과 Spring Security 연동하기
·
gRPC
시작하며안녕하세요. 개발자 Stark입니다. 오늘 포스팅은 제가 야심 차게 준비 중인 2개의 시리즈(트랜잭션, gRPC) 중 gRPC시리즈입니다. 내용을 간단히 설명드리자면 스프링에서 gRPC를 사용하면서 JWT 토큰 인증 기능을 구현하기 위해 토큰 인증을 담당하는 grpc 인터셉터를 구현하고 spring security의 SecurityContextHolder와 통합시켰습니다. 서버에 gRPC 요청이 들어오면 요청을 처리하기 전에 gRPC 인터셉터가 호출되면서 (GrpcAuthenticationReader)를 호출하게 됩니다. 저는 이 Reader 클래스를 Jwt 전용으로 커스텀해서 빈으로 등록하여 매번 요청을 받을 때마다 제가 만든 빈 클래스가 호출되도록 해서 JWT 인증을 진행하고 있습니다. 근데 ..
개발자를 위한 gRPC 기본 개념
·
gRPC
안녕하세요. 오늘도 개발 중인 stark입니다!최근 마이크로서비스 아키텍처(MSA)가 널리 도입되면서, 서비스 간 통신 방식에 대한 고민이 깊어지고 있습니다. 그중에서도 Google이 개발한 gRPC는 기존 REST API의 한계를 뛰어넘는 새로운 대안으로 주목받고 있습니다. 저 또한 MSA 프로젝트를 하면서 FeignClient의 대안을 알아보던 중 gRPC에 대해 알게 되었고 도입까지 해보게 되었습니다. 그러나 gRPC를 사용만 했지 무엇인지에 대해서는 이론적으로 잘 알지 못하고 있다는 것을 깨달았습니다. 그래서 이번 포스팅에서는 gRPC에 대한 경험이 아닌 이론을 정리해 보았습니다. 이번 포스팅을 통해 gRPC가 어떤 특징을 가졌는지 그리고 기존의 REST API와 비교했을 때 어떤 차별점이 있는지..
[gRPC] SpringBoot3 gRPC 예외 인터셉터 적용
·
gRPC
스프링부트 3.x.x에 gRPC 예외 처리 인터셉터를 적용시켜 보자📌 서론저번 포스트에서 SpringBoot3.3.1에 gRPC를 적용시켰다. 완전히 최신 버전을 사용해보고자 했기에 java, gradle, protobuf, spring 버전에 따른 오류도 조금씩 있었는데 아직 이 부분은 조금씩 진행하면서 코드를 개선하는 중이다. (계속 업데이트해서 올릴 예정)이번 포스트에서 소개할 내용은 gRPC의 예외처리 방법이다. http에서는 예외가 발생하면 @RestControllerAdvice를 사용해서 전역 예외처리를 하곤 한다. 그럼 gRPC도 예외처리를 하는 방법이 있지 않을까? 당연히 예외처리가 가능하다.검색을 해보니 SpringBoot에서는 gRPC의 예외처리를 인터셉터를 통해 처리한다는 것을 알아..
[gRPC] SpringBoot3.3.1에 gRPC 적용하기
·
gRPC
SpringBoot3.3.1에 gRPC를 적용시켜 보자📌 서론개인적인 공부를 하면서 MSA 프로젝트를 구성할 때 유저(Client)의 기본적인 요청에 대해서 먼저 http로 받아서 처리하고 만약 서버 간 소통이 필요하다면 그때는 gRPC를 사용하도록 하기 위해 gRPC를 도입해보고자 했다. 아무것도 모르는 상태에서 공부를 시작했고 일단 도입해 보면서 발전시켜 가자는 목표로 코드에 1차 적용을 시켰다. 막상 적용시켜 보니 버전에 대해서 이슈가 조금 있어서 생각보다 오래 걸렸지만 잘 동작하는 것을 보니 매우 뿌듯했다.혹시나 gRPC를 도입하고자 하는 분들을 위해 적용방법을 남기고 가능하면 조금 더 좋은 방법이 있다면 도움을 받고 싶다.예시 프로젝트는 아래의 github에 만들어 두었습니다. (편하게 사용해..