Big data

6 minute read

데이터 팀의 역할

데이터 팀의 미션

신뢰할 수 있는 데이터를 바탕으로 부가가치 생성

데이터 팀의 목표 1

  • 고품질의 데이터를 제공하여 정책 결정에 사용
  • 결정과학 (Decision Science) 이라고 부르기도 함
    • 데이터 참고 결정 (data informed decisions)을 가능하게 함
      • 내가 길을 주도하고 데이터는 참고만 함
    • 데이터 기반 결정 (data driven decisions)
      • 데이터가 보여주는 길로 감

데이터 팀의 목표 2

  • 고품질 데이터를 필요할 떄 제공하여 사용자의 서비스 경험 개선
    • 머신 러닝과 같은 데이터 기반 알고리즘을 통해 개선
      • 개인화를 바탕으로한 추천과 검색 기능 제공
      • 하지만 사람의 개입/도움이 반드시 필요 (human-in-the-loop)

데이터 팀의 발전 - 1. 데이터 인프라 구축

  • 데이터 인프라: Data Warehouse와 ETL
    • Data warehouse: 회사에 필요한 모든 데이터들을 저장하는 중앙 데이터 베이스
    • ETL(Extract, Transform, Load): 소스에 존재하는 데이터들을 데이터 웨어하우스로 복사해오는 코드를 지칭. 보통 파이썬으로 작성
  • 데이터 인프라의 구축은 데이터 엔지니어가 수행

데이터 웨어하우스란

  • 회사에 필요한 모든 데이터를 모아놓은 중앙데이터베이스 (SQL)
    • 데이터의 크기에 맞게 어떤 데이터베이스를 사용할 지 선택
    • 크기가 커진다면 AWS의 Redshift, GC의 BigQuery, Snowflake나 오픈소스 기반의 하둡/스팍을 사용하는 것을 추천: 이 모두 SQL을 지원
  • 중요포인트는 프로덕션용 데이터베이스와 별개의 데이터베이스라는 점
  • 데이터 웨어하우스 구축은 진정한 데이터 조직이 되는 첫번째 스텝

ETL 이란

  • 다른 곳에 존재하는 데이터를 가져다 데이터 웨어하우스에 로드하는 작업
    • Extract: 외부 데이터 소스에서 데이터를 추출
    • Transform: 데이터의 포맷을 원하는 형태로 변환
    • Load: 변환된 데이터를 최종적으로 데이터 웨어하우스로 적재 (table 형태로)
  • 이는 코딩을 필요로 하며, 가장 많이 쓰이는 framework은 Airflow
    • Airflow는 오픈소스 프로젝트로 파이썬 3 기반
      • 에어비앤비, 우버, 리프트, 쿠팡 등에서 사용
    • AWS와 GC에서도 지원
    • 흔한 데이터 소스의 경우 SaaS 사용가능
      • FiveTran, Stitch Data, …

데이터 팀의 발전 - 2. 데이터 분석 수행

  • 데이터 분석이란
    • 회사와 팀별 중요 지표(metrics) 정의하고 대시보드 형태로 시각화
    • 이외에도 데이터와 관련한 다양한 분석/리포팅 업무 수행
      • 중요 지표의 예: 매출액, 월간/주간 액티브 사용자수, …
    • 이는 데이터 분석가 (Data Analyst)가 맡는 일임

시각화 대시보드란

  • 보통 중요한 지표를 시간의 흐름과 함께 보여주는 것이 일반적
    • 지표의 경우 3A(Accessible, Actionable, Auditable)가 중요
      • Accessible: 쉬운 접근성
      • Actionable: 해야할 일을 분명하게 표현
      • Auditable: 감사할 방법이 있어야함(수식형태로)
  • 가장 널리 사용되는 대시보드:
    • 구글 클라우드의 Looker
    • 세일즈포스의 Tableau
    • MS의 Power BI
    • 오픈소스 아파치 Superset

데이터 팀의 발전 - 3. 머신러닝/인공지능 적용

데이터 팀의 구성원

