자세히 보기

By Kim Jin Cheol

김진철의 How-to-Big Data | 빅데이터 주요 기술의 조건 (2)

지난 칼럼에 이어 이번에는 빅데이터 주요 기술 조건 가운데 빅데이터 분석 플랫폼의 요건에 대해 알아보자. LHC 실험의 공식 데이

LHC 실험의 공식 데이터 분석 플랫폼 – ROOT
LHC 실험을 비롯한 과학실험은 항상 데이터 분석 과정이 필수다. 특히, 실험을 통해 얻은 데이터가 어느 정도로 유의미하고 믿을 만한 것인지, 실험을 수행했을 때 세웠던 가설과 이론적인 연구를 통해 예측했던 결과가 어느 정도로 실험 결과를 잘 설명하는지 확인하기 위해서는 데이터를 정밀하게 수집하고 분석해야 한다. 이런 이유로 데이터 분석은 과학 실험과 연구의 기본이라고 할 수 있고, 언제나 과학자들은 데이터 분석을 효과적으로 할 수 있는 도구를 개발해왔다.

컴퓨터 기술이 개발된 배경에는 여러 가지가 있지만, 무엇보다도 물리학자들과 수학자들이 많이 하게 되는 수치 계산을 빠르고 자동화하려는 목적이 컸다. 컴퓨터 과학과 기술이 발전하면서 컴퓨터 과학 자체의 발전으로 새로운 컴퓨팅 기술과 기술이 등장하기도 했지만, 컴퓨팅 기술의 가장 큰 동인 중의 하나는 더 많은 계산을 더 신속하게 처리할 수 있는 컴퓨터를 만들고, 이렇게 컴퓨터가 더 많은 계산을 신속하게 처리할 수 있도록 명령하는 프로그램, 또는 소프트웨어를 얼마나 빠른 시간에 효과적으로 만드느냐 하는 것이었다.

LHC 가속기 전에 CERN이 수행했던 실험을 위한 가속기인 LEP가 운영되던 1980년대 후반만 해도 과학 분야에서 데이터 분석 소프트웨어가 비중 있게 여겨지지 않았다. 물론 1980년대 들어와 개인용 컴퓨터 기술과 그래픽 프로세서 기술이 발전하면서, MATLAB과 같은 과학기술 계산 전용 소프트웨어와 그래프를 그리는 데이터 분석 도구로 유명한 오리진(Origin)과 같은 소프트웨어가 등장하기는 했지만, 오늘날 생각하는 데이터 분석 소프트웨어와는 거리가 멀었다.

LHC 가속기 전에 물리학자들의 데이터 분석 도구는 프로그래밍 언어였다. 1980년대까지만 해도 과학기술 계산에는 포트란이 많이 쓰였다. 데이터 분석이라고 하면 으레 포트란으로 데이터를 해석, 분석하는 코드를 작성하거나, 수식으로 표현된 방정식을 풀어 계산해주는 수치해석 소프트웨어를 작성하는 것이었다. 이런 프로그래밍 언어의 데이터 분석 보조 환경으로써 그래프 작성 라이브러리, IMSL과 같은 수치 해석 라이브러리 등이 보조적으로 활용되는 형식이었다.

LHC와 같은 거대 과학 실험에서 빅데이터가 쏟아져 나오기 시작하면서 데이터를 수집하고 가공하는 과정에서도 단순한 프로그래밍이 아닌 많은 실험 물리학자와 이론 물리학자가 협업하여 전문 소프트웨어를 개발해야 하는 상황이 되었다. 실험 빅데이터 처리를 위해 컴퓨터 한 대에서의 데이터 분석만으로는 적절한 시간 내에 데이터 분석이 불가능하게 되자, 데이터 분석을 자동화하기 위해 데이터 수집부터 기계 학습과 인공 지능 기술을 이용한 데이터 가공, 분석 자동화, 3D 모델링을 비롯한 데이터 모델링 및 고급 가시화등의 기능이 유기적으로 통합되어 실험 데이터 분석의 생산성을 높이는 전문 소프트웨어 기술이 필요하게 되었다.

ROOT는 CERN의 입자 물리학 실험이 LEP에서 LHC로 세대 교체되면서 ROOT의 창시자인 르네 분(Rene Bune)과 폰즈 라드메이커즈(Fons Rademakers)는 천공카드 입력 시절의 프로그래밍 방식의 유산이 프로그래밍 방식에 남아 생산성과 효율을 저해하는 포트란언어 중심의 PAW(Physics Analysis Workstation; PAW)라는 분석 소프트웨어보다 좀더 현대적이고 효과적인 분석 소프트웨어가 필요하다고 생각하였다[5]. 또한, LHC 실험의 데이터양이 과거 LEP 가속기보다 훨씬 더 많고, LHC 검출기의 구조가 더 복잡하고 해상도가 훨씬 더 높은 것으로 인해 분석이 어려운 것을 고려하여, 3D 모델링 및 가시화 등의 고급 과학기술 계산 및 분석 기법을 손쉽게 사용할 수 있는 분석 플랫폼이 LHC 가속기 실험에서 필요하다고 생각하였다. 이런 배경에서 ROOT라는 새로운 데이터 분석 플랫폼을 개발하였다.

르네 분과 폰즈 라드메이커즈는 과거 물리학자들이 계산과 분석에 많이 쓰이던 포트란언어를 과감하게 버리고, 당시 많이 쓰이던 객체 지향 프로그래밍 언어인 C++언어를 새로운 분석 플랫폼의 기반 언어로 삼았다. 기반 언어를 C++로 바꾸게 되면서 분석 소프트웨어 개발에서 많은 개선이 이루어질 수 있었다.

