[Spring] Serializing PageImpl instances as-is is not supported
Back-End/기타2025. 7. 27. 20:25[Spring] Serializing PageImpl instances as-is is not supported

문제 상황페이징 처리를 하던 도중 아래와 같은 오류가 발생하였다.2025-07-27T20:08:49.993+09:00 WARN 34619 --- [ktsp] [nio-8080-exec-3] ration$PageModule$WarningLoggingModifier : Serializing PageImpl instances as-is is not supported, meaning that there is no guarantee about the stability of the resulting JSON structure!For a stable JSON structure, please use Spring Data's PagedModel (globally via @EnableSpringDataWebSupport..

[QueryDSL] OpenFeign QueryDSL 기본 설정 및 사용법
Back-End/QueryDSL2025. 7. 19. 20:50[QueryDSL] OpenFeign QueryDSL 기본 설정 및 사용법

공식 QueryDSL은 사실상 유지보수 중단상태인것 같다...마지막 릴리스가 5.1로 이후 업데이트가 없고 취약점 문제도 존재한다고 한다.OpenFeign의 QueryDSL은 25년 7월 기준 7.0까지 나온상태고 계속 유지보수가 이뤄지고 있는 것 같다.또한 기본적인 사용법과 API 정의는 거의 동일한것 같기 때문에 OpenFeign의 QueryDSL을 도입하기로 했다. 기본 설정build.gradle// QueryDSL 설정def queryDslVersion = "7.0" // 25년 7월 기준 가장 최신def querydslSrcDir = layout.buildDirectory.dir("generated/querydsl").get().asFile // build/generated/querydslta..

[Spring] Soft Delete(@SQLDelete, @SQLRestriction, @SoftDelete)
Back-End/Spring2025. 7. 19. 12:46[Spring] Soft Delete(@SQLDelete, @SQLRestriction, @SoftDelete)

Soft Delete VS Hard DeleteSoft Delete와 Hard Delete는 데이터 삭제 방식을 구분하는 개념이다.Soft Delete: 데이터를 물리적으로 삭제하지 않고, 삭제 여부를 나타내는 플래그(예: is_deleted, deleted)로 표시만 하는 방식 Hard Delete: 데이터를 DB에서 완전히 제거(DELETE) 하여 복구 불가능하게 만드는 방식 Soft DeleteSoft delete는 삭제 여부를 판단할 수 있는 컬럼을 추가해 데이터가 삭제되었는지, 아닌지에 대한 값을 넣어서 표시한다.삭제 할 데이터가 추후에 조회해야 하거나, 실수로 삭제했을 시 복원 가능해야 하는 중요한 도메인일 경우에 사용한다.UPDATE Users SET deleted = true WHERE i..

[Spring Security] @Secured,@PreAuthorize, @PostAuthorize
Back-End/Spring2025. 7. 18. 00:32[Spring Security] @Secured,@PreAuthorize, @PostAuthorize

@Secured,@PreAuthorize, @PostAuthorize활성화 설정@Configuration@EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터체인에 등록@EnableMethodSecurity(securedEnabled = true, prePostEnabled = true) // 중요public class SecurityConfig {@EnableMethodSecurity(securedEnabled = true, prePostEnabled = true)SecurityConfig 파일에 해당 애노테이션을 적용해야 @Secured,@PreAuthorize, @PostAuthorize 이 애노테이션들을 사용할 수 있다.@PreAuthorize만 사용할꺼면 @EnableMet..

[Spring] CQRS 패턴
Back-End/Spring2025. 6. 7. 00:05[Spring] CQRS 패턴

CQRS는 CUD(Command)와 R(Query)를 분리하는 것이다.기존의 CRUD 서비스 구조는 보통 하나의 클래스나 API에서 create, read, update, delete 전부 처리한다.CQRS는 이를 명확히 나눠서,Command (명령): create, update, deleteQuery (조회): read이 두 가지를 서로 다른 책임으로 나누는 패턴이다. CQRS 패턴을 도입하는 이유역할이 다르기 때문Command는 상태를 바꾸는 작업.Query는 상태를 읽기만 함. 성능 최적화 가능예를 들어 Command는 트랜잭션 안전성과 정합성 위주로, Query는 빠르게 결과만 제공하도록 설계할 수 있다. 코드 유지보수 편리로직이 복잡해질수록 읽기와 쓰기를 분리하는 게 유리하다. CQRS는 단순히..

[부하 테스트] 트래픽 증가에 따른 시스템 설계 및 확장
Back-End/부하 테스트2025. 6. 5. 00:05[부하 테스트] 트래픽 증가에 따른 시스템 설계 및 확장

이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.부하 테스트를 하면서 목표로 설정해놓은 Throughput, Latency를 달성하기 위해 성능 개선을 해야 한다.병목 지점이 어디서 발생하느냐에 따라 성능 개선의 방법이 달라진다. 병목 지점에 따른 성능 개선EC2(WAS)가 병목 지점일 경우애플리케이션 로직에서 비효율적인 부분 개선정적 파일 서버(S3, Cloudfront) 분리로드밸런서(ELB)를 활용해 수평적 확장수직적 확장 RDS(데이터베이스 서버)가 병목 지점일 경우비효율적인 쿼리 개선 (인덱스 활용, SQL문 튜닝, 역정규화 등)수직적 확장읽기 전용 데이터베이스(Read Replica) 도입캐시 서버 도입주의위 순서가 절대적인것은 아니다. 일반적으로 ..

[부하 테스트] 병목지점 판단
Back-End/부하 테스트2025. 6. 4. 00:42[부하 테스트] 병목지점 판단

이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.모니터링과 병목지점부하 테스트 과정 중에 성능을 개선하려면 병목 지점을 먼저 파악해야 한다.병목 지점을 파악하기 위해서는 각 컴퓨터의 CPU 사용률과 메모리 사용률과 같은 값들을 지속적으로 확인할 수 있어야 한다.여기서 얘기하는 컴퓨터는 로드 밸런서(ELB), 백엔드 서버(EC2), DB(RDS), 캐시(ElastiCache) 등을 얘기한다. 무언가 요청을 받아서 처리하는 형태의 서비스는 전부 컴퓨터에서 처리하기 때문이다.컴퓨터가 무언가를 처리하려면 CPU와 메모리 같은 자원이 필요하다. 만약 컴퓨터가 처리할 수 있는 최대한의 요청을 처리하고 있다면, CPU 사용률 또는 메모리 사용률과 같은 값이 100%에 가까운..

[부하 테스트] k6 설치 및 사용 방법
Back-End/부하 테스트2025. 6. 3. 00:53[부하 테스트] k6 설치 및 사용 방법

k6는 사용자인척 요청을 보내는 도구이다.원래라면 사용자가 직접 서비스에 요청을 보내야 하는데, k6는 여러 명의 사용자를 대신해서 요청을 보내는 도구이다. k6 설치(맥 기준)맥에서 k6를 설치하는 방법은 매우 간단하다.brew install k6 설치가 완료되고 k6를 입력하고 아래와 같은 화면이 나타났다면 정상적으로 설치된 것이다. read: connection reset by peer윈도우나 맥에서 k6를 사용하다보면 read: connection reset by peer 문제를 마주할 수 있다.이는 MacOS에서 소켓에 제한을 걸어서 발생되는 문제이다.이는 3가지 방법으로 파훼할 수 있다.1. ulimit -n 명령어 사용ulimit -n 65535​소켓의 수를 임시적으로 65535개로 늘리는 ..

image