본문 바로가기

Home > 열린마당 > 공개SW 소식

공개SW 소식

빅데이터, '파이썬'에 길을 묻다

OSS 게시글 작성 시각 2015-04-13 16:55:55 게시글 조회수 3282

2015년 04월 12일 (일)

ⓒ 블로터닷넷, 이성주 기자 consult@codebasic.co



정보와 지식은 다르다. ‘길에 10원짜리 동전이 떨어져 있다’는 말은 정보다. 그런데 이것이 지식인지는 아직 모른다. 지식이 되려면 의미 있는 체계가 있어야 하기 때문이다. 예컨대 이것은 지식이다. ‘4㎢ 당 평균 10만원어치 화폐가 떨어져 있다.’ (내용을 위한 예시이니, 동전 주으러 다니는 수고는 하지 않기를 권한다.) 왜 이것은 정보가 아니라 지식일까.


지식은 정보로 이뤄져 있지만, 정보 뿐 아니라 지식 체계에 편입될 수 있는 형태로 가공돼야 하기 때문이다. ‘4㎢ 당’으로 시작하는 저 지식이 사실이라면, 중학교 수준 이상의 교육을 받은 사람이라면 16㎢에는 평균 40만원의 화폐가 떨어져 있다는 걸 받아들일 수 있기 때문이다. ㎢ 같은 계량형과 ‘평균’ 같은 통계적 지식으로 표현되면 길에 떨어진 10원짜리는 정보의 수준을 넘어 지식이 될 수도 있다.


데이터 분석을 수행하는 사람들의 역할은 정보를 지식을 바꾸는 것이다. 그 데이터 규모가 작을 때는 액셀과 같은 스프레드시트가 데이터 분석가가 가장 사랑하는 도구였다. 그런데 지금의 데이터는 무척 크다. 그래서 ‘빅데이터’가 새로운 외래어 명사로 받아들여지고 있다.


데이터는 왜 그렇게 커졌을까? 그리고 얼마나 더 커질까? 데이터 규모의 증가는 네트워크 효과를 따른다. 즉, 상호작용이 발생하면 정보 조합이 기하급수적으로 늘어난다. 사실, 우리는 늘 네트워크 효과를 경험한다. 내가 무언가를 알고 있는데, 누군가와 대화하면 서로 정보와 지식의 총량이 증가한다. 예전에는 대체로 가까운 거리에 모인 사람끼리 대화를 통해 지식을 나누었다. 지금은 우리가 어디에 있든 끊임없이 대화한다. 생산되는 정보와 지식의 가치는 상대적이지만, 총량의 증가는 필연적이다. ‘인류의 지식 총량이 1년에 몇백%씩 증가한다’는 학계의 주장이 있는 이유도 인터넷과 같은 네트워크 효과에 근거한다.


▲사진 : Flickr Duncan Hull https://www.flickr.com/photos/dullhunk/9756073295. CC BY.https://creativecommons.org/licenses/by/2.0/
▲사진 : Flickr Duncan HullCC BY.


네트워크 효과에 기여하는 건 통신 기술의 발전 뿐만은 아니다. 정보 저장장치의 집적도도 정보의 팽창 속도를 가속화하고 있다. 전자공학의 발전 이전에는 책과 그림, 사진이 반영구적인 지식의 저장수단이었다. 그 이전에는 그 지식을 보유한 사람들의 두뇌가 정보를 저장하는 가장 중요한 매체였다. 20세기 전자공학이 발전되기 시작하면서 지금은 1천만권의 장서를 보유한 도서관의 책, 그림, 마이크로필름을 우리가 커피숍에 들고 다니는 노트북에 다 저장할 수 있게 됐다. (하지만 우리에겐 가족여행 사진과 고용량 게임이 더 중요하니, 책은 도서관에 계속 저장하는 편이 낫겠다.)


6개월여 주기로 더 빠른 프로세서, 더 크고 빠른 용량의 저장장치가 나온다. 유선은 점차 무선으로 바뀌어 나간다. 그러므로 ‘데이터가 얼마나 커질 것 같냐’는 두 번째 질문은, 데이터가 지금처럼 증가한 이유가 사라지지 않는 이상 기하급수적인 증가 추세가 계속될 것이란 예상에 힘을 보탠다.


