이벤트 로그 서버 구축 (1) - 개요
1. 이벤트 로그
이벤트 로그는 사용자의 행동을 추적하기 위해 기록하는 데이터로, 서비스 운영 및 개선에 중요한 역할을 합니다. 예를 들어, 특정 기능에 대한 사용자 클릭 수, 페이지 체류 시간, 전환율 등을 분석하여 사용자의 행동 패턴을 파악할 수 있습니다. 이를 통해 사용성 개선, 개인화된 서비스 제공, 효과적인 마케팅 전략 수립 등이 가능합니다.
이벤트 로그는 이벤트의 이름, 발생 시점, 그리고 해당 이벤트와 관련된 파라미터를 포함합니다. 이벤트 이름은 '로그인', 'A 페이지 진입', '스크롤 N%'와 같이 특정 이벤트를 식별하는 데 사용됩니다. 이벤트 파라미터는 이벤트의 세부 정보를 담고 있으며, 예를 들어 로그인 이벤트의 경우 '로그인 타입(구글, 카카오 등)'과 '로그인 ID'가 포함될 수 있습니다. 결제 이벤트라면 '상품 ID', '상품 금액'과 같은 정보가 포함될 수 있습니다. 이러한 파라미터는 이벤트를 세밀하게 분석하고 식별하는 데 중요한 역할을 합니다.
2. 이벤트 로그 서버
이벤트 로그 서버는 다양한 소스에서 데이터를 실시간으로 수집하고, 이를 안전하면서도 확장 가능한 방식으로 저장합니다. 또한, 데이터를 분석 및 활용하기 용이한 형태로 변환하여 제공합니다. 이벤트 로그 서버의 주요 기능은 다음과 같습니다.
- 데이터 수집 및 통합 : 다양한 소스에서 이벤트 로그를 실시간으로 수집합니다.
- 유실 방지 : 네트워크 장애나 시스템 오류에도 이벤트 로그가 유실되지 않도록 재시도 메커니즘을 사용하거나 임시 스토리지에 저장합니다.
- 데이터 압축 및 저장 최적화 : 로그 데이터를 효율적으로 저장하기 위해 데이터를 압축하고 데이터를 날짜별 및 이벤트 유형별로 분류합니다.
- 데이터 변환 및 정규화 : 로그 데이터를 분석에 적합한 형태로 변환합니다.
- 분석 가능한 데이터 제공 : 저장된 로그 데이터를 분석할 수 있도록 SQL 쿼리나 대시보드 형태로 제공합니다.
3. 아키텍처 개요
이벤트 로그 서버를 구축하기 위해 다양한 AWS 서비스를 활용하였습니다. 데이터 수집에는 API Gateway와 Lambda를, 데이터 적재에는 Kinesis Data Firehose와 S3를 사용하였습니다. 데이터 분석에는 Glue Crawler, Glue Data Catalog, Athena를 활용하였습니다. 각 서비스에 대한 설명과 역할에 대해서는 아래에서 자세히 설명하겠습니다.
4. 데이터 수집 파트
데이터 수집 파트는 클라이언트가 이벤트 로그를 전송하기 위한 엔드포인트 제공하고, 데이터를 적재하기 위해 다른 서비스로 전달합니다. 이를 위해 API Gateway와 Lambda를 사용하였습니다.
API Gateway
API Gateway는 AWS에서 제공하는 완전 관리형 서비스로, RESTful API를 생성, 배포, 관리할 수 있도록 지원합니다. 클라이언트와 백엔드 서비스 간의 통신을 중개하며, 인증/인가, 요청 검증, 속도 제한 등의 다양한 기능을 제공합니다. 이 프로젝트에서는 API Gateway를 활용해 이벤트 데이터를 수집하기 위한 엔드포인트를 제공하고, 요청을 Lambda로 전달합니다.
Lambda
Lambda는 AWS의 서버리스 컴퓨팅 서비스로, 서버를 관리할 필요 없이 코드를 실행할 수 있습니다. 이벤트 기반으로 동작하며, 요청이 발생할 때만 코드를 실행하여 비용 효율적인 운영이 가능합니다. 또한, 다양한 프로그래밍 언어를 지원하며, 자동 확장과 내장된 오류 처리 기능을 제공합니다. 이 프로젝트에서는 Lambda를 활용하여 클라이언트 요청을 처리하고 데이터를 변환하거나 데이터를 적재하기 위해 다른 서비스로 전달합니다.
5. 데이터 적재 파트
데이터 적재 파트는 수집된 데이터를 안전하게 저장하고, 분석 작업에 적합한 형태로 변환하여 관리하는 역할을 담당합니다. 데이터 압축 및 파니셔닝, 가공과 배치 처리를 지원합니다. 이를 위해 Kinesis Data Firehose, S3를 사용하였습니다.
Kinesis Data Firehose
Kinesis Data Firehose는 AWS에서 제공하는 완전 관리형 데이터 스트리밍 서비스로, 데이터를 실시간으로 수집하여 저장소나 분석 도구로 전달할 수 있습니다. 데이터 압축(예: gzip)과 형식 변환(예: JSON → Parquet)을 지원하여 저장 공간을 최적화하며, Lambda와 연동해 데이터를 실시간으로 가공할 수 있습니다. 이 프로젝트에서는 Firehose를 활용해 Lambda에서 전달받은 데이터를 압축 및 가공한 뒤 S3에 저장합니다.
S3
S3는 AWS의 객체 스토리지 서비스로, 데이터를 안전하게 저장하고 관리할 수 있는 고가용성과 확장성을 제공합니다. 다양한 스토리지 옵션을 통해 비용 효율성을 극대화할 수 있으며, 데이터 암호화 및 버전 관리를 지원하여 높은 수준의 보안을 제공합니다. 이 프로젝트에서는 Firehose가 적재한 데이터를 저장하는 스토리지 역할을 수행합니다.
6. 데이터 분석 파트
데이터 분석 파트는 S3에 적재된 데이터를 분석 가능하도록 준비하고, 이를 쿼리를 통해 활용할 수 있는 형태로 제공합니다. 이를 위해 Glue Crawler, Glue Data Catalog, Athena를 사용하였습니다.
Glue Crawler
Glue Crawler는 AWS에서 제공하는 데이터 크롤링 도구로, S3와 같은 데이터 저장소를 스캔하여 데이터의 스키마(구조 및 메타데이터)를 자동으로 생성합니다. 이를 통해 데이터 분석에 필요한 스키마 정의 작업을 자동화하고, 관리의 효율성을 높입니다. 이 프로젝트에서는 S3에 저장된 데이터를 크롤링하여 Glue Data Catalog에 메타데이터를 등록합니다. Athena가 이를 활용해 데이터를 쿼리하고 분석할 수 있도록 지원합니다.
Glue Data Catalog
Glue Data Catalog는 AWS에서 제공하는 중앙 메타데이터 저장소로, Glue Crawler가 생성한 스키마 정보를 관리합니다. 이를 통해 데이터 소스와 스키마 정보를 체계적으로 관리하며, 분석 도구에서 데이터를 효율적으로 사용할 수 있도록 지원합니다. 이 프로젝트에서는 Glue Data Catalog를 활용해 S3에 저장된 데이터의 스키마와 메타데이터를 관리합니다. Athena가 이를 참조하여 데이터를 쿼리할 수 있습니다.
Athena
Athena는 AWS의 서버리스 쿼리 서비스로, S3에 저장된 데이터를 SQL 기반으로 분석할 수 있는 환경을 제공합니다. Glue Data Catalog에 등록된 메타데이터를 참조하여 데이터를 효율적으로 분석하며, 추가적인 데이터 이동 없이 S3에 저장된 데이터를 바로 쿼리할 수 있습니다. 이 프로젝트에서는 Athena를 활용해 S3에 저장된 이벤트 로그 데이터를 SQL로 분석하고, 비즈니스 인사이트를 도출할 수 있는 쿼리를 실행합니다.
다음 글에서는
이번 글에서는 이벤트 로그와 이벤트 로그 서버의 역할을 간략히 소개하고, 이를 구축하기 위해 사용한 AWS 서비스와 각 서비스의 용도를 설명했습니다. 다음 글에서는 각 파트를 구성하는 구체적인 방법을 자세히 다뤄보겠습니다.
2025.01.04 - [이벤트 로그] - 이벤트 로그 서버 구축 (1) - 개요
2025.01.11 - [이벤트 로그] - 이벤트 로그 서버 구축 (2) - 데이터 수집 파트 1
2025.01.18 - [이벤트 로그] - 이벤트 로그 서버 구축 (3) - 데이터 수집 파트 2
2025.01.25 - [이벤트 로그] - 이벤트 로그 서버 구축 (4) - 데이터 적재 파트 1
2025.02.02 - [이벤트 로그] - 이벤트 로그 서버 구축 (5) - 데이터 적재 파트 2
2025.02.09 - [이벤트 로그] - 이벤트 로그 서버 구축 (6) - 데이터 분석 파트