데이터 엔지니어링 스타터 키트 1주차 강의 정리

·2021년 8월 8일
0

이번주부터 시작된 "실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 with Python" 강의의 첫 세션 참여 후 내용을 돌아보고 정리한 글입니다.

1. 데이터팀의 목표

첫 강의의 주요내용은 데이터팀은 무슨 일을 하는 조직이며, 어떤 사람과 역할들로 구성되는지, 각각이 어떤 일들을 하고 그러한 데이터팀이 조직 내에선 어떻게 위치하게 되는지를 이상적이고 이론적인 것과 현실에서 자주 나오는 패턴들을 함께 설명해주셨다.

우선 데이터팀의 목표가 무엇이냐가 중요하다. 당연히 이건 곧 조직의 목표와 관련이 있다. 들어보면 당연한 얘기지만 굉장히 잊기 쉬운 얘기라서 목표에 대해 점검하는 것이 좋았다. 현실적이고 현업을 많이 겪으신 분이라 굉장히 얘기들이 다 생생했다.

이해한대로 간단히 정리하면 데이터팀은 회사(조직)의 의사결정을 위해 필요한 데이터를 수집, 가공, 분석, 그리고 그를 통한 예측을 제공하는 팀이다. (세부적인 것은 당연히 조직의 목표나 상황에 따라 달라진다.)

맥스는 데이터팀을 "신뢰할 수 있는 데이터를 기반으로 회사의 '부가가치'를 만드는 조직"이라고 정리했다.

2. 데이터팀의 구성

막연하게만 알고 있던 데이터와 관련한 업무가 실제로 어떤 과정으로 어떤 사람들의 협업으로 이루어지는지 구체적으로 이해할 수 있는 시간이었다.

데이터팀은 크게 세 가지 파트로 나눠지는데, 아래와 같다.

1) Data Engineer 데이터 엔지니어

(내가 이해한 게 맞다면)데이터 엔지니어는 회사에 필요한 최대한 많은 데이터들을 수집하여 DW(Data Warehouse)에 잘 정리되어 저장되도록 하는 사람이다.
이를 위해 필요한 데이터들이 자동으로 잘 들어와서 쌓이도록 data pipelines를 작성하고 관리하며, DW와 거기 저장되어있는 데이터들을 관리하고, 또 (필요한 경우)여기 저장된 데이터들을 데이터 분석가나 다른 부서에서 더 쉽게 찾거나 알아볼 수 있도록 제공하는 역할까지가 데이터 엔지니어의 업무영역인 것 같다. 백엔드 개발자(Backend engineer)와도 협업하거나 부딪칠 일도 많은데, 보통 실제 서비스가 제공되고 있는 프로덕션DB는 백엔드 개발자가 관리하고, 이 DB에서 데이터를 받아와야하기 때문에 겹치는 영역이 있다고 한다.
나도 생각해보면 전직장에서 웹개발자로 일하면서 (소소하긴 하지만)MySQL DB에 저장된 데이터를 마케팅팀이나 재무팀 등에서 원하는 자료로 만들어내서 제공하는 작업이 주요업무 중 하나였다. 작은 회사인 데다 데이터도 적고, 이런 개념도 별로 없었으므로 프로덕션DB에서 항상 작업했다. 그럼에도 실수로 오래 걸리는 쿼리를 날려서 사이트가 잠시 먹통이 된다거나 하는 일도 생겼었던 기억이 난다.

Data Warehouse?

Data Warehouse란 데이터분석에 필요한 모든 데이터를 저장하는 하나의 큰 DB인데, 이는 프로덕션DB와는 분리되어있는 DB라는 점이 중요하다. 프로덕션DB란 실제 서비스를 제공하는 DB를 일컫는 말로, 이 DB에 문제가 생기면 서비스에 문제가 생긴다. 데이터 분석을 위해서는 쌓여있는 데이터에 접근하여 작업해야 하는데, 이 분석작업 때문에 실제 서비스가 느려지거나 먹통이 된다면 매우 곤란한 일이다.
따라서 Data Warehouse란 프로덕션 DB와 분리되어있는 DB이며, 프로덕션 DB가 갖고 있는 모든 정보들을 복사해서 갖고 있고 또 그 외에 실제 서비스를 제공하는데는 필요하지 않지만 분석에 필요한 추가적인 데이터도 갖고 있는 DB 정도로 이해했다.

