본문 바로가기
🪴 Writing/InterViews

쏘카 데이터엔지니어가 하는 일- 1.데이터분석환경구축

by 카프리썬 2021. 5. 21.
728x90

아래의 글은 쏘카 Tech Blog에서 발췌한 글의 일부입니다.  원본글은 아래에서 보실 수 있습니다

https://tech.socarcorp.kr/data/2021/03/24/what-socar-data-engineering-team-does.html

 

쏘카 데이터 그룹 - 데이터 엔지니어링 팀이 하는 일

안녕하세요. 데이터 엔지니어링 팀에서 이제 막 신입 1년차를 마친 하디입니다. 요즘 취업 준비하시는 분들에게 ‘데이터 엔지니어가 되려면 어떤 걸 준비해야 하나요?’라는 질문을 종종 받습

tech.socarcorp.kr


이전부터 꼭 제대로 읽어보고 이해하면서 정리해보고 싶었던 내용 중 하나였는데 오늘 드디어!

특히 아래의 글은 데이터엔지니어링팀에서 막 신입1년차가 된 분이 써주신 글인지라 더더욱 유익했다.

언젠가 데이터팀에서 데이터엔지니어로 일을 할 일을 꿈꾸며..


쏘카의 데이터그룹 

  • 데이터분석팀 : 데이터분석/머신러닝/딥러닝/최적화모델링 
  • 비즈니스데이터팀 : 사업분야에서 최적의 손익을 이끌어낼 수 있는 솔루션 제시
  • 데이터엔지니어링팀 : 다양한팀들이 손쉽게 데이터를 다루고 분석할 수 있는 기반마련 
    또는 데이터분석팀들이 만든 모델 혹은 비즈니스 로직을 실제로 적용할 수 있는 백엔드 서비스개발 및 환경구축

데이터 엔지니어링 팀의 기본적인 임무는 다른 팀을 위한 “지원” 입니다. 동시에 이 지원을 어떻게 하면 효율적으로 처리시킬 수 있을지에 대해서 고민하고 해결합니다. 여기에는 데이터 적재의 자동화, 속도와 확장 가능성을 고려한 운영, 그리고 개발과 인프라에 대한 것들이 포함되어 있습니다.

 

사실 나는 이렇게 데이터팀을 따로 꾸리고 있는 서비스회사에 가고싶다.
그래서 그런지 이렇게 데이터그룹이 전체적으로 어떤식으로 돌아가는지 큰 그림을 알 수 있어서 유익했다.

그러니까, 내가 이해한 바로는 비즈니스데이터팀이 어떤 데이터를 가지고 어떤 사업이나 솔루션을 제안하면!
데이터분석팀이 그 데이터를 가지고 어떻게 할 수 있을지 실질적으로 데이터분석으로 적용을 한다.
이때 이 두 팀이 데이터로 이것저것 할 수 있게 지원을 해주는 역할이 데이터엔지니어링 팀이라는 것이다.

그래서 데이터엔지니어링팀은
'어떻게 하면 데이터분석팀이나 비즈니스데이터팀의 요청을 잘 해결 해줄 수 있을까?'라는 해답을 찾을 것 같다. 

 

데이터엔지니어링팀 업무1 . 데이터분석환경구축

어떻게 하면 자유로운 통합 데이터 분석환경을 만들 수 있을까?

보통 it서비스 회사들은 서비스를 먼저 배포,운영 한 후에 사업적 고도화를 위해 데이터분석을 시도한다.

이때 별도의 분석환경없이 서비스의 데이터저장소에 접근해서 데이터를 분석한다.

 

별도의 분석환경이 없다면?

하지만, 이럴경우 아래와 같은 이슈가 생길 수 있다. 

  • 실시간 유저에게 서비스되고 있는 데이터저장소에 접근한다고? 
    그러다가 데이터를 변경하면 어쩌려구? db에 부하가 생기면 어쩌려구? 운영서비스 괜찮겠어?
  • 분석하려고 하는 데이터들이 다 퍼져있는데 어떻게 통합적으로 분석을 하지?
    예를 들어 서비스A는 mysql을 사용하고, 서비스b는 mongoDB를 사용하고 있다면
    A의 데이터와 B의 데이터를 하나의 쿼리로 조회할 수 있을까?
    대부분 개발할 당시 이런 통합데이터저장소까지 고려하지 않는 경우가 많아 데이터를 합치기에 어렵다.

분석환경, 데이터를 한곳에 모아라!