ROOT에서 분석의 기반이 되는 프로그래밍 언어를 C++로 바꾸게 되면서 물리학자들이 LHC와 검출기 등의 실험 장치를 개발할 때 많이 사용하였던 C와 C++외에 별도의 프로그래밍 언어를 배우지 않고도 데이터 분석 논리를 프로그래밍하고 표현할 수 있게 되었다. 무엇보다도 과거 계산에 많이 사용했던 값 비싼 워크스테이션과 상용 유닉스 계열 운영체제보다 값이 싼 PC급 컴퓨터와 리눅스가 보급되면서 많은 수치 계산 및 데이터 분석, 가시화 관련 소프트웨어가 C와 C++로 개발되어 오픈소스로 배포되기 시작하였다. 리눅스 기반의 오픈소스 과학기술 계산 및 분석, 가시화 소프트웨어를 활용하기 위해서는 C와 C++언어를 사용하는 것이 포트란을 사용하는 것보다 훨씬 수월하였다.

데이터 분석에서 C와 C++ 언어를 사용하는 것의 또 다른 장점은 LHC 실험 장치 시스템의 제어와 원시 데이터를 다루는 데이터 획득 시스템 대부분이 C와 C++로 개발되었다는 것이다. 이 때문에 ROOT를 이용하면 이종 프로그래밍 언어로 개발된 다른 모듈을 링크할 때 생길 수 있는 많은 문제를 사전에 차단할 수 있다.

시스템 소프트웨어를 개발할 때 사용하는 프로그래밍 언어와 환경, 데이터 처리, 가공 과정에서 사용하는 프로그래밍 언어와 환경, 데이터 분석 및 가시화에서 사용하는 프로그래밍 언어와 환경이 서로 다른 것에서 오는 소프트웨어 개발 과정의 어려움이 ROOT를 사용하면 많은 부분 해소된다. 이 때문에 풍부하지 않은 건설 예산과 시간, 전 세계에서 하나밖에 없는 거대한 실험 장치를 짓는 데서 오는 일정과 자원의 불확실성에서 오는 LHC 건설의 어려움을 데이터 수집 및 분석 과정 전반을 하나의 프로그래밍 언어로 표현하고 통합하는 노력 하나만으로도 많이 줄일 수 있었다. 이에 더해서 원시 데이터 수집부터 데이터 가공, 데이터 분석 및 가시화에 이르는 데이터를 다루는 모든 프로세스를 C/C++ 하나의 언어와 ROOT라는 단일 데이터 분석 환경에서 표현할 수 있기 때문에 데이터 분석 과정을 통합하고 관리하기가 쉬워진다(그림 1).

이제 ROOT의 특징에 대해서 살펴보도록 하자. ROOT는 분석 환경이기도 하지만, C/C++ 언어로 개발된 분석 프레임워크이기도 하다. ROOT로 개발된 분석 소프트웨어 소스 코드는 CINT라는 C/C++ 언어 인터프리터를 통해서 대화식으로 분석을 수행할 수도 있지만, ROOT 라이브러리와 같이 링크하게 되면 C/C++ 컴파일러로 컴파일해서 독립적으로 동작하는 응용 프로그램으로도 실행시킬 수 있다.

ROOT는 대화식 분석 환경을 제공하기 위해서 CINT라고 하는 C/C++ 인터프리터를, 최근에는 LLVM 기반으로 저스트 인 타임(Just-In-Time; JIT) 컴파일을 지원하는 CLING을 이용하고 있다. 이 때문에 ROOT 프레임워크와 C/C++언어로 표현된 데이터 분석 로직을 실행해서 결과를 보기 위해 반드시 매번 컴파일할 필요 없이 대화식으로 결과를 바로바로 확인할 수 있다. ROOT 버전 6부터 CLING으로 전환하면서부터 파서와 실행 엔진이 분리되면서 하나의 소스 코드로 표현된 분석 로직을 다양한 하드웨어에서 최적화하고 실행시키기가 더 쉬워졌다. LLVM 기반의 GNU C/C++ 컴파일러를 통해 C++ 11, C++ 14등의 최신 C++ 표준 문법을 위한 별도의 컴파일러를 구할 필요 없이 최신 C++ 구문과 앞선 기능을 지원할 수 있게 되었다.

ROOT와 같은 데이터 분석 플랫폼에서 가장 중요한 것 중의 하나가 원시 데이터와 데이터 소스에 접근하기 쉬워야 한다는 것이다. 특히, 경우에 따라 데이터의 구조가 복잡하고 양이 많은 빅데이터의 경우에는 더욱 원시 데이터와 데이터 소스에의 접근을 쉽게 도와줄 수 있는 도구나 라이브러리가 제공되어야 한다. ROOT의 가장 큰 목적 중의 하나는 LHC 검출기들이 만들어내는 3차원 이벤트 영상 데이터들을 분석하는 것이므로, 분석의 목적에 맞는 이벤트 데이터들을 손쉽게 선택하여 접근할 수 있어야 했다. 이를 위해 ROOT에서는 TTree와 TChain이라는 클래스를 이용해 검출기 이벤트 데이터를 조직화하고, 체계적인 방식으로 이벤트 데이터 내의 다양한 이벤트를 다룰 수 있게 하였다.

