안녕하세요? JustKode입니다. 오늘은 Data Engineering에 대해서 알아 보고자 합니다. 이 글을 쓰는 이유는 제가 어쩌다 보니 Data Engineer으로 취업 하게 되어서 인데요. 사실 저는 3학년 때는 랩실에서 AI 대학원을 준비 했으나, 적성에 안맞아서 다른 길을 선택 하기로 마음 먹었고, 4학년 1학기에는 Server Engineer가 되기 위해서 공부 했는데, 회사 쪽에서는 Data Engineering 쪽에 적합 하다고 판단. 데이터 파이프라인을 만드는 부서에서 인턴을 하게 되었습니다.
그렇게 채용 연계에 성공하여 내년부터 Data Engineer 직군으로 라인플러스에서 일을 하게 되었고, 그리하여 제가 하는 일이 정확히 무엇인지 파악하는 것이 중요했습니다. 저도 배워 가면서 쓰는 글이라서, 부정확한 내용이 있을 수 있습니다. 이를 감안하여 봐 주시기를 바랍니다.
만약 부정확한 내용이 있다면 댓글로 남겨 주시길 바랍니다.
데이터 엔지니어링은 생긴지 얼마 되지 않은 분야기 때문에, 회사마다 정의하는 업무도 다르고, 개인 별로 생각 하는 바도 다릅니다. 그렇기 때문에 정확한 답변을 내리기에는 어려움이 있습니다. 하지만, 이 단어가 생겨난 이유를 찾아 가보면 답을 찾을 수 있습니다.
아마 2010년도 중순 부터 많이 나오기 시작 한 단어로 빅 데이터를 꼽을 수 있을 것 입니다. 예전에는 데이터를 저장 하더라도, 중요한 데이터가 아니면 (매출, 트래픽 등) 저장 하지 않았습니다. 모든 데이터를 저장하기에는 비용이 많이 들고, 저장 한다고 해도 이를 활용 하기가 힘들었기 때문이죠.
하지만, 클라우드 환경 및 데이터 분석 기술, 그리고 컴퓨팅 성능이 시간이 지남에 따라 상승 함에 따라서, 버려지던 데이터들도 이용가치가 생기기 시작 했습니다. 이러한 데이터들을 통해 서비스 개선을 하거나, 사용자 맞춤 기능을 제공해 주는 등으로 말이죠.
위와 같이 데이터를 이용하여 비즈니스적인 이익을 많이 가져가는 회사들이 늘어남으로 인해, 데이터를 이용하여 가치를 도출하는 것에 대한 시장의 관심들이 늘어나기 시작했고, 이때 부터 기업들은 많은 양의 데이터를 저장 하기 시작했습니다. 하지만, 몇십 테라 바이트에 육박하는 많은 양의 데이터들은 기존의 RDB (관계형 데이터베이스)에 저장도 힘들 뿐더러, 기존의 방법으로는 복합적인 데이터 간의 상관관계를 도출 할 수 없었습니다.
그래서 기존의 방법과 다르게 데이터를 다루는 빅 데이터 분석 기술이 대두되기 시작 했습니다.
빅 데이터 분석 기술은 크게 두 가지로 나뉩니다. 데이터 엔지니어링과 데이터 사이언스로 말이죠.
딱 떨어지진 않습니다. 왜냐하면 다음 그림과 같이 데이터 사이언티스트들과 데이터 엔지니어가 공통적으로 처리하는 업무가 있기 때문이죠. 분석, 프로그래밍, 빅 데이터 처리 등이 이에 해당 합니다. 업무가 중첩 되는 경우에는 회사의 재량에 따라 분리 하는 경우가 많다고 합니다.
데이터 엔지니어는 빅데이터 환경에서 데이터 인프라를 구축하고 관리 하는 데 특화된 직무입니다. 데이터 사이언티스트들이 데이터 분석에 치중 한다면, 데이터 엔지니어들은 이러한 데이터들을 가공 하고 이를 분석할 수 있게 끔 플랫폼을 제공 합니다. 상대적으로 프로그래밍쪽에 치중 했다고 볼 수 있죠. 적은 컴퓨팅 자원으로 데이터를 신속 정확하게 처리 하는 것이 중요한 역량 중 하나라고 할 수 있겠네요.
일단 데이터 엔지니어가 하는 업무 중 핵심을 정리하면 다음과 같습니다.
줄여서 ETL(Extract, Transform, Load) 이라고도 합니다. 이 업무를 하나로 요약 하자면, 데이터 파이프라인을 구축 및 관리 한다고 이야기 할 수 있습니다. 자주 쓰이는 언어로는 Python, Scala, Java가 있으며, 각 행위에 따라 자주 쓰이는 기술 스택은 다음과 같습니다.
위에 있는 기술 스택들을 상황에 맞게 적절하게 사용 하는 것이 중요 합니다.
저장된 데이터에서 hive 쿼리를 이용하여 일회성 분석을 하기도 합니다. 그렇기 때문에 데이터 엔지니어는 쿼리에 대한 이해가 당연히 필요 합니다.
다른 데이터 사이언티스트들, 혹은 다른 개발자들을 위해서 시각화 플랫폼을 제공 하기도 합니다. 데이터에 대한 이해와 시각화 툴에 대한 이해 모두가 있으면 좋겠죠? 대표적인 시각화 관련 라이브러리로는 d3.js가 있습니다.
여담이지만, 제가 인턴할 때, javascript를 할 수 있냐고 리드님께서 저에게 물어본 기억이 있네요. 아마 시각화 관련 때문에 물어 본게 아닐까 싶습니다.
대충 정리 하면 다음과 같습니다.
이러한 능력들을 이용, 데이터를 적은 비용으로 가공하여, 훌륭한 비즈니스 가치를 만들어 내는 것이 중요합니다.
2021 기준 Data Engineering 로드맵 자료 입니다.