데보션 테크세미나 : 데이터 플랫폼 구현 사례 (22.07.29)
0. Intro
SK DEVOCEAN 에서 ‘데이터 플랫폼 구현 사례' 발표를 들으며, 따로 메모해둘만한 내용들을 기록했습니다.
원본 링크는 https://devocean.sk.com/vlog/view.do?id=331&vcode=A03 이며 페이스북 링크는 https://www.facebook.com/groups/devocean 입니다
1. Data
-1. DataLake vs DataWarehouse
DataLake 는 ‘찐 raw 데이터' 진짜 실제 가공하지 않은 쌩 데이터들이 모여있는것
- 가공하지않고, 전체데이터라는것이 특징
DataWarehouse는 DataLake에서 ‘이건 좀 가공해서 써야겠다' 싶은 데이터들을 빼둔것
- 가공했기때문에, Data Prosessing이라던가, 좀더 입맛에 맞는것
-2. BigQuery(GCS)
BigQuery를 데이터웨어하우스로 사용하고있고, Managed Service중에서는 빠른편
비용이 싸진 않지만, 다양한 기능(Big Table, Partitioning, ML)과 빠른속도때문에 사용하는편
-3. DataLake → BigQuery
Data레이크 → 온프레미스로 구축한 HDFS, HIVE, SPARK ⇒ GCS 로 넘겨서 사용.
이때 사용하는 서비스가 Airflow
-4. Airflow Backfill
Airflow : Python 코드로 스케줄링 및 모니터링, DAG형태의 워크플로우 작성
Backfill : Airflow에서는 임의의 시작날짜로부터 스케쥴간격을 정의할수 있으므로, 과거의 시작날짜부터 과거 간격을 정의할수 있다.
- 실시간으로 데이터를 보내줘야하는데, Airflow장애나서 데이터를 보내지 못하는경우
참고자료(Apache Airflow 기반의 데이터파이프라인,56페이지, Backfill)
2. 분석환경
-1. JupyterHub on Kubernetes
Jupyter Hub : 다중사용자에게 제공하는 서버용 Jupyter notebook 같은느낌. 서버에 접속해서 Jupyter notebook 쓰는느낌으로 이해
- Hadoop, HDFS, Hive, Spark, ML, DL, BigQuery 를 사용할수 있음
3. 파이프라인 개발
-1. Airflow 로 개발할때 불편한점
Airflow 로 개발하는 일반적인 절차는
DAG작성 → Airflow로 배포 → Airflow UI에서 테스트
“해보면 알겠지만, 이거 오질나게 개불편하다" (내 개인적인 생각)
“어 근데 우리는 JupyterHub에서 모든작업을 했었는데???”
이 문제는 Papermill 로 해결할수있다
-2. PaperMill → NES
papermill : 노트북에 파라미터를 주입해서 넣는 툴 → 저장소에 업데이트
NES : 실행한 노트북과 파라미터를 넣으면 → 해당 노트북주소에 들어가서 해당테스크를 실행. NesOperator 사용
-3. Airflow + NES = 무적
- 분석환경에서 개발, 테스트 둘다가능
- 확실하게 검증된 코드를 Airflow에 디플로이 가능
- DAG코드의 복잡도 감소
- commuter url을 따로 만들어서, 파이프라인 결과에 대한 공유가 편함
-4. 무엇이든 물어보세요 포탈 (운영)
REACT + FastAPI + SQLAlchemy + PostgreSQL + Voila 로 포탈을 직접 만들어서 ’우리 이거 해주세요~’ ‘저거 어떻게해요?’ ‘이거 빨리해주세요' 등등의 모든 질문을 받는 포탈을 직접 만들어버리자
-5. 실시간 위치 데이터처리
사용자 위치를 실시간으로 제공해야하는데 ‘어떻게 수집하고, 처리할거냐?’
Kinenesis + EMR + SparkStreaming → Lambda ⇒ EKS로 만들었는데 IAC( Infrastructure as Code) 로 만들어버렸다
4. 질문
-1. 빅쿼리 기반의 데이터웨어하우스로 이동하는 방법 및 데이터 마이그레이션 방법은?
- GCS로 전송 → BigQuery에 테이블로드하는 방식이 제일 효율적인것 같음
- 속도가 빠른것이 빅쿼리의 장점
- 매니지드서비스 이므로, 장애가 발생하면 구글이 대응해줌!
-2. 마이그레이션이나 플랫폼을 고려할때 ‘어떤 부분을 고려해야할까?’
- 실 사용자가 사용했을때 ‘얼마나 편한가' 를 많이 따져보는것 같다
-3. 데이터플랫폼을 구현하면서 가장 까다롭다고 생각되는 점
- 개인정보같은건 당연히 마스킹해서 가져올거고, 빅쿼리 같은거 (온프렘이 아닌경우) 에는 특히 신경쓰는듯
- 이게 다른조직도 연관이 되어있을텐데, 문제를 모니터링하고, 커뮤니케이션 하는게 제일 어렵더라 ( 문제가 내부에 있으면 어떻게든 해결하면되는데, 그게아니면? 몰?루)
-4. 데이터파이프라인 고장을 어떤식으로 대응하는지
- 앵간하면 자동화해서, 알아서 대응되도록 하게끔 하는데
- 그렇지 않은경우에는 ‘모니터링 열심히 해서 DAG를 돌린다던지,,, 노트북을 다시돌린다던지,,,’
-5. 왜 빅쿼리를 썻는지 (vs AWS Redshift)
- 빅쿼리가 매니지드고, 기능적 & 속도적인 부분에서 너무좋더라
6. Outro
내가 공부하는 분야가 데이터플랫폼을 비롯한 데이터파이프라인 분야다보니 ELK, Kafka, RDBMS, Hadoop 등등 이런내용이 나올줄 알았는데, Airflow랑 BigQuery에 대한 내용이 주로 나왔기에 ‘내가 생각했던 주제는 아닌가' 싶었다.
강의 중반에 나온 ‘Airflow Backfill’ 이라던가, 질문에 나온 ‘파이프라인 장애' 등등 장애복구에 대한 방법들을 이것저것 많이 나왔는데, 공부하는 입장에서 생각하지 못한 ‘장애복구' 에 대한 깊은생각을 들을수 있어서 좋았다.
데이터 마이그레이션에 대한 질문이 많았는데, 결국 ‘어떻게 데이터를 넘길것인가?’ 에 대해서 고민이많은것같았다. ETL과정이라던가, 스토리지에 올렸을때의 운영비용이라던가,,, 고민이 많은것같았다.
데이터 분야 공부하면 할수록, 늘 새로운게 나오고, 엄청 많이 따져봐야하는것같은데 보면 볼수록 신기한 분야가 아닐수없다. 앞으로 꾸준히 배우자!
(포스팅 하면 데보션에서 100포인트를준다고한다. 500포인트를 모으면 데보션전문가와 식사권을 얻을수있는데, 얼른 모아서 카프카 전문가분 만나고싶다. 지금 390포인트인건 안비밀)