tldr; 데이터 엔지니어는 빅데이터를 분석에 활용할 수 있게끔 전처리/가공을 수행하는 사람입니다.

머신러닝과 빅데이터 분야가 발전하기 시작하면서 다양한 용어가 정립되었으며 그 중 하나가 데이터 엔지니어입니다. 현재 대부분의 회사에서 기대하는 데이터 엔지니어의 일반적인 역할을 간단하게 소개합니다.

빅데이터 플랫폼 환경 구축

데이터 엔지니어는 말 그대로 데이터를 다룹니다. 그런데 여기서 말하는 데이터는 그냥 데이터가 아니라 빅데이터입니다.

빅데이터의 특징은 규모가 기하급수적으로 증가한다는 점인데요, 이를 전통적인 데이터베이스 저장 방식으로 처리하는것은 매우 어렵습니다. 그래서 이를 유연하고 안정적이며 값싼 비용으로 처리하기 위한 분산 처리 기술들이 출현하게 됩니다. 빅데이터 플랫폼은 이러한 분산 처리 개념을 적용하여 대량의 데이터를 저장 및 활용할 수 있도록 설계된 환경을 말합니다.

현재 전 세계에서 가장 많이 사용되는 빅데이터 저장 기술은 하둡 파일시스템(HDFS)입니다. 이는 오픈소스 소프트웨어이며, 커뮤니티를 중심으로 빠르게 발전했습니다. 하지만 분야가 발전하면서 다양한 기술들이 쏟아져 나오기 시작했고, 상황에 따라 어떤 기술을 어떻게 효율적으로 사용할지 고려하는 것이 데이터 엔지니어의 중요한 덕목이 되었습니다.

데이터 엔지니어에게 기대하는 역할은 회사마다 다르겠지만, 빅데이터 플랫폼을 구축하는 것 또한 데이터 엔지니어의 역할이라고 여기기도 합니다. (그러한 역할을 데이터 플랫폼 엔지니어라고 구분하는 회사도 있습니다.) 플랫폼을 구성하는 것은 전통적인 서버 인프라 엔지니어의 영역에 가깝지만, 최근 들어 클라우드 트렌드와 맞물려 이러한 플랫폼을 비교적 간편하게 구성하고 사용할 수 있는 방법이 많아졌습니다. 따라서 기술 트렌드를 빠르게 따라가는 능력이 더욱 중요해졌습니다.

물론 플랫폼을 직접 구축하지 않더라도 기본적인 이해는 필요합니다. 추상화된 블랙박스라고 하더라도 어떤 메커니즘으로 동작하는지를 아는 사람과 모르는 사람의 업무 능력은 차이가 날 수 밖에 없기 때문입니다.

ETL (Extract, Transform, Load)

데이터라고 해서 다 같은 데이터일까요? 그렇지는 않습니다. 최초 어딘가에서 생성된 원시 데이터가 있을 거고, 그 데이터를 활용하기 쉽도록 정리한 가공 데이터가 있을 겁니다. 즉, 데이터에도 티어가 존재하고 그에 따라 활용도가 나뉜다고 볼 수 있습니다. 원시 데이터, 혹은 비정형 데이터 자체는 활용 데이터로써의 가치가 적기 때문에, 이를 활용 가능한 데이터로 가공해주는 작업이 필요합니다.

원시 데이터를 정재된 데이터로 가공하는 일련의 작업을 수집(Extract), 가공(Transform), 적재(Load)의 앞 이니셜을 따서 ETL이라고 통칭하며, 이는 데이터 엔지니어의 중요한 역할 중 하나입니다. ETL을 수행하기 위한 다양한 기술이 존재합니다. 예를 들어 Spark, Airflow, Nifi 등이 있습니다. ETL 기술도 트렌드에 따라 사라지기거나 새로 떠오르기도 하며, 이를 적시적소에 활용하는 것이 데이터 엔지니어의 역량입니다.

이러한 ETL 기술은 빅데이터 플랫폼의 일부로 여겨지지만 빅데이터 플랫폼만을 위한 기술은 아닐 수 있습니다. 전통적인 데이터베이스를 위해 활용될 수 있으며 다른 업무를 위해서도 사용할 수 있습니다. 그러나 근본적인 목표는 빅데이터 처리에 중점을 둔 기능을 갖추는 것입니다.

ETL의 각 단계에 대하여 자세하게 작성하려면 본문의 주제를 다소 벗어나기에, 이를 간단하게 아래와 같이 설명하겠습니다.

  • Extract: 이기종 데이터 소스(서버, 데이터베이스, 디바이스, 하둡 등)에서 배치 / 스트리밍 데이터 수집
  • Transform: 고성능 분산처리 도구를 사용해 수집한 데이터를 가공하여 분석 및 사업 요건에 맞추기
  • Load: 전처리 데이터를 저장소에 적재