견고한 데이터 엔지니어링 - 데이터 엔지니어링 상세
이 내용의 경우에는 데이터 엔지니어링에 대한 저자의 생각과 일반적인 정보를 잘 적혀있습니다. 하지만 내용에서 특정한 지식을 얻기보다 그 과정을 되짚어보면서 데이터 엔지니어에 대한 정의를 바로잡는 내용입니다.
그렇기에 내용에 대한 요약보다 여기서 사용 된 단어에 대한 학습내용이나, 데이터 엔지니어의 역할에 대해서 적어보고자 합니다.
그래서 데이터 엔지니어란 무엇인가?
책의 내용은 데이터 엔지니어라는 현 세기에 새롭게 등장한 직업에 대해 몇 가지 가정과 주장을 했습니다.
1. 데이터 엔지니어의 역할
그 첫 번째는 “데이터 엔지니어링은 데이터 과학 및 분석과 별개”라는 가정으로 책을 시작합니다. 데이터 엔지니어링이 파이프상에 위치한다면 업스트림과 다운스트림이 있으며, 그 가운데에 데이터 엔지니어링이 있다고 말합니다.
위 그림에서는 데이터 엔지니어가 다뤄야 하는 소스 데이터를 제공하는 업스트림 엔지니어가 있고, 처리 한 데이터를 제공하여 서비스 혹은 분석 결과를 얻는 소비자인 다운스트림 분석가, ML 엔지니어들이 있습니다.
즉, 데이터 엔지니어는 업스트림 엔지니어와의 협업으로 데이터를 입력받고 다운스트림 분석가 및 ML 엔지니어에게 전달해주는 과정에서의 변환 작업을 하는 역할이라고 말할 수 있습니다.
1.1) 상세한 역할은?
위 데이터 사이언스의 역할에 대한 그림에서 데이터 엔지니어가 하는 역할이 분명하게 드러나 있습니다. 모델링을 하는 직군을 보면 늘 하는 듣는 말이 “Garbage In Garbage Out” 입니다. 즉 모델링 때 사용하는 데이터가 제대로 된 데이터 셋이 아니면 결과또한 좋은 결과가 나오지 않는다는 말입니다.
그림에서는 Aggregate/Label 단계, 실제적으로 데이터를 들여다보고 분리하거나 종합하여 분석하는 단계가 오기 전에 3단계나 있음을 알 수 있습니다. 그리고 책에서도 실제 현업자도 “이 과정이 전체 업무 시간의 70~80%다.” 라는 말을 하고 있습니다.
데이터 엔지니어는 바로 이 3단계를 전문적으로 수행하는 직군이라고 생각하면 됩니다. 분석가, 과학자가 실제로 데이터를 분석하기 전에 데이터를 수집하고 변환하여 적재해줌으로써 분석에만 90%이상의 시간을 할애 할 수 있도록 도와주는 것이라고 책은 말합니다.
1.2) 단계 별 데이터 엔지니어링
1 단계 데이터로 시작하기
- 주요 관계자(경영진)들로부터 자원을 받아야 합니다.
- 설득을 위해서는 조기 성과가 필요하다.
- 하지만 조기 성과는 기술 부채를 낳으니 주의해야 합니다.
- 비즈니스 차원에서 문제를 해결 할 수 있는 적절한 데이터 아키텍처를 정의합니다.
- 실제로 관련 실무자와의 직접적인 대화가 필요합니다.
- 소통하지 않고, 이해 관계자의 관점과 피드백을 물어보지 않으면 고립된 환경에서 일하게 됩니다.
- 확인/검수
- 데이터 분석가와 과학자가 보고서나 모델을 생성 할 수 있도록 데이터 기반을 구축합니다.
- 기술적인 복잡성에 얽매이지 말고 턴키 솔루션(소비자가 즉시 사용 할 수 있도록 생산)을 활용합니다.
2 단계 데이터로 확장하기
- 공식적인 데이터 관행 수립
- 확장성 있고 견고한 데이터 아키텍처 수립
- 확장의 주요 병목 현상은 클러스터 노드, 스토리지 또는 기술이 아니라 데이터 엔지니어링 팀이기 때문에 배포와 관리가 쉬운 솔루션에 집중해야 합니다.
- 최첨단 기술의 유혹에 무조건적인 채택을 피하고, 비즈니스의 니즈에 따라 기술적인 의사결정이 필요합니다.
- 데브옵스 및 데이터옵스 관행 채택
- ML을 지원하는 시스템 구축
- 차별화되지 않은 과중한 업무를 피하게, 경쟁 우위를 확보할 때만 커스터마이징
- 데이터의 실질적인 유용성에 관해 다른 팀과 소통하고 조직에 데이터 사용과 활용 방법을 교육합니다.
3 단계 데이터로 선도하기
- 새로운 데이터의 매끄러운 배포와 사용을 위한 자동화 구축
- 항상 유지 보수와 개선에 집중해야 합니다.
- 경쟁 우위로서 데이터를 활용하는 사용자 정의 도구와 시스템 구축에 주력
- 데이터 관리(데이터 거버넌스와 품질을 포함) 및 데이터옵스와 같은 데이터의 ‘기업적’측면에 집중한다.
- 비즈니스의 관점에서 가치를 제공하는 것에 주력해야 합니다.
- 데이터 카탈로스, 데이터 계보도구, 메타데이터 관리 시스템을 포함해 데이터를 조직 전체에 노출하고 전파하는 도구를 배포
- 소프트웨어 엔지니어, ML 엔지니어, 분석가 등과 효율적으로 협업
- 역할, 직책과 관계없이 사람들과 협업 및 공개적으로 토론하는 커뮤니티와 환경을 구축