제 프로젝트는 사용자가 특정 차트를 고르면, 코스피 코스닥 전 종목의 과거(5년) 차트들을 모두 탐색하여 가장 유사한 차트 10개 정도를 골라 사용자에게 보여주는 것이 목표입니다.
similar chart finder
내 종목의 차트는 상승하는 차트일까요?
3.35.36.208
웹 아키텍처에서의 데이터 파이프라인
공부하기 전인 지금, 데이터 파이프라인이라고 하면 그냥 데이터를 처리하는 과정이라고 알고 있습니다. 데이터 파이프라인만 특히 신경 써서 알아보거나 조사해 볼 생각은 없었습니다.
제 프로젝트는 파이썬 라이브러리로 주가 데이터를 수집하고 정제하여 요청에 필요한 데이터를 준비하는 도커 컨테이너가 있는데, 이 부분이 데이터 파이프라인과 연관이 있을 것 같긴 하네요. 한번 공부해 보겠습니다.
데이터 파이프라인이란?
데이터 파이프라인은 데이터가 한 지점에서 다른 지점으로 이동하는 과정을 가리킵니다. 이 과정에서 데이터는 수집, 변환, 저장, 분석 등 다양한 단계를 거치게 됩니다. 데이터 파이프라인은 이러한 단계들을 자동화하고, 효율적으로 관리함으로써, 대용량 데이터를 실시간으로 처리하는 데 필요한 기반을 제공합니다.
웹 아키텍처에서의 데이터 파이프라인은 웹사이트나 애플리케이션에서 발생하는 대량의 데이터를 처리하고 분석하는 데 사용됩니다. 이는 사용자의 행동을 이해하고 서비스를 개선하는 데 필요한 인사이트를 제공합니다.
데이터 파이프라인 과정
웹 아키텍처에서의 데이터 파이프라인은 주로 다음과 같은 단계를 거칩니다.
- 데이터 수집: 웹사이트나 애플리케이션에서 발생하는 사용자의 행동 데이터, 서버 로그, 에러 로그 등 다양한 데이터를 수집합니다. 이 과정에서는 Data Firehose와 같은 도구를 사용할 수 있습니다.
- 데이터 처리: 수집된 데이터는 필요에 따라 정제, 변환, 집계 등의 처리 과정을 거칩니다. 이 과정은 Apache Beam이나 Apache Flink와 같은 데이터 처리 프레임워크를 사용하여 수행될 수 있습니다.
- 데이터 저장: 처리된 데이터는 분석이나 조회를 위해 저장됩니다. 이 과정에서는 Data Warehouse와 같은 시스템을 사용할 수 있습니다.
- 데이터 분석: 저장된 데이터는 필요에 따라 다양한 분석 과정을 거칩니다. 이 결과를 바탕으로, 서비스 개선의 방향을 결정하거나, 사용자에게 맞춤형 경험을 제공하는 등의 작업을 수행할 수 있습니다.
Data Firehose, Data Warehouse, Apache Beam, Apache Flink에 대해서는 조금 후에 자세히 알아보겠습니다.
내 프로젝트도 데이터 파이프라인을 사용하는 걸까?
앞서 제 프로젝트에는 파이썬 라이브러리로 주가 데이터를 불러와서 수집, 정제하여 요청에 필요한 데이터를 준비하는 data_updater 컨테이너가 있다고 했습니다. 데이터를 수집, 정제하고 요청에 필요한 데이터를 준비하는 과정을 자동화하고 있으므로, 이를 데이터 파이프라인이라고 부를 수 있습니다.
제 개인 프로젝트 정도라면 괜찮겠지만, 규모가 큰 데이터 파이프라인을 구축하고 운영하는 것은 쉬운 일이 아닙니다. 대용량 데이터의 실시간 처리, 데이터의 품질 관리, 시스템의 안정성 유지 등 다양한 과제가 있습니다. 이러한 과제를 해결하기 위해, Apache Beam, Apache Flink 등의 고급 데이터 처리 프레임워크를 활용하는 것이 중요합니다.
데이터 파이프라인 기술들을 내 프로젝트에 적용?
제 주가 데이터를 다루는 프로젝트에 위에 언급했던 데이터 파이프라인 관련 기술들을 적용할 여지가 있을까요? 한번 알아보겠습니다.
Data Firehose
Data Firehose는 대량의 실시간 스트리밍 데이터를 빠르게 수집하고 다양한 목적지에 전송하는 역할을 합니다. 만약 웹사이트에서 실시간으로 발생하는 대량의 데이터를 처리해야 하는 경우, 예를 들어 사용자의 클릭 행동 데이터나, 실시간 주가 데이터처럼, Data Firehose를 사용하여 이 데이터를 실시간으로 수집하고 저장할 수 있습니다.
Amazon Kinesis Data Firehose는 이런 역할을 하는 대표적인 서비스입니다.
Data Warehouse
Data Warehouse는 데이터를 통합, 저장하고 분석 가능한 형태로 만드는 곳을 의미합니다. 만약 수집한 주가 데이터를 장기적으로 저장하고, 이를 기반으로 다양한 분석을 수행하고자 한다면, Data Warehouse를 사용할 수 있습니다.
예를 들어, 주가의 장기적인 추세 분석, 다양한 주식 간의 상관관계 분석 등을 수행하고자 한다면, 이를 위한 데이터 저장소로 Data Warehouse를 활용할 수 있습니다. Amazon Redshift, Google BigQuery, Snowflake 등이 대표적인 데이터 웨어하우스 서비스입니다.
Apache Flink
Apache Flink는 실시간 스트림 처리에 특화된 대용량 데이터 처리 프레임워크입니다. 만약 실시간으로 발생하는 주가 데이터를 빠르게 처리하고, 이를 바탕으로 즉시 차트를 업데이트해야 하는 등의 요구사항이 있다면, Apache Flink를 활용할 수 있습니다.
Apache Beam
Apache Beam은 배치 처리와 스트림 처리를 모두 통합하는 방식으로 데이터 파이프라인을 구축할 수 있는 프레임워크입니다. 만약 주가 데이터를 실시간으로 처리하는 스트림 처리와, 일정 시간 동안 축적된 데이터를 한꺼번에 처리하는 배치 처리를 모두 수행해야 한다면, Apache Beam을 사용할 수 있습니다.
mysql과 Data Warehouse의 차이?
MySQL은 관계형 데이터베이스 관리 시스템(RDBMS)으로, 일반적으로 트랜잭션 처리와 CRUD(Create, Read, Update, Delete) 연산에 최적화되어 있습니다. 이러한 특성으로 인해, 웹 애플리케이션의 주요 데이터 저장소로 널리 사용됩니다.
반면에, 데이터 웨어하우스는 보통 대용량의 데이터를 저장하고, 복잡한 쿼리를 실행하여 비즈니스 인텔리전스나 분석 작업을 지원하는 데 최적화된 시스템을 지칭합니다. 이는 종종 데이터의 빅 픽처를 제공하고, 조직 내의 의사 결정을 지원하는 데 사용됩니다.
MySQL을 데이터 웨어하우스로 사용할 수는 있지만, 대용량 데이터의 복잡한 분석 쿼리에 대한 처리 성능이나, 데이터의 복잡한 형태를 지원하는 능력 등의 측면에서 전용 데이터 웨어하우스 설루션들(Amazon Redshift, Google BigQuery 등)에 비해 한계가 있을 수 있습니다.
따라서, 제 프로젝트가 단순히 데이터를 저장하고 조회하는 정도의 요구사항이라면 MySQL을 사용해도 충분하지만, 대용량의 데이터를 복잡한 방식으로 분석하고 처리해야 하는 상황이라면, 전용 데이터 웨어하우스 설루션을 고려해 볼 만합니다.
Kafka는 Data Firehose?
듣고 보니 Data Firehose는 Kafka와 비슷한 역할을 하는 것도 같습니다. 자세히 알아본 바로는,
Data Firehose와 Apache Kafka는 모두 실시간 스트리밍 데이터를 처리하는 데 사용되는 도구로, 서로 비슷한 역할을 합니다. 하지만 두 도구는 목적과 활용 방식에 있어서 약간의 차이가 있습니다.
Data Firehose
Data Firehose는 주로 대량의 실시간 데이터를 빠르게 수집하고, 다양한 목적지에 전송하는 역할을 합니다. 예를 들어, AWS Kinesis Data Firehose는 로그나 클릭스트림과 같은 실시간 데이터를 Amazon S3, Redshift, Elasticsearch Service 등으로 전송할 수 있습니다. 이는 복잡한 설정 없이 간단하게 스트리밍 데이터 파이프라인을 구축할 수 있게 해 줍니다.
Apache Kafka
Apache Kafka는 고성능의 실시간 메시지 시스템으로, 데이터를 생산하는 프로듀서와 데이터를 소비하는 컨슈머 사이에서 메시지를 전달하는 역할을 합니다. Kafka는 대용량의 실시간 데이터를 처리할 수 있으며, 분산 시스템 환경에서 높은 안정성과 내고장성을 제공합니다.
이런 Kafka의 특성 때문에, Kafka는 실시간 통신이 필요한 서비스에서 이벤트 소싱, 메시지 큐, 웹 트래픽 추적 등 다양한 용도로 활용됩니다.
'웹 아키텍쳐' 카테고리의 다른 글
웹 아키텍처10 - 서버리스 아키텍처와 AWS Lambda (0) | 2024.02.17 |
---|---|
웹 아키텍처8 - 클라우드 서비스와 AWS(아무것도 모르고있다가 돈 날림) (0) | 2024.02.17 |
웹 아키텍처6 - 전문 검색 서비스와 ElasticSearch (0) | 2024.02.17 |
웹 아키텍처5 - 메세징 시스템과 Kafka - 디도스 방지 가능? (0) | 2024.02.17 |
웹 아키텍처4 - 캐싱 시스템과 Redis (23.11.9) (0) | 2024.02.17 |