이런 이슈를 해결하기 아래와 같은 필요성이 생긴다.

  • 서비스 운영DB가 아닌 별도의 저장소를 분석환경으로 만든다. 
  • 이곳저곳에 있는 데이터를 한군데 모아야한다. 아마 그 '한군데'라는 곳은 별도의 분석환경일듯.

그래서 쏘카의 데이터엔지니어링팀에선 

'별도의 저장소'를 Google Cloud Platform의 BigQuery

'데이터를 한군데 모으는 툴'로 Apache Airflow를 쓰고 있다고 한다.

 

BigQuery를 선택한 이유는 ? 

대용량 데이터분석 목적으로 개발된 클라우드서비스로 

당장사용하기 쉽고, 인프라운영에 크게 신경쓸 것 없이 비용도 저렴하고 쿼리속도도 뛰어나서 사용했다고 한다.

Airflow를 선택한 이유는?

파이썬 기반의 배치성 파이프라인으로

팀원들 대부분이 익숙한 파이썬으로 파이프라인을 쉽게 만들 수 있어서 사용했다고 한다.

심지어 오픈소스로 무료로 사용가능하고, 커스터마이징도 가능하기 때문에 사용했다고 한다.

 

BigQuery와 Airflow는 데이터엔지니어링 공고를 많이 찾아보면서 익히 들었던 툴이다.
하지만 실제로 다뤄본적 없으니 필요성(?)을 정확하게 이해하진 못했었다. 
그런데 이렇게 데이터분석환경이 별도로 없을떄 생기는 이슈를 기반으로 왜 필요한지까지 흐름을 알고 나니
사용해보고 싶고 만져보고 싶어진다. 더 흥미진진해진다.  

 

데이터파이프라인, 흩어진 데이터를 가져와라! 

결국 쏘카의 여러 서비스에서 통합 데이터 저장소에 저장할 데이터를 가져오게 된다. 

여기에서 '파이프라인'이 나온다.

데이터소스에 따라 어떻게 효율적으로 데이터를 가지고 올지 고민해야하기 때문이다. 

예를 들면, 아래와 같은 효율성측면을 고민해야 한다고 한다.

  • 데이터소스가 RDB형태라면? NoSQL형태라면? 파일이라면? 어떻게 가지고 오는게 가장 최적화된 방법일까? 
  • 한번에 데이터를 가져오는데 양이 너무 많다면 처리속도도나 메모리에 문제가 없을까? 있다면 어떻게 해결하지?
  • 데이터소스가 서비스DB인 경우, 부하를 주지 않으면서 빠르게 데이터를 가져올려면 어떻게 해야하나?
  • 서비스DB에서 UPDATE,DELETE가 수행되도 데이터의 일관성을 유지하려면 어떻게 해야하나?
  • 파이프라인을 재실행해도 데이터를 멱등하게 수집하려면 어떻게 해야하나?

데이터파이프라인을 만들기 위해  Apache Airflow의 DAG코드를 작성한다.

Airflow는 데이터파이프라인 작성을 위해 여러클래스와 함수를 제공한다. 

이 클래스와 함수를 적절히 이용하거나 직접 필요한 모듈을 작성해서 파이프라인을 구성한다. 

 

데이터마트, 데이터를 더 쉽게 조회해라! 

데이터를 한군데로 모으는 것을 넘어서,

사내에서 자주사용되는 데이터를 별도로 정제 및 집계하여 일종의 '데이터마트'를 만들기도 한다. 

데이터마트가 있기 전에는 모든 테이블에서 직접 조회에서 쿼리를 짜야했다. 

전사적으로 구성원들이 자주 조회하는 결과테이블을 미리 만들어두고, 일종의 데이터마트(SOCAR datastore)를 만든 것. 

이들은 SODA Store라고 부른다. 

그래서 아예 직접 테이블에서 조회하는게 아니라 SODA Store에서 조회하니까 더 빠르게 조회할 수 있고,.

모든 테이블을 직접 일일이 하나하나 살펴보지 않고, 데이터스토어에서 필요한 데이터를 우선적으로 찾으면 된다.

 

서비스의 다양한 데이터를 한 곳으로 모아두는 작업을 담당한다.
또한 더 쉽게 데이터를 조회할 수 있도록 데이터마트를 만든다.
쉽게 데이터를 조회하고, 분석할 수 있는 환경을 지속해서 만드는 것이 데이터엔지니어링팀의 미션
반응형

$(document).ready(function() { var $toc = $("#toc"); $toc.toc({content: ".tt_article_useless_p_margin", headings: "h2,h3,h4"}); });