데이터 팀에는 누가 있는가

  • 데이터 엔지니어
    • 데이터 인프라 구축(DW, ETL)
  • 데이터 분석가
    • 데이터 웨어하우스의 데이터를 기반으로 지표를 만들고 시각화(대시보드)
    • 내부 직원들의 데이터 관련 질문 응답
  • 데이터 과학자
    • 과거 데이터를 기반으로 미래를 예측하는 머신러닝 모델을 만들어 고객들의 서비스 경험을 개선(개인화 혹은 자동화 혹은 최적화)
  • 작은 회사에서는 한 사람이 몇개의 역할을 동시에 수행하기도 함

데이터 엔지니어의 역할

  • 기본적으로 소프트웨어 엔지니어
    • 파이썬이 대세, 자바 혹은 스칼라 같은 언어도 아는 것이 좋음
  • 데이터 웨어하우스 구축
    • 데이터 웨어하우스를 만들고 이를 관리. 클라우드로 가는 것이 추세
    • 관련해서 중요한 작업중의 하나는 ETL 코드를 작성하고 주기적으로 실행해 주는 것
      • ETL 스케줄러 혹은 framework이 필요(Airflow가 대세)
  • 데이터 분석가와 과학자 지원
    • 데이터 분석가, 데이터 과학자들과 협업을 통해 필요한 툴이나 데이터를 제공해주는 것이 데이터 엔지니어의 중요한 역할 중 하나.

데이터 분석가의 역할

  • 비지니스 인텔리전스를 책임짐
    • 중요 지표를 정의하고 이를 대시보드 형태로 시각화
      • 대시보드로는 Tableau와 Looker등의 툴이 가장 흔히 사용
      • 오픈소스로는 Superset
    • 이런 일을 수행하려면 비지니스 도메인에 대한 깊은 지식이 필요
  • 회사 내 다른 팀들의 데이터 관련 질문 대답
    • 임원들이나 팀 리드들이 데이터 기반 결정을 내릴 수 있도록 도와줌
    • 질문들이 굉장히 많고 반복적이기에 어떻게 셀프서비스로 만들 수 있느냐가 관건
  • 필요한 스킬셋
    • SQL, 통계적 지식
    • 비지니스 도메인에 관한 깊은 지식
    • 보통 코딩을 하지는 않음
  • 딜레마
    • 보통 많은 수의 긴급한 데이터 관련 질문들에 시달림
    • 많은 경우 현업팀에 소속도기도 함
      • 소속감이 불분명하고 내 고과기준이 불명확해짐
    • 데이터 분석가의 경우 조직구조가 더 중요함

데이터 과학자의 역할

  • 머신러닝 형태로 사용자들의 경험 개선
    • 문제에 맞춰 가설을 세우고 데이터를 수집한 후에 예측 모델을 만들고 이를 테스트
      • 장시간이 필요하지만 이를 짧은 사이클로 단순하게 시작해서 고도화하는 것이 좋음
    • 테스트는 가능하면 A/B 테스트를 수행하는 것이 더 좋음
  • 데이터 과학자에게 필요한 스킬셋
    • 머신러닝/인공지능에 대한 깊은 지식과 경험
    • 코딩능력
    • 통계지식, 수학지식(통계지식이 더 중요)
    • 끈기와 열정, 박사 학위가 도움 되는 이유중의 하나.
  • 훌륭한 데이터 과학자란
    • 열정과 끈기
    • 다양한 경험
    • 코딩능력
    • 현실적인 접근방법
      • 애자일 기반의 모델링(한큐에 좋은 모델을 만들기보다는)
      • 딥러닝이 모든 문제의 해답은 아님
    • 과학적인 접근방법
      • 지표기반 접근
      • 내가 만드는 모델이 목표는 무엇이고 그걸 어떻게 측정할 것인가
  • 제일 중요한 것은 모델링을 위한 데이터의 존재 여부

머신러닝 모델링 사이클

  • 가설
  • 데이터 수집
  • 분석
  • 모델 개발
  • 모델 론치
  • 테스트 시작

