본문 바로가기

분류 전체보기48

Spring Cloud Gateway) Http Method 변경하는 Filter 만들기 이전글 에 이어서 이메일 인증과 같은 경우에 내부 API 에는 POST 요청으로 구성하고, 외부 Gateway 에서는 브라우저를 통해서 들어오기 때문에 GET 요청으로 받아야 하는 경우가 있습니다. (물론 내부 API 를 GET 으로 구성하고 by-pass 하는 경우도 있으나, 성격이 맞지 않는다고 판단해서 변경한 경우입니다.) 아래처럼 Filter 를 만들어 줍니다. 해당 Filter 의 변수(ChangeMethodConfing) 의 값을 통해서 어떤 HTTP Method 로 변경할지 결정합니다. package com.kotlinplayground.gateway.filter import org.springframework.cloud.gateway.filter.GatewayFilter import org.. 2024. 2. 16.
Spring Cloud Gateway) Query Param 값을 Header 로 주입하는 Filter 만들기 MSA 환경에서 SCG(Spring Cloud Gateway) 를 이용해서 서비스별 Endpoint 로 라우팅을 주로 사용합니다. 여기에 있어 특정 Endpoint 에 대해서 HTTP 요청을 조작하고 싶을때, AbstractGatewayFilterFactory 를 상속 받은 CustomFilter 를 등록해서 사용할 수 있습니다. 아래 예제는 이메일 인증을 할때, 브라우저를 통해서 소유한 서버를 통해서 요청오는 경우입니다. - Gateway 서버 : http://localhost:8000 - 회원 서버 : http://localhost:8080 브라우저에서 접근하기 때문에 HTTP Method 가 GET 으로 제한됩니다. 이때문에, 인증에 필요한 정보들을 Token 정보로 담아서 Query Param 으.. 2024. 2. 13.
JPA PK 를 SequentialUUID 로 사용하기 JPA 에서 SequentialUUID 를 사용하려면 우선 Utils 에 SequentialUUID 생성 하는 함수를 생성한다. const val SEQUENTIAL_UUID_SIZE = 32 fun creteSequentialUUID(): String { val uuidParts = Generators.timeBasedGenerator().generate().toString().split("-") return StringBuffer(SEQUENTIAL_UUID_SIZE).apply { append(uuidParts[2]) append(uuidParts[1]) append(uuidParts[0]) append(uuidParts[3]) append(uuidParts[4]) }.toString() } 환경 .. 2023. 12. 5.
Kotlin Sequential UUID 생성 RDB 환경에서 개발을 하다보면 무의식 적으로 PK 를 Sequence 값으로 지정할 때가 있습니다. 이번에 개발하면서 외부에 노출이 필요한 Unique 정보가 필요했습니다. 그런데 Sequence 정보를 사용하게되면 보안에 취약하고 다른 회원의 정보가 탈취당하기 쉽다. 저희의 요구사항은 이랬습니다. Sequential 한 값이어야 한다.(PK 기본 clursted Index 이기 때문) 값이 서로 비교가 되어야 한다. (1번의 확장) 육안으로 값을 유추할 수 없어야 한다. 위 요구사항을 생각 했을때, UUID 와 MongoDB 의 ObjectId 가 후보로 올라왔습니다. 그런데 여러가지의 DB 를 사용하는건 상관없지만 ObjectId 때문에 MongoDB 의 의존성을 주입 받는게 추후 관리적으로 힘들어.. 2023. 12. 5.
PostgrSQL Table Truncate with Sequence 기존에 Mysql (mariaDB) 를 사용하셨던 분들이 PostgreSQL 을 사용하시게 되면 Truncate 의 차이점에 대해서 말 해보겠습니다. 실무에서 잘 사용하지는 않지만 Table 의 모든 데이터를 삭제하고 싶을때 Truncate 를 사용합니다. 차이점 MySQL : Table Truncate 시 기본적으로 Data 및 Sequence 정보도 초기화 된다. PostgreSQL : Table Truncate 시 기본적으로 Data 정보만 초기화 된다. 그럼 PostgreSQL 에서 PK 의 값을 1부터 시작하고 싶으면...? `CONTINUE IDENTITY : Do not change the values of sequences. This is the default. Truncate 옵션 중에 .. 2023. 12. 5.
PostgreSQL Docker 로 실행하기 (with. Podman) 로컬에서 개발을 하다보면 DB 를 Docker 로 띄워서 테스트를 할 일이 많습니다. PostgreSQL 을 Podman 을 통해서 컨테이너를 띄우는 설명입니다. 공식 사이트 : [PostgresDockerHub](https://hub.docker.com/_/postgres/tags)) CLI $ podman run --name base \\ #컨테이너 명 \-e POSTGRES\_USER=base \\ #Root 권한의 id \-e POSTGRES\_PASSWORD=base \\ #Root 권한의 pw \-e POSTGRES\_HOST\_AUTH\_METHOD=trust \\ # 모든 host & 사용자 & Database 에 대한 접근 허용 \-p 5432:5432" \\ postgres 2023. 12. 5.