본문 바로가기

Spring boot30

[Spring boot] MSA Passport Pattern 서비스끼리의 반복 호출MSA 환경을 구성하다 보면 각 서비스끼리의 호출이 많이 일어난다.특히 사용자 정보가 필요한 서비스마다 회원 관리 서비스에서 사용자 정보를 Rest API나 gRPC로 요청하게 되면 너무나 많은 반복호출이 일어나게 된다.이를 해결하기 위해 각 서비스마다 간소화된 사용자 테이블을 같이 배치하는 전략을 생각할 수도 있다. 하지만 이는 회원 정보 변경, 삭제 등에 따라 이벤트를 수신하면서 회원 정보를 관리해야 하고데이터 동기화 문제가 발생할 수 있다. Passport 패턴 기반 사용자 컨텍스트 전파이를 해결하기 위해 Passport 패턴 기반 사용자 컨텍스트 전파를 사용할 수 있다.아래의 그림을 실제 토스 테크 블로그에 존재하는 Gateway에서의 Passport 전파 방식이다.토스에서.. 2025. 10. 8.
[Spring boot] MSA 환경 구성 서비스 레지스트리 / 서비스 디스커버리MSA에서 마이크로서비스 관리와 운영을 위한 패턴 중 서비스 레지스트리와 서비스 디스커버리가 있다.서비스 간 통신 시 서비스 위치 (포트, 호스트) 가 정적이던 전통적인 애플리케이션 / 아키텍처와는 달리 주소가 동적으로 변화하고 (클라우드 환경, 오토 스케일링, 컨테이너 기반의 배포 등) 서비스 역시 무수히 많은 마이크로서비스에서는 서비스 위치에 대한 관리가 많이 복잡해지게 되는데, 이를 해결하기 위해 서비스 레지스트리 패턴과 서비스 디스커버리 패턴이 등장하게 된다.서비스 레지스트리와 서비스 디스커버리 패턴은 다음과 같다.서비스 레지스트리 마이크로서비스 / 관리, 운영을 위한 기반 서비스의 주소와 유동적인 IP를 매핑하여 저장하는 패턴 서비스 디스커버리 클라이언트가 .. 2025. 3. 25.
[Spring boot] 암호화된 PK의 복호화 구현 PK 암호화저번 포스트에서 URI에서 PK가 노출되는 것을 막기 위해PK를 암호화하여 URI를 구성하도록 구현하였다. [Spring boot] PK Id 노출을 막는 Rest APIRest APIRest API 설계에서 자원을 식별하는 데 URI를 사용하는 방식은 매우 일반적이며, 자원이 명확히 식별될 수 있어야 한다는 REST의 개념에 부합한다. 따라서 URI에 리소스 식별자인 ID를 포함하는kyu-nahc.tistory.com따라서 Rest API를 요청할 때 URI 형식은 /test/aAPzwpKf+0mFtlfbU1wCWA== 다음과 같고,이런 식으로 암호화된 값을 통해 URI를 구성하여 API 요청을 하게 된다.그렇다면 API 요청을 받고 이를 복호화하는 로직도 반드시 존재해야 한다. 컨트롤러에서.. 2024. 10. 4.
[Spring boot] PK Id 노출을 막는 Rest API Rest APIRest API 설계에서 자원을 식별하는 데 URI를 사용하는 방식은 매우 일반적이며, 자원이 명확히 식별될 수 있어야 한다는 REST의 개념에 부합한다. 따라서 URI에 리소스 식별자인 ID를 포함하는 것은 흔한 접근 방식이다. 예를 들어, Http PUT 요청을 통해 /api/post/1이라는 엔드포인트는 1번 포스트를 수정하는 API라는 것을 직관적으로 알 수 있다. 리소스 식별자와 PK( Primary Key ) 사용리소스를 식별하기 위해 보통 고유한 값을 필요로 하는데, 중복되지 않는 고유 ID를 생성하는 방식 중 하나로 DB의 PK를 자주 활용한다. PK는 이미 DB에서 유일성을 보장하고 있기 때문에 이를 REST API에서 식별자로 사용하는 것이 자연스럽고 URI를 표현하는데 .. 2024. 10. 3.
[Spring boot] JPA fetch join 2개 이상의 Collection Join 해결법 JPA fetch Join이전 포스트에서는 JPA의 N+1 문제 및 해결방안에 대해 정리하였다. [Spring boot] JPA N+1 발생 케이스 및 해결 방법JPA FetchType저번 포스트에서 Jpa의 FetchType인 지연 로딩과 즉시 로딩에 대해 정리하였다. [Spring boot] JPA FetchTypeFetchTypeFetchType이란 JPA에서 엔티티를 조회할 때 연관된 ‘엔티티 조회 방법을 결정하는kyu-nahc.tistory.com 지연로딩의 문제점을 해결하기 위해 fetch Join을 사용하였지만,fetch Join은 pagination이나 2개 이상의 Collection Join시 문제가 되었다.pagination은 fetch Join을 사용하지 않고 BatchSize를 사용.. 2024. 9. 23.
[Spring boot] JPA N+1 발생 케이스 및 해결 방법 JPA FetchType저번 포스트에서 Jpa의 FetchType인 지연 로딩과 즉시 로딩에 대해 정리하였다. [Spring boot] JPA FetchTypeFetchTypeFetchType이란 JPA에서 엔티티를 조회할 때 연관된 ‘엔티티 조회 방법을 결정하는 전략’을 의미한다.javax.persistence.FetchType 패키지 내에 열거형(Eunm) 형태로 제공된다.// javax.persistence.FetchType.kyu-nahc.tistory.com 즉시 로딩은 예상 못하는 쿼리가 생기거나, JPQL에서 N+1 문제가 발생할 수 있다고 설명하였다.다시 한번 N+1문제를 정리하면 조회 시 1개의 쿼리를 생각하고 설계를 했으나나오지 않아도 되는 조회의 쿼리가 N개가 더 발생하는 문제이다.하.. 2024. 9. 22.

loading