본문 바로가기
728x90

분류 전체보기66

자바 Stream peek()이 skip되는 경우가 있을까? 개요운영 업무를 처리하는 도중, 특정 api 호출 시 성공 응답을 받지만 실제 데이터를 확인해 보면 관련 데이터의 변화가 없다는 문의가 들어왔다. 실제로 로그를 확인해 보니 성공 응답이 리턴되었고, 서비스 로그 상 예외 로그도 발견되지 않았다. 이번 포스트에서는 해당 이슈를 트래킹 하는 과정과 그 과정에서 알게 된 자바 stream의 peek()에 대해 정리해 본다. 원인 파악로그 확인우선 api를 호출한 프로세스의 로그와 응답한 프로세스의 로그를 함께 확인해 보았다. 해당 기능은 기능이 정상 수행되면 변경된 데이터의 수를 리턴해주는데, api 호출 프로세스에서는 해당 데이터를 정상적으로 수신했다. 또한 응답 프로세스에서도 요청 인입 시에 기록되는 로그를 확인할 수 있었고, 예외 로그 또한 찍히지 않았다.. 2025. 7. 15.
Elasticsearch는 어떻게 검색할까? 보통 MySQL을 이용해서 특정 상품을 검색한다고 하면 아래와 같은 쿼리를 짤 것이다. 맥북 프로 M4 라는 상품이 products라는 테이블에 있다고 가정할 때, 이것을 검색하려고 하는 상황을 가정한다.SELECT * FROM products WHERE name = "%맥북 프로 M4%";하지만, 사람들이 검색할때 항상 위와 같이 단어 순서를 상품명에 맞게 검색하지는 않기 때문에 만약 단어 순서가 바뀐 상태로 검색을 한다면 위의 미리 등록된 상품을 조회되지 않게 된다.SELECT * FROM products WHERE name = "%M4 맥북 프로%";-- 조회 결과 X위와 같은 케이스를 Elasticsearch를 통해서 검색 기능을 구현하면 해결할 수 있는데, 이번 포스팅에서는 어떻게 Es에서 단어.. 2025. 6. 29.
Elasticsearch 기초 정리 전부터 관심을 갖고 있던 ELK의 Elasticsearch를 학습하게 되었다. 공부한 내용 관련해서 간단한 포스팅을 남겨두려고 한다. Elasticsearch란Elasticsearch란 흔히 검색엔진으로만 생각하기 쉽지만, 실제로는 데이터를 저장하고 조회하고 수정 및 삭제까지 가능한 NoSQL 기반의 강력한 데이터 저장소이다. 처음 배우는 입장에서 생소한 용어가 몇가지 있기 때문에 RDBMS(ex. MySQL)과 비교하면 쉽게 개념을 익힐 수 있다. Es의 기본 용어 정리MySQL 용어Elasticsearch 용어데이터베이스(DB)클러스터(cluster)테이블(table)인덱스(index)컬럼(column)필드(field)레코드(row)도큐먼트(document)스키마(schema)매핑(mapping) M.. 2025. 6. 29.
[Tomcat] FileCountLimitExceededException 이슈 수정 개요회사 업무 중 자바 레거시 버전을 사용하는 서비스의 버전을 업그레이드하는 작업이 있었다. 자바 버전을 올리며 스프링 부트, 톰캣, 아파치 등의 버전도 함께 업그레이드하게 되었는데 그중 톰캣에서 발생한 이슈에 대해 정리한다. 로컬에서 어플리케이션을 구동하여 임베디드 톰캣으로 테스트했을 때는 이상이 없던 multipart 업로드 기능이 개발서버의 톰캣을 통해 구동해서 테스트 하기만 하면 아래와 같은 예외를 던졌다.동일한 버전의 코드로 어플리케이션을 빌드했기 때문에 원인은 임베디드 톰캣 - 설치된 톰캣간의 버전 차이로 추측했고, 그 부분을 중심으로 원인 파악을 해보았다. 원인 파악기능 점검우선 이슈가 어느 기능에 한정되는지를 먼저 정확히 해야 할 필요가 있었다. 이슈가 발생한 기능은 여러 텍스트 입력 값과.. 2025. 6. 28.