피드로 돌아가기
AWS OpenSearch 기반 EFK Stack 구축기
올리브영 테크블로그올리브영 테크블로그
Backend

AWS OpenSearch 기반 EFK Stack 구축기

올리브영이 일일 1천만 건 이상의 재고 변경 이벤트를 추적하기 위해 AWS OpenSearch + EFK Stack을 도입해 Datadog과 별도의 전문화된 로깅 시스템 구축

2024년 4월 2일9intermediate

Context

올리브영은 입고, 점간 이동, 주문, 반품 등 30개 이상의 재고 이벤트 타입으로 인해 일일 SKU 기준 1천만 건 이상의 재고 변경이 발생한다. 이미 Datadog으로 서비스 모니터링을 수행 중이지만, 재고 정합성 확보와 이력 추적을 위해 별도의 전문화된 로깅 시스템이 필요했다.

Technical Solution

  • AWS OpenSearch 도메인 생성: 마스터 사용자를 통한 내장 DB 기반 권한 관리 설정
  • 인덱스 템플릿 및 매핑 구성: keyword와 text 타입을 구분하여 정의하고 index-%Y%m%d 패턴으로 날짜별 인덱스 자동 생성
  • Index Lifecycle Management(ISM) 정책 설정: 인덱스의 생성, 롤오버, 삭제 주기를 자동화하여 스토리지 비용 최적화
  • FluentBit 커스텀 이미지 개발: INPUT(로그 파일 지정) → Filter(문자열 정제) → OUTPUT(OpenSearch 전송) 파이프라인 구성
  • ECS Fargate 환경에서 FireLens sidecar 패턴 도입: 기존 Datadog 로그 경로와 별도로 재고 변경 로그만을 OpenSearch로 라우팅
  • OpenSearch 클라이언트 구현: Kotlin 기반 ObjectMapper 설정으로 camelCase를 snake_case로 변환하고 Bulk API를 통한 대량 문서 전송
  • 재고 전용 로그 appender 추가: 애플리케이션 컨테이너에서 별도의 포맷으로 OpenSearch용 문서 로깅
  • 제한된 권한의 사용자 및 역할 생성: FluentBit에 indices:data/write/bulk 권한만 할당하여 보안 강화

Impact

아티클에 명시된 정량적 성능 수치는 없음.

Key Takeaway

대규모 이벤트 기반 도메인(재고 변경 1천만 건/일)에서는 범용 모니터링 도구보다 OpenSearch와 같은 전문 검색 엔진을 도입하여 역인덱스 기반의 빠른 검색과 REST API를 통한 유연한 쿼리가 가능하다. Kubernetes 기반의 현대적 아키텍처에서 FireLens sidecar 패턴으로 로그 수집 경로를 분리하면 기존 인프라 변경 최소화하면서 새로운 로깅 요구사항을 충족할 수 있다.


ECS Fargate 환경에서 대량의 구조화된 로그를 수집하는 경우, FluentBit의 INPUT-Filter-OUTPUT 파이프라인과 OpenSearch의 Bulk API를 조합하면 HTTP 페이로드 제한(기본값 2MB)을 고려해 청크 단위로 나누어 안정적으로 대량 전송할 수 있다. 또한 OpenSearch 내장 사용자 대신 Bulk API 권한만 제한된 사용자를 생성하면 의도하지 않은 권한 확대를 방지할 수 있다.

원문 읽기