주의. 구체적인 그림이나 내용을 적으려는 것이 아닙니다. 그냥 순간적으로 떠오른 생각들만 두서없이 나열합니다. 심도있는 글을 원하신다면 그만 읽으세요.
다양한 출처에서 다양한 사람들이 다양한 이야기/글을 적기 때문에 중요한 글도 놓쳐버리는 경우가 잦습니다. 대선 이후에는 정서가 불안해서 IT/트렌드 관련 글들을 제대로 챙겨보지도 못했는데, 우연히 '데이터 시각화'를 검색해보다가 2012년 12월 11일에 IT월드에 올라온 '빅 데이터 시각화를 통해 직원 통찰력을 증대시켜라... 이베이의 과제'라는 글을 읽게 되었습니다. 이 글을 읽는 순간, 현재까지 제 업무 또는 일해왔던 방식에 회의감이 들었습니다. 지금껏 너무 단순하게 분석 업무요청에 수동적으로 대처했던 것은 아닌가?라는 생각이 들었습니다. 현재 바쁘고 힘들더라도 단편적인 데이터 분석보다는 더 포괄적으로 접근해서 분석 플랫폼에 대한 고민을 해야하지 않을까?라는 결론에 이르렀습니다.
데이터 분석 플랫폼이란 어떤 것일까? 기존의 분석 업무 또는 데이터 마이닝과는 많이 다를까? 결론은 개념적으로는 별로 다르지 않을 것다는 것입니다. 어쩌면 제가 지금 적을 모호한 그림/설명도 기존의 분석 프로세스와 별반 차이가 없을것입니다. 그러나 이것을 시작으로 데이터 분석 플랫폼에 대한 고민에 들어가려 합니다. 분석 및 결과 리포팅과 직접적으로 무관한 하드웨어/소프트웨어 인프라에 대한 내용은 생략합니다. * 참고. 제가 고민하는 분석플랫폼의 모양이 기존의 분석/마이닝 프로세스/시스템과 별반 차이가 없기 때문에 글을 다 적은 이후에 아래 그림은 IBM Data Platform 홈페이지에서 예시로 가져와서 추가했습니다.
IBM Big Data Analytics
Data Gathering & Parsing (Pre-Processing).
데이터 분석의 시작은 도메인/서비스 이해 및 데이터 수집부터입니다. 외부의 요청에 의한 분석인 경우 보통 정형/비정형 데이터가 주어지기 때문에 데이터수집을 플랫폼의 한 기능으로 넣어야하나?라는 생각도 듭니다. 그러나 상시적으로 모니터링이 필요한 경우도 있고, 주어진 데이터만으로는 부족한 경우가 많습니다. 특히 빅데이터 분석에서는 어떤 데이터가 어떻게 활용될지 전혀 감이 없습니다. 그렇기에 데이터 수집부터 고민해봐야 합니다. 빅데이터의 중요한 특징으로 다양성 variety가 있습니다. 분석 플랫폼에서도 그런 다양한 데이터를 어떻게 수집하고 저장해둘 것인가?도 성공의 관건입니다. 그리고 다양한 출처에서 피딩받은 비정형 데이터들을 파싱/변환하여 정형화된 형태로 저장해둬야 합니다. 산업/도메인/서비스별로 플러그인 형태의 프리프로세싱 모듈들도 미리 갖춰둘 필요가 있습니다. 현실에서는 필요에 의해서 매번 새로 구현해야겠지만. 실제 하둡을 이용한 빅데이터 처리에서 가장 먼저 하는 작업도 MapReduce로 처리할 수 있도록 key-value 페어로 만들어주는 것입니다.
Data Analysis.
데이터가 준비되었다면 이제 분석작업입니다. 데이터 사이즈나 다양성이 빈약한 경우에는 어떤 분석/머신러닝 알고리즘을 사용하느냐 또는 다양한 파라메터를 어떻게 조정하느냐에 따라서 분석결과가 좌우됩니다. 그런데 집단지성을 활용할만큼 크고 다양한 빅데이터에서는 단순 카운팅 이상의 퍼포먼스를 내는 것도 없습니다. 물론 Apache Mahout과 하둡기반의 머신러닝 플랫폼도 소개되었고, 기존의 다양한 마이닝 알고리즘들이 빅데이터에 최적화된 형태로 배포되고 있습니다. 그래도 여전히 단순 카운팅이 많은 빅데이터 분석에서 기본인 듯합니다. 실시간 서비스와 연계된 경우에는 분석의 정확도보다는 분석의 속도가 더 중요한 경우가 많습니다. 그런 측면에서 단순 카운팅이 가장 좋은 방법이라는 의미입니다. (이건 그냥 현실적 조언이고) 경우에 따라서 카운팅으로 해결할 수 없는 더 정확한 분석도 필요하고 도메인/서비스에 특화된 알고리즘이 적용되어야 합니다. (이미 많은 알고리즘들이 하둡/빅데이터-인에이블드 또는 소스코드가 배포된 상태입니다.) 너무 지당하기 때문에, 우선은 단순 카운팅 및 변형으로 최대한 해결할 수 있는 것과 없는 것을 면밀히 조사 후에, 추가 분석과정을 거치는 것이 현실적인 방안입니다. 그리고 오픈소스 분석도구인 R은 하둡과 잘 연동되기 때문에 R에서 분석할 수 있는 내용이라면 빅데이터 플랫폼에서도 바로 분석이 가능하다는 것입니다. 분석 플랫폼에서 알고리즘에 대한 실질적인 고민은 별로 크지 않다고 생각합니다. 필요하면, 온라인 분석과 오프라인 분석의 분리/결합, 또는 부분/로컬 데이터만을 활용한 최적화 방법 등 다양한 대안이 가능합니다.
Data/Result Interpretation.
제가 (빅) 데이터 분석 플랫폼에 대한 연구로 업무 방향을 정해야겠다고 생각했던 이유는 단순히 데이터를 피딩/파싱하는 것이나 적당한 분석 알고리즘 및 파라메터를 선택해서 적용하는 것 때문이 아닙니다. 그것보다는 그런 데이터 및 알고리즘을 통해서 나온 결과를 어떻게 해석할 것인가?의 문제 또는 이를 정형화할 수 있는 방법에 대한 고민 때문입니다. 단순히 통계적 유의수준을 측정하는 것이 아니라, 이를 쉽게 서비스와 연계하여 사용자들에게 가치를 제공해줘야 합니다. 이미 많은 데이터 분석 패키지나 도구들이 존재하고, 그것들에 맞는 형태로 데이터를 넣고 실행시키기만 하면 웬만한 분석은 가능합니다. 그러나 그걸 통해서 나온 데이터가 어떤 의미를 가지고 있는가?를 해석하는 방법은 순전히 분석가나 (현장) 실무자의 경험이나 감에 의존할 수 밖에 없습니다. 그래도 조금이라도 더 정형화해서 결과를 보여준다면 더 쉽게 결과를 해석하고 의미를 찾아낼 수 있지 않을까?라는 생각을 합니다. 그런 작업을 지원해주는 측면에서 분석 플랫폼이 필요하다는 생각을 했습니다.
Data Visualization & Reporting.
데이터를 그나마 쉽게 해석할 수 있는 방법은 데이터를 시각화하는 것입니다. 단순 숫자의 나열보다는 차트형태로 보여주는 것이 분석가나 실무자들에게 더 많은 인사이트를 줄 수가 있습니다. 보는 것이 믿는 것이다라는 격언이 괜히 생긴 것이 아닙니다. 측정할 수 없으면 혁신할 수 없다는 말과 같이 볼 수 없으면 상상할 수도 없습니다. 서비스나 데이터의 특성에 맞는 다양한 형태의 도표나 이미지를 잘 활용하여 데이터를 시각화하고, 또 이를 결과 리포트에 첨부해서 제공해야 합니다. 바쁘게 현업 분석을 자주 하다보니 결과 리포팅 및 리뷰가 무시되는 경우가 잦습니다. 당시에는 빠르게 분석 요청에 대응해주고 서비스화시켜서 좋은데, 시간이 흐른 후에는 축적된 지식은 하나도 없습니다. 관계자들에게 결과를 공유하기 위한 것뿐만 아니라, 지식의 축적이라는 의미에서 이런 시각화 및 리포팅에 더 많은 노력/체계화가 필요합니다. (데이터 시각화 도구들)
Service & Consulting.
결과 해석 못지 않게 분석 플랫폼의 필요성을 느낀 이유는 분석을 통해서 얻은 지식/인사이트를 서비스에 쉽게 적용할 수 있어야 한다는 점입니다. '빅데이터와 서비스 디자인'이라는 글에서 필자가 밝혔듯이, 데이터 분석의 목적은 내적 자기 만족이 아니라 외적 서비스화에 있습니다. 서비스가 특정되지 않더라도 서비스화는 항상 염두에 두고 분석을 진행해야 합니다. 데이터 시각화와 리포팅을 통해서 서비스 관계자들을 설득하였다면, 여기에서 나온 결과 데이터들이 실제 서비스로 흘러들어가서 사용자들에게 가치를 제공해줘야 합니다. 현재처럼 데이터를 수집/가공하는 곳이 따로 있고, 이를 분석하는 곳이 따로 있는 상황 하에서, 결과 데이터를 서비스에 적용하는 과정이 너무 복잡합니다. 다양한 현실적인 이유로 (스토리지나 서버의 성능이나 보안문제 등) 물리적 시스템 구조상으로는 이들의 기능들이 분산되어있어야겠지만, 데이터의 수집, 분석, 활용이 개념적으로는 매끄럽게 이어져야 합니다. 그런 의미에서 분석 플랫폼의 필요성을 생각했습니다. 모든 데이터가 서비스를 전제로 수집, 분석되는 것은 아닙니다. 그런 경우에도 분석결과를 가지고 다양한 (서비스) 컨설팅에 쉽게 활용되어야 합니다.
예시
간혹 구글트렌드 데이터를 이용해서 뉴스/기사를 작성한 것을 볼 수가 있습니다. (예, 자살률·자살 검색량, 비슷한 추이 보여..동반 증가) 구글에서는 별도로 ZeitGeist라는 사이트를 통해서 구글검색빈도 등을 이용해서 한해를 마무리/요약해서 보여주기도 합니다. (예, 2012년 zeitgeist 동영상) 구글애널리틱스는 개별 사이트별로 트래픽 추이 등을 분석해서 보여줍니다. 별로 복잡한 과정을 거치지 않고서도 빅데이터 인프라를 이용해서 일상 생활에서 유용하게 쓸 수 있는 다양한 데이터/서비스를 제공해주고 있습니다. 국내에서도 다양한 통계데이터는 제공해주고 있지만, 일상화된 서비스는 여전히 부족합니다. 다음에서는 다음트렌드나 트렌드차트 등을 제공해주고 있지만, 사용성은 여전히 부족하고 하드코딩되어있어서 다른 영역에서 해당 서비스/데이터를 이용해서 프로토타이핑을 해볼 수 있는 여건도 아닙니다. 그 외에, 국내에 다양한 SNS를 전문적으로 분석활용하는 회사들이 존재하지만 아직 범용의 분석플랫폼으로 기능하는 것은 거의 없습니다. 데이터 수집 및 분석 플랫폼 자체가 서비스와 별개로 존재하면 안 됩니다.
지극히 일반적인 내용을 가지고 분석 플랫폼이라는 거창한 제목으로 글을 적었습니다. 그런데 지난 몇년간 빅데이터의 중요성을 강조하는 단편적인 글 또는 기술적으로 빅데이터를 처리하는 하드웨어나 소프트웨어에 대한 글들은 많았지만, 실생활에서 우리가 체감할 수 있도록, 구체적으로 어떻게 활용되고 있는지 또는 빅데이터를 활용하려면 우리가 어떻게 접근해야 하는지 등에 대한 현실적인 고민을 해결해주는 글/비전은 별로 보지 못했습니다. 그리고 회사에 들어온 이후로 다양한 분석작업을 진행했지만 아무런 체계가 없이 중구난방식으로 분석결과를 제공하는 것에만 바빴는데, 나름 학교도 오래 다녔고 이제 현업에서의 경험도 쌓였기 때문에 그런 분석 업무 및 분석후의 과정을 더 체계화 및 시스템화를 시키는 것에 대한 필요성/중요성/다급성을 IT월드에 올라온 글을 읽으면서 절감했습니다. 그리고 더 현실적으로는 이런 분석 플랫폼을 잘 만들어놓으면 지금 다니는 회사가 어려워지더라도 이를 이용해서 (분석 및 컨설팅) 회사 하나 정도는 차릴 수 있지 않을까?라는 그런 기대감도 있습니다. 아직 구체적인 플랫폼 설계를 시작한 것은 아니지만, 인프라와 분석 알고리즘, 시각화 등에서는 이미 많은 오픈소스들이 존재하기 때문에 이들을 잘 수집/정리해서 커스터마이징하는 것이 가장 현실적인 출발점입니다. 그리고 그런 노력의 결과/경험은 또 외부에 공개해서 저변확대에 기여해야 합니다.
** 처음 글을 적어야겠다고 마음을 먹은 시점, 전체 내용을 구성하고 적은 시점, 세부 내용을 수정/보완한 시점, 그리고 공개한 시점이 조금씩 다릅니다. 글의 오리지널리티를 주장하려는 것이 아니라, 주변의 글들을 통해서 생각이 점점 확장/정리되었다는 점을 알려드리려는 겁니다.