data engineering basic

데이터 분석가와 엔지니어링 차이점

  • 데이터 분석가는 갖춰진 데이터 시스템과 데이터를 통해서 다양한 분석을 하는 업무이며, 엔지니어링은 그와 다르게 비즈니스에 맞는 데이터를 추출하고 그에 따라 분석하는 환경을 만들어 나가는 업무라고 생각할 수 있을 것이다. 특히, 데이터 전처리나 추출, 정제를 담당하는 업무이다.

데이터 엔지니어링이 중요한 이유

  • 비즈니스 모델과 가장 연관이 깊은 업무이다. 왜냐하면 회사의 비즈니스 모델에 맞는 데이터를 가져와야하고 가져온 데이터를 통해 어떤 환경을 갖출 것인지, 그에따라 데이터 분석가들이 전략을 짤 때 기반을 갖출 수 있도록 해주려면 어떻게 해야할지가 중요하기 때문이다.그래서 엔지니어링을 뽑을 경우 해당 비즈니스의 Knowledge가 어느 정도 있는 것이 좋을 거라고 생각이들고 실제로 그렇게 면접도 보는(?)것 같다.

페이스북

이커머스

  • 페이스북은 User와 관련 세밀한 데이터가 중요했지만 e-commerce는 User 관련 데이터 보다는 마케팅, CRM, 물류 데이터가 상대적으로 더 중요할 수도 있다.

데이터 아키텍쳐시 고려사항

1.비즈니스 모델 상 가장 중요한 데이터는 무엇인가?

  • 발생되는 데이터 양 대비 초점을 맞춰야 하는 데이터는 어떤 것인지 즉, 비용 대비 비즈니스 임팩트가 가장 높으 데이터를 확보하는 것이 제일 중요하다.

2.Data Governance

데이터 거버넌스

3.유연하고 변화 가능한 환경 구축

  • 특정 기술 및 솔루션에 얽매여져 있지 않고 새로운 테크를 빠르게 적용할 수 있는 아키텍쳐를 만드는 것
    • 생성되는 데이터의 형식이 변화할 수 있는 것처럼 그에 맞는 Tool들과 solution들도 빠르게 변화할 수 있는 시스템을 구축하는 것

4. Real Time(실시간) 데이터 핸들링이 가능한 시스템

  • 밀리세컨 단위의 스트리밍 데이터가 됐건 하루에 한번 업데이트 되는 데이터든 데이터 아키텍쳐는 모든 스피드의 데이터를 핸들링 해야한다.

    • Real Time Streaming Data Processing
    • Cronjob
    • Serverless Triggered Data Processing

5. 시큐리티

  • 내부와 외부 모든 곳에서부터 발생할 수 있는 위험요소들을 파악하여 어떻게 데이터를 안전하게 관리할 수 있는지 아키텍쳐 안에 포함

6. 셀프 서비스 환경 구축

  • 데이터 엔지니어 한명만 엑세스가 가능한 데이터 시스템은 확장성이 없는 데이터 분석 환경이다. 이런 환경에서는 예를 들어, 데이터 분석가들이라던지, 데이터 사이언티스트들, 비즈니스팀들 등 다른 사람들도 BI Tool, Query System for Analysis, Front-end application등 이 가능하게끔 확장성이 있도록 환경을 구축하는 것이 중요하다.

데이터 시스템의 옵션들

API시대

  • 현재 마케팅, CRM, ERP등 다양한 플랫폼 및 소프트웨어들은 API라는 송신방법을 통해 데이터를 주고 받을 수 있는 환경을 구축하여 생태계를 생성되어있다. 예를들면, facebook, google, Spotify같은 서비스들이 회사자체에 DB시스템을 구축하고 있는데, 이런 데이터들을 API를 통해 바로 DB에 엑세스해서 서비스를 제공할 수도 있고, 아니면 DB를 새로 생성해 거기에 받아서 저장해놓은 후 정제 및 분석 환경을 구축하여 다양한 서비스를 제공할 수 있다. 이런 환경에서 현재 많은 서비스들이 있으며, 새로운 서비스를 개발하는 입장에서는 필요한 여러가지 서비스들이 있는데, 일일이 다 만들수 없으므로 만들어져 있는 것들, 써드 파티라고 하는 서비스들을 이용하는 것이다. 이러한 서비스를 이용하는 데이터를 가지고도 또다른 분석환경을 구축해야 한다. ex) CaFe24(호스팅업체), facebook Ads,Google Ads(마케팅분야)

Relational Databases

  • 데이터의 관계도를 기반으로 한 디지털 데이터베이스로 데이터의 저장을 목적으로 생겨났다.

  • SQL이라고 하는 스탠다드 방식을 통해 자료를 열람하고 유지한다.

  • 현재 대부분의 서비스들이 가장 많이 쓰고 있는 데이터 시스템.

NoSQL Databases

  • 관계형 데이터 베이스에서는 Schema 형식에 맞춰 데이터를 추출 및 저장했다면, 이제는 너무나 다양한 형식이 없는 데이터 부터 틀에 맞출 수 없는 데이터들이 생성되어 NoSQL이 대두되었다. 예를 들면 메신저에서 많이 사용된다.

  • Not Only NoSQL

  • Unstructured, Schema Less Databases

  • Scale horizontally

  • Highly scalable

Haddop / Spark / Presto 등 빅데이터 처리

