전체 글161 OpenFeign QueryDSL JPA + KSP 설정하기 QueryDSL는 Spring Data JPA를 사용하면서 DB 쿼리를 만드는데 de factor standard가 되었다.(jooQ도 같은 역할로도 사용할 수 있지만 현업에서는 DB 사용 시 JPA를 주로 사용하다보니 QueryDSL가 거의 같이 사용된다) 하지만 QueryDSL은 Github repository를 살펴봤을 때 maintain이 멈춘 상태라고 볼 수 있다. 그래도 DB 쿼리를 만드는데 있어서는 문제없이 그럭저럭 사용할 수 있긴 하지만 security 이슈도 있고 ksp가 아닌 kapt를 계속 사용해야하는 점도 내키지 않을 수 있다. OpenFeign 진영에서 fork를 한 QueryDSL를 사용한다면 위의 문제를 해결할 수 있다.(OpenFeign 진영에서 fork를 한 배경에 대해서는.. 2025. 7. 6. Kotest Runtime Detection 설정으로 테스트 실행 시간 개선하기 (Kotest 5.9.x 버전 기준의 내용입니다) Kotest는 병렬 처리를 위한 parallelism 값이나 extension과 같은 설정을 AbstractProjectConfig class를 통해 할 수 있다.import io.kotest.core.config.AbstractProjectConfigobject MyKotestProjectConfig : AbstractProjectConfig() { override val parallelism = 3}https://kotest.io/docs/framework/project-config.html Project Level Config | KotestKotest is flexible and has many ways to configure tests, s.. 2025. 7. 5. [springdoc-openapi] 공통 에러 응답 설정하기 API 문서를 생성할 때 심플하면서 API를 직접 호출 할 수 있도록 Swagger를 주로 사용한다.그리고 Spring을 사용하여 Swagger를 사용하기 위해 springdoc-openapi를 사용한다.springdoc-openapi starter 의존성을 추가하고 서버 애플리케이션을 실행하면 Controller의 API 요청과 응답을 스캔하여 기본 API 문서가 생성된다. 하지만 서버 애플리케이션은 항상 정상 응답만 주는 것은 아니다.상황에 따라 만료된 토큰을 사용했을 때 인가 실패 응답을 주거나 예상치 못한 오류에 대한 응답을 줄 수도 있다.이번 포스팅에서는 Swagger에 전체 API에서 응답할 수 있는 공통적인 오류 응답을 추가하는 방법에 대해서 알아보도록 하겠다. 공통 오류 응답서비스 오류 시.. 2025. 5. 10. 여러 유저를 사용한 E2E test (RestAssured 사용) 플랫폼 서비스의 경우 서비스 내에서 다양한 역할이 존재하며, 도메인/서비스에 따라 구체적인 역할이 나뉘게 된다.간단한 커머스 서비스에 예로 들자면 다음과 같은 역할들이 있다.내부적으로 CS 처리나 운영에 있어 사용되는 Admin서비스를 통해 물건을 구매하는 Buyer서비스를 통해 물건을 판매하는 Seller 시스템에 따라 이러한 역할에 대한 계정 시스템이 분리될 수도 있지만,(특히 어드민은 사용자가 사용하는 서비스와 분리되기 때문에 어드민 계정 시스템은 서비스 계정 시스템과 분리되어 관리되는 경우가 있다)시스템에 따라 여러 역할이 모두 하나의 계정 시스템 내에서 관리되기도 한다. 그리고 '물품 구매와 구매 물품 리뷰'에 대해 다음과 같은 시나리오를 생각할 수 있다.Seller 역할을 가진 유저가 판매할 .. 2025. 5. 6. AI 시대에 엔지니어에게 중요한 것은? 딥러닝 분야를 연구하기 위해 잠시 대학원 랩실에 몸을 담군적이 있는데이를 계기로 최근에 랩실 멤버들 대상으로 Introduction to Backend Engineering in the Era of AI를 주제로 세미나를 했다. 이와 관련하여 'AI 시대에 엔지니어에게 중요한 것은?' 이라는 주제로 글을 적어본다. 요즘은 LLM과 AI 툴들을 매우 낮은 비용(금액, 노력) 혹은 무료로 사용할 수 있다.그리고 이를 사용하는 방법과 노하우는 유튜브나 블로그, Github 등 모든 곳에 오픈되어 공개되어 있기 때문에 이제는 쓰는 것 자체는 누구나 어렵지 않게 할 수 있다. (비개발자라면 모든게 블랙박스이기에 조금은 어려울 수 있겠다) 또한 LLM으로 대변되는 AI로 인해 여러 산업 분야의 패러다임이 바뀌.. 2025. 4. 27. Spring graceful shutdown (+ async, virtual thread) 배포나 scale-in 등의 이유로 Spring 서버 종료 시, 해당 서버가 처리하고 있는 HTTP 요청은 어떻게 될까?요청 처리를 중단하고 서버가 종료되기 보다는 요청 처리를 다 마친 뒤에 서버가 종료되는 것이 좋지 않을까? Spring에서는 프로세스 종료 시 처리하고 있는 요청을 끝까지 처리할 수 있도록 graceful shutdown 기능을 제공한다. 이번 포스팅에서는 Spring의 graceful shutdown 기능과 이를 비동기 작업에서 적용하는 방법에 대해서 알아보도록 하겠다.추가로 virtual thread 설정 시 TaskExecutor를 커스터마이징 해야하는 이유를 알아보도록 하겠다. graceful shutdown 설정graceful shutdown 설정을 하기 위해서 server.s.. 2025. 3. 9. 이전 1 2 3 4 ··· 27 다음