해당 내용은 Datacamp의 Data engineering track을 정리했습니다.
Data engineering for everyone의 chapter 1에 대한 내용입니다.
해당 포스팅에는 아래의 내용을 포함하고 있습니다.
- 데이터 엔지니어링은 무엇인가?
- 빅데이터와 어떻게 관련이 있는지, 데이터 엔지니어와 데이터 사이언티스트의 차이
- 데이터 엔지니어가 구축하는 데이터 파이프라인이란 무엇인가?
1. Data engineering and big data
어느 조직이든지 데이터는 아래와 같은 흐름으로 진행됩니다.
- 데이터 수집과 저장 (ex. 웹 트래픽, 설문조사 등 다양한 데이터를 수집하고 저장)
- 데이터 준비 (ex. 데이터 정리, NULL 데이터, 중복 데이터 확인, 데이터 형식 변환)
- 데이터 탐색 및 시각화 (ex. 데이터 시각화, 대시보드 구축, 변경 사항을 추적, 데이터 셋 비교)
- 실험 및 예측 (ex. 주가 예측을 위한 모델 구축)
데이터 엔지니어는 위의 과정 중 데이터 수집과 저장의 파트를 주로 담당합니다. 처음 단계가 잘 준비가 되어 있지 않으면, 데이터 분석가, 데이터 사이언티스트, 머신러닝 엔지니어들이 데이터를 활용하고 실험하기가 어렵습니다. 그래서 데이터 엔지니어는 올바른 데이터를 올바른 형태로 제공할 수 있어야 하며, 필요한 사람에게 최대한 효율적으로 전달할 수 있어야 합니다.
데이터 엔지니어는 다양한 소스로부터 데이터를 수집하고, 분석을 위해 데이터베이스를 최적화 합니다. 또한 데이터 손상을 관리하는 역할을 합니다. 또한 방대한 양의 데이터를 처리하기 위한 데이터베이스 및 대규모 처리 시스템과 같은 아키텍처를 개발, 구성, 테스트 및 유지 관리합니다.
최근 빅데이터의 등장으로 데이터 엔지니어에 대한 수요가 증가했습니다. 빅데이터는 기존의 데이터 관리 방식으로는 처리가 어렵기 때문에 어떻게 처리해야 할 지를 고민해야 할 정도로 큰 데이터라고 정의할 수 있습니다. 이러한 빅데이터는 일반적으로 5가지의 특징을 갖습니다.
- Volume 데이터의 양
- Variety 데이터의 종류
- Velocity 데이터 생성 속도
- Veracity 데이터에 대한 신뢰성
- Value 데이터의 유용성
데이터 엔지니어는 위의 특징들을 고려해야 합니다.
2. Data engineers vs data scientists
위의 강의를 통해서 데이터 엔지니어가 데이터 수집 및 저장의 업무를 담당한다는 것을 알 수 있었습니다. 그렇다면 데이터 사이언티스트는 데이터 플로우 중 어디부분을 맡고 있을까요? 데이터 엔지니어가 담당하는 데이터 수집 및 저장 부분 외에 모든 부분을 담당하고 있습니다.
그렇다면, 데이터 엔지니어가 어떻게 데이터 사이언티스트를 도와줄 수 있을까요? 데이터 엔지니어는 회사에서 필요한 다양한 데이터들을 수집해서 데이터베이스에 저장합니다. 저장된 데이터베이스에서 테이블을 활용해서 데이터 사이언티스트들은 패턴을 이해하거나 추천 시스템을 개발합니다. 또한 데이터 사이언티스트들은 데이터 엔지니어가 구성한 데이터 파이프라인을 활용합니다.
3. The data pipeline
보통, 원유를 추출하고 나면 증류장치를 통해 다양한 형태의 기름을 얻을 수 있습니다. 각각의 기름은 각각이 필요한 곳으로 전달되어 활용됩니다. 이처럼 데이터 파이프라인도 원유를 추출하여 제공해주는 것과 비슷한 과정을 가지고 있습니다.
Spotflix라는 가상의 음악 스트리밍 회사가 있다고 가정해보겠습니다. 회사에서는 데이터를 얻을 수 있는 모바일 앱, 데스크탑 앱, 내부 전산망이 있습니다. 해당 데이터 소스로부터 얻은 데이터들을 모은 것을 데이터레이크라고 표현 합니다. 해당 내용은 추후 강의에서 자세히 설명합니다. 얻어진 데이터 레이크로부터 아티스트에 관한 데이터, 앨범에 관한 데이터 등을 각각의 데이터베이스로 저장합니다. 음악파일의 경우 올바른 파일 형식인지, 재생이 잘 되는 지 등을 확인하여 다시 데이터베이스를 구성합니다. 또한 직원들의 파트별 급여 등을 확인하기 위해 다양한 테이블로 나눠 놓을 수 있으며, 다양한 지사별로 또 구분할 수 있습니다. 이처럼 데이터가 이동하는 모든 경로들을 구성하는 것을 데이터 파이프라인을 구축한다고 할 수 있습니다. 간단하게 말하면, 데이터가 효율적으로 흐를 수 있도록 하는 것을 데이터 파이프 라인이라고 할 수 있습니다. 이를 위해 추출, 변형, 결합, 검증, 데이터 로드 등을 자동화하려고 하며, 최대한 사람의 개입이나 오류, 데이터가 전달되는 데 걸리는 시간을 줄이기 위해 노력해야 합니다.
앞으로 ETL이라는 용어를 많이 듣게 될 것입니다. ETL은 데이터 파이프라인을 설계하는 데 널리 사용되는 프레임 워크입니다. 데이터 흐름을 세 단계인 추출(Extract), 변형(Transform), 불러오기(Load)로 표현할 수 있습니다. 여기서 핵심은 데이터가 저장되기 전에 처리된다는 것입니다.
일반적으로 데이터 파이프라인은 한 시스템에서 다른 시스템으로 데이터가 이동합니다. ETL을 따를 수 있으나 항상 따르는 것은 아닙니다.