7주차 월요일, 31일차 Today I Learned
데이터 인프라, 고급 SQL, BI 대시보드 (1)
: 데이터 조직, 데이터 웨어하우스, ETL/ELT, 데이터 레이크, 데이터 스택 트렌드
✏️ 학습 내용
1. 데이터 조직
데이터 조직은 신뢰할 수 있는 데이터를 바탕으로 부가 가치를 생성한다. 즉, 직접적으로 매출을 발생시키는 것이 아니라 더 나은 매출을 만들 수 있도록 간접적인 매출을 발생시키는 팀이다.
데이터 조직이 하는 일은 고품질 데이터를 기반으로 ① 의사 결정자가 결정을 할 수 있도록 도와준다. 예를 들어 데이터 기반 지표를 정의하고, 대시보드와 리포트 생성 등을 수행하여 회사 차원에서의 의사결정을 지원하는 것이다. 이는 회사가 가고자 하는 방향에 맞춰 데이터를 참조하는 데이터를 고려한 결정 (Data informed decisions), 혹은 데이터 기반 결정 (Data driven decisions)을 하도록 돕는다. 이 때에 무작정 데이터를 고려하기만 한다거나 데이터를 따르기만 하는 것이 아니라 이 두 가지의 적절한 혼합을 통한 의사결정이 중요하다.
그리고 고품질 데이터를 기반으로 ② 사용자 서비스 경험을 개선하거나 프로세스를 최적화하도록 도와준다. 머신러닝과 알고리즘을 통해서 개인화를 바탕으로 사용자의 서비스 경험을 개선할 수 있고, 고객 관리 프로세스를 챗봇으로 변경할 수도 있다.
① Decision Science : Data informed decisions & Data driven decisions
② Data Science - 사용자 경험 개선, 프로세스 최적화
이상적인 데이터 팀의 발전은 우선 데이터 엔지니어(DE)를 통해서 데이터 인프라를 구축하고, 데이터 분석가(DA)가 지표를 정의하여 시각화하고, 데이터 과학자(DS)가 머신러닝과 인공지능 등을 이용하여 데이터 과학을 적용하는 것이다.
1) 데이터 엔지니어 - 데이터 인프라 (ETL;데이터 파이프라인, 데이터 웨어하우스) 구축
2) 데이터 분석가 - 지표 정의, 시각화 대시보드, 리포팅
3) 데이터 과학자 - 과거 데이터 기반으로 미래 예측 머신러닝 모델을 만들어 고객의 서비스 경험을 개선
데이터 엔지니어란 기본적으로 소프트웨어 엔지니어다. 파이썬이 대세이지만 추가적으로 언어를 배우고 싶다면 자바 혹은 스칼라를 배우면 된다. 이들은 데이터 웨어하우스를 구축하고 데이터 분석가와 과학자를 지원한다. 데이터 웨어하우스를 만들고 이를 관리하다가 데이터가 커지면 데이터가 커지면 클라우드로 가는 것이 추세이다. 대표적으로 AWS Redshift, 구글 클라우드 BigQuery, Snowflake가 있다. ETL 스케줄러 혹은 프레임워크에서 Airflow를 주로 사용하고, 더 나아가 빅데이터 처리 프레임웍의 표준이라 할 수 있는 Spark가 빅데이터 프로세싱 기술로 사용된다. 그 다음 단계로 Docker나 쿠버네틱스가 있는데 여기는 주니어의 영역은 아니다.
데이터 분석가는 비즈니스 인텔리전스를 책임진다. 데이터 분석 시에 지표의 경우 3A (Accessible, Actionable, Auditable)가 중요하다. 자동화된 대시보드로 원할 때 볼 수 있어야 하며, 지표가 올라가고 내려오는 의미가 분명해야 하고, 숫자가 맞는 값인지 확인이 가능해야 한다는 것이다. KPI에는 대표적으로 매출액, 월간/주간 액티브 사용자 수 등이 있다. 가장 널리 사용되는 대시보드는 구글 클라우드 Looker, 세일즈포스 Tableau, 마이크로소프트 Power BI, 오픈소스 아파치 Superset이 있다.
Citizen Data Analyst
데이터 팀 내에 존재하는 데이터 분석가가 아니라, 마케팅 팀과 같은 현업 부서 내에 존재하는 데이터 분석가를 Citizen Data Analyst라고 하며, 마케팅 팀에서 특정한 한 사람이 데이터 분석 업무를 맡을 때에도 Citizen Data Analyst이라고 할 수 있다.
데이터 과학자가 머신러닝 모델을 만들어서 사용자 경험과 프로세스를 개선하는데, 이 때 머신러닝이란 프로그래밍 없이 데이터로부터 패턴을 찾아 학습 가능한 알고리즘이다. 따라서 데이터의 품질과 크기가 중요하다. 솔루션은 간단할수록 좋다.
이 외에도 ML 엔지니어 (데이터 과학자 + 데이터 엔지니어), MLOps (데이터 분석가 + 데이터 과학자 + 데이터 엔지니어), 프라이버시 엔지니어라는 직군이 있고, 별도의 직군은 아니지만 데이터 팀이 커지면 꼭 필요한 서비스인 데이터 디스커버리 (Data Discovery)가 있다. 데이터 팀이 커지면서 데이터 디스커버리는 꼭 필요해진다. 데이터가 커지면서 테이블, 대시보드의 수가 증가하게 되는데 이를 하나씩 통제하는 것은 불가능하다. 따라서 원하는 데이터가 있는 데이터 소스를 찾는 것이 중요해진다.
2. ETL, ELT
ETL이란 Extract, Transform, Load의 약자로, 외부에 존재하는 데이터를 추출해서 원하는 대로 변환하여 데이터 웨어하우스 (또는 데이터 레이크)에 적재하는 작업을 의미한다. 주로 Airflow를 사용하며, 데이터 엔지니어가 수행한다. ETL을 데이터 파이프라인이라고 부르기도 한다.
- 데이터 추출 (Extrack) : 각 데이터 소스로부터 필요한 정보를 추출
- 데이터 변환 (Transform) : 추출된 데이터를 원하는 형태로 변환 (정제 작업 가능)
- 데이터 적재 (Load) : 변환된 데이터를 최종적으로 데이터 웨어하우스로 로드
ETL에서 가장 많이 쓰이는 프레임워크는 Airflow이다. Airflow는 오픈소스 프로젝트로 파이썬3 기반이며 에어비앤비에서 시작했고, AWS와 구글 클라우드에서도 지원 가능하다. 만약 데이터팀이 없거나 데이터팀의 일이 많아 추가적인 보완이 필요할 때 ETL 관련 SaaS를 사용하는 것도 가능하다.
다수의 ETL이 존재할 경우 이를 스케줄해주고 이들간의 의존관계를 정의해주는 기능이 필요하고, 특정 ETL이 실패할 경우 이에 관한 에러 메시지를 받고 재실행해주는 기능도 중요해졌다. 이 때 가장 많이 사용되는 프레임웍이 Airflow이다. 크게 스케줄러, 웹서버, 워커 3가지 컴포넌트로 구성되어 있다. Airflow에서는 ETL을 DAG라고 부르며 웹 인터페이스를 통한 관리 기능을 제공한다.
ELT은 데이터를 데이터 웨어하우스에 원본 데이터를 로드하기 전에 필요한 데이터를 추출해서 추출된 데이터를 데이터 웨어하우스에 로드하고, 로드된 데이터를 원하는 형태로 변환하는 작업을 의미한다. 주기적으로 요약 데이터를 만들어 사용하는 것이 더 효율적이며, dbt를 사용한다. 데이터 분석가가 수행한다.
ETL이 데이터를 데이터 웨어하우스 외부에서 내부로 가져오는 프로세스라면, ELT는 데이터 웨어하우스 내부 데이터를 조작해서 새로운 데이터 (보통 요약 데이터)를 만드는 프로세스이다.
3. 데이터 웨어하우스
- 회사에 필요한 모든 데이터를 모아놓은 중앙 데이터베이스 (SQL 데이터베이스)
회사는 데이터의 크기에 맞게 어떤 데이터베이스를 사용할지 선택해야 한다. 처음에는 회사가 작고 데이터가 현저히 적다면 프로덕션 데이터베이스만으로도 충분할 수 있지만, 데이터의 크기가 커진다면 AWS Redshift, 구글 클라우드 BigQuery, Snowflake, 하둡과 스팍 등과 같은 데이터 웨어하우스를 이용해야 한다. 참고로 이 모든 것은 SQL을 지원하며, 중요한 것은 프로덕션용 데이터베이스와 별개의 데이터베이스여야 한다는 것이다.
참고로 데이터 플랫폼은 초기에 데이터 웨어하우스와 ETL로 구성되어 있다면, 데이터 양이 증가한 이후에는 Spark 같은 빅데이터 처리시스템과 데이터 레이크가 도입된다. 그리고 데이터 활용이 증대되면 ELT가 고도화되어 dbt 등의 Analytics engineering이 도입되고, MLOps 등 머신러닝 관련 효율성 증대를 위한 노력의 필요성이 커진다.
4. 데이터 레이크
보통 데이터 웨어하우스보다 몇 배는 더 크고 더 경제적인 스토리지로, 보존 기한이 없는 모든 데이터를 원래 형태대로 보존하는 스토리지에 가깝다. 구조화 데이터와 비구조화 데이터를 로그 파일 형태로 갖는다. 보통 클라우드 스토리지가 되는데, AWS의 S3가 대표적인 데이터 레이크라고 볼 수 있다.
데이터 레이크가 있는 환경에서 ETL과 ELT
- 데이터 레이크와 데이터 웨어하우스 바깥에서 안으로 데이터를 가져오는 것 : ETL (Airflow 이용)
- 데이터 레이크와 데이터 웨어하우스 안에 있는 데이터를 처리하는 것 : ELT (dbt 이용)
5. 데이터 스택 트렌드
실리콘밸리 회사에서 주로 사용하는 데이터 스택에 대해 조사했다.
- 클라우드 서비스는 AWS가 가장 많다.
- 빅데이터 시스템은 주로 Spark를 기반으로 하며, 다른 기술을 혼합해서 사용한다.
- 대시보드는 자체제작, Looker, Tableau, PowerBI 등 다양하다.
- 데이터 파이프라인 프레임워크는 Airflow가 압도적이며, 다른 기술도 혼합하여 사용하는 곳도 있다.
💡 배운 점
- 데이터 직군의 종류와 하는 일에 대해 개괄적으로 배웠다.
- ETL과 ELT의 개념과 차이에 대해 배웠다.
- 데이터 웨어하우스의 여러 서비스에 대해 알아보았다.
- 데이터 레이크에 대해 간략하게 배웠다.
- 데이터 스택 트렌드에 대해 살펴보았다.
📝 남아있는 의문과 개선점
- 여기에서 사용하는 스케줄링의 의미는 무엇인지?
- Avro, Parquet 등과 같은 데이터 포맷에 대하여 알아보기
- 초기에 회사가 작고 데이터가 적다면 사용하는 프로덕트 데이터베이스는 따로 생성해서 사용해야 하는가?
- 언제 프로덕트 데이터베이스에서 데이터 웨어하우스로 넘어와야 하는지 판단할 수 있는가?
☁️ 소감
데이터 엔지니어링 코스의 기초적이며 중요한 내용일 것 같은 데이터 웨어하우스, ETL/ELT 등등에 대해 배우기 시작했다. 그 전에도 여러 번의 언급이 있었는데 이제야 본격적으로 배우게 된다. 그래서인지 기대가 된다. 아직 첫 날이라서 어렵진 않았지만 슬슬 어려워질 것 같지만, 시간이 많이 소요될 것 같다는 걱정 외에는 문제 없을 것 같다.
강의자료가 따로 있어서 강의를 들으며 자료에 필기를 했고, 다 듣고 난 후에 블로그에 TIL을 작성하며 다시 한 번 정리하는 시간을 가졌다. 그리고 오늘 배운 내용에 대한 문제를 풀었고 간략한 숙제가 주어져서 이것들을 하게 된다면 또 한 번 정리될 것 같다.
데이터의 적고 많은 기준이 궁금해서 이 부분에 대해서는 질문을 남겼다. 아직 기술적인 질문이나 더 깊은 내용의 질문은 하지 못하지만 사소한 것이라도 일단 궁금한 것은 모조리 질문을 하자! 싶었다.