데이터 이야기 #6: 기본 데이터 직군 - 데이터 엔지니어

앞서 포스팅에서는 기본 데이터 직군이라 할 수 있는 데이터 엔지니어, 데이터 분석가, 데이터 과학자 중 먼저 데이터 분석가와 데이터 과학자에 대해서 이야기해보았다. 이번 포스팅에서는 데이터 엔지니어에 대해 이야기해보고자 한다.


데이터 분석가가 데이터 기반 의사 결정을 가능하게 할 수 있으려면, 데이터 과학자가 머신 러닝 모델을 통해 제품이나 서비스의 품질을 개선할 수 있으려면 누군가 데이터 활용과 관계된 인프라를 만들어야 한다. 그게 바로 데이터 엔지니어가 하는 역할이다.


그러면 이 데이터 인프라를 구성하는 컴포넌트로는 무엇이 있을까? 가장 기본적으로는 아래 두 가지로 구성이 된다.


  1. 데이터 웨어하우스

  2. 데이터 파이프라인


데이터 웨어하우스는 데이터 분석을 이용한 전용 대용량 데이터베이스라 할 수 있고 여기에 필요한 데이터를 적재해주는 역할을 하는 것이 바로 데이터 파이프라인이다. 데이터 웨어하우스는 상황에 맞게 작은 데이터베이스(MySQL, Postgres)로 시작해서 데이터의 크기가 커지면 보통 클라우드 기반의 데이터 웨어하우스(Snowflake, BigQuery, Redshift, ...)로 이전해가는 것이 경제적이며 일반적이다. 데이터 웨어하우스도 관계형 데이터베이스이기에 SQL이 여전히 가장 기본이 되고 중요한 기술이며 데이터 모델링이 중요해진다.


데이터 파이프라인은 보통 Python으로 작성이 되며 다양한 데이터 소스들에 있는 데이터를 추출해서 (Extract) 원하는 포맷으로 변환한 다음에 (Transform) 최종적으로 데이터 웨어하우스에 테이블로 로딩(Load)하는 역할을 하게 되며 보통 데이터 소스별로 하나씩 존재하게 된다. 이때 가장 많이 사용되는 프레임웍으로는 Airflow가 있고 Dagster나 Prefect가 대안으로 떠오르고 있긴 하지만 Airflow과 비교할 정도는 아니다.


여기서 데이터의 크기가 더 커지면 대용량 데이터 처리를 위해 Spark과 같은 대용량 처리 시스템이 필요해지고 데이터의 크기 뿐만 아니라 로그 파일과 같이 비구조화된 데이터가 필요해지기 시작하면 데이터 웨어하우스보다 더 스케일이 크고 경제적인 데이터 레이크 (data lake)가 데이터 인프라를 구성하는 컴포넌트로 필요해진다. 데이터 인프라에 대해서는 별도 포스팅으로 더 써보기로 하고 데이터 엔지니어가 알아야하는 기술에 대해 이야기해보자.


  • Python: 기본적으로 데이터 엔지니어는 소프트웨어 엔지니어이기에 면접 때 코딩 테스트를 하는 것이 일반적이다. 데이터 엔지니어로 시작한 사람들 중의 일부는 백엔드 엔지니어로 직군 전환을 하기도 한다.

  • SQL, Data Warehouse, Data Lake: 구조화된 데이터를 많이 다루기에 SQL에 대한 상당한 지식이 필요하며 데이터 전용 DB라 할 수 있는 데이터 웨어하우스와 데이터 레이크에 대한 지식과 경험이 필요하다.

  • 데이터 파이프라인을 작성하고 운영해야 하기에 Airflow와 같은 프레임웍에 대한 지식과 경험이 필요하다.

  • 작은 데이터를 다룰 때는 Pandas로 충분하지만 커지면 Spark이 필요해진다. Spark은 기본적으로 다수의 서버에 나눠 저장된 빅데이터를 처리해주는 시스템인데 Pandas의 스테로이드 버전이라 할 수 있다. 가끔 데이터가 불균등하게 저장된 경우는 에러가 나고 처리 시간이 너무 오래 걸리는 등의 이슈가 생기며 이를 해결하는 것은 상당한 경험을 필요로 한다. 하지만 이론적으로 Pandas 사용과 비슷하며 구조화된 데이터를 다룰 때는 여전히 SparkSQL이라 불리는 SQL을 사용한다.

  • 여기서 한 단계 더 나가면 데이터 관련 서비스를 작성하고 배포하고 운영하기 위해 Docker와 K8s와 같은 컨테이너 기술에 대한 지식이 필요해질 수 있는데 K8s부터는 주니어가 자유롭게 다룰 수 있는 기술은 아니고 어느 정도의 경험이 필요하다.

  • 머신 러닝과 관련된 일을 하기 시작하면 데이터 웨어하우스나 데이터 레이크에서 처리된 데이터를 프로덕션 시스템으로 푸시하는 일도 하게 되는데 이 때부터는 MongoDB, DynamoDB, Cassandra와 같은 NoSQL 시스템도 사용해야할 일들이 생기곤 한다.


다음 포스팅에서 조금더 특화된 데이터 직군이라 할 수 있는 MLOps, ML 엔지니어, Privacy 엔지니어 등에 대해 이야기해보고자 한다.

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 9월 22일 오전 7:25

 • 

저장 13조회 3,404

댓글 0