[Data Engineering] ETL

여러 IT 기업들은 앞다투어 예측 솔루션을 개발하거나 서비스에 적용시키고 있다. 심지어 국비지원 수업에도 인공지능 / 머신러닝 등의 이름이 붙은 수업들이 우후죽순 나오고 있으니, 데이터의 중요성이 점점 커진다는 것은 자명하다.

데이터의 분석에 상당한 초점들이 맞춰져 있지만, 데이터 사전작업 또한 매우 중요하다. 인공지능은 무에서 유를 창조하는 신의 영역이 아니라서, 인간이 제공해주는 데이터의 역할이 절대적이기 때문이다.

이렇게 데이터를 추출하고, 가공하고, 적재하는 작업을 통들어 ETL(Extract, Transform, Load)이라 한다.



ETL Process

image

추출(Extract)

데이터가 다양해진만큼, 데이터의 종류 / 형태 / 적재 장소 또한 매우 다양해졌다. 이 엄청난 양의 데이터를 처음부터 통일된 포맷으로 가져오거나 수집하는건 불가능에 가깝다.

대중적인 RDB부터 File 형태의 데이터, API에서 직접 받아오는 데이터 등 전부 다른 데이터를 한 곳으로 추출해오는 것, 이것이 ETL의 첫번째 단계 추출이다.

가공(Transform)

이렇게 여러 군데에서 모아온 데이터는 원하는 스키마와 맞지 않거나, 중복되는 등 사용자가 원하는 완벽한 형태일 수 없다. 이를 사용자가 원하는 형태로 스키마를 추가하거나 합치는 등의 작업을 하는 것이 가공이다.

적재(Load)

데이터를 가공했다고 해서 끝나는 것이 아니다. 데이터는 어딘가에 쓰여야 그 의미가 있는 것이기에 원하는 곳에 어떻게 보내야할지 결정해야 한다. 분석을 원하는 분석가들을 위해 또 다른 저장소나 데이터베이스에 저장할수도 있고, 시각화 툴로 바로 보내 CRM에 활용하게 할수도 있을것이다. 이것이 ETL의 마지막 단계 적재이다.

분석부터는 머신러닝 엔지니어나 데이터 분석가들의 영역이기 때문에(이 영역구분이 무 자르듯 완벽하게 잘리는 것은 아니다) 데이터 엔지니어링의 핵심은 이 ETL을 얼마나 효과적으로 하느냐에 달려있다 생각한다.