데이터 과학이 통계학에서 갈라져 나오는 동안, 소프트웨어 세계에서도 큰 변화가 일어나고 있었습니다.
1.2.1 하둡 (Hadoop)
2000년대 초반 한창 성장 가도에 있던 구글(Google)사는 큰 문제에 봉착해 있었습니다.[1] 검색 엔진이 기초적인 부분에서 에러를 일으키는 경우가 부쩍 잦아진 것입니다. 예를 들어, 이미 없어진 문서들을 검색 결과로 내보내거나, 수개월 전의 문서를 현재 것인 양 내보내는 식이었습니다. 게다가 아무리 살펴봐도 검색 엔진의 소스 코드에서는 문제를 찾기 어려웠습니다.
세밀한 분석 끝에 구글의 엔지니어들은 그 원인이 하드웨어 이상 동작에서 비롯된 것임을 찾아냈습니다. 인터넷이 급격히 성장하면서 검색 엔진이 감당해야 할 문서 규모가 폭증하였고, 거대해진 웹 데이터는 수백 대의 서버 하드웨어에 나누어 담겨 있었는데, 서버의 개수가 많다 보니 그중 몇 개는 항상 묘한 에러를 일으키는 것이었습니다. 당시 구글 입장에서 하드웨어를 전부 안정적인 고급 사양으로 교체하는 것은 불가능했습니다. 대신 엔지니어들은 소프트웨어 기술로 저 사양 하드웨어의 오류를 버텨낼 방법을 개발해냅니다. 사실상 구글을 파멸에서 구해냈다고 할 수 있는 이 기술이 바로 2003년과 2004년 잇달아 논문으로 발표된 구글 파일 시스템(GFS)[2]과 과 맵리듀스(MapReduce)[3] 데이터 분산 처리 프레임워크입니다.
이 논문들을 기반으로 만들어진 오픈 소스가 바로 현재 가장 널리 쓰이는 빅데이터 처리 도구인 하둡(Hadoop)입니다. 구글 파일 시스템은 하둡 파일 시스템(HDFS)으로, 구글 맵리듀스는 하둡 맵리듀스로 각각 오픈 소스화 되었습니다. 하둡이 등장한 이후 그것을 기반으로 하여, 또는 하둡에서 영감을 받아 다양한 거대 데이터 처리 도구들이 오픈 소스로 개발되기 시작했습니다. 이때부터 빅 데이터라는 용어가 크게 유행하였고, 빅 데이터와 관련한 온갖 정의가 등장하고, 그 중요성을 강조하는 사람들도 많아졌습니다.
[그림 1] 하둡 파일 시스템 / 하둡 맵리듀스 오픈소스 프로젝트 로고
빅 데이터란 무엇일까요? 소프트웨어 개발자에게 빅 데이터란 그저 하둡에 담긴 데이터입니다. 하둡 파일 시스템, 또는 그에 준하는 분산 처리 시스템에 담아야 할 크기의 데이터, 그 이상도 이하도 아닙니다. 당시 세상은 빅 데이터라는 키워드로 떠들썩했지만, 정작 그때 새로 만들어진 것은 하둡이었습니다. 하둡 오픈 소스의 등장은 많은 기업들에게 싼 비용으로 거대한 데이터를 처리할 수 있는 방법이 생겼음을 의미하는 것이었습니다.
1.2.2 데이터 레이크 (Data Lake)
기업체가 성장하면 부서 간 분화가 일어나고, 각 부서는 각자의 업무 데이터를 쌓아가게 됩니다. 더 시간이 지나면 기업체는 각 부서에 나뉘어 있는 데이터를 한데 모아 관리하려는 시도를 하게 되는데, 이렇게 모인 중앙 데이터를 데이터 웨어하우스(Data Warehouse)라고 부릅니다. 비슷한 용어로 데이터 마트(Data Mart)라는 것도 있는데, 이는 데이터 웨어하우스의 데이터를 추가 가공하여 최종 분석자가 활용하기 좋도록 다듬어 둔 것을 말합니다. 이상이 전통적인 기업 내 데이터 저장소의 형태였습니다.
그러나, 데이터 과학과 하둡의 등장은 이러한 양상에 변화를 가져왔습니다. 우선 데이터 과학은 기존 통계학에 비해 데이터에 대한 식욕이 훨씬 왕성했고, 입맛도 까다롭지 않았습니다. 예컨대 통계적 독립성 등이 엄밀하게 검증되지 않은 데이터도 상관이 없었습니다. 한편 하둡은 대용량 저장소와 대규모 데이터를 처리하는 방법을 값싸게 제공했습니다.
자연스럽게 기업체는 하둡을 도입하여, 저장할 수 있는 데이터의 규모를 대폭 늘립니다. 또한 각 부서가 되도록 많은 데이터를 전송하도록 합니다. 이렇게 빅데이터 저장소로 재탄생한 중앙 저장소는 데이터 레이크(Data Lake, 호수)라는 새로운 이름으로 불리게 되었습니다. 왜 호수라고 했을까요? 확실한 것을 알 수 없지만, 인터넷을 정보의 바다라고 하는 것처럼 데이터를 물에 비유하려는 사람들이 있었던 것 같습니다.
데이터 레이크와 관련하여 강조할 점은 각 부서가 데이터 레이크에 데이터를 전송할 때는, 데이터의 양과 종류를 늘리는 것에 집중하였지, 데이터를 사용자가 쓰기 쉽게 가공하는 것에 대해서는 오히려 이전보다 신경을 덜 쓰게 되었다는 것입니다. 이는 맵리듀스 프레임워크 덕분에 거대 데이터를 이리저리 가공하는데 드는 비용이 줄어든 탓에, 데이터의 가공은 데이터의 사용자에게 맡기기로 한 것이라 볼 수 있습니다. 데이터 레이크는 원본 데이터를 큰 수정 없이 그대로 저장하는 것이 일반적입니다.
데이터 레이크가 도입되었다고 해서 기존의 데이터 웨어하우스 개념이 사라진 것은 아닙니다. 기업에 따라 데이터 웨어하우스 시스템은 기존처럼 유지하고 데이터 레이크를 신규 구축하는 경우도 있고, 데이터 레이크 내에서 데이터를 추가 가공하여 사용자가 별다른 처리 없이도 사용할 수 있도록 정리해 둔 부분을 데이터 웨어하우스라고 부르기도 합니다.[4] 이런 경우 데이터 레이크와 웨어하우스의 개념은 다소 겹치기도 합니다만, 데이터 레이크가 더 크고 원본에 가까운 데이터 저장소를 일컫는다는 점은 변하지 않습니다.
데이터 레이크가 호수라는 뜻이다 보니 이를 이용한 재미있는 비유로 데이터 스웜프(Data Swamp, 늪)라는 용어가 있습니다. 호수와 늪의 차이는 무엇일까요? 투명성 또는 가시성입니다. 데이터 레이크는 거대합니다. 또 원본 데이터가 그대로 쌓이는 경우가 많기 때문에 제대로 정리되고 문서화되지 않을 경우, 데이터를 생성한 부서 외에 다른 부서에서 사용하기는 매우 어려운 경우가 많습니다. 사용은 고사하고 어떤 데이터가 존재하는지 조차 제대로 파악하기 어려울 수도 있습니다. 데이터 늪은 이렇게 제대로 관리되지 못해 불투명해진 데이터 레이크를 지칭하는 용어로, 문제는 주로 문서화와 관련되어 있습니다.