이제 데이터 분석가가 액셀과 같은 스프레드시트로만 작업을 수행하던 환경은 이미 지났으며, 다시 돌아오지 않을 시절이 됐음에 공감하실 게다. 그럼 데이터 분석가에겐 무엇이 필요할까? 계속해서 변화해 왔지만 특정한 임계점을 지나서 두드러지기 시작한 빅데이터 분석은 데이터 분석가에게 꽤나 당혹스러울 수 있다. 갑자기 프로그래머가 돼야 할 것 같고, 도구는 너무 많다. 개인은 혼란스럽다. ‘데이터과학’이 진짜 직업이나 경력이 될 수 있을까? 이 질문은 ‘프로그래머가 직업이 될 수 있을까?’라는 질문에 1980년대 대답이 어땠을까를 상상하면 도움이 될 듯하다. (참고로, 1980년대 프로그래머들 중 세계 제일의 부자 반열에 든 사람들은 여럿 있다.)


빅데이터 분석이 나아갈 길임을 공감한 조직이나 전문가인 개인 앞엔 또 다른 질문이 기다리고 있다.

• 저는 뭘해야 할까요?”
• 제가 할 수 있을까요?”
• “제가 해야 하나요?”
• “근데 어떻게 해야 하나요?”


이러한 질문들에 답하기 위해 몇 가지 전제가 필요하다. 우리는 도구가 아닌 목표를 사랑해야 한다. 도구 학습만으로는 그다지 유용하지 않기 때문이다. 우리의 목표는 정보로부터 지식과 통찰을 얻는 것이다. 그런 관점에서, 우리가 사용하는 도구는 ▲되도록 여러 곳에서 두루 사용되는 ‘범용성’ ▲우리의 번뜩이는 분석적 영감과 일정 압력 하에서도 효율적으로 분석을 진행할 수 있는 ‘분석 효율성’ ▲내가 잠든 사이에도 전세계의 수많은 데이터과학자, 소프트웨어 공학자들이 지속적으로 기여하는 ‘기술 커뮤니티’가 중요하다.


▲사진 : Flickr Kushal Das https://www.flickr.com/photos/kushaldas/989250288. CC BY.https://creativecommons.org/licenses/by/2.0/
▲사진 : Flickr Kushal DasCC BY.


빅데이터 분석은 여러 가지 기술의 집합이다. 우리가 분석할 데이터들은 종류, 형태, 크기를 비롯해 분석 사양도 다양하다. 이런 환경에서 가장 주의해야 하는 것은 너무 많은 도구를 도입하는 것이다. 각 도구의 효과성은 ‘엔터’키 하나 눌렀을 때를 비교하는 것이 아니라, 해당 도구에 숙련됐을 때의 효과성을 비교해야 한다. 숙련은 시간과 집중된 노력을 그 재료로 삼는다. 우리의 시간과 집중력은 유한하고, 데이터는 이미 너무 많고, 우리가 처리하든 말든 계속 늘어날 것이다. 네트워크 효과로 증가하는 데이터를 상대하는 전략은 역시 네트워크 효과로 발전하는 도구를 선택하는 것이다.


파이썬 프로그래밍 언어는 한국에 2008년께 한국어 입문서를 통해 소개됐다. 그래서 ‘새롭다’고 느끼는 경우가 많지만, 사실은 그렇지 않다. 파이썬은 1991년에 나왔다. 1995년의 자바보다 먼저 나온 프로그래밍 언어다. 성공적인 프로그래밍 언어는 플랫폼이다. 운영체제와 프로그래밍 언어는 불가분의 관계다. 우리는 프로그래밍 언어를 통해서만 운영체제를 다룰 수 있고, 운영체제로 기계를 다룰 수 있다. 따라서, 프로그래밍 언어를 다루는 것은 사실 운영체제를 다루는 것이고, 그로써 기계를 다루며, 기계로써 우리는 정보와 지식을 표현한다. 그래서 프로그래밍 언어의 진정한 가치는 타입이 있냐 없냐, 문법이 간결한가보다는 그것으로써 동작하고 제어할 수 있는 것들이 얼마나 많은가에 달려 있다. (물론 이왕이면 문법이 간결하면 좋겠지만.)


이런 면에서 파이썬은 간결해 보이지만 여러 운영체제에서 동작하는 거의 모든 것을 조작할 수 있고, 그 과정이 대체로 일관성 있고, 상대적으로 수월한 편이다. 또한 데이터 분석에 사용되던 기존 C/C++ 라이브러리를 흡수해 네트워크 효과가 크게 발생했다. 문법적 간결성과 효과적인 자료 구조 덕분에 2차원 이상의 데이터를 표현하는 능력도 비교적 손쉽게 달성했다. 미국의 여러 빅데이터 솔루션 회사들이 파이썬을 플랫폼으로 삼는 것은 이러한 점이 반영된 결과다.