그림 1. ROOT 6를 실행시킬 때 나타나는 로고(상단 왼쪽)와 ROOT가 지원하는 응용 프로그램 개발 영역에 대한 그림(상단 오른쪽), ROOT를 이용해 이벤트 데이터의 통계 분석을 수행하는 모습(하단). (그림 출처: https://root.cern.ch/gallery

많은 과학 실험에서 데이터는 수치 데이터의 형태로 얻어진다. 수치 데이터가 가지고 있는 본연의 모델을 다양한 실험으로 밝혀내고, 이렇게 실험 결과를 통해 유추한, 데이터가 만들어지게 된 모델에 대한 통찰력을 지식으로써 응용하여 새로운 발견을 이어 나가는 것이 바로 과학의 연구 방법이다. 특히, 물리학은 고등 수학을 이용한 정교한 수학적 모델을 이용해서 데이터가 말하는 자연이 동작하는 방식을 설명하려고 하는데, 가설로 세운 수학적 모델이 얼마나 잘 맞는지 확인하고 검증하기 위해 통계학적인 방법을 쓰게 된다.

특히 입자물리학에서 다루는 소립자들은 존재하는 환경이 우리가 일상적으로 겪는 환경이 아닌 극한의 환경이기 때문에 소립자들의 상태와 특성을 직접 측정하거나 관찰할 수 없다. 소립자들은 아주 짧은 시간 나타났다가 사라지는 경우가 많기 때문에 그 관찰과 측정이 어려운 경우가 많아서 간접적인 방법으로 측정하는 경우가 많다. 운동량이나 에너지와 같은 물리량을 직접 측정할 수 있다고 해도 워낙 많은 입자가 한꺼번에 검출기에서 쏟아져 나오기 때문에, 각 이벤트가 어떤 입자에서 나온 것인지 구분하기 위해서는 정밀한 통계적인 분석이 필요하다.

이렇게 검출기 이벤트 데이터의 입자물리학적 분석을 위해 필요한 정밀한 통계학적인 분석을 위해 ROOT에서는 이벤트 데이터 분석에서 많이 쓰이는 통계 분석을 위주로 통계 분석 라이브러리를 제공하고 있다. 통계 분석한 결과를 가시화할 수 있도록 다양한 형태의 통계 분포와 정보를 가시화할 수 있는 기능을 제공하고 있다.


그림 2. ROOT에서 이벤트 데이터를 검출기 3차원 모델과 함께 가시화하고, 이벤트 데이터에 대한 통계 분석과 물리학적인 분석 결과를 가시화한 모습. (그림 출처: https://bellenot.web.cern.ch/bellenot/index.html)

ROOT에서는 통계 기반 기계 학습과 신경망 알고리즘을 이벤트 데이터 분석과 마이닝에 쓸 수 있도록 TMVA(Toolkit for Multivariate Data Analysis for ROOT)라는 다차원 변수 통계 분석 라이브러리를 제공한다. TMVA에는 다차원 확률 분포를 가정하는 통계 모델 추정과 분석을 위한 다양한 API들과 도구가 정의되어 있다. 통계 분석에 많이 쓰이는 R과 같이 다양한 통계 분석 알고리즘을 모두 제공하지는 않지만, 입자물리학 데이터 분석을 위해 필요한 다차원 확률 분포 통계 모델 분석을 새롭게 디자인하고 테스트할 수 있는 다양한 API를 제공한다.

요즘 인기를 얻고 있는 인공신경망, 또는 딥러닝 알고리즘을 위한 도구도 바로 이 TMVA 라이브러리의 한 API 형태로 제공하고 있다. 딥러닝을 위한 심층신경망 모델의 학습을 위해 필요한 경사 추종(gradient-descent) 최적화 알고리즘과 시뮬레이티드 어닐링(simulated annealing) 알고리즘 등도 제공한다. 텐서플로와 같은 딥러닝 전용 라이브러리만큼 풍부한 라이브러리를 제공하는 것은 아니지만, 딥러닝 모델을 이용해 이벤트 데이터 분석을 ROOT에서 손쉽게 수행할 수 있는 수준의 라이브러리를 제공하기 때문에 데이터 분석에 유용하게 사용할 수 있다.
 

그림 3. ROOT의 3차원 이벤트 가시화 모듈인 EVE를 사용해서 14TeV로 충돌한 납(Pb) 중이온빔의 이벤트를 ALICE 검출기 모델과 함께 가시화한 모습. (그림 출처: [3])

ROOT의 가장 강력한 기능 중의 하나는 바로 데이터 가시화 기능이다. 데이터 가시화 기능의 수준에는 여러 가지가 있을 수 있는데, 대부분의 데이터 분석 플랫폼에서의 가시화 도구는 차트나 3차원 그래프까지 지원하는 경우가 많다. 그래프 작성 용도 외의 3차원 모델링이나 고급 과학 가시화(scientific visualization)와 같은 기능은 VTK나 Mayavi와 같은 별도의 전문적인 과학 가시화(scientific visualization) 소프트웨어나 CAD/CAE 소프트웨어를 이용해 별도의 3D 모델을 만들어 분석한다.

LHC 검출기 이벤트 데이터 자체가 3차원 영상 데이터이기 때문에, 기본적으로 이벤트 데이터를 보기 위해서는 3차원 영상으로 표현해야 한다. 여기에, 이벤트 데이터를 정확하게 표현하기 위해서는 검출기의 3차원 모델과 함께 이벤트를 표현해야 각 이벤트를 일으킨 입자의 종류와 에너지 등의 물리량을 분석할 수 있다. ROOT에는 LHC 검출기 이벤트 데이터의 이런 특성을 고려하여 검출기의 3차원 모델과 함께 이벤트 데이터를 관찰할 수 있는 이벤트 데이터 가시화 기능을 제공한다.

ROOT의 이벤트 데이터 분석 기능, 강력한 데이터 가시화 기능을 바탕으로 검출기를 비롯한 방사선 장비의 물리적인 검출 특성을 모델링하고 분석할 수 있는 시뮬레이션 소프트웨어인 GEANT4를 같이 사용하면 검출기에서 일어나는 입자 물리학적 이벤트를 편리하게 분석할 수 있다(그림 3). ROOT에서 제공하는 GEANT4 VMC 툴킷과 G4ROOT 툴킷을 이용하면 ROOT에서 GEANT4 시뮬레이션 결과를 이벤트 데이터와 같이 대조, 분석해볼 수 있다.

지난 열다섯 번째 글에서 이미 상세히 소개했지만 환기 차원에서 다시 언급하자면, ROOT에서는 이벤트 데이터의 대규모 병렬 처리와 분석을 위해 PROOF를 지원한다. PROOF의 최근 버전에서 제공되는 TProcessExecutor와 TThreadExecutor 클래스를 이용하면 하둡과 같은 맵리듀스 패턴의 병렬 연산도 ROOT에서 수행할 수 있다. 최근에는 하둡과 스파크와 같은 오픈소스 빅데이터 병렬, 분산 처리 소프트웨어를 사용할 수 있도록 하둡과 스파크에서 ROOT 작업을 실행하는 방법에 대해서도 많이 연구되고 있다[7-19].

ROOT는 입자물리학 분야에서 명실상부한 표준 분석 플랫폼으로 자리 잡았다. ROOT는 과거 물리학자들의 분석 도구였던 포트란 기반의 분석 소프트웨어 개발을, 새로운 컴퓨팅 기술의 발전에 맞추어 과감하게 C와 C++언어 기반으로 바꾼 중요한 분석 소프트웨어 플랫폼이다. C/C++ 기반의 ROOT가 고에너지 물리학 분야에서 많이 쓰이기 시작하면서, 실험 장치 원시 데이터 수집부터 장치 제어, 데이터 분석 및 가시화에 이르는 모든 영역에서 C/C++ 하나의 프로그래밍 언어로 소프트웨어 개발이 가능해졌다. 이렇게 하나의 프로그래밍 언어 환경으로 실험 장치 개발 및 분석 환경이 통합되면서 물리학자들의 실험 및 데이터 분석의 생산성이 크게 좋아졌고, 이는 결국 LHC 건설, 가동 5년만인 2013년의 힉스 보존 발견으로 이어졌다.

빅데이터 문제 해결 과정을 묶어주는 끈 – 데이터 분석 플랫폼
LHC와 같이 과학 발견의 최전선을 이끄는 과학 실험들은 언제나 실험이 디자인되고 실행될 당시에는 아무도 해결해본 적이 없는 기술적인 난제에 부딪히게 마련이다. 이런 기술적인 난제를 해결하기 위해서는 과거와는 다른 방식으로 문제를 해결할 수 있게 하는 도구가 필요한 경우가 많다. 이 때문에 최첨단 과학 실험을 통해 개발되는 기술들이 이후 산업 발전을 이끄는 혁신적인 기술들로 발전하게 되는 경우가 많다.

LEP 가속기 실험이 종료되고, LHC 실험이 시작되면서 알게 된 LHC의 빅데이터 분석 문제를 해결하기 위해서도 LHC 연구자들은 역시 같은 문제에 부딪히게 되었다. 과거 물리학자들이 계산과 데이터 분석에 사용했던 포트란의 낡은 구문과 프로그래밍 방식은 LHC 시대의 복잡한 실험 장치 개발 및 운용과 빅데이터 분석에서는 더 이상 효과적이지 않았다. 포트란으로 개발되어 고가의 워크스테이션에서 사용하면서 LEP실험의 약력 상호작용(weak interaction)의 실재를 밝히는데 중요한 입자였던 W와 Z 보존 발견에 쓰였던 PAW라는 분석 소프트웨어로도 충분하다는 사람들도 있었지만, 결국 LHC 빅데이터 분석을 위해서는 LHC 가속기가 건설되는 시점에서의 컴퓨팅 기술의 발전과 패러다임에 맞는 새로운 분석 소프트웨어 기술이 필요했고, 이러한 새로운 분석 소프트웨어 기술의 필요성에 대한 공감이 ROOT라는 C/C++기반의 분석 소프트웨어 개발로 이어졌다.

지금 당장은 하둡이나 하둡 에코 시스템에서 많이 쓰였던 데이터 조작 및 분석 환경인 하이브(Hive)나 H베이스(HBase), 최근에는 파이썬이나 R 기반의 데이터 분석 환경으로 모든 문제가 다 해결될 것같이 보이거나 그렇게 얘기하곤 한다. 하지만 IT 및 컴퓨팅 하드웨어와 소프트웨어 기술의 발전과, 기술과 사회의 발전에 따른 새로운 비즈니스 모델 요구는 새로운 분석 소프트웨어 기술을 필요로 하게 될 것이다. 이 때문에 하나의 소프트웨어로 모든 빅데이터 문제가 풀릴 것같이 얘기하는 것은 섣부른 결론이다.

현재 알려진 분석 플랫폼 소프트웨어들은 데이터 기반 비즈니스 모델을 위한 대부분 요구사항과 문제를 해결하는 데 사용하기 하기 좋은 소프트웨어 도구로 보고 분석 소프트웨어 선택과 결정에 접근하는 것이 좋다. 좋다고 알려진 분석 소프트웨어도 결국 기업의 비즈니스 요구사항에는 잘 맞지 않을 수 있으므로, 기업의 데이터 기반 비즈니스 요구사항과 목적에 대해 분명하게 생각을 정리하고 이에 맞는 특성과 장점이 있는 분석 플랫폼을 선정하는 것이 중요하다.

단적인 예를 들자면 요즘 파이썬이 분석 소프트웨어 플랫폼으로 많이 활용되고 있고, 실제로 파이썬은 대부분의 분석 소프트웨어 개발에 좋은 풍부한 에코시스템 도구들과 라이브러리를 갖추고 있어 편리하다. 하지만, 서버 한대 단위의 통계 데이터 분석이 주가 된 데이터 분석을 하는 기업이 이미 잘 쓰고 있는 SAS나 S, R과 같은 통계 분석에 적합하게 만들어진 분석 환경을 버리고 구글과 같은 유명한 글로벌 기업이 사용한다고 해서 무리하게 파이썬으로 갈아타려고 한다거나 해서는 안 된다는 것이다.

분석 소프트웨어로 만들어진 분석 소스 코드들은 그 자체로 조직의 자산이다. 데이터로부터 통찰과 가치를 끌어내는 이런 분석 소스 코드들은 분석 소프트웨어 플랫폼에서 실행될 때만 지속해서 통찰과 가치를 줄 수 있다. 분석 소프트웨어 플랫폼을 바꾸면서 기존의 분석 소스 코드들을 새로운 분석 플랫폼에서 실행시키기 위해 옮기고 새로 작성하는데 드는 노력과 시행착오가 과연 지금 시점에서 기업의 비즈니스 수행에 그만한 가치가 있는지 짚어봐야 한다.

분석 소스 코드들은 소스 코드만 읽어서는 이해가 되지 않는 경우가 많다. 분석 소스 코드가 그렇게 작성될 수밖에 없었던 그 배경 지식과 분석 내용을 이해하지 않고서는 소스 코드의 로직을 이해하기 어려운 경우가 많다. 따라서, 분석 내용과 소스 코드의 내용을 같이 담아 배치하고, 분석 논리의 흐름에 따라 분석 소스 코드를 실행하고 인터액티브하게 결과를 확인해볼 수 있는 주피터(Jupyter)와 같은 소프트웨어 도구는 데이터 분석 자산을 효과적으로 활용하기 위해 중요한 소프트웨어 도구다.

분석 소프트웨어 플랫폼, 특히 빅데이터를 분석하기 위한 분석 플랫폼의 선택과 운영에서 고려해야 할 사항들이 있다. 먼저, 빅데이터 분석 소프트웨어 플랫폼 내에서 다양한 데이터 소스에의 접근이 쉬워야 한다. 이것은 필자가 빅데이터 비즈니스에서 데이터 수집이 가장 중요하다고 말한 것과 일치한다. 일단 분석해야 할 데이터가 있어야 데이터 분석을 할 수 있기 때문에, 분석에 필요한 데이터 소스를 손쉽게 찾아서 접근하여 얻을 수 있도록 분석 플랫폼에서 다양한 데이터 소스에의 연결과 데이터 획득이 쉬워야 한다.

ROOT의 경우 C/C++로 개발되어 있어서, 다양한 센서 및 데이터 수집 장치에 접근하여 데이터값을 가져오기가 매우 편리했다. 검출기를 비롯해 입자물리학 실험을 위한 대부분의 실험장치들의 데이터 수집 기능을 하드웨어 디바이스 드라이버를 통해 C/C++언어로 작성하기 때문에 원시 데이터 소스에 접근해 쉽게 데이터를 얻을 수 있었다. 하드웨어 및 센서 데이터 외의 데이터베이스와 이벤트 데이터의 메타데이터, 그리드 스토리지 서비스에 저장된 이벤트 데이터 아카이브 등, ROOT 안에서 다양한 데이터 소스의 접근이 쉬웠기 때문에 복잡한 이벤트 데이터 분석이 훨씬 더 간편했다.

두 번째로 빅데이터를 위한 분석 플랫폼 내에서 하둡이나 스파크와 같은 빅데이터 병렬, 분산 처리 기술 및 인프라와의 연동이 쉬워야 한다. 이는 빅데이터 분석을 하기 전에, 분석에 적합하도록 데이터를 가공하는 과정 대부분에서 병렬, 분산 처리 기술을 사용해야 하기 때문이다. 분석에 필요한 빅데이터 처리와 가공을 데이터 엔지니어가 전담해서 대신해주는 방법도 있겠지만, 분석해야 할 대상이 분명하지 않을 경우 탐색적 데이터 분석 등을 통해서 적절한 분석 방법을 먼저 찾아야 하는 경우에는 데이터 과학자나 데이터 분석가가 간단하게 데이터 가공 과정을 먼저 프로토타이핑해봐야 하는데, 이때 빠르게 프로토타이핑하기 위해서 우선 빅데이터 분석 플랫폼 내에서 병렬, 분산 처리 기술과 인프라를 사용하기 쉬워야 한다.

빠른 프로토타이핑뿐만 아니라, 데이터 엔지니어가 데이터 과학자와 같은 분석 플랫폼과 프로그래밍 언어로 빅데이터 가공 과정을 기술하고 개발하면 빅데이터 분석 소프트웨어 자산을 관리하기 쉽고 데이터 엔지니어와 데이터 과학자 간 협업도 쉽다. 데이터 과학팀의 협업을 원활하게 하기 위한 목적으로라도 빅데이터 분석 플랫폼 내에서 병렬, 분산 처리 기술과 인프라와의 인터페이스가 간결하게 잘 갖추어져 있는 것이 좋다.

세 번째로 빅데이터 분석 플랫폼과 워크플로우 엔진, 또는 비즈니스 프로세스 오케스트레이터와의 연동이 쉬워야 한다는 것이다.

데이터 과학자, 데이터 엔지니어, 도메인 전문가 및 데이터 과학팀 내 전문가들의 협업과 데이터 분석 목표를 명료하게 가시화하고 협업의 내용을 분명하게 하기 위해, 분석 프로세스를 가시화하고, 가시화된 분석 프로세스대로 빅데이터 처리, 가공과 분석이 자동화가 되면 분석 과정 자산화와 생산성이 크게 향상되게 된다. LHC의 경우 그리드 자원에서의 대규모 작업 실행을 위한 데이터 가공 및 분석 과정을 손쉽게 기술하고 오케스트레이션하기 위해 타베르나(Taverna)와 같은 그리드 워크플로우 엔진이 개발되어 활용되었다.

마지막으로 빅데이터 분석 플랫폼이 중요하게 갖춰야 할 것은 바로 데이터 가시화다. 손쉽게 데이터 가시화를 만들고, 복잡한 데이터를 효과적으로 가시화하고 탐색할 수 있는 인터페이스와 기능을 제공하는 것이 매우 중요하다.

데이터 가시화라고 하면 보통 차트를 그리는 것을 많이 생각하는데, 필자가 얘기하는 데이터 가시화 작업의 범위는 훨씬 더 넓고 창의적인 과정을 포함한다. 물론 숫자로 된 데이터를 차트로 시각화하는 것도 아주 단순한 형태의 데이터 가시화에 속하지만, 빅데이터를 온전하게 이해하기 위해서는 차트만해도 수십, 수백 가지의 차트를 그려야 할 수도 있고, 그렇게 많고 복잡하게 얽혀 있는 차트들 간의 연관성과 관계를 이해하기가 어려울 수도 있다. 필자가 얘기하는 데이터 시각화는, 숫자나 문자, 또는 기호로 표현된 데이터 속의 숨은 의미와 연관성을 한눈에 확인할 수 있는 형태의 시각적 모델이나 표현으로 표현되는 것을 말한다.

잘 만들어진 데이터 시각화는 데이터가 가정하는 모델이나 데이터의 주요 변수 간의 연관 관계, 데이터가 가진 추상적인 구조를 파악하고 이를 효과적으로 3차원 모델이나 그림으로 표현한다. 데이터 과학자가 데이터 속에 숨은 의미를 드러낼 수 있는 가시화 방법을 찾는 것 자체가 복잡하고 많은 시행착오를 거치는 어려운 과정일 수 있다. 빅데이터의 경우에는 이런 데이터를 가시화하는 데에도 많은 컴퓨팅 자원이 필요할 수 있어서, 가시화를 효과적으로 할 수 있는 시스템을 잘 갖추는 것이 데이터의 숨은 의미를 찾아내기 위해 들이는 시간을 줄이는 데 큰 도움이 되기도 한다.

ROOT의 경우에는 데이터 가시화의 핵심 요구사항은 검출기의 3차원 모델과 각 입자들의 이벤트 데이터를 같이 표현하여 검출기 내에서 나타난 이벤트 데이터를 관찰할 수 있어야 하고, 시뮬레이션 데이터와의 비교와 분석을 위한 다양한 통계 그래프들과 자동으로 추가된 메타 데이터에 따른 이벤트 종류들 간의 구조를 같이 관찰할 수 있어야 했다. 이 때문에 그림 2와 3에서 본 것과 같은 통계 그래프에서부터 검출기와 이벤트의 3차원 모델에 이르는 복잡한 가시화에 이르는 다양한 가시화 가능이 개발됐다.

분석 플랫폼에 필요한 데이터 가시화의 종류와 내용이 많다고 해서 데이터 분석에 효과적인 것은 아니다. 물론 데이터 가시화가 다양한 관점에서 표현되면 데이터를 다양한 관점에서 분석할 수 있기 때문에 도움이 될 수 있겠지만, 데이터의 구조와 숨은 의미를 손쉽게 파악할 수 있는 핵심적인 가시화가 아닌 것들이 많아지게 되면 오히려 분석에 방해가 되는 경우가 많다. 탐색적 데이터 분석이나 효과적인 데이터 가시화 방법을 찾기 위해 초반에는 데이터 가시화 프로토타이핑을 빠르고 많이 할 수 있는 분석 플랫폼의 가시화 기능이 중요하지만, 가시화 방법과 가시화 내용이 어느 정도 결정된 후에 모니터링과 이상 데이터 분석(anomaly detection and analysis)과 같은 목적으로 쓰이는 가시화는 가시화된 데이터와의 빠르고 편리한 상호작용이 더 중요하게 된다.

최근 데이터 분석 플랫폼으로 많이 언급되는 기술은 통계 분석으로는 R, 일반적인 데이터 분석으로는 파이썬 기반의 넘피(Numpy), 사이파이(SciPy), 그리고 줄리아(Julia) 등의 새로운 언어를 포함한다. 이런 오픈소스 데이터 분석 플랫폼 외에 전통적으로 많이 쓰이던 MATLAB, SAS, SPSS 상용 데이터 분석 플랫폼도 여전히 많이 쓰이고 있다.

상용 분석 플랫폼은 안정적인 계산과 최적화된 연산 성능 외에 다양하고 복잡한 분석 도구와 라이브러리에 대한 기술 지원과 컨설팅을 통해 분석을 쉽게 해준다는 장점이 있다. 하지만, MATLAB, SAS, SPSS과 같은 상용 분석 플랫폼은 빅데이터 병렬 처리 기술이나 새로운 가시화 기술과 같이 새로운 기술이 적용되어 사용하는 데 시간이 걸린다. 상용 분석 플랫폼은 대개의 경우 폐쇄적인 아키텍처를 가지고 있고 소프트웨어를 공급하는 회사에서 지원하는 소프트웨어 도구만을 사용할 수 있기 때문에 다른 오픈소스 소프트웨어 도구나 빅데이터 소프트웨어 도구와의 연동이 쉽지 않아 새로운 빅데이터 분석 수요에 유연하게 대응하지 못하는 단점이 있다.

상용 분석 플랫폼의 이런 단점은 데이터 기반의 새로운 비즈니스 모델을 추구하는 기업들에게는 걸림돌이 될 수 있다. 데이터를 기반으로 풀려고 하는 문제의 영역과 종류가 어느 정도 분명한 경우에는 이에 맞는 상용 분석 플랫폼을 사용하는 것이 비즈니스의 스피드와 생산성을 높이는 데 도움이 되겠지만, 새로운 비즈니스 모델과 이 비즈니스 모델을 떠받치는 데이터를 기반으로 한 프로세스 자동화를 통해 비즈니스의 기민성을 높여 차별화를 하고자 하는 기업은 상용 분석 소프트웨어 제품이 차별화를 만들어 내는 데 걸림돌이 될 수도 있다.

이런 이유로 오픈소스 분석 플랫폼을 많이 사용하게 되는데, 파이썬 기반의 분석 플랫폼인 넘피, 사이파이와 같은 분석 플랫폼이 대표적이다. 파이썬은 장고(Django)와 같은 훌륭한 파이썬 기반 웹 프레임워크를 통해 웹 응용 프로그램이나 SOAP와 같은 XML 기반 메시지, 또는 REST 기반의 웹 서비스와 소프트웨어 도구들을 쉽게 통합할 수 있다. 이를 통해서 웹 생태계에서 다양한 데이터를 수집하고 다양한 서비스, 소프트웨어 도구와 연결하여 새로운 데이터 처리 및 분석 파이프라인을 만들 수 있다. 파이썬 언어가 개발되면서 가장 많이 쓰인 분야가 과학기술 계산 분야였기 때문에, 데이터 분석에 사용되는 과학기술 계산 라이브러리와 도구들이 파이썬만큼 풍부하게 지원되는 플랫폼은 현재 없다.

파이썬은 디자인될 때부터 C/C++언어로 개발된 다양한 소프트웨어 기능들을 통합하는 점착 언어(glue language)로서 개발되었기 때문에, 현재 C와 C++언어로 개발된 리눅스와 같은 유닉스 계열 운영체제의 대부분의 소프트웨어와 라이브러리들을 포용하고 통합하기가 쉽다. 파이썬 언어의 이런 특성은 데이터 분석 파이프라인과 워크플로우를 기술하는 언어로서도 파이썬이 훌륭하게 적용될 수 있게 한다.

최근 파이썬이 데이터 분석에 많이 활용되는 또 하나의 이유는 주피터라는 훌륭한 웹 기반 분석 도구 때문이다. 주피터는 분석 과정과 내용을 웹 문서로 작성하면서, 문서 중간마다 실제로 분석을 수행하고 결과를 보여주는 분석 코드들을 삽입하여 분석 내용과 분석 결과를 웹 문서상에서 동시에 공유할 수 있게 해준다. 데이터 분석 내용은 대개 소스 코드만 보아서는 그 내용을 짐작하기 어려운 경우가 많아 데이터 분석 보고서나 문서를 같이 읽어보아야 하는데, 주피터를 통해 데이터 분석 과정과 실제 분석 결과를 데이터 과학자들 간에 쉽게 공유하고 분석 결과를 재연, 검증, 확장할 수 있게 되었다.

이런 웹 기반의 데이터 분석 수행과 문서화는 ROOT에서도 도입이 되고 있는데, SWAN이라고 불리는 ROOT as a Service 플랫폼은 ROOT의 C++ 데이터 분석 소스 코드를 주피터 상에서 웹 노트북 형태로 작성하고 공유할 수 있도록 해준다[6]. 파이썬과 주피터 기반의 웹 기반 분석 환경 기술이 다시 ROOT 기반의 LHC 데이터 분석 환경을 개선하는 데 도움을 주고 있다.

통계 분석 환경으로 개발된 R도 비즈니스 데이터 분석, 통계 모델을 이용한 데이터 분석과 통계적 기계 학습을 이용한 분석에 많이 활용되고 있다. 함수형 언어인 하스켈(Haskell)과 스칼라(Scala)도 최근에는 데이터 분석 환경으로 주목받고 있다. 특히, 스칼라 언어는 그 특유의 확장성과 간결한 문법, 아카(Akka) 프레임워크를 통한 손쉬운 병렬, 분산 알고리즘 개발을 지원하여 최근 차세대 과학기술 계산과 분석 환경으로 떠오르고 있다. 이외에 줄리아, 코틀린(Kotlin)같은 자바 가상머신에 기반을 둔 새로운 언어들도 자바로 개발된 다양한 웹 애플리케이션 프레임워크와 소프트웨어 도구와의 연동이 쉬운 장점을 바탕으로 데이터 분석 환경으로 새롭게 주목받고 있다.

데이터 분석 플랫폼은 컴퓨팅 기술이 발전하면서 다양한 방식으로 확장, 개선되며 발전할 것이다. 특히, 대규모 빅데이터 연산을 위한 병렬, 분산 알고리즘 개발과 실행을 손쉽게 지원하여 분산 컴퓨팅 자원을 데이터 분석에 효과적으로 활용할 수 있는 데이터 분석 플랫폼이 빅데이터 시대에는 많이 쓰일 것이다. 이런 측면에서는 스칼라 언어가 빅데이터 시대의 데이터 분석 플랫폼으로 많은 장점이 있다.

스칼라 언어가 현재 데이터 분석 환경으로 많이 쓰이고 있는 파이썬을 당장 대체하지는 않겠지만, 자바 가상머신 기반으로 자바 언어 생태계의 소프트웨어 도구들과의 연동이 쉽고, 최근 개발된 스칼라 네이티브를 이용하면 C/C++ 언어 기반의 과학계산 소프트웨어 라이브러리들과의 통합도 용이한 장점이 있어 손쉽게 과학기술 계산용 소프트웨어 생태계를 구축할 수 있을 것으로 보인다. 빅데이터 시대의 데이터 분석 요구사항에 대비하려는 조직에서는, 파이썬, R과 함께 스칼라를 데이터 분석 환경으로 같이 고려해보면 좋을 것 같다.

[참고문헌]
[1] 김진철, “LHC에서 배우는 빅데이터와 machine learning 활용 방안”, 2016년 9월 28일, A CIO Conversation for Technology Leadership – Breakfast Roundtable 발표 자료
[2] B. Bellenot, R. Brun, G. Ganis, J. Iwaszkiewicz, F. Rademakers, M. Ballintijn, “PROOF: Parallel ROOT Facility – Poster Presentation.“
[3] ROOT Documentation – The Event Display classes, https://root.cern.ch/root/html/GRAF3D_EVE_Index.html .
[4] ROOT Documentation – An event display based on ROOT GUI, https://root.cern/event-display-based-root-gui .
[5] PAW: Physics Analysis WorkStation, http://paw.web.cern.ch/paw/.
[6] L. Moneta, X. Valls, E. Tejedor, D. Piparo, P. Mato, L. Mascetti, J. Moscicki, M. Lamanna, “ROOT as a Service for Web-based Data Analysis, SWAN,” lecture at GridKa School 2016, August 29 – September 2, 2016.
[7] D. Piparo, “Expressing Parallelism with ROOT,” CHEP 2016.
[8] Fabian Glaser, Helmut Neukircheny, Thomas Rings, Jens Grabowski, “Using MapReduce for High Energy Physics Data Analysis,” Proceedings of the 2013 International Symposium on MapReduce and Big Data Infrastructure (MR.BDI 2013), 03-05 December 2013, Sydney, Australia 2013. DOI: 10.1109/CSE.2013.189, IEEE 2013. (https://goo.gl/Fxf9vp)
[9] Jim Pivarski, “Lowering boundaries between data analysis ecosystems,” in Future Trends in Nuclear Physics Computing Workshop, at CEBAF Center, Jefferson Lab ( F113 ), May 3, 2017. (https://www.jlab.org/indico/event/213/)
[10] Evangelos Motesnitsalis, “Physics Data Analytics and Data Reduction with Apache Spark” XLDB 2017, 10 Oct. ~ 12 Oct., 2017.
[11] Oliver Gutsche, Luca Canali, Illia Cremer, Matteo Cremonesi, Peter Elmer, Ian Fisk, Maria Girone, Bo Jayatilaka, Jim Kowalkowski, Viktor Khristenko, Evangelos Motesnitsalis, Jim Pivarski, Saba Sehrish, Kacper Surdy, Alexey Svyatkovskiy, “CMS Analysis and Data Reduction with Apache 스파크,” ArXiv Preprint:1711.00375, https://arxiv.org/abs/1711.00375 .
[12] Stefano Alberto Russo, “Using the Hadoop/MapReduce approach for monitoring the CERN storage system and improving the ATLAS computing model,“ CERN Document Archive: CERN-THESIS-2013-067, 2013.
[13], CERN IT-DB, Hadoop and Analytics at CERN IT, Meeting with Microsoft, 7 November 2016. (https://goo.gl/JeGkWU)
[14] C Nieke, M Lassnig, L Menichetti, E Motesnitsalis, and D Duellmann, “Analysis of CERN computing infrastructure and monitoring data,” Proceedings of the 21st International Conference on Computing in High Energy and Nuclear Physics (CHEP2015), Journal of Physics: Conference Series 664, 052029, 2015.
[15] Jim Pivarski, “Reading ROOT data in Java and Spark,” Princeton University – DIANA Seminar, 7 November, 2016.
[16] S. A. Russo, M. Pinamonti and M. Cobal, “Running a typical ROOT HEP analysis on Hadoop MapReduce,” Proceedings of the 20th International Conference on Computing in High Energy and Nuclear Physics (CHEP2013), Journal of Physics: Conference Series 513, 032080, 2014.
[17] Z. Baranowski, L. Canali, R. Toebbicke, J. Hrivnac, D. Barberis, “A study of data representation in 하둡 to optimize data storage and search performance for the ATLAS EventIndex,” Journal of Physics: Conf. Series 898, 062020, 2017. (doi :10.1088/1742-6596/898/6/062020)
[18] Zbigniew Baranowski, Maciej Grzybek, Luca Canali, Daniel Lanza Garcia, Kacper Surdy, “Scale out databases for CERN use cases,“ Proceedings of the 21st International Conference on Computing in High Energy and Nuclear Physics (CHEP2015), Journal of Physics: Conference Series 664, 042002, 2015. (doi:10.1088/1742-6596/664/4/042002)
[19] 김진철, “[김진철의 How-to-Big Data] 15. 빅데이터 주요 기술의 조건 (1) – 빅데이터와 병렬 처리,” 2018년 3월 23일자, CIO Korea. (http://www.ciokorea.com/news/37672)

*김진철 박사는 1997년 한국과학기술원에서 물리학 학사, 1999년 포항공과대학교에서 인공신경망에 대한 연구로 석사 학위를, 2005년 레이저-플라즈마 가속기에 대한 연구로 박사 학위를 받았다. 2005년부터 유럽입자물리학연구소(CERN)의 LHC 데이터 그리드 구축, 개발에 참여, LHC 빅데이터 인프라를 위한 미들웨어 및 데이터 분석 기술을 연구하였다. 이후 한국과학기술정보연구원(KISTI), 포항공과대학교, 삼성SDS를 거쳐 2013년부터 SK텔레콤에서 클라우드 컴퓨팅과 인공지능 기술을 연구하고 있다. 빅데이터와 인공지능 기술의 기업 활용 방안에 대해 최근 다수의 초청 강연 및 컨설팅을 수행하였다. dl-ciokorea@foundryco.com