본격적인 이슈를 소개하기에 앞서 기능하나를 소개하려고 한다. > 사용자 스토리 : 사용자는 관심있는 주식을 관심항목으로 등록할 수 있다. 간단한 기능이다. 이를 구현하기 위해 서버에서는 interest_asset 테이블을 설계했다. account_id 가 설정한 관심자산 목록은 콤마(,) 로 이어져서 데이터베이스에 저장한다. 예를들면 A 사용자가 5...
우리 팀 프로젝트에서는 JPA 와 QueryDSL 을 조합해서 사용하고 있다. 해당 프로젝트에서 JPA 를 통해 Batch Insert 하는 과정에서 겪었던 문제를 소개하고, 어떻게 해결했으며 그 결과로 어느정도의 성능향상이 이뤄졌는지 소개하려고 한다. Batch Insert 란? 간단히 설명하면 여러 개의 Row 를 한 번의 쿼리로 Insert 하는...
회사에서 캐시 구조에 대해서 리팩토링을 진행하는 과정에서 EhCache Self-Invocation 문제로 인해 캐시가 정상적으로 동작하지 않았던 사례에 대해서 포스팅하려고 한다. 어떤 문제가 있었는지 예제를 통해서 간단하게 살펴보자. EhCache 는 그냥 로컬 캐시 라이브러리라고 생각하면 될 것 같다. @Cacheable 어노테이션을 붙이면 해당 메...
사건의 발단 현재 회사에서 Spring Batch 를 이용해 다양한 배치 어플리케이션을 개발하고 있다. 그 과정에서 Step Flow 가 내가 예상했던대로 흘러가지 않는 이슈가 발생했는데, 해당 포스팅에서는 그 이슈에 대해서 소개하려한다. > 여기서 Step Flow 란 여러 Step 들을 순차적으로 처리하거나, 분기 처리하는 등의 흐름을 만드는 것을 ...
사이드 프로젝트에서 Domain Entity 와 JPA Entity 를 분리해 개발하고 있고, 두 객체를 쉽게 매핑하기 위해 mapstruct 를 사용하고 있다. 지금까지는 단순히 mapstruct 가 만들어주는 매핑 메소드를 사용만 해왔는데, 최근 마주한 이슈를 토대로 mapstruct 가 매핑 메소드를 어떻게 만들어나가는지에 대해 소개해보려한다. 어...
오랜만에 트러블 슈팅으로 돌아왔다. 이번 포스팅의 부제는 "내 컴퓨터에선 잘 됐는데.." 이다. 이번에 소개할 이슈는 spring-security-oauth2-client 를 이용해 소셜 로그인을 구현하는과정에서 발생한 것이고, 서버를 클라우드에 배포만하면 카카오 소셜 로그인이 실패하는 이슈였다. 개인적으로 디버깅이 굉장히 어려운 문제였다고 생각하고 그...
이번 포스팅은 Elasticsearch 에서 가장 많이 사용되는 쿼리중 하나인 multi_match 쿼리를 사용할 때 매칭되었음에도 오히려 점수가 감점되는 이슈에 대한 트러블 슈팅과정을 공유 하려고 한다. 1. multi_match 쿼리 Elasticsearch 는 색인되어있는 문서(Document)의 여러 필드에 대해서 match 쿼리를 요청할 수 있...