2) Data Analyst 데이터 분석가

데이터 분석가는 데이터엔지니어가 DW에 모아둔 데이터를 통해 주로 질문에 답변하는 사람이다. 마케팅이라든가 여러 부서에서 온갖 종류의 질문을 해오거나 데이터를 요청하면 DW의 데이터를 꺼내어 가공하고, 분석해서 질문에 답을 해주거나 요청받은 자료들을 만들어낼 수 있는 사람이다.
이를 위해서는 잔뜩 저장돼있는 데이터들 중에 어떤 데이터가 중요한지, 어떤 데이터들을 엮어서 어떤 "지표"를 만들 것인지 설정하는(지표를 정의한다) 등의 일이 필요하다. 예를 들어 우리는 흔히 매출, 조회수, 방문자수, 회원가입수 등의 지표를 갖고 있다. 다양한 채널에 광고를 했을 때 어느 채널의 광고가 가장 효과적인지를 무엇을 기준으로 판단할 것인가? 들이는 광고비에 비해 가장 효과가 큰 채널을 이용하는 것이 가장 큰 이득이란 것은 누구나 다 생각할 수 있지만, 데이터를 이용해 정말로 어느 채널이 가장 효과적인지 정확하게 분석해내는 것은 쉬운 일이 아닐 것이다.

3) Data Scientist 데이터 과학자

모델링을 통해 미래를 예측하고 그럼으로써 지표를 개선하는 사람이다. 머신러닝, 딥러닝 등의 기술을 주로 사용하게 되고, 쌓이고 분석된 데이터들을 가지고 가설과 예측 알고리즘을 통해 지표를 개선하기 위해 다양한 모델을 만들어 test를 해나가면서 실제로 더 나은 전략이 무엇인지 생산해내는 사람이라고 이해했다.
모델링의 대상은 마케팅, 마케팅 타겟 등이 될 수도 있고 최적화를 통해 동일한 일을 더 적은 비용으로 수행하게 만드는 일 등이 될 수도 있다.

3. 이상과 현실

앞서 나온 Data Warehouse나 pipelines 등을 크게 통틀어서 Data infra, 데이터 인프라라고 할 수 있는데, 스타트업들은 처음부터 데이터 인프라를 갖추고 시작하는 게 어렵다. 당연히 처음엔 데이터도 없는데다, 당장 생존이 더 시급한 문제이기 때문이다. 조금씩 궤도에 오르고 데이터를 가지고 뭔가를 하고싶어질 때가 온다. 그때부터는 데이터 인프라가 중요해진다.
그러나 많은 스타트업 (경영자)들이 데이터 인프라의 중요성을 처음엔 알 수가 없다. 대부분 모르기 때문에, 데이터 엔지니어가 아닌 데이터 분석가부터 먼저 채용을 한다. 그러나 데이터 분석가나 데이터 과학자들은 잘 정리되어 모여있는 데이터가 존재해야만 뭔가 힘을 쓸 수 있는 사람들인 것. 이런 데이터 인프라를 구축하고 관리하는 사람들이 데이터 엔지니어. 데이터 엔지니어없이 데이터 분석가부터 채용할 경우 상당히 많은 경우에 고생만 하다가 결국 퇴사하게 된다고 한다.
왜냐면 제대로된 DW가 구축되어있지 않은 상황에서 데이터 분석가는 결국 프로덕션DB에서 본인이 원하는 데이터를 찾아헤매야하고, 어느 데이터를 신뢰할 수 있는지도 알기 어려우며, 분석을 위해 DB에 쿼리 날리다가 프로덕션DB에 부하를 줘서 서비스에 영향이라도 가면 당장 백엔드 개발자들이나 회사측과 트러블부터 생기기 때문이라고.
이처럼 생생하고 흥미로우면서도 당장 도움이 될만한 이야기들이 많아서 듣는 내내 귀를 쫑긋 세웠다.

profile
백엔드 개발자. 공동의 목표를 함께 이해한 상태에서 솔직하게 소통하며 일하는 게 가장 즐겁고 효율적이라고 믿는 사람.

0개의 댓글