3 분 소요

데이터 엔지니어

image

데이터 엔지니어는 ETL/ELT 파이프라인을 제작하고 대시보드 생성한다

⇒ 데이터를 활용하는 모든 사람을 위해 데이터를 수집하고 변환하며, 대시보드에서 볼 수 있도록 시각화 과정이 필요하다.


Database

  • 앱/웹 서비스의 영상, 조회 수 등의 데이터가 데이터베이스가 저장되어있다.
    • MySQL, PostgreSQL, MariaDB 등등
  • 서비스를 위한 데이터를 저장하며, 장애가 나면 안 된다.
  • Database에도 쿼리를 실행할 수 있지만 쿼리를 실행하면 Database에 무리를 줄 수 있어 서비스가 정상적으로 동작하지 않을 수 있다.
    • Database보다 Data Warehouse에 데이터를 저장하는 추세이다.



Data Warehouse (데이터 창고)

  • 데이터 분석에 특화된 데이터 베이스이다.
  • GCP의 BigQuery, AWS의 Redshift, Snowflake 등이 있다.
  • Database에 저장된 데이터를 Data Warehouse로 옮기는 일도 데이터 엔지니어의 업무 중 하나이다.


데이터 엔지니어 업무

1) ETL 파이프라인

  • ETL 파이프라인: Extract, Transform, Load

E (데이터 추출)

  • 서비스의 Database, 앱/웹의 로그 데이터를 추출한다.

T (데이터 변환)

  • 데이터를 잘 활용할 수 있도록 특정 목적에 맞는 데이터 형태로 변환한다.
  • ex) Json 같은 형태의 데이터를 row와 column에 맞게 변환한다

L (데이터를 불러오기)

  • 변환한 데이터를 Data Warehouse에 로드하여 사용할 수 있도록 설정한다.



데이터 처리 방식 - 배치 / 실시간

  • 데이터를 어떻게 활용할 지 목적에 따라 배치, 실시간 파이프라인을 판단한다.
    1. 배치 (Batch)
    • 특정 시간에 1번씩 실행하는 방식
    • ex) 1시간에 1번씩, 1일에 1번씩
      1. 실시간 (Realtime, Streaming)
    • 실시간으로 데이터 처리
    • ex) 요청시 바로바로



2) 데이터 분석을 더 쉽게 할 수 있는 환경 (인프라) 구축

  • 데이터 웨어하우스에 데이터를 옮기면 수많은 Table이 존재하고, 데이터 분석을 하는 사람들이 SQL 쿼리문을 작성하게된다.



데이터 마트 구축

  • SQL Join한 결과를 Batch로 Table에 저장
  • 특정 목적, 도메인에 맞는 마트 구축한다.
  • 정리하자면, 서비스를 위한 데이터베이스에서 데이터웨어하우스로 옮긴다음, 비즈니스 목적에 맞는 마트를 구축한다.
  • 그 외에 데이터 분석시 데이터 시각화 도구가 필요한 경우 Tableau, Redash, Superset, Metabase 등 BI 도구를 세팅하기도 한다.
    • 데이터 마트와 시각화 도구를 결합하는 환경을 마련하며, 필요시 사용 방법을 공유한다.



3) Data Product 개발

Data Product : Data 관련 제품, 서비스를 의미한다.

사내 구성원들을 위한 Data Product 개발한다.

  • AB Test Platform
  • 데이터 기반 서비스 또는 자체 서버
  • Analytics 도구 ex) Google Analytics, Amplitude
  • 데이터 로그 설계, 시스템
  • 머신러닝, 딥러닝 서비스



데이터 엔지니어의 필요 역량

  • 데이터 엔지니어링 역량
    • 대용량 데이터 처리, Database, 네트워크 등 종합적인 역량
    • 개발 역량 (Python, Java, Scala, Shell, Docker … )
    • 클라우드, Docker, Kubernetes에 대한 이해
    • 데이터 아키텍쳐 설계 역량
    • 백엔드 개발자의 필요 역량과 유사
      • CS 기초 지식, 개발 역량


  • 데이터 엔지니어링 관련 유명 라이브러리
    • Apache Spark, Apache Kafka - 대용량 데이터 처리나 실시간 데이터 처리
    • Apache Airflow - Workflow Management로 많이 사용됨, 여러가지 배치 파이프라인 쓸 때 잘 사용할 수 있다. 많은 회사들이 표준으로 사용하고 있다.
    • 프로젝트 상황, 목적에 따라 적절하게 선택하는 역량이 필요하다.
      • ex) 문제에서 이런 요구조건이 있었기 때문에 AWS Kinesis와 Kafka를 고민하다가 Kafka를 사용하였다.
      • 어떤 상황이든 어떤 프레임워크가 있고, 어떤 아키텍처를 설계할 것인데 어떤 걸 선택해야겠다 라는 논리적인 근거가 확실히 필요하다!