폭포수 개발방법론 vs. 애자일 개발방법론

짧게 짧게 사이클을 돌면서

A/B 테스트란

  • 온라인 서비스에서 새 기능의 임팩트를 객관적으로 측정하는 방법
    • 의료쪽에서 무작위 대조 시험(Randomized Controlled Trial)
  • 새로운 기능을 론치함으로 생기는 위험부담을 줄이는 방법
    • 100%의 사용자에게 론치하는 것이 아니라 작게 시작하고 관찰 후 결정
    • 실제 예제: 추천을 기계학습기반으로 바꾼 경우
      • 먼저 5%의 사용자에게만 론치하고 나머지 95%의 사용자와 매출액과 같은 중요 지표를 가지고 비교
      • 5% 대상으로 별문제 없으면 10% 20% 이런식으로 점진적으로 키우고 최종적으로 100%로 론치
        • 5% 대상의 경우 별 효과가 없으면 그 이유에 대한 분석
  • 보통 사용자들을 2개의 그룹으로 나누고 시간을 두고 관련 지표를 비교
    • 한 그룹은 기존 기능에 그대로 노출(control 그룹)
    • 다른 그룹은 새로운 기능에 노출(test 그룹)
  • 가설과 영향받는 지표를 미리 정하고 시작하는 것이 일반적
    • 지표의 경우 성공/실패 기준까지 생각해보는 것이 필요

데이터 팀의 조직구조

중앙집중 구조

  • 모든 데이터 팀원들이 하나의 팀으로 존재
    • 일의 우선순위는 중앙 데이터 팀이 최종결정
    • 데이터 팀원들간의 지식과 경험의 공유가 쉬워지고 커리어 경로가 더 잘 보임
    • 하지만 현업부서들의 만족도는 상대적으로 떨어짐

분산 구조

  • 데이터 팀이 현업 부서별로 존재
    • 일의 우선 순위는 각 팀별로 결정
    • 데이터 일을 하는 사람들간의 지식/경험의 공유가 힘들고 데이터 인프라나 데이터의 공유가 힘들어짐
    • 현업부서들의 만족도는 처음에는 좋지만 많은 수의 데이터 팀원들이 회사를 그만두게 됨

하이브리드 모델

  • 가장 이상적인 조직구조
  • 데이터 팀원들은 일부는 중앙에서 인프라적인 일을 수행하고 일부는 현업팀으로 파견식으로 일하되 주기적으로 일을 변경
  • 데이터팀 안에서 커리어 경로가 만들어짐

모델 개발시 고려할 점

마찰지 생기는 지점 - 개발된 모델의 이양 관련

  • 많은 수의 데이터 과학자들은 R을 비롯한 다양한 툴로 모델 개발
  • 하지만 실제 프로덕션 환경은 다양한 모델들을 지원하지 못함
    • 개발/검증된 모델의 프로덕션 호나경 론치시 시간이 걸리고 오류 가능성이 존재
    • 심한 경우 모델관련 개발을 다시 해야함(피쳐 계산과 모델 실행 관련)

