

식자재 품목 검색을 더 쉽게! 검색 엔진 도입과 개선
식자재 품목 검색 품질을 높이기 위해 Elasticsearch를 도입하고 분석기, N-gram, Wildcard를 조정한 과정을 정리했습니다. 초성 검색은 ICU 확장을 선택해 유지보수성과 확장성을 함께 고려했습니다.
새로운 기술 블로그가 추가되었어요


식자재 품목 검색 품질을 높이기 위해 Elasticsearch를 도입하고 분석기, N-gram, Wildcard를 조정한 과정을 정리했습니다. 초성 검색은 ICU 확장을 선택해 유지보수성과 확장성을 함께 고려했습니다.


Kafka Connect와 JDBC 소스 커넥터로 DB 데이터를 Kafka에 연동하는 방법을 설명했습니다. 쿼리 기반 CDC의 한계와 데이터 누락을 줄이는 설정도 함께 정리했습니다.

리눅스 cgroups가 Kubernetes의 Pod 자원 제한과 배분에 어떻게 연결되는지 설명했습니다. 메모리와 CPU 설정이 requests, limits로 어떻게 반영되는지도 실험을 통해 정리했습니다.


HTML 문서에서 실시간으로 본문만 빠르게 추출하기 위한 PAAS의 로직을 소개했습니다. 트리 구조 feature와 entropy를 활용해 노이즈를 줄이면서 핵심 정보 유실을 막았습니다.


FastAPI의 Depends()로 의존성 주입을 적용하는 방법을 설명했습니다. 비즈니스 로직과 구현체를 분리해 유연성과 테스트 용이성을 높이는 구조를 소개했습니다.


기존 로그 배치 파이프라인의 분류 비효율, 낮은 신선도, 스키마 관리 부재를 정리하고 개선 방향을 설명했습니다. MSK와 Kafka Consumer, Protobuf, Schema Registry를 활용한 준실시간 구조로 전환한 과정을 소개했습니다.


Redis 분산 락과 스프링 AOP로 입하 확정 처리 API의 동시성 이슈를 해결했습니다. 또한 @Transactional과의 실행 순서 문제와 커넥션 사용 이슈를 @Order로 정리했습니다.


JUnit5 Vintage 엔진에 클래스 단위 병렬 실행을 도입한 과정을 설명했습니다. ForkJoinPool 대신 fixed thread pool과 CompletableFuture를 사용해 5.12 버전에 반영했습니다.

SmartThings 기록 시스템의 DB를 HBase에서 OpenSearch로 교체한 사례를 소개했습니다. 성능 개선과 비용 절감을 목표로 전환을 진행했습니다.


광고 수익화에서는 리텐션과 LTV를 함께 봐야 한다는 점을 설명했습니다. 광고 실험의 효과를 수익뿐 아니라 사용자 유지와 획득 효율까지 연결해 해석하는 방법을 다뤘습니다.

Kafka 소비 시 JSON 역직렬화 설정이 왜 기대대로 동작하지 않는지 과정을 따라가며 분석했습니다. 헤더 타입 정보와 타입 매핑, trusted packages, target type 우선순위를 조정해 해결했습니다.


전용 코디네이터 노드를 통해 OpenSearch에서 조정 작업과 데이터 처리를 분리하는 방법을 설명했습니다. 색인·검색 성능 향상과 VPC IP 절감, 운영 지표 점검 방법도 함께 정리했습니다.