Distribtion Storage System / MapReduce를 통한 병렬 처리 Spark
  • Hadoop의 진화된 버전으로 빅데이터 분석 환경에서 Real Time 데이터를 프로세싱하기에 더 최적

  • java, Python, Scala를 통한 API를 제공하여 Application 생성

  • SQL Query 환경을 서포트하여 분석가들에세 더 각광

서버리스 프레임워크

  • Triggered by http requests, database events, queuing services

    • DB가 됐건, 어떤 server가 됐건 어떠한 하나의 가상 클라우드상에서 server가 필요하게 되는데, 서버를 생성하고 유지및 관리할 때 데이터가 발생하는 event가 발생할 때 Trigger가 되는 부분들을 처리하기 위해 사용한다.
  • Pay as you User

    • 항상 Server를 띄워놓고 있지 않기 때문에 쓰는 만큼만 비용을 지불하기에 좋다.
  • Form of functions

    • 하나의 Function이라고 생각하는 것이 좋다. 예를 들어서, 서버리스 프레임 워크를 통해서 어떠한 event가 들어왔을 경우, 어떤 것으로 Trigger가 됐을때, 어떠한 Algorithm을 실행시키는 function이라고 생각하면 된다.
  • 3rd Party 앱들 및 다양한 API를 통해 데이터를 수집 정제하는데 유용

데이터 파이프라인

데이터 파이프라인

  • 데이터를 한 장소에서 다른 장소로 옮기는 것을 의미

ex) API -> DB, DB -> DB, DB -> BI Tool

데이터 파이프라인이 필요한 경우

  • 1) 다양한 데이터 소스들로부터 많은 데이터를 생성하고 저장하는 서비스를 구축할 경우 필요하다!

  • 2) 데이터 사일로: 마케팅, 어카운팅, 세일즈, 오퍼레이션 등 각 영역의 데이터가 서로 고립되어 있는 경우 (ex)대기업의 각 부서를 생각해보면 이해하기 쉬울 것이다.즉, 각각의 팀들이 따로 존재하여 공유가 어려운경우)

  • 3) 실시간 혹은 높은 수준의 데이터 분석이 필요한 비즈니스 모델 ex)facebook등

  • 4) 클라우드 환경으로 데이터 저장

데이터 파이프라인 예시

데이터 파이프라인 구축시 고려사항

  • Scalability : 데이터가 기하급수적으로 늘어났을때도 작동하는가?

  • Stability : 에러, 데이터플로우 등 다양한 모니터링 관리

  • Security : 데이터 이동간 보안에 대한 리스크는 무엇인가?

데이터 프로세싱 자동화란?

  • 데이터 프로세싱 자동화란 필요한 데이터를 추출, 수집, 정제하는 프로세싱을 최소한의 사람 인풋으로 머신이 운영하는 것을 의미

ex) Spotify 데이터를 하루에 한번 API를 통해서 클라우드 데이터베이스로 가져온다고 했을 때 매번 사람이 데이터 파이프라인을 작동하는 것이 아니라 Crontab 등 머신 스케쥴링을 통해 자동화

자동화를 위해 고려할 사항

  • error가 뜨는 것이든, 추출을 했으면 분석을 한다던지 사람이 하면 순서나 여러가지 고랴를 할 수 있지만, 자동으로 헀을경우는 머신이 모르기 떄문에 다음과 같은 사항들을 고려해야한다.

  • 1) 데이터 프로세싱 스텝들
    데이터 프로세싱 스텝들

    • Spotify API에서 어떠한 데이터를 가져와야되고, 그 중에서 어떠한 것들은 걸러내고, 어떤 알고리즘을 돌리고, 그 후에 시각화를 한겠다는 말 그대로 프로세싱 스텝을 의미.
  • 2) 에러 핸들링 및 모니터링

    • 에러가 생성이 됐을때, 어떻게 반응을 하게끔할 것인지, 에러나 퍼포먼스 또는 데이터 추출이 얼마나 걸렸는지 같은 사항을 모니터링 할수 있게끔 구축해야한다.

에러 핸들링 및 모니터링

  • exampl.log라는 파일에 다양한 로그들을 저장하는데, 그 생성된 로그들도 CloudWatch에도 생성되어 모니터링이 가능하다.
  • 3) Trigger/ Scheduling
    트리거&스케줄링
    • 다음 단계를 실행하기 위해 어떻게 Trigger가 되어서 실행을 시킬지, 하루에 한번 돌릴지, 아니면 한달에 한번 돌릴지 등에 관한 스케줄을 고려해야한다.

넷플릭스 데이터 시스템 예시

우버 데이터 아키텍쳐

Spotify 프로젝트 데이터 아키텍쳐

Ad hoc VS Automated

  • Ad hoc 분석 환경 구축은 서비스를 지속적으로 빠르게 변화시키기 위해 필수적인 요소

    • Ad hoc 분석은 쉽게 말해 분석을 하고 싶을 때만 하는 것이다. 이런 Ad hoc 분석이 필수적인 이유는 구축한 분석환경을 통해서 다양한 사람들이 분석을 할 수 있게끔해야 하기 때문이다.
  • 이니셜 데이터 삽입, 데이터 Backfill 등을 위해 Ad hoc 데이터 프로세싱 시스템 구축 필요

  • Automated : 이벤트, 스케쥴 등 트리거를 통해 자동화 시스템 구축

아티스트 관련 데이터 수집 프로세스

데이터 분석 환경 구축

서비스 관련 데이터 프로세스