PostgreSQL JOIN 성능 이슈 파이썬에서 해결하기
·
데이터 엔지니어링
배경학습 종료라는 이벤트를 정의할 수 없는 문제에 따라 발생했던 수많은 중복 이벤트, 그리고 그 이벤트들을 어떻게든 처리하기 위해 ksql을 적용했었다. 2024.02.20 - [데이터 엔지니어링] - ksqlDB를 이용해 실시간 이벤트 스트리밍 최적화하기 하지만 결국 지속적인 비용문제와 대시보드의 사용성이 보통 주간 상담에 사용되기 때문에 실시간 처리의 효율성이 낮다고 판단했다. 이에 따라 실시간으로 학습상황을 집계하던 파이프라인은 에어플로우 주간 배치로 옮겨가게 되었다. 그러나 배치 작업으로 전환한 뒤에도 문제가 발생했다. 한번에 모아서 처리하기 때문에 더 이상 중복 문제는 발생하지 않았지만 일주일치를 처리하는데 시간이 매우 오래걸렸다. 특히 기존에 문제가 되었던 데이터베이스 Read 성능이 커리큘럼..
Clickhouse 데이터 웨어하우스로서의 한계와 단점
·
데이터 엔지니어링
2024.11.22 - [데이터 엔지니어링] - BigQuery에서 ClickHouse로 이벤트 로그 데이터 분석 환경 개선하기이전에 빅쿼리를 이용하다가 클릭하우스로 넘어온 이후 이벤트 로그 분석에서는 빠른 성능을 경험했다. 특히 몇억 건의 대량의 이벤트 데이터를 단순 집계하거나 필터링할 때 ClickHouse가 확실히 좋은 성능을 보여줬다. 하지만 최근 MySQL 데이터를 클릭하우스로 마이그레이션하면서 데이터 웨어하우스 용도로 쓰려다 보니 몇 가지 단점들이 보이기 시작했다.1. JOIN 연산에서의 한계클릭하우스는 기본적으로 INNER JOIN 이외의 JOIN 연산을 다루기 어렵다. 그 이유는 ClickHouse의 엔진 설계상 JOIN 연산이 메모리에서만 수행되기 때문이다. 게다가 ClickHouse는 ..
Apache Spark 기본 개념 및 아키텍처 소개
·
데이터 엔지니어링
Apache Spark는 대규모 데이터를 빠르게 처리할 수 있는 분산 데이터 처리 프레임워크이다. 대량의 데이터를 빠르게 분석하고, 머신러닝이나 실시간 스트리밍 처리에도 많이 사용된다. 이 글에서는 Spark의 기본 개념과 아키텍처, 핵심 구성요소를 정리해보겠다.Apache Spark란?Apache Spark는 대규모 데이터를 분산 환경에서 빠르게 처리할 수 있도록 설계된 오픈소스 클러스터 컴퓨팅 프레임워크메모리 기반의 빠른 연산: 기존 하둡이 디스크 I/O 비용이 많이 들어 in memory 기반으로 데이터 처리하는 spark 탄생 다양한 언어 지원(Python, Scala, Java, R) 배치 및 실시간 처리 지원 HDFS, S3, Kafka, NoSQL등 다양한 데이터 소스 지원 Apache Sp..
BigQuery에서 ClickHouse로 이벤트 로그 데이터 분석 환경 개선하기
·
데이터 엔지니어링
2024.11.12 - [데이터 엔지니어링] - 유저의 액션 이벤트 로그 설계와 개선 과정지난 시간에는 Firebase와 BigQuery를 조합하여 로그 이벤트를 수집했다.  데이터를 수집했으니 이제 조회하고 분석에 활용할 차례였다. 일반적으로 데이터 요청 프로세스는 다음과 같았다. 보고 싶은 데이터에 대한 요구사항이 오면 데이터팀에서 해당 요청을 검토한 후, 간단한 경우라면 쿼리로, 복잡한 경우라면 ETL을 통해 데이터를 가공하여 Redash나 Metabase 같은 툴을 이용해 제공하는 방식이었다.문제점그러나 몇 가지 문제가 있었다. 데이터를 보고 싶은 사람은 많지만, 데이터팀의 인적 자원은 한정되어 있어 모든 요구사항에 맞춰 데이터를 커스텀해줄 수는 없었다. 그래서 가능한 경우 직접 데이터베이스에 접..
유저의 액션 이벤트 로그 설계와 개선 과정
·
데이터 엔지니어링
그동안 회사에서 진행했던 이벤트 로그 설계 과정과 운영하면서 생긴 문제점을 개선하는 과정에 대해 정리하는 글이다. 이벤트 로그란?이벤트 로그란 시스템이나 애플리케이션이 실행되는 동안 발생하는 다양한 이벤트를 기록하여 문제 해결, 운영 모니터링, 데이터 기반 의사결정에 활용하는 데이터를 의미한다. 시스템 로그유저 이벤트 로그 주로 인프라와 서버 상태 기록개발자나 운영자가 문제 발생시 이슈 파악하고 대응하도록 도움CPU, 메모리, 네트워크 등 상태 모니터링 & 디버깅ex) Datadog 같은 툴서비스 사용자 활동을 추적해 주요 지표 도출서비스의 성과와 사용자의 행동 패턴을 분석하는데 사용데이터 기반 의사결정 내리는데 활용 Firebase-BigQuery 기반 로그 수집기존 시스템에 일부 이벤트 로그가 존재했..
Apache Airflow 이해하기
·
데이터 엔지니어링
Airflow란?복잡한 데이터 파이프라인의 스케줄링과 모니터링을 위한 워크플로우 오케스트레이션 플랫폼.workflow란?특정 목표를 달성하기 위해 의존성으로 연결된 작업의 과정데이터 파이프라인으로 예를 들면, 데이터 수집 → 처리 → 저장 등의 여러 작업이 순서대로 진행되는 흐름이 워크플로우에어플로우 같은 도구는 이런 워크플로우를 설계하고 관리하는데 최적화된 솔루션Airflow의 핵심개념DAG (Directed Acyclic Graph)워크플로우의 논리적 흐름을 DAG, 방향성 비순환 그래프라고 한다. 파이프라인 단계는 하나의 작업이 다른 작업에 의존하거나 특정 순서로 실행되어야 하기 때문에 방향성을 지닌다. 또한 완료된 작업을 다음 작업으로 둘 수 없기 때문에 순환할 수 없는 비순환 그래프이다.DAG은..
Apache Kafka 살펴보기
·
데이터 엔지니어링
들어가며작년 이맘때 쯤 Kafka 를 도입하여 실시간으로 학습 데이터를 처리하는 파이프라인을 구축했었다. 처음으로 해보는 이벤트 스트리밍 작업에 많이 헤매기도 했고, 실시간 처리란 고려해야 할 것도 많고 비용이 많이 들기 때문에 각 단계를 전부 신경써서 작업해야 한다는 것도 알게 되었다. 이번에 Kafka에 대한 기본개념 정리와 실무를 진행하며 겪었던 주의 할점에 대해 적어보려 한다.Apache Kafka란?Kafka는 실시간 데이터 스트리밍을 위한 분산형 이벤트 스트리밍 플랫폼이다. 다양한 소스에서 데이터를 메세지 형태로 받아 Topic(큐)에 저장하고, Topic에 저장된 메세지를 읽어서 원하는 작업을 처리 할 수 있다. Topic으로 메세지를 보내는 역할을 하는 Producer, Topic에서 메세..
ksqlDB를 이용해 실시간 이벤트 스트리밍 최적화하기
·
데이터 엔지니어링
https://medium.com/mildang/ksqldb를-이용해-실시간-이벤트-스트리밍-최적화하기-53b403dc4529 ksqlDB를 이용해 실시간 이벤트 스트리밍 최적화하기들어가며medium.com이번에 kafka와 ksqlDB를 사용해 데이터 파이프라인 작업 진행한 경험을 살려 회사 블로그에 위와 같은 주제로 글을 적게 되었다. 나름 열심히 적었기 때문에 여기에도 공유해본다..! 최적화 작업에 대한 좀 더 상세한 작업기를 추후 블로그에도 포스팅할 예정이다. 다음글 >https://hajinnote.tistory.com/109
카프카를 통한 실시간 데이터 파이프라인 구축기
·
데이터 엔지니어링
들어가며 하반기 디지털 교과서 지원사업 때문에 학업 수행 결과가 담긴 대시보드를 개발해야 하는 일이 생겼다. 일정은 빠듯하게 정해져 있는데 기존에 없던 페이지(부터 데이터까지 전부) 아예 새롭게 만드는 작업이라 한동안 너무 바빠서 블로그에 못들어왔다.. 이번에 이 작업을 하면서 카프카를 적용해 새로운 데이터 파이프라인을 만들었다. 어떤 작업을 했는지 문제점과 해결방법에 대해 적어보려 한다. 설계 먼저 수집 할 수 있는 데이터와 대시보드에서 필요한 데이터를 정리했다. 대시보드는 개인별로 보여지는 것이기 때문에 학생별 집계데이터가 필요하다. 하지만 기존의 에어플로우로 돌던 파이프라인은 컨텐츠 단위의 통계 테이블만 제작하고 있어서, 학생 별로 데이터를 내려 줄수가 없었다. 그래서 이번엔 아예 학생-액티비티 단..