개요

기존 EFK에서 여러 문제점을 해결하고자 새롭게 고도화 작업을 진행하는 프로젝트이다.

해당 프로젝트를 고도화 진행한 이유는 다음과 같다.

  1. 현재 모니터링 시스템의 문제점 해결
    1. k8s logging은 가능하나, application logging 탐지 불가
    2. external api에 관하여 logging 불가
  2. BI 프로젝트를 고려한 아키텍처 추가
    1. EFK로는 Data의 ETL을 원활하게 진행할 수 없다. (Elastic 의존성있는 프레임워크)
    2. HA 및 무결성 고려
    3. 환경설정을 커스텀 할 수 있는 오픈소스형 프레임워크

아키텍처

xAPI는 mongoDB에 저장되어 있고 다른 mysql과 같은 데이터와 Flink에서 join 후, 가공하여 postgresql에 DataLake를 만드는 방법을 고려하고 있다.

image.png

Superset

Apache Superset은 대규모 데이터 탐색 및 시각화를 위한 현대적인 오픈소스 BI(Business Intellijence) 플랫폼이다. SQL 기반의 쿼리 작성과 직관적인 드래그 앤 드롭 방식의 차트 생성 기능을 제공하며, 다양한 데이터베이스와의 연결을 지원한다. 최신 버전에서는 성능 최적화와 사용자 경험 개선이 반영되어, 대시보드 렌더링 속도와 사용자 정의 기능이 강화되었다. 역할 기반 접근 제어(RBAC), 캐시 설정, 플러그인 확장성 등도 우수하여 엔터프라이즈 환경에서도 효과적으로 활용할 수 있다.

image.png

데이터 파이프라인

데이터 파이프라인은 간단하게 ETL (Extract-Transform-Load)의 약자로 추출, 변환, 적재로 이루어진 하나의 파이프라인이다. 상위 페이지의 아키텍처로 대입하면 Fluent-bit → Flink → PostgreSQL로 표현할 수 있다.

Extract Stage에서는 크게 두 가지를 고려해야 한다. 해당 데이터가 Stream인지 Batch인지 명확하게 구별해야 한다. 그래야 후에 전처리와 Load하는 과정 또한 실시간으로 처리를 해야할지 정할 수 있다.

근래 Extract에 사용되는 Beats, Fluent 등 Regular expression, Filter, Plugin 등을 활용하여 Normalization 진행할 수 있다. 하지만 HA 및 Integrity를 보장할 수 없으며 퍼포먼스 또한 Production 환경을 보장할 수 없다.

BI를 위한 데이터를 저장할 때, Batch로 진행할지 Stream으로 실시간에 가깝도록 처리할지 고민이였다.

데이터 양, 실시간 필요성 등을 고려하여 추후에는 두 방법 모두 필요하다 생각하였고 간단하게 예시를 남긴다.

DAG를 이용한 Batch 프로세스

배치로 데이터를 가공하는 Workflow로 수행하기 위해, Flink를 Bash Operation을 통해 수행하였다.