도구가 목표가 아니라고 말씀드렸지만, 의사결정의 최종 단계는 그러한 논의가 반영된 방법론 또는 도구를 선택하는 것이다. 논의 자체만으로는 빅데이터를 분석할 수 없으며, 분석과 실행이 필요하기 때문입니다. 논의를 받아들여 분석 플랫폼으로 파이썬을 도입하기로 결정했다면 다음과 같은 단계적인 도입이 필요하다.


▲사진 : Flickr francois schnell https://www.flickr.com/photos/frenchy/5047254651. CC BY. https://creativecommons.org/licenses/by/2.0/
▲사진 : Flickr francois schnellCC BY.


1. (파이썬) 프로그래밍 입문


액셀이 제공하는 기능의 범위를 넘어서 분석을 수행하기 위해서 프로그래밍이 필요하다. 데이터분석가에겐 소프트웨어 공학자 수준의 프로그래밍 능력이 요구되지 않는다. (물론 소프트웨어 공학자가 통계적 지식을 습득해 그것을 분석에 적용하는 것이 수월하기는 하다.)


2. 빅파이, 빅데이터를 위한 파이썬


파이썬으로 프로그래밍을 하는 것과 데이터 분석을 위해 파이썬 프로그래밍을 하는 게 반드시 같은 건 아니다. 파이썬으로 웹서버 개발을 할 수도 있고, 데스크톱 응용프로그램을 만들 수도 있고, 운영체제의 파일시스템 작업을 자동화할 수도 있고, 네트워크 해킹을 할 수도 있다. 파이썬으로 수행하기는 해도 각 작업은 서로 상당히 다른 수준의 지식을 요구하며, 파이썬의 프로그래밍 스타일도 꽤 다르다. 프로그래밍 입문 수준의 지식을 바탕으로 빅데이터 분석에 특화된 파이썬 프로그래밍 기법 학습이 필요하다.


3. 데이터베이스 이해


빅데이터를 위한 파이썬 프로그래밍이라는 도구를 익히는 이유는 당연히 데이터 분석에 적용하기 위함이다. 조직의 데이터는 데이터베이스에 주로 저장돼 있다. 파이썬은 관계형 데이터베이스 접근이 용이하며, 몽고DB와 같은 NoSQL 솔루션에서도 거의 대부분 파이썬을 활용할 수 있다. 물론 파이썬으로 접근한다고 해도 여전히 데이터베이스에 대한 이해가 있어야 데이터를 효과적으로 입·출력할 수 있기 때문에, 목표로 하는 데이터베이스 시스템을 이해해야 한다. 하지만 데이터베이스 엔지니어가 될 필요는 없다.


4. 네트워크 프로토콜 이해


조직의 데이터베이스 규모와는 비교할 수 없을 정도로 많은 정보가 인터넷에 있다. 그러니 인터넷에서 데이터를 추출하는 기법은 필수다. 인터넷 통신으로 데이터를 획득하기 위해서는 HTTP 등과 같은 네트워크 프로토콜 지식이 필요하다. 이 과정에서 파이썬은 굉장히 효과적이고 효율적인 방법으로 작업을 수행할 수 있도록 돕는다. 그렇다고 네트워크 전문가가 될 필요는 없다. 네트워크 입·출력에 필요한 정도면 충분하다.


5. 시각화를 위한 디지털 미디어 이해


먼저 데이터를 원하는 방식으로 분석하는 것이 훌륭한 시각화의 전제다. 우리의 목표는 심미성이 아니라 통찰을 얻거나 혹은 우리의 전문적 통찰을 표현하는 것이다. 물론 되도록 심미적으로 표현하는 것이 훌륭한 통찰을 얻는 데 도움이 되긴 하지만.


이 사항이 잘 진행됐다는 가정 아래, 시각화를 위해 디자이너들이 배울법한 입문 수준의 디지털 미디어 지식도 갖춰야 한다.색상을 16진법(예: FE23DA) 등으로 표현하는 것에 어느 정도 친숙해져야 하기 때문이다.




※ 본 내용은 (주)블로터 앤 미디어(http://www.bloter.net)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒ 블로터 앤 미디어. 무단전재 및 재배포 금지



[원문출처 : http://www.bloter.net/archives/225204]

맨 위로
맨 위로