모델 개발시 꼭 기억할 포인트

  • 누군가 모델 개발부터 최종 론치까지 책임질 사람이 필요
    • 모델 개발은 시작일 뿐이고 성공적인 프로덕션 론치가 최종적인 목표
    • 이 일에 참여하는 사람들이 같이 크레딧을 받아야 협업이 더 쉬워짐
      • 최종 론치하는 엔지니어들과 소통하는 것이 중요
  • 모델 개발 초기부터 개발/론치 과정을 구체화하고 소통
    • 모델 개발시 모델을 어떻게 검증할 것인지
    • 모델을 어떤 형태로 엔지니어들에게 넘길 것인지
      • 피쳐 계산을 어떻게 하는지, 모델 자체는 어떤 포맷인지
    • 모델을 프로덕션에서 A/B 테스트할 것인지
      • 한다면 최종 성공판단 지표가 무엇인지
  • 개발된 모델이 바로 프로덕션에 론치가능한 프로세스/프레임웍이 필요
    • 예를 들어 R로 개발된 모델은 바로 프로덕션 론치가 불가능
    • 트위터: 데이터 과학자들에게 특정 파이썬 라이브러리로 모델개발 정책화
      • 툴을 하나로 통일하면 제반 개발과 론치 관련 프레임웍의 개발이 쉬워짐
    • AWS의 SageMaker: 머신러닝 모델개발, 검증, 론치 프레임웍
      • 검증된 모델을 버튼 클릭 하나로 API 형태로 론치 가능
      • Google Cloud와 Azure 도 비슷한 프레임웍 지원
  • 첫 모델 론치는 시작일 뿐
    • 론치가 아닌 운영을 통해 점진적인 개선을 이뤄내는 것이 중요
    • 데이터 과학자의 경우 모델 개발하고 끝이 아니라는 점 명심
  • 결국 피드백 루프가 필요
    • 운영에서 생기는 데이터를 가지고 개선점 찾기
      • 검색이라면 CTR 을 모니터링하고 모든 데이터를 기록
    • 주기적으로 모델을 재빌딩

데이터 관련 교훈

데이터를 통해 매출이 생겨야 한다

  • 어느 조직이건 회사에서의 존재 이유는 매출 창조 혹은 경비 절감
    • 데이터 인프라와 데이터 팀원의 몸값은 상대적으로 높음
    • 직접적이건 간접적이건 데이터를 통해 회사 수익에 긍정적인 영향을 끼쳐야 함
  • 데이터 조직의 수장의 역할이 아주 중요
    • 위와 옆으로 잘 매니지를 해야 함
    • 다시 한번 데이터 인프라의 구성이 첫 번째라는 점을 명심하되 단기적으로 좋은 결과를 낼 방법을 찾아야 함

데이터 인프라가 첫 번째 스텝

  • 데이터 인프라 없이는 데이터 분석이나 모델링은 불가능
    • 하지만 아주 작은 회사에서 생존이 더 중요한 문제라 데이터 인프라는 조금더 성장한 뒤에 걱정해도 됨
    • 첫 번째 팀원은 인프라 구축 이외에도 약간의 분석/모델링 스킬이 있는 사람이 최적
  • 고려점
    • 클라우드 vs 직접 구성
    • 배치 vs 실시간

데이터의 품질이 아주 중요

  • Garbage In Garbage Out
  • 데이터 과학자가 가장 많은 시간을 쏟는 분야
    • 데이터 청소
    • 모델링에 드는 시간을 100이라고 하면 그 중 70은 데이터 클린업에 들어감
  • 중요 데이터의 경우 좀더 품질 유지에 노력이 필요
    • 어디에 데이터가 있는지
    • 이 데이터의 품질에 혹시 문제가 있는지 계속적으로 모니터링

항상 지표부터 생각

  • 무슨 일을 하건 그 일의 성공 척도를 처음부터 생각
    • 또한 나름대로 가설을 세우는 것이 인사이트를 키우는 데 큰 도움이 됨
  • 지표의 계산에 있어서 객관성이 중요
    • 계산된 지표를 아무도 못 믿는다면 큰 문제
    • 지표를 어떻게 계산할 것인지 그리고 이걸 다른 사람들에게 어떻게 설명할 지 고려

가능하면 간단한 솔루션으로 시작

  • 모든 문제를 딥러닝으로 해결해야 하나
    • IF 문 몇개의 간단한 논리로 해결할 수 있는지 부터 고민
    • 실제 회사에서 딥러닝으로 문제를 해결하는 경우는 드움. 왜 동작하는지 설명도 힘들고 개발과 론치 모두 시간이 걸림
  • 반복 기반의 점진적인 개발방식 vs. 한 큐에 모델 만들기
    • 후자는 시간만 오래 걸리고 최종 성과는 안 좋을 확률이 높음
    • 전자로 가면서 원하는 결과가 나오면 그 때 중단. 더 개선할 필요 없음.

Leave a comment