Hyesung Oh

데이터 엔지니어링의 개요 본문

Data Engineering

데이터 엔지니어링의 개요

혜성 Hyesung 2019. 12. 5. 23:07
반응형

* 패스트캠퍼스 데이터엔지니어링 강의 중 데이터엔지니어링의 개요 파트를 수강하고 정리한 글입니다

1. 데이터 엔지니어링의 필요성

1-1 문제해결을 위한 가설 검증의 단계

비즈니스는 문제를 해결하는 것

문제를 해결하기 위한 출발점은 클린한 분석환경이다.

문제해결 과정을 정리하면 다음과 같다

문제 - 분석 - 가설 - 검증 -최적화

가설은 데이터로 부터 세우는데 이 데이터를 확보하고 엔지니어링 하는 것이 비즈니스의 출발점이자 핵심이라 할 수 있다.

실례로 페이스북의 경우 유저 경험이 중요하므로 데이터 시스템 구축이 성공 열쇠

e-commerce 의 경우 물류,crm, 마케팅 채널 데이터  분석을 통해 전략을 수립한다. 

1-2 처음 부터 모든 것을 갖출 수는 없다

비즈니스의 스케일에 따라 집중해서 갖추어야 할 부분이 다르다.

처음 부터 모든 인력을 다 갖추고 시작할 순 없기에 성장 단계에 맞는 데이터 시스템 구축이 필요하다.

아래는 비즈니스 성장 단계와 데이터 활용 중요도에 따른 데이터 시스템 단계이다.

google analytic ->BI TOOL -> 3rd party data -> custom 환경, automation, data integration

결과적으로 데이터 시스템의 automation 과 조직내 데이터의 integration을 추구하는 것이 궁극적인 목표이다. 

2. 데이터 엔지니어링 시 고려사항

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

데이터 엔지니어링시 항상 염두에 두어야 하는 것이 있다.

바로 비즈니스 임팩트와 데이터 활용 비용이다.

비즈니스 임팩트와 데이터 활용 비용은 정비례하는 경우가 보통이다. 데이터 엔지니어는 비즈니스 임팩트가 크지만 데이터 활용 비용이 낮은 데이터를 찾고 핸들링해야 한다는 것을 항상 생각해야 한다.

 

2-2 데이터 거버넌스

데이터 거버넌스 : 데이터를 총체적으로 관리하고 처리하기 위한 규율, 정책

- 원칙: 데이터를 유지, 관리하기 위한 가이드. 보안, 품질, 변경관리

- 조직: 데이터를 관리할 조직의 역할과 책임. 데이터 관리자, 데이터 아키텍처

- 프로세스: 데이터 관리를 위한 시스템. 작업 절차, 모니터 및 측정

 

2-3. 유연하고 변화 가능한 시스템 구축

데이터의 형식이 늘 변할 수 있듯 데이터 시스템의 툴과 솔루션도 확장 가능하고 변화할 수 있는 데이터 시스템을 구축하는 것이 중요하다.

2-4. real time handling 이 가능한 시스템 구축

밀리 세컨드 단위 스트리밍 데이터에서 부터, 하루에 한번 업데이트 되는 데이터까지 모든 스피드의 데이터를 핸들링 해야한다.

real time streaming data

cronjob

severless triggered data processing

2-5. 보안성

2-6. 셀프 서비스 환경 구축

데이터 엔지니어 한명만 접속 가능한 시스템은 확장성이 없는 데이터 분석 환경이다

- BI TOOLS

- Query system for analysis

- front-end data applications

 

3. 데이터 시스템의 옵션들

3-1 API

기업이 사용하는 crm, erp, 마케팅 플랫폼 및 소프트웨어는 API 를 통해 데이터를 주고 받을 수 있도록 환경을 구축하여

생태계를 생성하였다. 

EX) spotify, facebook ads, google ads, cafe24, salesforce

3-2 RDBMS

데이터의 관계도를 기반으로 한 디지털 베이스 저장소

대부분의 서비스들이 쓰고 있는 관계형 데이터 베이스

SQL을 이용하여 데이터 추출, 삽입, 삭제, 업데이트

3-3 NoSQL

RDBMS 가 SCHEMA 라는 구조, 형식을 가지고 있다면 DynamoDB와 같은 NoSQL은 schema 가 없어 형식의 굴레를 벗어난 다양한 데이터를 저장할 수 있다.

연관 검색어, 연관 아티스트, 연관 노래 등 추천 시스템에 퍼포먼스를 위해 사용한다.

highly scalable 하고 less expensive to maintain 하다.

3-3 hadoop/spark/presto

distributed storage system 으로서 mapreduce 라는 방식을 통해 데이터를 병렬 처리한다.

그 중 spark 가 요즘 각광받고 있다

이유는 크게 3가지

- hadoop 의 진화된 버전. 좀더 real time 데이터를 프로세싱하는데 최적화 되었다.

- java/python/scala api 제공

- sql query 환경을 서포트하여 RDBMS 에 익숙한 분석가들에 친숙

 

3-4 서버리스 프레임워크

서버리스 프레임워크는 최근 각광받고 있는 데이터 처리 프레임워크로서 장점이 크게3가지가 있다.

- triggered by event -> 항상 세션을 돌리고 관리할 필요가 없음.

- 따라서 쓰는 만큼 돈을 지불

- 함수형 프로그래밍

- 3rd party 앱이나 API를 이용하여 데이터를 수집, 정제하는데 용이하다. 

 

4. 데이터 파이프라인

4-1데이터 파이프 라인이란?

: API를 이용하여 데이터를 이동시키는 일련의 과정들의 집합

4-2 데이터 파이프 라인의 필요성

- 여러 소스들로 부터 데이터를 수집, 생성해야하는 경우

- 데이터 사일로: 부서안에서 데이터가 고립

- 실시간, 큰 규모의 비즈니스로 갈 수록 필요

- 클라우 환경으로 데이터 저장 <- 보안성, 생산성, 유지 보수성 뛰어나짐

4-3 데이터 파이프 라인 예시

ec2, lambda -> s3(데이터 백업) -> erm or red shift -> RDBMS or amazon Athena -> front-end -> data analysis and visualization

4-4 데이터 파이프 라인 구축시 유의할 사항

- scalability

- stability

- security

5. 데이터 프로세싱 자동화

사람이 매번 데이터 파이프 라인을 작동하는 것이 아니라 크론탭, 머신 스케쥴링으로 자동화

5-1 자동화시 고려사항

- 데이터 프로세싱 스텝

- 트리거/스케쥴링 

- 에러 핸들링 <- aws cloud watch, logging

6. ad hoc 과 automated

ad hoc : 간헐적 데이터 분석, 다양한 종류의 데이터 조회 등 서비스를 지속적으로 빠르게 변화시키기 위해 필수적인 요소

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

6-1 데이터 수집 프로세스

chat bot message -> 서버리스 lambda 트리거 -> API hit -> dynamoDB, RDB, S3

6-2 데이터 분석 프로세스

S3 -> Query Layer(프레스토기반), Compute Layer(SPARK, 유사도 계산) -> 분석

6-3 서비스 관련 데이터 프로세스

S3, SPARK(유사도 계산) -> DynamoDB -> Chatbot reply 

반응형
Comments