[지데넓얕] Data Science와 Data Engineering 은 무엇이 다를까?


2020년 부터 블로그 포스팅 컨텐츠의 일환으로 "지적 데이터과학을 위한 넓고 얕은 지식 (지데넓얕)" 을 진행해볼까 합니다. 제목은 많이 알려진 책인 지적대화를 위한 넓고 얕은 지식 (채사장) 을 패러디한 것이며, 목적은 데이터과학 관련 지식을 전문적으로 다루기 보다는 상식 수준에서 쉽게 다루어보는 것입니다! 첫번째 포스팅으로는 Data science 와 Data engineering 의 차이점에 대해서 정리해보겠습니다. 


Data Science


Data Science 는 이름에서도 알 수 있듯, Data + Science 이다. '데이터' 를 통해 '과학' 을 하는 것입니다. 사실 Data science란 용어는 매우 모호한 단어입니다. 전통적인 연구 (Traditional research) 에서도 데이터를 통해 과학을 하는데 이와 무엇이 다르냐고 할 수 있습니다. 또한 오래전부터 있어왔던 개념인 정보학 (Informatics) 과는 무엇이 다른 것일까요? 이러한 단어의 모호함 때문에 Data science 라는 이름만 보고는 무엇을 하는 건지 명확히 아는데 어려움을 겪습니다.




데이터과학은 구체적으로 '도메인 빅데이터'에 '통계' 와 'IT 기술'을 접목시켜 과학을 하는 것입니다. 이는 위그림에 잘 표현되어 있습니다. 데이터과학에는 3가지 구성 요소가 있습니다. 1) Computer science 2) Statistics 3) Domain knowledge 입니다. 과학이란 새로운 사실을 발견하는 것입니다. 사전적 정의에 따르면 과학은 "검증된 방법으로 얻어 낸 자연계에 관한 체계적 지식 체계" 이지만, 자연계이외에도 포괄적으로 빅데이터에 통계, IT 기술을 접목시켜 Business insight 도출, 의사 결정을 하는 것도 데이터과학이라고 부릅니다. 즉, 과학이라는 것은 데이터과학에서 폭넓은 의미로 쓰이며, '도메인 빅데이터'에 '통계' 와 'IT 기술'을 접목해 문제를 해결하는 것 정도로 데이터 과학을 요약할 수 있습니다. 


데이터 과학자 (Data scientist) 는 크게 두 가지 종류가 있다고 생각합니다. 첫 번째는 머신러닝 전문가로서, 여러 도메인의 문제 해결에 도움을 주는 데이터 과학자 입니다 (Machine learning engineer or scientist). 즉, 위 그림에서 Machine learning 에 중점을 두면서 여러 도메인의 문제를 푸는 사람입니다. 이 경우 머신러닝의 최신 동향 파악 및 최신 기술 (State-of-the-art) 의 활용에 강점이 있습니다. 두 번째는 특정 도메인에 국한해 빅데이터에 IT 와  통계 지식을 접목해 문제를 해결하는 사람 (Domain expert) 입니다. 위 그림에서 Domain knowledge 에 폭넓은 이해와 함께 필요한 IT 기술, 통계학적 지식을 접목해 문제를 해결하는 사람입니다. 이 경우 도메인 지식을 활용한 Feature 선정, 공학도메인에서 문제를 스스로 찾고 이를 공학적으로 formulation 하는 능력에 강점이 있습니다. 


Data Engineering


위 데이터 과학의 정의를 보면 데이터과학자들의 역할이 매우 광범위합니다. 데이터 공학 (Data engineering) 은 대규모의 데이터를 효율적으로 관리하고 처리하며 가공을 통해 분석에 적합한 형태 or 데이터과학자가 사용할 수 있는 형태로 만드는 것과 관련이 있습니다. 큰 회사의 경우 데이터의 크기가 매우 크고, 이를 저장하기 위하여 분산 시스템을 활용하며, Database management system, text file 에 데이터를 저장합니다. 이러한 데이터 저장 시스템에 데이터를 저장하고 필요할 때 추출해서 처리하기 위한 방법론을 데이터 공학이라고 이야기합니다. 데이터 과학자와 데이터 공학자는 카레이서와 카트를 만드는 사람으로 비유할 수 있습니다. 카레이서는 카트가 없다면 달릴 수 없듯, 빅데이터 분석에서 데이터공학자 없이 데이터 과학자가 존재하기 힘듭니다. 하지만 데이터 공학자는 실제 데이터과학 접목을 통해 Product 를 만들었을 때, 덜 주목 받을 수 있습니다. 왜냐하면 전체 Product 개발의 pipeline 을 봤을 때, 초기 단계에 있는 일을 하기 때문입니다. 데이터 공학은 빅데이터 처리 시스템이 갖추어지지 않은 작은 규모의 기관에서는 그 역할이 축소될 수 있고, 데이터과학자가 겸임을 하기도 합니다.  


https://www.elderresearch.com/consulting-services/data-engineering


위 그림은 대규묘 데이터 활용의 파이프라인에서 Data engineering 이 담당하는 역할을 잘보여줍니다. 데이터 공학자는 비지니스 데이터를 분산 시스템에 정형화된 형태로 저장 (위 그림의 Immutable data store) 하고 필요할 때, 이를 Extract, Load, Transform (ETL) 해서 분석에 적합한 형태 (위 그림의 Analytic base table) 로 만듭니다. 데이터 과학자는 이 데이터를 통해 데이터 과학을 합니다. 


데이터 과학과 데이터 공학의 공통점과 차이점은 아래와 같이 요약을 해볼 수 있습니다. 


공통점

데이터과학 

데이터공학 

소프트웨어 기술 

빅데이터

통계학

머신러닝

도메인지식

빅데이터 Infrastructure 

분산처리 기술 (Hadoop, Spark)

분산시스템 데이터처리 Pipeline 

실시간 처리 시스템