이 글은 Medium 회사 블로그에 올린 글을 가져온 글 입니다!
안녕하세요. 저는 Verticah에서 Head of Data로 일하고 있는 Jordan입니다.
회사의 기술 블로그에 첫 번째 글로 초기 스타트업에서 데이터 엔지니어로 어떤 일을 하고 있는지를 소개해 보려고 합니다.
저희 팀은 현재 11명의 구성원으로 이루어진 Seed 투자를 받은 초기 스타트업으로 혁신 성장기업의 자금 조달 방식을 혁신하자는 비전 아래 Revenue Market이라는 미래의 매출을 판매할 수 있는 벤처 대출 플랫폼을 만들고 있습니다.
Why an early-stage team needs a data guy
많은 회사들이 데이터 관련 직무를 회사가 어느 정도 성장한 후(A 시리즈 이후)에 채용합니다. 하지만, 데이터와 관련된 인프라나 구조는 변경하는 데 큰 비용이 들 뿐만 아니라, 데이터를 고려하지 않고 기업을 운영하는 습관이 관성이 되어 데이터 조직을 구성한 후에도 Data-Driven 문화로 전환하기 어렵습니다.
더 중요한 부분으로 데이터를 기반으로 한 제품 기획, 세일즈, 그리고 마케팅은 회사의 성장을 빠르게 만드는 데 큰 도움을 줄 수 있습니다. 또한, 서비스의 특성에 따라 데이터를 기반으로 하는 서비스라면 데이터 엔지니어가 제품을 직접 개발하는 데 참여할 수도 있습니다. 제가 Verticah에 합류한 이유도 이와 관련되어 있습니다.
Verticah에서는 데이터 엔지니어로서 데이터 플랫폼을 구축하는 업무 외에도, 회사를 평가하는 신용 모델 분석 서비스를 개발하고 있으며, 이를 고도화할 수 있는 백테스팅 서비스와 같은 분석 도구를 데이터 팀에서 개발하고 있습니다.
Data Platform 구축
Data Platform은 다양한 대규모의 데이터를 수집, 저장, 관리, 분석하고 거버넌스 할 수 있는 종합적인 시스템을 의미합니다. 그렇기 때문에 다양한 계층과 소프트웨어로 구성되어 있습니다. 기존의 전통적인 단일 웨어하우스와 다른 점은 각각의 레이어를 분리하고 보다 다양한 데이터 및 확장가능하도록 구성했다는 점입니다.
제가 입사 한 후 가장 먼저 진행한 프로젝트로 현재 모든 구성요소들을 구성하지는 못했지만 기본적인 요소들을 아래와 같이 구성하였습니다.
Data Ingestion
- DB: AWS DMS + Airflow
- External Data: Airflow
- Third-party Application: Fivetran
Storage/Processing
- S3: RDB의 CDC 데이터
- BigQuery: 모든 Raw Data 및 Mart Data
Data Pipeline
- Orchestration: Airflow (kubernetes)
- Computing: Pandas, BigQuery
Transformation/Modeling
- Enrich, Mart : Airflow
Data Utilization
- Reverse ETL: Airflow
- BI: metabase
Data Observability
- 자체 Data-Checker (source와 target의 row수를 비교)
- Metaplane
Data Catalog
- 현재는 따로 구축되어 있지는 않고, Metabase의 기능을 이용해 table meta정보만 관리.
Analytics Product
분석 DAG
데이터 플랫폼 만큼이나 가장 신경 쓰는 부분은 Analytics Product입니다.
이 서비스는 서버와 연결되어 있고, 분석 요청을 받아서 회사의 신용평가 및 다양한 분석을 진행하는 서비스입니다.
초기부터 분석 파이프라인을 어떻게 관리할지에 대한 고민이 많았으며, 가장 고민이 많았던 서비스인 만큼 짧은 시간 동안 많은 변화가 있었습니다. 레베뉴마켓에는 다양한 분석 서비스가 존재하는데 다양한 데이터로부터 지표를 만들고 스코어링 및 Criteria와 비교가 필요합니다. 동기식으로 동작하지는 않더라도 복잡한 분석 Workflow를 관리하면서 어느 정도 빠른 분석 결과를 확인해야 했으며, 아래와 같은 변천사를 거쳐 발전했습니다. (아직도 발전할 부분이 많습니다…)
- Version 1: SQS + Lambda → 복잡한 분석 과정을 관리하기 어렵고 코드 관리가 어려움.
- Version 2: SQS + Airflow → Airflow를 쓸데 없이 SQS message 폴링해야 함.
- Version 3: SQS + Lambda (Airflow 분석 DAG trigger) + Airflow (Kubernetes Executor) → Kubernetes pod의 initializing 시간이 오래 걸려 불편함.
- Version 4: SQS + Lambda (Airflow 분석 DAG trigger) + Airflow (CeleryKubernetes Executor)
이 밖에도 다양한 분석 모듈 및 클래스들을 다양한 금융 상품에 적용 가능하고 확장 가능하도록 만들고, 가독성이 좋고 정확한 코드 및 높은 테스트 커버리지를 유지하기 위해 많은 노력을 하고 있습니다.
Dashboard (BI)
지표를 보여 드릴 수는 없지만 빠르게 성장 중 입니다!
Metabase로 다양한 대시보드 및 지표들을 시각화하고 분석하고 있습니다.
대표적인 지표인 Revenue, Profit margin, Operating Income외에도 금융권 지표인 Loss Rate, DL, NPL 등 50여개 이상의 지표를 대시보드화해서 구축 중입니다. 또, 간단한 대시보드의 documentation을 추가해서 최소한의 Governance적인 부분도 챙기고 있습니다.
외부 회사들의 데이터를 수집해 고객 발굴에도 사용 중입니다.
metabase로 회사 내의 지표를 모니터링 할 뿐 아니라 Sales, Risk Domain에서 고객을 발굴하고 Monitoring하는데도 사용중입니다.
Hiring
서비스가 발전함에 따라서 데이터와 관련된 서비스가 늘어나고 데이터 플랫폼의 고도화 및 수행해야 할 업무가 많아졌습니다. 또한, 고객이 증가함에 따라 신용평가 모델의 고도화를 위한 백테스팅 툴 및 데이터 분석에 필요한 다양한 Engine (ML, Matching logic 등)이 필요해졌습니다. 개발 속도를 높이기 위해서는 새로운 동료가 필요하여 직접 채용을 진행했습니다. 초기 스타트업에서 좋은 분을 Inbound로 채용하는 것은 불가능하다는 것을 알기에 주변 지인 뿐만 아니라 링크드인, 리멤버 등 다양한 채용 플랫폼에서 Outbound로 지원자를 탐색했습니다.
2달의 고생 끝에 결국 좋은 분들을 모시게 되었고, 채용 과정 동안 배운 것들이 정말 많았습니다. (그 동안 면접관 으로만 참여하면서 좋은 분들이 지원하지 않는다고 툴툴 되었던 저의 과거가… 늦었지만 HR 분들께 감사합니다!)
ETC
- Machine learning 스터디
- BI tool 교육
- Ad-hoc analysis 및 data extraction
- …
앞으로 갈 길
아주 바쁜 6개월이었지만 좋은 팀 동료들 덕분에 많이 성장하고 즐거운 시간이었습니다!
Verticah 데이터 팀은 다양한 금융 상품의 신용 평가 모델을 자동화하고 고도화하기 위해 데이터 플랫폼을 구축하는 것뿐만 아니라 분석을 위한 백테스팅 툴, 분석 서비스 등 다양한 제품을 개발해야 합니다. 또한, Machine Learning을 도입하여 더 빠르고 정확한 분석을 위한 개발을 진행 중입니다.
Verticah는 현재 다양한 직군을 채용 중입니다! 꼭 채용 중인 포지션이 아니더라도 관심이 있으시다면 커피챗 신청주세요!
'Computer Engineering > Data Engineering' 카테고리의 다른 글
BigQuery Merge Query 설명 및 사용 사례 (0) | 2023.11.05 |
---|---|
Airflow KubernetesPodOperator 예제 코드 및 설명 (0) | 2023.07.22 |
Pandas DataFrame apply 성능 이슈 개선하기 (0) | 2023.07.08 |
Pandas DataFrame 조인 및 병합 / pandas merge, join, concat, (0) | 2023.07.02 |
Airflow CeleryKubernetesExecutor 사용하기 (0) | 2023.06.16 |