데이터 엔지니어의 로드맵



데이터 엔지니어 공부 방법

앞의 자료는 커리어를 계속 밟으며 방향을 참고하고 싶을 때 좋은 자료이다.
데이터 엔지니어 공부 방법을 세 단계로 나눠서 살펴보자.

  1. 처음엔 데이터 엔지니어링 기초 지식을 쌓고 + 실제로 구현을 많이 해보자.
    • 도서 추천
      • 빅데이터를 지탱하는 기술” ⇒ 큰 그림 파악하기 좋음
      • Data Engineering Cookbook
  2. 그 이후엔 특정 문제를 해결하기 위한 데이터 파이프라인 구축 프로젝트를 진행해보자.
    • 단순히 특정 라이브러리를 사용했다보다는 “어떤 문제를 해결하기 위해 어떤 방식으로 아키텍쳐를 설계했고, 특정 부분의 대안은 여러가지가 있는데, 프로젝트는 이런 목표가 있기 때문에 이 프레임워크를 선택했다.” 식으로 정리하며 학습하기
  3. 클라우드 서비스 프로젝트를 하면서 IT 회사의 기술 블로그에서 데이터 엔지니어 관련 글 보고 리뷰하는 습관을 들이자.
    • ex) Uber, Doordash, Microsoft, Netflix 등
    • 국내 회사들도 기술 블로그를 운영하는 추세이다.
    • 아키텍쳐 설계하는데에도 도움이 된다!



우버 기술 블로그 보고 학습하는 방법 예시

  • 우버 기술에 대한 블로그들을 하나씩 읽고 정리해두자!!
  • 모르는 것이 있으면 구글에 검색하며 하나씩 학습한다.
  • 배경, 문제 정의 ⇒ 번역기로 간단히 보고, 영문으로 다시 본다.
  • 스피트, 신뢰성, 정확도를 최적화 하려고 했다.
  • 어떤 흐름으로 데이터가 이동하고 있고, 어떤 식으로 구현을 했는지 살펴본다.



체크리스트

  • 취업을 목표로 하고 있는 회사에서 요구하는 역량 파악하기
  • 파이프라인 구축을 위한 필요한 지식 공부하기
  • 데이터 마트 구축하기
  • BI 도구 세팅하기
  • 데이터 시각화 도구와 데이터 마트 결합하는 환경 마련하기
  • Data Product 개발하기
  • AWS, GCP, Azure 등 클라우드에서 데이터 처리를 위한 인프라 구성하는 방법 이해하기
  • 배치 처리와 실시간 처리 방식을 적절하게 활용하기



추가적으로 관련 작업을 별도로 작성하실 필요가 있다면 위의 목록에 추가해보자. 이외에도 자신이 원하는 분야에 대한 추가적인 지식을 습득하고 학습하는 것이 중요하다.

데이터 엔지니어링 분야에서는 지속적인 발전과 변화가 이루어지고 있기 때문에 최신 기술 동향에 대한 지식을 갖추는 것도 필수적이다. 이를 위해서는 관련 커뮤니티나 기술 블로그 등을 활용하여 최신 기술 동향을 살펴보는 것이 좋다.

마지막으로, 데이터 엔지니어링 분야에서의 성장을 위해 지속적인 학습과 개인 역량 강화가 필요하다. 이를 위해서는 관련 도서나 온라인 강의, 코딩 테스트 연습 등을 통해 지속적으로 자신의 역량을 향상시키는 노력이 필요하다.



이상으로 데이터 엔지니어링 분야에서의 업무와 필요한 역량, 그리고 관련 작업에 대해 알아보았다.





참고 자료

데이터 엔지니어는 무슨 일을 하는 사람일까? | 데이터엔지니어 직무 소개(feat. 데이터 엔지니어가 되기 위해서는 어떤 것을 알아야 할까요?!)

Ep 5. 데이터 엔지니어가 하는 일은? 데이터 엔지니어 공부 방법! (저만의 공부 방법 포함!)

댓글남기기