[MSA] 스프링부트 gRPC vs FeignClient 성능 비교
·
gRPC
시작하며안녕하세요. 개발자 stark입니다. 드디어 gRPC 시리즈의 마지막 포스팅입니다! 이번 포스팅을 통해 gRPC와 FeignClient의 성능 차이를 알아보고 왜 gRPC를 사용하는 게 좋은지 그리고 어떻게 gRPC를 사용하기 위해 어떤 식으로 구성해야 하는지를 알게 될 것입니다. 제가 지금까지 열심히 MSA 프로젝트를 구성하고 gRPC서버, 클라이언트를 구성한 이유가 바로 성능 테스트를 위해서였습니다. 왜냐하면 MSA에서 어떤 통신 방식을 적용하는 것이 좋을지에 대해서 정말 많은 생각을 해왔기 때문입니다. 일반적으로는 Feign을 쓰는데 저는 아무리 봐도 gRPC가 더 좋을 것이라는 생각이 들었습니다. 왜냐하면 저는 MSA를 하면서 Feign도 써보고 너무 궁금해서 gRPC도 공부를 하며 써봤기..
[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 기본 개념
·
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를 적용시켜 보자📌 서론이번 포스팅보다 더 자세한 글을 적어둔 링크를 새롭게 적어두었습니다! gRPC 서버 구성, gRPC 클라이언트 구성, gRPC 인터셉터로 인증 구현, feign vs gRPC, 서킷 브레이커 적용 등 MSA를 구성하는데 필요한 정보들을 적어둔 링크입니다.예시 프로젝트는 아래의 github에 만들어 두었습니다. (편하게 사용해 주시면 됩니다.) GitHub - wlsdks/grpc-demo: SpringBoot3.x.x 버전 grpc 사용 예제 프로젝트SpringBoot3.x.x 버전 grpc 사용 예제 프로젝트. Contribute to wlsdks/grpc-demo development by creating an account on GitH..