목록2025/04 (5)
HJW's IT Blog
들어가며키워드 기반 조회 및 분류 작업을 할 때, 많은 개발자들이 LIKE %keyword% 연산자를 사용하곤 한다. 이 방식은 직관적이고 구현 난이도가 낮으나, 심각한 성능 저하를 일으 킬 수 있다. 이번 포스팅에선 이러한 단점을 극복하고 검색 성능을 획기적으로 향상시킬 수 있는 방법인 tsvector 와 GIN 인덱스 의 사용에 대해 알아 볼 것이다.tsvector 란?tsvector 는 PostgreSQL 에서 Full Text Search 를 위해 제공하는 특별한 데이터이다. 일반 텍스트 형태의 문서를 검색에 적합한 형태로 가공한 것으로, 고유한 lexeme들의 정렬된 목록을 제공한다. lexemes 란 형태 변화에 따라 변형되는 단어들의 뿌리 형태이다. 예를 들어 walk 는 여러 형태의 단어다..
1. 들어가며Spring Batch 를 활용해 뉴스 기사를 외부 API 에서 수집하고, 이 기사는 관심사 별로 분류하여 DB에 저장하는 과정에서의 시행착오를 담은 글이다. 2. 문제 파악기사 (Article)와 관심사 (Interest) 는 다대다 관계이다. 그렇기 때문에, 중간 테이블인 ArticleInterest 를 활용하여 저장하고자 하였다. Batch 의 전체 프로세스는 다음과 같았다.Reader :DB에서 Keyword 를 읽는다Keyword는 Interest 와 연결된 단어이다.기사를 조회할 때, Keyword 를 기반으로 조회한다Processor :각 Keyword 는 여러 Interest 와 연관되어 있을 수 있고, 하나의 Interest 는 여러 Keyword를 가질 수 있기 때문에, 이..
1. 개요AWS 와 같은 외부 서비스를 사용하는 어플리케이션은 테스트를 구성하기 까다롭다는 장벽이 있다. 외부 의존성, 비용, 네트워크 등의 이슈로 인해 테스트의 멱등성, 일관성 등이 보장되지 않으며, 테스트 코드가 올바르게 작성 되었지만 외부 이슈로 인해 실패할 수 도 있다. 이를 해결하기 위해 로컬 환경에서 AWS 를 모방하여 시뮬레이션 할 수 있도록 하는 LocalStack 을 활용하여 실제 AWS 서비스에 연결하지 않고도 AWS 의 다양한 서비스들을 시뮬레이션 해 볼 수 있다. 이번 포스팅에선, S3 기능을 테스트 해 보겠다. 2. Gradle 의존성다음과 같이 LocalStack 의존성을 추가해 주었다.testImplementation 'org.testcontainers:localstack:1..
1. VPC 란 무엇인가?AWS VPC 는 사용자의 AWS 공간 전용 가상 네트워크 이다. 이러한 가상 네트워크를 통해 사용자는 AWS 내 논리적으로 격리된 자신만의 네트워크 공간을 정의하고, VPC 안에서 안전하게 EC2 혹은 다른 AWS 리소스를 실행할 수 있다. 이러한 격리된 공간 내에선, 사용자가 리소스에 대해서 완전한 통제권을 가질 수 있게 만든다. VPC는 기존 온 프레미스 환경과 유사하게 격리된 가상 네트워크를 프로비저닝할 수 있다. 예를 들어 IP 주소 범위, Subnet, Routing Table 등을 정의하여 사용할 수 있다. 2. VPC 구성 옵션VPC 는 단일 구성 요소가 아닌 여러 구성요소들의 집합이다. 이러한 구성 요소들은 독립적인 역할을 수행 하면서도, 유기적으로 연결되어 ..
들어가며어플리케이션의 통합 테스트 코드를 작성하다 이해하기 힘든 상황을 마주쳤다.INSERT INTO users (id, created_at, updated_at, username, email, password, profile_id) VALUES ('00000000-0000-0000-0000-000000000001', NOW(), NOW(), 'user1', 'user1@example.com', 'encrypted-password', null); INSERT INTO users (id, created_at, updated_at, username, email, password, profile_id) VAL..