A/B 테스트를 보완하는 Multi-Armed Bandit(MAB) 알고리즘

이글은 줌닷컴의 허브줌에 기고했던 글 을 이곳에 다시 옮겨놓은 것입니다.

A/B 테스트를 보완하는 Multi-

이미지 출처 : Microsoft Research

아 마 인터넷 비즈니스나 인터넷 광고사업을 하는 사업자라면 노출하는 광고의 효율이나 웹 페이지 변경에 따른 사용자 반응을 파악하기 위하여 몇 가지 후보를 사용자들에게 노출해 측정하고 판단하는 A/B 테스트에 대해서 들어본 적이 있을 것이다. 이 글은 최근 A/B 테스트가 가진 문제점을 해결할 수 있다고 해서 관심을 끌고 있는 Multi-Armed Bandit 알고리즘에 대한 소개이다.

Multi-Armed Bandit (직역하자면 팔 여러 개 달린 도둑놈 정도 되겠다. 이하 글에서는 MAB로 부르겠다) 알고리즘은 간단히 Bandit 알고리즘이라 부르기도 한다. 의미적으로는 Explore/Exploit Dilemma (탐색/획득 문제 또는 딜레마)라고 부르기도 하는데 사실 MAB이라는 말은 슬롯머신을 One-Armed bandit (외팔이 도둑놈, 슬롯머신에 있는 손잡이를 지칭)이라고 부르는 데서 기인한 재미있는 이름이다.

정 확한 승률을 알지 못하는 여러 대의 슬롯머신을 가지고 도박을 할 때 가장 많은 돈을 따기 위해서 어떤 전략(알고리즘)을 가지고 게임을 해야 가장 많은 돈을 딸 수 있을 것인가 하는 문제를 빗대어서 잡아당길 수 있는 손잡이를 여러 개 가진 슬롯머신을 MAB이라고 부르게 된 것이다.

사람 사는 인생사처럼 어떤 선택의 기로에 섰을 때 비슷한 고민을 하게 되는 것과 같은 이치라고 할 수 있다. 좀 더 자세히 설명하면 이렇다. 우리가 처음 슬롯머신을 가지고 게임을 시작할 때 각각의 슬롯머신에 대한 승률을 전혀 짐작할 수 없다. 그렇다고 가지고 있는 돈이 무한정 있어서 모든 슬롯머신을 다 해볼 수도 없다. 뿐만 아니라 같은 슬롯머신이라도 승률은 수시로 바뀌기 마련이다. 이렇듯 우리가 살아가면서 무언가를 선택하고 결정할 때마다 부딪히는 바로 그 고민거리와 마찬가지다. 슬롯머신을 한번 잡아당긴다는 것은 주어진 그 결과를 정확히 알 수 없는 어떤 선택지라고 생각하면 이해가 쉽게 될 것이다.

물론 내가 돈과 시간이 무한정으로 있다면 (그럼 도박을 할 이유가 전혀 없겠지만) 주어진 모든 슬롯머신에서 미리 여러 번 게임을 다 해보고 나서 각각의 슬롯머신에 대한 승률을 정확히 파악할 수 있다면야 그 이후에 가장 돈을 가장 많이 딸 수 있는 슬롯머신에서 게임을 하면 될 것이다. 그러다가 승률이 떨어지는가 싶으면 다시 나머지 슬롯머신에서 게임을 해봐서 가장 좋은 승률을 가진 슬롯머신을 다시 선택하고 이를 반복하다 보면 가장 많은 돈을 딸 수 있을 것이다. (인생도 이렇게 여러 번 살아보면 좋으련만)

하지만 현실은 한정된 돈과 시간을 가지고 가장 좋은 승률을 가진 슬롯머신을 선택하면서(정확히 말하면 대략 짐작하면서) 모든 게임을 마쳤을 때 가장 많은 돈을 딸 수 있는 전략(알고리즘)을 찾는 것이다. 이것이 바로 MAB 알고리즘 문제이다.

여기서 탐색과 획득이라는 과정이 반복된다. 각 슬롯머신의 승률을 확인하기 위한 과정을 탐색이라고 할 수 있는데 이때 가장 높은 승률을 가진 슬롯머신을 파악하기 위해서 플레이하는 과정이다. 따라서 승률이 낮은 슬롯머신으로 플레이해보는 것을 피할 수는 없다. 누가 승률이 높은지 알아내야 하니까. 반면 획득은 가장 높은 승률을 가진 것으로 예상되는 슬롯머신을 선택해서 본격적으로 돈을 따는 과정이라 볼 수 있다. 어떤 과정을 치르든 두 과정 모두 비용이 발생하고 게임 할 수 있는 횟수는 점점 줄어들기 때문에 각각의 횟수와 선택을 어떻게 조정하느냐에 따라 전체적으로 최대로 돈을 딸 수 있는 가능성이 달라질 수 있는 것이다.

정보도 얻어야 하고 그래야 가장 좋은 승률을 가진 슬롯머신을 선택할 수 있기 때문에 두 가지 과정이 반드시 필요하며, 나머지 한가지 과정을 완전히 배제해서는 원하는 결과를 얻을 수 없다. 이 때문에 ‘탐색/획득 딜레마’라고도 부르는 것이다.

관련 자료를 찾아보면 이 문제는 1933년까지 거슬러 올라가게 된다. 어떻게 하면 여러 자원을 여러 프로젝트에 효과적으로 배분할 것인지를 모델링할 수 있을 것인가라는 연구에서 시작되었다. 그래서 2차 세계대전 때 연합군 과학자들도 이 문제를 어떻게 하면 잘 풀 수 있을지 연구했지만 너무 풀기 어려운 문제라고 생각되었는지 독일 과학자들도 이 문제를 연구하는 데 시간을 낭비(?)할 수 있도록 이 문제를 독일 쪽에 일부러 흘려 보내자는 제안도 있었다고 한다.

하지만 최근 야후!, 구글과 같은 인터넷 회사에서 이러한 Bandit 알고리즘을 웹 페이지 추천, 광고추천 및 분석 도구에 도입한 사례들이 등장하면서 다시금 주목받게 되었다. 이론적으로 보면 A/B 테스트라는 것을 대체하거나 포용할 수 있는 상위 개념의 테스트 방법을 제안하고 있기 때문에 이미 구글 애널리틱스에는 이 알고리즘을 이용한 테스트 도구를 제공하고 있다. 아마 Bandit 알고리즘이 대중에게 알려지게 된 것은 구글 애널리틱 서비스 제공하면서 그 계기가 마련된 것은 아닌가 짐작된다.

참고 : 다중 슬롯머신 실험

잘 알려지다시피 A/B 테스트는 인터넷이나 앱 서비스를 하는 여러 회사에서 새로운 기능이나 UI/UX에 대한 고객 반응을 파악하거나 더 좋은 최종안을 결정할 때 가장 많이 사용하는 방법이다. 하지만 비교군의 UX/UI 또는 광고 품질에서 큰 차이가 나게 되면 테스트하는 기간 중 일정 비율만큼 더 나쁜 서비스를 실 서비스에 지속적으로 노출할 수밖에 없고 테스트를 통해 사용자 평가를 하려다가 오히려 일부 사용자들에게 더 나쁜 경험을 주게 되어 고객 이탈이라는 최악의 결과를 만들어 낼 수도 있다. 그래서 항상 테스트 규모와 대상을 선정할 때 많은 주의가 필요하다.

A/B 테스트를 보완하는 Multi-

이미지 출처 : Visual Website Optimizer

또 한, 비교군 중 어떤 것은 서비스 노출 시간이 길어지면 길어질수록 잔존율(retention rate)이 점점 높아지는 경우도 있다. 너무 짧은 테스트 기간의 결과만을 가지고 전체 서비스에 서둘러 적용함으로써 올바른 선택을 하지 못하게 되는 경우도 발생하게 된다. 아마존도 사업 초기에 너무 빠른 의사 결정과 서비스 전환으로 오히려 좋지 않은 결과를 얻었다는 얘기도 들린다.

그래서 오랜 시간(사실상 회사가 서비스를 중단하기 전까지) 서비스를 노출해야 하는 인터넷 서비스에서는 이런 A/B 테스트의 단점을 어느 정도 보완해 줄 수 있는 것이 Bandit 알고리즘을 적용한 서비스 평가/추천 프레임워크이다.

이 분야에 대한 연구는 매우 오랫동안(1930년 이후) 그리고 광범위한 분야에 응용되고 있다. 인생에 있어서 한번 선택한 결과에 대한 평가를 함에 그 비용과 대가가 크듯이 일반적인 산업 분야에서는 비용이 많이 들 수밖에 없는 탐색(Explore) 과정이 인터넷 서비스에서는 상대적으로 비용이 적게 들고 Bandit 알고리즘이 active learning (매번 스스로 최적의 옵션을 선택)이면서 online learning  (실시간으로 각 옵션의 결괏값을 가지고 평가)의 성격을 가지는 기계학습의 일종이라서 인터넷 서비스 기업들이 많은 관심을 가지게 된 것이다.

A/B 테스트에 비해서 상대적으로 어려운 수학적 이해가 필요해서인지 국내에서는 이를 활용한 실제 사례는 들어 본 적은 없지만 아마 대형 포털 사업자들은 내부적으로 이미 활용하고 있을 것으로 짐작된다. 반면 해외 사례의 경우에는 논문 중심으로 찾아보면 인터넷 서비스 적용 사례나 검색 엔진, SEO (검색 최적화) 등에 적용한 사례들이 제법 많이 소개되고 있다.

이 글에서는 Bandit 알고리즘에 대한 기본적인 개요 정도를 소개하고 있다보니 실제로 Bandit 문제를 풀기 위해 소개된 다양한 알고리즘들과 수학적인 증명은 자세히 설명하고 있지 않았다. 사실 전공자가 아니면 쉽게 이해하기 쉽지 않다. 따라서 통계에 대한 정확한 이해 없이 어설프게 사용하기보다는 차라리 A/B 테스트를 하는 것이 낫다고 볼 수 있고 함부로 실 서비스에 적용하지 말라는 의견들도 있다.

하 지만 앞서 언급했듯이 Bandit 알고리즘은 기존 A/B 테스트의 문제점을 해결하기 위해 인터넷 서비스를 하는 이들이 관심을 가져 볼 만한 방법론이 아닐까 생각된다. 너무 이론적인 것에 매몰되지 않고 필요한 부분을 잘 활용하면 된다고 본다. 물론 본인들의 실 서비스에 적용하고 원하는 효과를 얻기 위해서는 고려해야 할 점 등이 적지 않지만 말이다.

가볍게 시작하고 싶다면 오라일리에서 출간한 ‘Bandit Algorithms for Website Optimization’ 책 을 권하고 싶다. 100페이지도 안 되는 분량이고 이해하기 힘든 수식으로 가득 찬 논문과 달리 매우 알기 쉽게 설명하고 있다. 파이썬으로 된 코드들도 이해하기가 매우 쉽다. 참고로 저자는 ‘Machine Learning for Hackers’를 쓴 것으로도 유명한 사람이다. 소스코드 역시 깃허브에 잘 공개되어 있다.

카테고리: IT | 댓글 남기기

인공지능 시대에도 변하지 않을 도메인 전문지식과 데이터의 가치

요즘 줌닷컴에 글을 올리고 있어서요. 원문은 아래링크를 참고하세요.

http://hub.zum.com/kimws/3733

알파고때문에 시끌벅쩍하지만 그럴 수록 이 시스템을 만들 수 있게 된 것은 모델링을 하고 , 실험할 수 있는 게임과 바둑에 대한 충분한 지식과 축적된  기보 데이터 때문이라고 생각합니다. 그 결과물이 알파고인거죠.

인공지능 시대에도 변하지 않을 도메인

출처 : jungle light speed

오 랜 시간 동안 소프트웨어 개발 분야에 몸을 담고 소프트웨어 기술의 발달을 지켜보다 보면 여기에도 분명히 트랜드가 있습니다. 최근 빅데이터 분야의 기술발전을 살펴보면 초기에는 빅데이터 플랫폼인 하둡, 몽고DB, HBase 와 같은 NoSQL 기술의 등장이 그랬었고 Spark, Storm 과 같은 실시간처리 플랫폼이 등장하고 요사이에는 머신러닝, 딥러닝, 인공지능에 이르기까지 기술의 진화속도도 빠르고 이러한 제법 어려운 기술들도 일반인들의 관심들을 크게 받는 시대가 되었습니다.

다른 분야도 마찬가지겠지만 워낙 이쪽이 핫하고 그 변화의 속도를 직접 체험을 통해서 가지게 된 제 나름의 해석과 결론이 있습니다. 그래서 이 얘기를 좀 해볼까 합니다.

실 리콘 밸리를 중심으로 핵심 기술, 핵심 소프트웨어라고 하는 것이 슬금슬금 오픈소스로 만들어져 공개되고 여러 커미터들이 늘어나고 빠르게 업그레이드가 되기 시작하면 관련 기술을 보유한 핵심 인력들의 기술 창업이 늘고 경쟁사나 해당기술이 필요한 회사로의 이직이 활발히 일어나는 것을 관찰할 수가 있게 됩니다.

이렇게 몇 년 지나면 이러한 기술은 점점 보편적인 기술로 자리잡게 되면서 특히 실리콘밸리를 중심으로 관련 기술이 빠르게 전파되고 이 지역의 전반적인 기술역량이 크게 높아지게 되는 것을 알 수 있고 대대적인 투자가 이루어지는 시기이기도 합니다. 물론 이 오픈소스를 통해서 세계적으로도 관련 분야의 기술적인 역량과 경험이 빠르게 업그레이드 됩니다. 자연스럽게 이러한 기술들을 발 빠르게 도입해서 각 국가별로도 여러 기술 스타트업들이 등장하기도 하구요.

이러다 보니 아무리 고도의 소프트웨어 기술을 기반으로 창업한 회사라도 매우 제한적인 시간 안에 그 가치를 인정 받지 못하면 대박 칠 수 있는 찬스를 잃게 되는 경우도 허다합니다만 여하튼 사람은 남게 마련이어서 각 분야로 흩어진 이들을 통해서 핵심 기술은 여러 산업계에 더욱 더 빠르게 퍼져나가게 되고 범용화됩니다.

물 론 기술 기업으로 초기에 잘 인정을 받고 큰 투자를 받은 회사들 몇몇 살아남게 되죠. 빅데이터쪽에서 보면 클라우데라(Cloudera) 같은 경우가 그런 회사라고 보면 될 것 같습니다. 예전 리눅스가 등장했을 때는 레드햇과 같은 회사도 이런 케이스라고 생각됩니다.

아무튼 많은 스타트업들이 투자도 못 받고 비지니스도 잘 되질 않아서 문을 닫아도 기술을 가진 이들이 남게 되고 관련 소프트웨어 기술은 오픈소스로 공개되니 산업 전반에 걸쳐 매우 빠르게 기술의 전파가 이루어지고 자연스럽게 파생된 기술 발전이 폭넓게 이루어지기 때문에 소프트웨어뿐만 아니라 전체 산업 발전 관점에서도 매우 긍정적인 효과가 생기게 되는 것이죠.

앞서 말씀 드렸듯이 빅데이터 기술 분야에서는 하둡이라는 데이터 플랫폼기술과 머신러닝 기술이 부각되다가 최근 딥러닝이 이러한 기술들 중 하나로 크게 부각되고 있습니다.

사 실 이러한 현상은 다른 소프트웨어 분야에서도 동일하게 일어나고 있습니다. 웹 기술과 관련해서는 Node.js 의 등장으로 자바스크립트를 기반으로 관련 기술 생태계가 크게 확장되고 발전하고 있고 Docker 의 등장으로 클라우드 컴퓨팅 분야에서도 많은 변화와 재미있는 시도들이 활발히 일어나고 있음을 알 수 있습니다.

공교롭게도 언급한 분야의 기술들이 공개되고 오픈소스화 되는 발원지는 대부분 구글이네요. 그래서 전 실력 있는 구글러의 창업 또는 이직하고자 하는 사이클과 해당 소프트웨어의 오픈소스화 시점이 묘하게 맞아 떨어질 거라고 의심합니다.

그 런데 말입니다. 생각을 달리 해보면 즉 이러한 기술을 활용하는 측면에서 보면, 이러한 데이터 기술을 활용하게 되는 여러 산업분야에서 오랜 기간 동안 축적된 노하우와 데이터의 가치는 크게 변하지 않습니다. 인공지능이니 로봇이 등장하면서 지식노동자들의 일자리를 상당수 없애거나 뺏을 거라고들 많이들 말씀하시지만 해당 분야(도메인)의 전문 지식을 제대로 갖춘 회사나 전문가들 입장에서 본다면 새롭게 등장하는 데이터 플랫폼, 데이터 처리 알고리즘을 통해서 더욱 그 가치를 높이거나 새로운 사업 창출, 확장을 할 수 있는 기회를 만들어낼 수 있다는 것을 의미하기도 합니다.

문제는 각각의 산업분야에서 오래 일한 사람들조차도 최근 등장한 여러 데이터 관련 기술이 모든 것을 해결해주리라 섣불리 기대하거나 되려 매우 부정적인 의견을 가진 경우가 많다는 것인데요. 여기저기 들려오는 얘기나 제 경험을 비추어 봐도 새로운 데이터 플랫폼이나 기계학습, 딥러닝, 추천알고리즘을 도입함으로써 해외의 사례에서 얻어지는 멋진 서비스나 사업적 성과를 쉽게 확보할 수 있다고 생각하는 분들이 적지 않습니다.

물론 이는 이러한 데이터 솔루션을 파는 벤더의 책임도 한 몫 했다고 봅니다만 이것은 자신들 지갑에 있는 돈의 가치를 보지 못하고 남이 가지고 있는 지갑의 예쁜 겉모습에 현혹된다고나 할까요. 자신들의 돈을 가지고 더 벌 생각을 하는 것이 아니라 새 지갑을 사는데 돈을 쓰는 것과 같은 거죠.

써놓고 보니 두서 없는 듯 하지만 제가 하고 싶은 얘기는 이것입니다.

현 실적으로 새로운 기술을 스스로 개발하고 이를 기반으로 기술 회사 창업해서 성공할 가능성은 매우 적지만, (그럼에도 국내에서 여전히 고군분투하시는 여러분들이 있다는 것도 잘 알고 진심으로 존경합니다.) 반면 이러한 기술을 바탕으로 각 분야의 데이터와 노하우를 활용하는 것은 상대적으로 쉽다고 생각합니다.

하지만 여전히 많은 국내의 기업 및 공공기관은 체계적인 데이터 관리와 운영에 있어서 새로운 데이터 기술을 접목하기 위한 준비나 사전 준비가 여전히 부족한 것은 아닌가 싶습니다.

그러다 보니 데이터와 노하우를 제일 잘 알고 있는 자신들이 직접 나서질 않고 기술을 가지고 있는 회사에게 많은 부분을 맡기거나 만족할 만한 결과를 얻기 힘듦에도 비싼 컨설팅을 어설프게 맡기는 것은 아닐까 싶기도 하구요.

각 기업들이 자체 보유하고 있는 데이터에 대해서 더욱더 많은 관심을 가져야 할 것이라고 생각됩니다. 혹시 소중한 데이터가 버려지고 있는 것은 아닌지 점검하고 딥러닝과 같은 새로운 분석 알고리즘을 활용할 수 있도록 데이터 모델링과 해석할 수 있는 역량을 갖추고 있는지를 점검하고 준비하는 것이 우선이 아닐까 생각됩니다.

요즘 이세돌 9단과 한판 붙어보겠다는 구글 딥마인드의 알파고 역시 꾸준히 관리되고 있었던 16만건에 달하는 기보 정보가 없었다면 존재하지 못했을 것입니다. 즉, 각 분야의 기업이나 공공, 연구기관에서 이러한 점에 좀더 신경을 쓰고 대비하는 것이 더욱 필요한데 여전히 데이터에 대한 얘기보다는 머신러닝이나 딥러닝과 같은 기술자체에 더 많은 관심을 가지고 있는 것은 아닌가 하는 것입니다.

예 전에 그토록 어렵고 활용하기 힘들다고 생각했던 많은 데이터 플랫폼, 분석기술들이 시간이 갈 수록 그 비용이 저렴해지고 사용하기 쉬워지고 있습니다. 그것도 너무나도 빠르게요. 그런데 정작 써먹을 데이터가 없다면 소용없겠죠. 있다고 해도 엉망으로 저장되고 관리되고 있다면 마찬가지이겠죠. 비슷한 얘기를 전부터 꾸준히 해왔지만 우리나라 환경에서는 여전히 쉽지 않고 잘 실행이 되지 않는 것 같습니다.

네… 솔직히 말씀 드리면 이조차도 쉽지 않지만요.

 

카테고리: IT | 댓글 남기기

현대 기업을 위한 협업 솔루션(Collaboration Solution) 에 대해서

협업이라는 것에 관심을 가지게 되고 이와 관련된 협업 시스템이나 솔루션에 대해서 관심을 가지게 된 것은 아무래도 첫 회사 첫 직장을 전자 제품을 설계하는 엔지니어들이 편리하게 자신들의 업무를 할 수 있도록 하기 위해서 지원하는 시스템을 만드는 연구부서에 들어가게 된 것이 아닌가 싶습니다. 워낙 부서의 주업무가 CAD/CAM/CG 와 같이 컴파스, 자, 펜으로 작업하던 기존 제도기를 대체하는 시스템을 보급 및 교육하는 일에서부터 이러한 캐드 시스템간의 데이터 교환과 문서,도면관리시스템을 만드일에 이르는 솔루션을 직접 설계하고 개발하는 일을 맡아서 그런지 아무튼 협업솔루션에 대한 ‘본질’ 에 대해서 일찍 겪으면서 많은 시행착오를 만들어나간 경험이 아마도 제 인생의 1/3을 차지하고 있다고 보면 될 것 같습니다.

뜬금없지만 그 당시 상황을 제 어설픈 기억력에 의지해서 재구성해보자면 워낙 80년대말 90년대초만 하더라도 인터넷은 딴나라 얘기였고 사내망조차 제대로 이루어지지 않아서 일일히 플로피디스크를 들고다니는 일들이 많았었지요. 다행히 제가 있던 부서는 나른 많은 자금을 가지고 사내 IBM 기반의 캐드시스템과 HP에서 수억씩하는 워크스테이션들이 있었던 부서였습니다. 토큰링방식의 동축케이블로 연결된 네트워크로 워크스테이션사이에서 데이터를 주고받고 있었구요. 물론 얼마 지나지 않아 모두 이더네방식의 네트워크로 바뀌긴 했습니다.

92년도인가 93년도쯤인가 인터넷이라는 것이 된다고 같은 부서의 네트워크 인프라를 맡았던 팀이 연구소장 및 주요 임원들을 모시고 데모를 했던 것이 기억이 납니다. 물론 저는 신입이였기 때문에 거기에 참석하지는 않았지만 그 이후에 모자이크라는 브라우저를 열심히 써보고 신기해하기도 했었죠. 개발하던 소프트웨어를 통합 빌드하면 짧게는 10분에서 전체 리빌드를 한다고 하면 2–3시간씩까지 걸리곤 해서 모자이크를 이용해서 말그대로 인터넷이라는 바다를 서핑하는 시간이 제법 늘어나곤 했습니다.

특히 인터넷이 되면서 기억이 남는 것이 있는데요. sunsite.unc.edu 라고 하는 ftp 서버를 접근하면서 일하는 방식과 생각하는 방향이 많이 바뀌게 된 계기가 되었습니다. 이 사이트에 anonymous 계정으로 접근을 해보면 유닉스기반의 온갖 공개소프트웨어들이 소스와 함께 올려져 있는 곳이였는데 수시로 이곳에 들려서 필요한 프로그램들을 다운로드 받아서 빌드하고 설치하고 사용해보고 하면서 제가 개발하는 시스템에 적용해보고 시험해보곤 했었습니다.

그러다보니 퇴근하기전에 다운로드를 걸어넣고 아침에 와서 압축파일을 풀고 빌드해서 이것저것 살펴보느라 시간 가는 줄 모르던 시절이 있었습니다. 이미지뷰어를 만들기 위해서 파일압축라이브러리를 뜯어다가 공부하기도 하고 심지어 이미지뷰어의 모듈은 외부 프로그램에서 바로 콜을 해서 사용할 수 있도록 모듈화가 매우 잘 되어 있었죠.

요즘에야 깃헙(Github) 을 뒤져보거나 스택오버플로우에서 필요한 정보를 찾는 것도 귀찮으면 구글검색을 통해서 매우 빠르게 필요한 프로그램이나 소스코드에 대한 정보를 찾을 수 있게 되었지만 당시에는 이러한 검색시스템도 없었기에 SUNSITE의 오픈소스들은 정말 소프트웨어를 개발하는 저에게는 보물창고같은 곳이였습니다.

쓰다보니 생각나는 일이 하나 더 있습니다. 요즘에야 대부분 PDF 포맷을 문서용으로 많이 사용하지만 그 당시에는 고품질의 문서는 대부분 포스트스크립트(Postscript) 로 된 문서였는데 이 포스트스크립트 포맷을 출력하는 프린터들은 매우 고가였습니다. 아시는분들은 아시겠지만 Ghostscript 라는 오픈소스는 이러한 포스트크립트 파일을 다양한 비트맵방식의 잉크젯, 레이저젯 프린터에서 출력할 수 있는 포맷으로 변환해주는 기능을 제공하고 있었는데 사무실에 있는 HP 워크스케이션 프린터 드라이버에 이 고스트스크립트를 연결해서 일반 사용자들은 그냥 포스트스크립트 프린터가 있는 것 처럼 해서 고가의 PS을 지원하는 프린터 구매비용을 낮춘 일도 있었습니다. 이 일은 제 옆자리 선배님이 해주셨는데 아직도 이일을 추억삼아 자랑을 하곤하시죠.

아무튼 그 이후에 제가 하는 주업무는 제품 디자인, 설계, 생산에 이르는 프로세스 혁신과 관련된 시스템과 협업 시스템에 대한 것들이였습니다만 현재 제가 겪고 있는 것을 생각해보면 격세지감을 넘어서서 완전히 패러다임이 바뀌었다고 생각됩니다. 문제는 기업에 이미 도입된 많은 협업 솔루션들이 예전의 일하는 방식에 최적화되어 있고 여전히 현재의 일반적인 사람들이 소통하는 방식과는 매우 부합되지 않는다는 점입니다.

그러다보니 사람들에게 최적화된 시스템이나 협업이 아닌 미리 정의된 프로세스에 최적화된 시스템과 협업 시스템들은 사실상 잘 동작하지 않고 있습니다. 이것은 큰 기업일 수록 바뀌기기 쉽지 않습니다. 왜냐하면 근본적으로 기존의 레가시시스템과 프로세스를 버리지 못하기 때문입니다. 기존 시스템, 기존 프로세스을 버리지 못하는 한 어떤 최신의 시스템이 들어와도 쉽게 그 개선의 효과를 얻지 못하고 원했던 업무 혁신이 일어나기 힘듭니다.

이 역시 제가 겪은 예를 들어서 설명하자면 현재 다니고 있는 회사의 인트라넷을 MS 오피스와 MS 아웃룩에서 구글 앱스로 바꾼지 2년이 가까이 되어가고 있는데 처음에는 물론 불편함이 없지 않았습니다.

하지만 지금은 사실상 회의실에서 그 어떤 회의자료도 볼 수 없습니다. 문서를 함께 작성하는데 같은 파일명을 가진 수많은 버전의 파일들이 이메일로 오고가는 일이 급격히 줄었습니다.

누군가 작성하는 문서를 찾기 위해서 문서 요청을 하거나 자신의 폴더를 뒤적거리기보다는 간단한 몇 개의 키워드로 문서나 메일을 검색하면서 자료를 찾는 방식이 매우 단순해졌습니다.

파워포인트를 이용해서 이리저리 꾸미기를 하는데 시간을 쓰기보다는 내용중심으로 보고가 바뀌게 되었습니다.

물론 이렇다고 해서 근본적으로 맡은 일 업무 강도가 줄어들거나 하지는 않았겠지요. 어떤 분들이 이러한 변화가 별것 아니라고 말할 수도 있겠지만 저에게는 매우 큰 변화이며 일하는 방식 역시 크게 바뀌었다고 믿습니다.

10여년 전에 선마이크로시스템에서 주창했던 NC(Network Computing)이 이제는 너무나도 당연한 방식으로 PC, 모바일에 구현되고 접할 수 있게 된 것입니다. (에릭슈미츠가 당시 선마이크로시스템의 CTO 였다는 것은 흥미로운 사실입니다)

이러한 환경에서 보안을 강조하며 사내 인트라넷을 꽉 막고만 있으면서 자신만의 협업 시스템을 구축해서 운영하는 것은 한계에 다다랐다고 생각이 듭니다. 오히려 이 보안으로 막혀진 벽을 허물고 바깥쪽과 안쪽이 유연하게 연결되며 정보가 흘러갈 수 있도록 하는 것이 매우 중요하다고 보여지고 이것이 앞으로 기업이 갖춰나가야할 협업 솔루션의 모습이라고 감히 말할 수 있습니다.

하지만 여전히 국내의 많은 대기업들이 보안을 이유로 너무나도 불필요한 문서 보안, 사내망 분리등을 외칩니다. 물론 이것은 반드시 필요한 부서나 프로젝트에 있어서는 더욱 정교하게 적용되고 운영되어야 하겠지만 회사 전반에 걸쳐 너무 광범위하게 이러한 통제와 보안이 적용 되고 있다는 점입니다.

잘 아시다시피 이미 많은 회사의 직원들은 공개적이든 비공개적이든 카톡이나 밴드를 이용해서 사내 소통을 하고 있습니다. 예전에는 생각할 수 없었던 일입니다. 사내에서는 반드시 사내 메일이나 메신저만을 이용해서 소통을 해야 했기 때문입니다.

이미 많은 사람들이 카카오톡, 페이스북, 트위터와 같은 외부 메신저나 SNS을 통해서 외부사람들과 소통을 하고 있습니다. 일부 대기업 직원들은 회사 눈치를 보느라고 그러한 소통을 자제하거나 회사의 홍보와 관련된 내용을 중심으로 SNS에 글을 올리곤 하지만 이미 젊은 직원들은 회사 눈치를 보기는 커녕 이러한 외부 커뮤니케이션 수단을 이용해서 매우 왕성하게 소통을 하는 시대가 왔다는 점에서 기존 회사들이 가지고 있는 협업을 위한 여러 시스템들은 재고할 필요가 있습니다.

어떻게 하면 보다 유연한 소통을 이루어낼 수 있을 것인지에 대해서 고민을 해야 한다고 봅니다. 아마 하고는 있겠지만 앞서 말씀드린 기존의 프로세스와 규정 때문에 쉽지 않겠죠.

가장 손쉬운 접근 방법으로는 사내의 공인된 시스템과 공인되지 않은 외부 시스템간의 경계에서 사람들이 알아서들 적당히 활용하면서 협업을 하고 소통을 하도록 지금 처럼 두는 것입니다. 다만 기업 입장에서는 직원들이 일들을 정말 제대로 하고 있는지 파악하는데에는 한계가 생길테지요. 하지만 이러한 것을 허용하고 묵인하는 것이 전체적인 결과나 효용측면에서 더 나을 수 있습니다. 억지로 외부 시스템을 자신들의 인트라넷에 적용하고 통합한다고 하다가 비용은 비용대로 들고 기대효과는 턱없이 나오지 않을 바에는요.

사실 이러한 것은 기업문화와 기업의 지식경영의 방향과도 면밀히 연결되는 부분이 있습니다. 외부의 좋은 사례를 듣고 우리 기업에도 이러한 시스템을 도입하면 효과가 크지 않을까 괜찮지 않을까 생각들을 하기 쉽지만 사실 일반적인 인터넷이나 모바일 환경에서의 사람의 태도는 회사의 인트라넷에 접근할때와는 생각보다 많이 다릅니다.

회사내의 여러 협업시스템 (메일, 메신저, 문서관리시스템 등등해서) 을 사용할 때 이미 직원들은 스스로들 그 경계를 이해하고 행동을 자제하기 마련입니다. 따라서 앞서 말씀드린것처럼 적당히 외부의 여러 커뮤니케이션 수단 , SNS 등의 사용을 열어주고 전체적인 협업의 효과와 소통을 높일 수 있도록 하는 것이 나을 것 같다는 것이 제 짧은 의견입니다. 그리고 사람들은 소통을 하기 위해서 단순히 하나의 방식, 하나의 도구만을 사용하지 않습니다.

시점과 대상 그리고 상황에 따라서 다양한 방식과 다양한 도구를 함께 이용해서 원하는 업무를 하기 마련이기 때문에 더욱더 이러한 접근 방법이 좋지 않을까 하는 것입니다.

최근에 핫하게 떠오르는 Slack과 같은 협업 솔루션을 보면 그렇게 수많은 커뮤니케이션 솔루션들이 기존에 이미 있음에도 사람들은 조금이라도 더 편리하고 다양하게 소통을 하고 싶어한다는 사실을 알 수 있습니다. 어찌보면 이리도 많은 커뮤니케이션 도구들이 넘쳐나도 여전히 원만한 소통을 하지고 못하고 원하는 만큼의 협업을 잘 이끌어내지 못하고 있다는 반증은 아닐까하는 생각이 듭니다.

아마 앞으로 새로운 미디어가 등장하게 되면 이에 걸맞는 새로운 협업, 커뮤니케이션하는 도구들도 함께 새로 등장을 하겠지요. 아마 텔레파시와 같이 뇌파로 서로의 생각을 주고 받는 시절이 와도 커뮤니케이션/소통은 여전히 어렵고 해결해야할 문제가 아닐까 싶습니다.

소통, 원만한 협업이라는 것은 서로를 이해하는 것부터 시작일텐데 그것이 잘 되기 위해서 서로의 상황이나 문제점들을 투명하게 공유하는 것부터가 시작일텐데요. 협업 솔루션이라는 것이 이렇게 서로의 상황, 컨텍스트를 보다 정확하고 빠르게 전달하는 것에는 어느 정도 도움이 되겠지만 사람 각자의 가치판단과 성격을 고쳐주지는 않을테니까요.

카테고리: IT | 댓글 남기기

비트코인 – 블록체인 기술에 대한 이해 그리고 그것이 가져다 줄 패러다임의 변화

비트코인에 대해서 설명하기에 앞서서, 아마도 여러분들께서는 비트토렌트라고 하는 P2P 파일 공유 프로토콜에 대해서 들어보셨을 겁니다. 보통은 토렌트라고들 하지요. 이것은 많은 사람들이 비트토런트 프로토콜을 지원하는 어플리케이션을 설치해서 이 P2P 서비스에 참여하게 됨으로써 웹하드와 같이 데이터를 한 곳에 모아놓고 찾아서 다운받는 형태가 아니라 어플리케이션이 설치된 컴퓨터 (요즘엔 스마트폰에도 설치가 되니까 그 범위는 훨씬 넓어졌습니다)에서 필요한 데이터를 찾고 다운로드를 받을 수 있도록 하는 것입니다. 즉 웹하드와 같이 웹서비스에서 하나의 파일을 찾아서 바로바로 다운받는 것이 아니라 토렌트에 가입한 사람들의 컴퓨터에 있는 파일들을 나누어서 받을 수 있고 자신의 스토리지와 네트워크 역시 제공하는 정말 십시일반에서 서로 자료를 제공받고 제공하는 것을 말합니다. 지금도 많은 불법 컨텐츠들이 이 네트워크를 통해서 유통되고 있고 파일사이즈가 큰 파일들을 보다 빠르게 배포하기 위해서 리눅스 배포판을 다운받게 하기 위해서도 사용하기도 합니다.

이러한 불법 컨텐츠 유통이라는 이미지때문에 그렇지 비트토런트는 인터넷에 연결된 컴퓨터 – PC 요즘엔 스마트폰에 이르기까지 – 의 스토리지를 함께 사용할 수 있도록 해주는 것으로 달리보면 거대한 가상의 네트워크 스토리지(virtual cloud storage)라고 할 수도 있습니다. 이 토런트에 참여한 사람들이 많을 수록, 특정 파일을 많은 사람들이 많이 공유하면 할수록 토런트망에 연결된 몇몇 컴퓨터 – 즉 peer – 가 다운되거나 전원이 꺼져 있어도 데이터를 공유하는데에는 간혹 공유하는 Peer의 숫자가 적거나 네트워크 대역폭에 따라서 다운받는 속도에 문제가 있을 수는 있겠지만 전체 시스템 관점에서는 매우 견고하고 안정성이 뛰어나다고 말할 수 있습니다.

최근에는 이 비트토런트에서 중앙의 서버가 없이 서로 메세지를 주고 받을 수 있는 Bleep (http://labs.bittorrent.com/bleep/) 이라고 하는 P2P 메신저를 개발해서 참여를 유도하고 있습니다. 관련한 블로터의 기사도 있으니 참고하시면 될 것 같습니다. (http://www.bloter.net/archives/174490)

이렇게 먼저 비트토렌트에 대해서 설명을 먼저 드린 것은 이러한 P2P시스템이 해주는 일을 좀 알고 나면 비트코인에서 사용하고 있는 블록체인 기술을 좀더 쉽게 이해할 수 있을 것이라 생각해서 입니다.

앞서 말씀드린 비트토런트가 파일, 메세지와 같은 여러가지 데이터들을 어떤 서버의 도움 없이도 안정적으로 데이터를 공유할 수 있도록 해주는 P2P 네트워크 기반의 파일 공유 시스템이라고 한다면 비트코인에서 말하는 블록체인 기술은 P2P 시스템(네트워크) 에 참여한 클라이언트 (즉 각각의 Peer) 간의 트랜잭션에 대한 보안성과 무결성을 유지해 줄 수 있도록 해주는 P2P 기반의 트랜잭션 시스템이라고도 말할 수 있습니다.


여기서 우리는 트랜잭션에 대해서 정확히 이해할 필요가 있습니다. 한글 위키에는 트랜잭션을 아래와 같이 정의하고 있습니다.

“트랜잭션(transaction)은 ATM, 데이터베이스 등의 시스템에서 사용되는 쪼갤 수 없다는 업무처리의 단위이다. 영어 낱말 transaction은 거래를 뜻한다. 예를 들어 돈을 주었는데 물건을 받지 못한다면, 그 거래는 이루어지지 못하고 원상태로 복구되어야 한다. 이와 같이 쪼갤 수 없는 하나의 처리 행위를 원자적 행위라고 한다. 여기서 쪼갤 수 없다는 말의 의미는 실제로 쪼갤 수 없다기보다는 만일 쪼개질 경우 시스템에 심각한 오류를 초래할 수 있다는 것이다. 이러한 개념의 기능을 ATM 또는 데이터베이스 등의 시스템에서 제공하는 것이 바로 트랜잭션이다. 트랜잭션은 사용자가 시스템에 요구를 시작하여 시스템 내의 처리, 시스템에서 사용자에게 응답하는 모든 처리를 포함한다. 이러한 트랜잭션이 충족해야 하는 기술적인 요건은 ACID가 있다.”

여기서 다시 ACID에 대한 한글위키의 설명도 같이 해놓는 것이 좋을 듯 싶습니다.

“ACID(원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜젝션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다.”

* 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 모두 수행되었는지 아니면 모두 실행이 안되었는지를 보장하는 능력이다. 자금 이체는 성공할 수도 실패할 수도 있지만 원자성은 중간 단계까지 실행되고 실패하는 일은 없도록 하는 것이다.
* 일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다. 무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단된다.
* 고립성(Isolation)은 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. 이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다. 은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌간 이체하는 양 쪽을 볼 수 없다. 공식적으로 고립성은 트랜잭션 실행내역은 연속적이어야 함을 의미한다. 성능관련 이유로 인해 이 특성은 가장 유연성 있는 제약 조건이다. 자세한 내용은 관련 문서를 참조해야 한다.
* 지속성(Durability)은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미한다. 전형적으로 모드 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다. 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있다.

아마도 데이터베이스에 대해서 공부하신 분들은 하나의 계정에서 돈을 입금하고 인출하는 과정에서 발생하는 데이터의 무결성을 위해서 이러한 ACID 을 데이터시스템이 또는 트랜잭션모니터링 시스템이 보장해주어야 한다는 것을 들어본 적이 있으실 겁니다. 다만, 네트워크 기반의 분산시스템인 NoSQL들이 여럿 등장하면서 ACID 을 대신하는 BASE 라는 것들도 등장하고 있습니다.

참고로 BASE 는 아래와 같이 정의되어 있습니다. 분산환경에서의 데이터 저장과 무결성에 있어서 다소 느슨함을 허용한다고 생각하셔도 될 것 같습니다.

* Basic Availability
* Soft-state
* Eventual Consistency

ACID , CAP Theorem 및 BASE 에 대한 설명은 이 링크를 참고하시면 도움이 되지 않을까 생각됩니다. (http://www.dataversity.net/acid-vs-base-the-shifting-ph-of-database-transaction-processing/)


하지만 대부분의 중요한 금융거래나 어떤 시스템의 상태관리를 엄격하게 해야하는 경우에는 무결성에 대한 보장이 매주 중요합니다. 다시말하면 앞서 말한 ACID을 만족해야 한다는 것이죠. 그래서 우리가 알고 있는 대부분의 – 사실상 모든 – 트랜잭션 처리 시스템들은 중앙집중식입니다. 여러개의 시스템들이 나누어진 분산환경의 경우에도 전체 시스템간의 트랜잭션을 통합관리시스템이 존재합니다. 오류가 발생할 경우에 정확히 롤백하기 위해서 2 phase commit 이라는 절차를 거쳐서 여러 클라이언트 사이의 트랜잭션 상태를 투명하고 무결성을 유지하기 위해서 사용합니다. 사실상 하나의 중앙서버를 통해서 이 모든 것을 처리하게 됩니다. 이러한 시스템들이 여럿이 있는 분산환경에서도 이들 시스템간의 데이터 정합성을 유지하기 위해서 중앙에 트랜잭션 모니터를 두고 각 시스템간의 분산 트랜잭션을 관리하게 됩니다.

너무 시스템 관점에서 설명을 했는데요.

우리가 잘 알고 있는 신용카드 거래라는 예를 들어서 보면 고객과 상점들은 신뢰할만하다고 믿는 신용카드사와의 계약을 통해서 고객은 현금 지급없이 미리 카드를 사용해서 상품결재를 하고나면 신용카드사는 약속된 수수료를 떼고 나서 나머지 금액을 상점에 지불을 하게 됩니다. 그리고 신용카드사는 나중에 고객의 은행통장으로부터 앞서 거래했던 금액을 인출해가는데 이 역시 고객과 상점간의 거래 , 즉 트랜잭션을 신용카드사가 양쪽을 대신해서 보장해주고 역할을 하고 있습니다. 마치 데이터베이스가 하는 일과 동일한 역할을 하고 있는 것입니다.

공인인증서의 경우로 예를 바꾸어 볼까요. 이 역시 믿을만한 인증기관을 통해서 사용자와 접속하는 사이트간의 신뢰를 확인해주고 트랜잭션이 일어나게 하는데 늘 중앙에 양쪽의 거래나 인증을 확인해주는 중앙기관이 있게 됩니다.

이렇듯 지금까지의 시스템들은 대부분 우리가 보통 말하고 있는 클라이언트-서버라고 말하는 시스템 구조를 가질 수 밖에 없고 대부분의 시스템들이 이러한 트랜잭션을 처리하기 위해서 최적화되어 개발되고 제공되고 있었습니다.

그런데 비트코인이 소개되면서 이러한 트랜잭션을 처리하는 패러다임이 바뀌게 되었습니다. 그것은 바로 비트코인에서 사용하고 있는 블록체인 기술을 이용해서 중앙의 서버없이 피어와 피어간의 트랜잭션에 대한 보안과 무결성 또는 투명성을 갖출 수 있는 시스템을 만들 수 있게 되었기 때문입니다. 바로 그 대표적인 케이스가 비트코인 그 자체로 증명이 되었기 때문에 더욱 더 이 기술의 중요성과 관심이 높아지고 있는 실정입니다.

물론 블록체인 기술이 만능은 아닙니다. 당장은 기존의 모든 클라이언트-서버 구조에서 해주던 다양한 트랜잭션 처리를 대체할 수 있는 것 같지는 않습니다. 하지만 이 기술이 가지고 있는 확장성과 적용될 수 있는 영역은 무궁무진하다고 할 수 있습니다.

생각을 해보십시요. 지금까지 우리가 그렇게도 익숙해있던 믿을만한 제 3자의 개입 – 여기서는 데이터베이스 서버가 될 수도 있고, 인증기관이 될 수도 있고, 신용카드사가 될 수도 있는 – 이 전혀 필요없이 복잡하게 얽혀 있는 P2P 형태의 시스템에서 노드(Peer)간의 트랜잭션을 보장을 해줄 수 있다는 데 그리고 그것이 훌륭이 증명되어서 돌아가고 있는 비트코인이 있을 뿐 아니라 여기로 부터 파생된 다양한 Cryptocurrency (또는 Altcoin) 가 늘어남으로써 그 효용과 가능성은 이미 증명되었다고 볼 수 있습니다.

그래서 최근 수많은 비트코인 및 블록체인기술 기반의 스타트업들이 등장하고 있는 것은 모두 이런 블록체인 기술을 기반으로 하는 혁신들이 여기저기 일어날 것으로 기대하고 있기 때문입니다.


그럼 이제 좀더 상세히 블록체인 기술에 대해서 알아보도록 하겠습니다. 어떻게 중앙의 서버 또는 데이터베이스의 개입없이 각 클라이언트(피어)간의 트랜잭션관리가 가능할까 저 역시 매우 궁금했습니다. 지금까지 제가 가지고 있던 상식으로는 잘 이해가 안되었으니까요.

그래서 블록체인에 앞서서 비트코인에 대한 자료를 찾아보면 이에 대한 개념과 기술적인 배경을 잘 요약 정리해놓은 곳이 있는데요. 바로 오가닉미디어 글(http://organicmedialab.com/2014/01/06/bitcoin-as-disruptive-innovation/) 을 참고하세요. 비트코인과 블록체인에 대해서 좀더 자세히 알고 싶으시다면 이 곳의 글들을 한번 일독하면 좋을 듯 싶네요.

여하튼 비트코인이 어떤 문제를 해결해주고 있는지를 인용해보면 크게 다음과 같이 3가지로 정리할 수 있습니다. 사실 이 설명 자체가 블록체인 그 자체를 설명하고 있다고도 할 수 있습니다.

비트코인은

1. 완전히 분산된 지불 시스템 (Fully distributed and decentralized payment system) 이라는 것입니다. 다시 말씀드리자만 신용카드 회사와 같은 제3자 (영어로 정확히 표현하자면 Trusted 3rd Party)을 배제하고 구매자와 판매자간에 직접 결제(Peer-to-Peer) 를 할 수 있도록 해준다는 것입니다.

2. 실질적으로 사기가 해킹이 불가능한 지불 시스템이라고 할 수 있습니다. 서로가 인정한 신용기관이 아니라 수학적인 증거 , 즉 암호화기술 기반의 지불 시스템이라고 할 수 있습니다. 비트코인 시스템내에서 벌어지는 모든 거래(트랜잭션)은 10분단위로 하나의 블록에 저장되고 앞서 저장된 블록을 계속 이어가는 형태로 모든 기록을 저장하게 되는데 이러한 거래를 인증하고 저장하고 P2P 지불시스템내의 모든 노드 Peer (보통은 비트코인 지갑, 월렛이라고 하는 클라이언트) 가 이 모든 거래 정보를 일일히 가지고 있는 형태입니다. 그래서 이를 가르켜 블록체인이라고 말하는 것이고 해커들이 이런 거래정보를 조작해서 붙이는 것을 현실적으로 불가능하게 만든 것이 바로 블록체인 기술이라고 생각하시면 됩니다.

3. 스스로 자생적이고 내재적인 가치를 가진 화폐시스템, 즉 화페로 취급할 수 있습니다. 이것이 가능한 이유는 앞서 말한 거래를 저장하는 블록을 만들어내고 블록체인을 유지하고 보안 책임을 가지는 이들에게 기여한 만큼 비트코인을 얻을 수 있도록 하는 메커니즘을 넣어두었기 때문입니다. 단순하게 설명하자면 비트코인 그 자체는 비트코인이라는 P2P 시스템내의 기록에 필요한 데이터를 찾아내고 유지하기 위해서 위해서 엄청한 컴퓨닝 파워를 쓰는 사람에게 주는 보상이라고 생각하시면 됩니다. 마치 금광에서 삽질과 곡괭이 짓을 해서 금을 찾으면 온전히 그 사람의 몫이 되는 거랑 비슷하다고 생각할 수도 있습니다. 여기서는 삽질과 곡괭이 대신에 엄청한 CPU, GPU 그리고 전기를 써서 해당 블록체인의 무결성을 보장하기 위해서 필요한 해쉬값을 찾아내는 일이라고 생각하셔도 될 듯 싶습니다.

이렇게 설명해도 아마 블록체인기술이 그래서 도대체 무엇인지 헷갈릴 수 있습니다. 오가닉미디어의 이 글(http://organicmedialab.com/2014/02/20/bitcoin-addresses-transactions-and-wallets/) 을 보면 비트코인을 만든 사토시 나카모토의 논문(https://bitcoin.org/bitcoin.pdf) 을 쉽게 풀어놓은 것이라서 좀 더 이해가 쉬우리라 생각되는데요.

사토니 나카모토는 이 P2P 전자화폐문제를 해결하기 위해서 그동안 문제가 되어왔던 decentralized 환경에서 안전하고 트랜잭션의 무결성이 갖출 수 있는 방법을 찾았다고 할 수 있습니다. 즉 그 문제라는 것이 레슬리 램포트와 쇼스탁, 피스가 공저한 1982년 논문에서 언급하고 있는 “비잔틴 장군 문제”라고 불리던 것인데요. 위키피디아에는 아래와 같이 설명하고 있습니다.

“적군의 도시를 공격하려는 비잔티움 제국군의 여러 부대가 지리적으로 떨어진 상태에서 각 부대의 지휘관들이 (중간에 잡힐지도 모르는) 전령을 통해 교신하면서 공격 계획을 함께 세우는 상황을 가정하고 있다. 이 부대의 지휘관 중 일부에는 배신자가 섞여있을 있고, 배신자는 규칙을 충실히 따르는 충직한 지휘관들과 달리 규칙에 얽매이지 않고 마음대로 행동할 수 있다. 이 때 배신자의 존재에도 불구하고 충직한 지휘관들이 동일한 공격 계획을 세우기 위해서는 충직한 지휘관들의 수가 얼마나 있어야 하며, 이 지휘관들이 어떤 규칙을 따라 교신해야 하는지에 대한 문제”

사토시 다카모토는 이러한 문제를 해결하기 위한 블럭체인 알고리즘(프로토콜)을 제안했고 이를 통해서 비트코인 P2P 시스템을 공격하는 사람들 , 즉 거래를 조작해서 잘못된 블록정보를 생성해낼 수 있는 사람들보다 양심적으로 블록정보를 생성하고 유지하는 사람들이 더 많다면 현실적으로 이 시스템을 공격하거나 해킹하는 것이 불가능하다는 것을 증명한 논문이라고 할 수 있다. 즉 비트코인을 구축하는데 든 컴퓨팅파워보다 몇배 더 큰 컴퓨팅파워를 투자해야만 탈취가 가능하다는 것인데 기술적으로도 경제적으로도 쉽지 않다는 것을 수학적으로 증명한 것입니다.

여기서 블록체인기술의 잠재력을 눈치채셨을 것입니다.

블록체인은 기본적으로 P2P 시스템이 구축되고 나서 참여한 모든 노드간의 트랜잭션 정보와 히스토리를 담고 있는 기록 원부 (Ledger) 라고 생각하시면 됩니다. 일종의 데이터베이스라고 생각하셔도 됩니다. 하지만 중앙서버에 있는 DB가 아니라 P2P 시스템에 참여한 모든 노드에 이 정보가 저장된다는 점에서 그동안의 트랜잭션 처리와 관리를 처리하는 방식을  근본적으로 바꿔버렸습니다.  달리 말하면 모든 트랜잭션(거래)에 대한 최종 컨펌을  P2P 시스템에  참여하고 있는 노드들 중에서 일정 숫자 이상의 노드가 합의(consensus) 를 하게 되면 이루어지도록 만든 합의 시스템이라고도 할 수 있습니다.

여기서 다시 한번 생각을 해봅시다.

블록체인에 저장할 수 있는 정보가 단순 거래정보가 아니라 여러가지 데이터를 담을 수도 있고 전체 P2P시스템이 공유할 수 있는 공유정보가 될 수도 있고, P2P간의 거래내역은 추적할 수 있다고는 하지만 공개키/개인키를 통해서 암호화되는 정보 교환을 할 수도 있고 무엇보다 가장 큰 강점중 하나는 중앙 서버가 없기 때문에 새로은 노드가 P2P시스템에 참여하고 인증받게 되면 자유롭게 직접 데이터 교환과 메세징이 가능해지기 때문에 이상적으로는 네트워크가 허용하는 만큼 노드의 컴퓨팅파워와 스토리지 용량에 따라서는 무한대로 확장가능한 구조가 가능하게 됩니다.

현재의 중앙집중식의 스케일 아웃 구조의 분산 컴퓨팅이 비중앙방식(decentralized) 의 분산컴퓨팅으로 확장가능하게 된다는 것을 의미합니다. IoT가 수억, 수십억으로 늘어나게 된다면 현재의 중앙집중식의 분산 컴퓨팅도 그 효율과 확장성에 한계를 가질 수 밖에 없을 것입니다. 새로운 디바이스가 나타날때마다 새로운 서비스 플랫폼을 클라우드에 구축하고 유지 , 운영해야 하는 부담이 그 어느때보다 크게 될 것입니다.

그렇기 때문에 최근에 IoT 에 대한 관심이 커지게 되면서 Things 간의 네트워크 기술에 이 블록체인 기술을 어떻게 하면 잘 적용할지에 대한 관심이 커지게 된 것은 너무나도 당연하다고 볼 수 있습니다. 대표적인 것인 ’15년 1월 CES에서 IBM이 발표한 Adept 라고 하는 시도인데요. 삼성전자와 Ethereum 이라고 하는 블록체인기술을 기반으로 PaaS 플랫폼 개발을 하고 있는 회사의 협업의 결과입니다. 즉 IoT 환경에서 블록체인 기술이 어떻게 적용되고 활용될 수 있을지를 증명하기 위한 Proof of Concept 연구 개발 결과를 공개한 것이 바로 그것입니다. 블로터에서 이에 대한 기사를 잘 정리해서 실었는데 참고해보시길 바랍니다. (http://www.bloter.net/archives/218404)

Featured image

(출처 : IBM Device Democracy, http://goo.gl/XexzbZ)

이 글을 보면 IoT의 디바이스 성능과 성격에 따라서 적절한 규모의 아키텍쳐를 제안하고 있습니다만 삼성전자와 협업을 해서 그런지 세탁기를 너무 강조하고 있다는 것은 좀 아쉽습니다. 가정내에 설치된 인터넷 공유기라던가 아니면 냉장고 정도는 되어야 상시 네트워크에 연결될 수 있는 허브 역할을 할 수 있다고 생각되는데요. 세탁기 유즈케이스의 허브 디바이스로 설정해놓아서 좀 그렇죠.

하지만 IoT 뿐만 아니라 최근 공유경제에 대한 관심들이 커지고 모바일의 사용이 보편화 되면서 금융분야에서부터 작은 규모의 사회적기업 활동에 이르기까지 이 기술의 활용은 무궁 무진하다고 볼 수 있습니다. 뿐만아니라 DNS 와 같이 ICANN 과 같은 Toplevel 인증 기관의 개입없이 도메인 네임을 등록관리하고자 하는 것(namecoin.info) 으로 번지기도 하고 개인의 Identification 을 관리하는데에도(onename.com) 이러한 블록체인 기술을 활용하고 있습니다.

한마디로 Trusted 3rd Party , 보통 인증기관 , 신용기관, 트랜잭션을 담당하는 중앙시스템 , 이런 것들이 쓰여지는 모든 (정보)시스템 및 체계에 패러다임의 큰 변화를 줄 수 있는 혁신적인 기술이라고 생각할 수 있습니다.

생각나는데로 적어보면 이미 비트코인과 이를 기반으로 하는 다양한 전자화폐(cruptocurrency) 는 기존 지불시스템과 중앙은행이 필요한 화폐의 개념을 바꾸어 놓았습니다. IoT쪽에서는 이에 대한 논의가 본격적으로 이루어지고 있다고 말씀드렸습니다. 비트토런트와는 또다른 형태의 decentralized cloud storage 도 등장하고 있습니다. onename 과 같은 새로운 형태의 인증 시스템 역시 등장하고 있습니다. 부정선거걱정없는 투표시스템이 가능해질지도 모릅니다. 헬쓰케어에서 그렇게 개인정보 이슈가 되고 있는 헬스관련 시스템이나 어플리케이션 정보들이 이 블록체인에 저장되어서 관리될 것입니다. 여전히 플랫폼 역할을 하는 중앙 시스템을 필요로 하는 Uber, AirBNB 와 같은 공유 경제 시스템이 플랫폼이 필요없는 진정한 P2P 마켓플레이스 시스템으로 대체될 수 있고 이러한 거대 자본 기반의 공유경제시스템을 싫어하는 소규모의 공유경제 또는 사회적 기업들이 이 기술들을 적극적으로 도입할 것입니다. 풍력 및 태양광을 생산하는 개인 또는 지역 커뮤니티에서도 이러한 기술을 이용해서 전기공급과 지불을 이러한 시스템과 연계하게 될 것입니다. 그리고 이러한 다양한 시스템에 동시에 상호연결되어서 자동으로 데이터를 교환하고 스스로 거래를 하고 돈을 지불하게 되는 세상이 올지도 모릅니다. 아마도 디바이스와 디바이스는 당연히 그렇게 동작을 할 것이고 사람의 개입은 더욱더 줄어들 가능성이 높습니다. 무인자동차, 드론, 모바일 이런 것들이 느슨하게 때로는 강력하게 이러한 P2P시스템에 연결되어서 자동으로 운용되는 세상이 의외로 빨리 올지 모른다는 생각을 했습니다.

물론 블록체인기술이 만능은 아닐 것입니다. 당장 모든 분야에 활용되기도 쉽지도 않고 기술적인 한계들도 존재합니다. 아시다시피 여전히 트랜잭션에 대한 노드간 컨펌을 하기 위해서 수분간의 시간이 필요합니다. 하지만 최근 많은 기술 스타트업들이 이러한 문제를 해결하기 위한 다양한 시도들을 하고 있는 것으로 알려져 있습니다. 작은 사이즈의 거래정보가 아닌 더 큰 데이터를 저장하고 보관하고 연결할 수 있는 메커니즘에 대한 연구들을 하고 있습니다.

빠르게는 기존의 분산 시스템과 블록체인이라고 말하는 P2P 시스템간의 하이브리드 형태로 만들어질 것입니다. 하지만 작년에는 최대 비트코인 거래소였던 마운틴곡스나 최근 비트스탬프 해킹으로 인한 거래중지의 예를 보듯이 기존 화폐와의 교환 거래를 위한 거래소는 비트코인이 말하고 있는 P2P기반의 거래가 아닌 기존 방식의 거래 형태를 가지고 있어서 생긴 문제였다고 볼 수 있습니다. 그래서 이러한 문제들을 아예 P2P 시스템내에서 해결하고자 하는 노력들도 있습니다.

돌이켜보면 90년대초에 웹브라우저라는 것이 등장하고 하이퍼링크라는 것이 소개되고 네트워크상의 인터넷상의 문서가 복잡하게 연결되기 시작하고 초보적인 CGI 기술이 등장하게 되면서 사실상 인터넷상에서도 크고 ,복잡하고 중요한 데이터들의 교환이 일어나고 트랜잭션을 처리하기 가능해진 것이 불과 20년도 안되었다는 것을 생각한다면 블록체인 기술이 앞으로 보여줄 모습은 상당히 파괴적이라고 단언합니다.

이미 상당수의 비트코인 스타트업이나 관련된 비지니스 주체들은 블록체인 기술을 전자화폐와 지불시스템의 테두리안에서만 생각하고 있지 않습니다. 앞서 말씀드린 것과 같이 이미 다양한 분야에서 이 기술이 검토되고 실험을 하고 있고 결국 돈과 사람들을 끌어 모으고 있다는 것이 바로 그 증거겠죠? 현재 시점에서 가장 발빠르게 움직이고 있는 곳은 Ethereum 이 아닌가 싶은데요 이 회사 뿐만 아니라  블록체인 기술의 발전과  관련 산업에 대해서 관심도 가지고 본인들이 몸담고 있는 산업과 도메인에서 어떻게 적용할 수 있을지 생각해보는 것은 어떨까 싶습니다.

마지막으로 마크 엔더슨의 블록체인에 대한 코멘트를 끝으로 이 긴 포스팅을 마무리하고자 합니다.

The blockchain is the core innovation,

We want a whole sequence of companies: digital title, digital media assets, digital stocks and bonds, digital crowdfunding, digital insurance. If you have online trust like the blockchain provides, you can reinvent field after field after field.

덧1, 15년 2월11일(수) 에 PAG (플랫폼전문가그룹)에서 발표한 내용을 이곳에 올려놓겠습니다. 함께 참고하셨으면 합니다.

카테고리: IT | 태그: , , , | 댓글 14개

그래도 우리는 핵심이 무엇인지를 잊지 말아야 한다.

어제 아침(토)에 문득 이러저러 생각이 겹치면서 예전 일들이 떠올라 페북에 끄적거린 것인데 제법 글이 길어져서 블로그에 옮겨놓습니다. 몇개 되지 않지만 페북 댓글을 보니 전하고자 하는 메세지와 상관없이 상황에 감정이입이 되시는 분들도 몇분 계시네요.


2005년, 2006년인지 기억도 가물가물하지만 S전자에 다니면서 겪었던 일이 생각난다. 아마 지금 페친중에 나와 함께 했던 분들중에는 이때 일들을 기억하는 분들도 있으리라…

그러니까 당시에 내가 보시던 임원(상무)이 있었고 이 바로 상사인 전무님이나 주위 임원들의 시선이 그리 곱지 않았었다. (당시 내 입장에서야 그 분들이 부당하다고 생각했었던 때이기도 하다.) 아무튼 나는 직속 상관인 임원과 전무님 사이에서 나는 졸지에 줄타기와 눈치를 봐야하는 상황에서 프로젝트를 꾸려가게 된 것이다.

좀더 자세히 말하자면 진행했던 프로젝트는 S전자에서 절대로 하지 않을 것 같은 미팅(회의)를 중심으로 하는 협업솔루션 개발이었다. 그러다보니 프로젝트의 당위성에 대해서 설명하는 것도 참 힘들었고 하드웨어와의 연계성을 고려한 통합 솔루션을 만들어내는 것도 참 힘든 일이었는데 앞서 말한 것처럼 여러 임원들 사이의 갈등속에서 직속상관의 뜻(!)을 받들어 프로젝트를 진행하는 것은 정말로 일을 맡은 나로써는 최악의 상황이라고 할 수 있었다. (이런 건 겪어본 사람만 안다.)

아무튼 임원이 발의해서 진행한 프로젝트라 전무님도 하지 말라고 강제로 지시를 내리기도 힘든 애매한 상황이고 그렇다고 개발하라고 충분한 예산도 지원해주지 않던 상황이였다. 아직도 생생하게 기억하는 건 전무님이 갑자기 따로 나를 호출해서 뛰어갔더니 ‘이거 하느라 얼마썼어? 내가 지시하기전까지는 한푼도 쓰지마! 알았지?’ 이러시는 거다. 이것도 내 직속 임원이 출장중일 때 벌어진 일이다.

임원들 사이의 문제는 우리가 어쩔 수 없는 상황이였고 직속 상관은 만들어내라고 하시고 전무님은 나 몰라라 하시고…

그러면서 나는 주어진 예산없이 10명정도 되는 파트원들을 데리고 자체 개발에 집중하고 (외주 이런거 없고, 디자이너 이런거 없고) 우리들끼리 프로젝트를 꾸역꾸역 진행했다.

왜? 그러라고 만든 팀이였으니까.

아무튼 위산과다 , 소화불량 그렇지 않아도 좋지 않던 통풍, 류마티즘염증이 나를 최악의 상황으로 밀어부치기도 했다.

그런데 당시 능력있던 파트원들의 노력이 빛을 발하기도 했지만 우연한 상황에서 베타버전도 아닌 것을 보여주고 전무님 인정을 받고 당시 조직의 회의시스템으로 자리를 잡고 다른 사업본부에까지 구축되어서 활용되는 계기를 마련하게 되었다.

이때 우리파트는 어떻게 일을 했을까? 상대적으로 예산도 적고 지원도 제대로 받지 못한 상황에서 매우 작지만 어떻게 이런 성과를 얻을 수 있었을까?

1. 인적 자원이외에 별다른 예산이 없었고 덕분에 외주를 하지 않았고 내부에서 많은 논의 – 대부분 이 프로젝트 해야하나요? 의미가 있나요? 이런 얘기로 시작해서 그래도 한다고 이것만은 하자라는 – 결과적으로 가장 핵심적인 기능 개발에만 집중할 수 있었다. 자의라기보다는 타의에 의해서지만 내부에서는 그럼으로써 더욱 파트원간의 결속력도 강해졌다.

2. 직속상관 이외의 전무님이나 기획, 영업 담당 임원의 지원과 지지를 받지 못한 일이였기 때문에 자연스럽게 그 분들을 설득하기 위해서 끓임없이 다양한 질문에 대해서 여러가지로 고민을 반복하고 때때로 이에 대한 대응을 통해서 솔루션에 대한 탄탄한 이론적인 준비가 되어 있었을 뿐만 아니라 시스템적으로 어떻게 구현될지 직접 만들어보고 고쳐보고 하는 과정이 반복되고 또 반복될 시간이 충분했다. 왜? 아무도 관심이 없어서 우리끼리 자가발전을 하고 있었기 때문에.

3. 직속상관이 다소 특이한 경력의 임원분이였기에 일하는 방식이나 진행하는 방식이 앞서 말한 1,2 의 형태를 자연스럽게 진행할 수 있도록 최대한 방어해주고 보호를 해주셨다. 하지만 덕분에 중간에 낀 나는 도망가고 싶은 적인 한두번이 아니였지만…

4. 마지막으로 운이 따랐다. S전자에서 가장 높은 분들 중 한분에게 선보일 제품, 솔루션을 확인하기 위해서 팀별, 파트별로 10분정도 보고하는 시간을 가질 기회가 있었는데 까다롭기로 유명했던 전무님의 질문에 대해서 신들린 듯이 답변을 할 뿐 아니라 그동안 그 분이 지적했었던 것 이상의 준비를 해서 데모까지 보여줄 수 있었다. 이 보고는 점심시간을 넘어서 1시간 가까이 했다. 그리고 공식적으로 이 프로젝트에 대한 승인과 지원을 받을 수 있게 되었다. (하지만 이 솔루션은 데모하는 제품의 후보로는 탈락했다. 당연하지만.)

주위에 스타트업들에 대한 얘기들을 많이 듣기도 하고 나 자신도 현재 회사에 합류 하면서 여러가지 일들을 해나가고 있지만 여전히 잘 해나가고 있지 못해서 늘 자책하지만 늘 생각하는 것은 이런 것이다.

  • 핵심이 무엇인지를 잊지 말아야 한다.
  • 당연히 그 핵심에 집중해야 한다.
  • 반복해서 고민하고 고민하고 고쳐나가야 한다. 그것도 아주 빠르게.
  • 그리고 운 또는 기회가 왔을때 놓치지 말아야 하다.

예산이 많다고 좋은 사람 많다고 무조건 좋은 제품이나 서비스를 만드는 것이 아니다. 그럴 기회와 확률이 약간 늘어난 것 뿐이다.

많은 시간이 걸려서 이렇게 편하게 얘기를 늘어놓기라도 하지만 어떠한 일을 제대로 해나간다는 것, 어떠한 사업을 관철해 나간다는 것은 매우 고통스러운 것이다.

카테고리: Story | 태그: | 댓글 3개

딥 러닝 (Deep Learning) , 한번 살펴보고 가실께요.

오랜만에 포스팅입니다.

오늘 포스팅할 내용은 딥러닝에 대한 최근 트랜드를 한번 정리해서 공유하고자 합니다. 사실 저는 플랫폼이나 인프라에 더 관심을 가지고 있고 기계학습에 대해서는 아주 깊이 알고 있지는 못합니다. 그렇다고 전혀 모르는 것도 아니지만 ^^.  아무튼 최근 딥러닝에 대한 관심과 돌아가는 형국이 그냥 지나칠 상황은 아닌 것 같아서 조사한 내용을 모처럼 공유하고자 합니다.

아시다시피 그간 빅데이터쪽 시장은 머신러닝쪽 보다는 기업시장에서의 분석 플랫폼과 기존 데이터 웨어하우스 나 데이터마트를 대체하거나 통합솔루션을 만드는  쪽에 좀더 집중을 하고 있는 듯 합니다. 아무래도 기존 솔루션 시장을 유지하면서 진화하기에는 이런 방향이 크게 틀리지도 않고 돈을 쓸 곳도 당장은 기업들이기 때문에 이것에 맞추어서 진화하는 것이 맞겠죠. 클라우데라에 대한 엄청난 투자 역시 이러한 분위기에 걸맞는 것이라고 볼 수도 있지요.

그러다보니 기업시장에서의  머신러닝이라는 분야는  제한적일 수밖에 없었는데요. 역시나 구글, 페이스북과 같은 회사들은 자신들의 B2C 서비스에서 활용할 수 있는 머신러닝 연구개발과 활용에 적극적인 투자와 우수 인력들에 대한 스카웃에 열을 올리는 모습입니다.

최근 가트너는 2014년 주목할 만한 기술 분야중 하나로 딥러닝을 꼽으면서 2017년이 되면 컴퓨터의 10%는 데이터 처리가 아닌 딥 러닝기반의 학습을 하고 있을 것이라고 얘기하고 있고 DNN 알고리즘을 활용하는 음성인식 어플리케이션에는 2배로 늘어난다고 얘기하고 있습니다. (http://www.gartner.com/newsroom/id/2603215)

올해초 구글은 설립한지 불과 3년 밖에 되지 않은 런던에 있는 딥마인드(DeepMind)라는 회사를  4억달러가 넘는 금액으로 인수를 하였습니다.  이 회사 인수를 위해서 구글과 페이스북이 경쟁을 벌였다는 얘기들도 들리더군요.  이 회사명이 얘기해주듯이 딥 러닝 전문가들이 설립한 회사입니다. 이 회사를 인수하면서 딥 러닝에 대한 시장의 관심들이 커졌지만 구글은 이전부터 이러한 딥 러닝 알고리즘에 기반한 다양한 연구와 투자를 해오고 있었습니다. (http://recode.net/2014/01/26/exclusive-google-to-buy-artificial-intelligence-startup-deepmind-for-400m)

스탠포드대학의 앤드류 응(Andrew Ng) 과 구글이 딥 러닝 프로젝트를 구성해서 2012년 16,000개의 컴퓨터 프로세스와 10억개 이상의 뉴럴네트워크 그리고 DNN을 이용해서 유튜브내 천만개되는 비디오중에서 고양이를 인식한 연구는 크게 언론에 보고되기도 했습니다.  이 연구가 의미가 있는 것은 앞서 말한 학습데이터가 없은 비지도학습(unsupervised 머신러닝 – 즉 컴퓨터에게 “이러한 이미지는 고양이다”라고 가르쳐주지 않았다) 이라는 점입니다. 즉 학습세트를 만들지 않고 스스로 이미지를 인지해서 분류해낸 것이죠. 이 소프트웨어 프레임워크를 논문에서는 DistBelief로 언급하고 있습니다.
(http://www.nytimes.com/2012/06/26/technology/in-a-big-network-of-computers-evidence-of-machine-learning.html?_r=1&)

DeepNetwork
이 발표 이후 사람들은 구글의 막대한 컴퓨팅 리소스를 이용해서(1000대가 넘는 컴퓨터, 1백만불의 비용등등) 이러한 딥 러닝 분석을 하는 것이 현실적인가? 라는 반론에 대해서 앤드류 응교수는 이듬해 GPU 기반으로 저비용으로 뉴럴네트워크를 구성할 수 있는 기술을 논문으로 공개하였습니다. 개발된 코드를 오픈소스로 공개하는 것은 아직 결정하지 않았지만 약 $20,000의 비용으로 딥 러닝 알고리즘을 학습할 수 있는 것은 머신러닝 관련된 학계와 기업에 있어서는 파괴적 혁신에 가깝다고 할 수 있고 제가 사실상 딥러닝 기술이 향후 머신러닝 분야에 큰 임팩을 줄 수 있다고 보는 부분입니다. 만일 이 기술이 오픈소스로 공개된다면 어떠한 파급효과를 가져올까 상상을 해보십시요.  (http://www.wired.com/2013/06/andrew_ng/)

그런데 2주전 이 앤드류 응 교수가 중국 바이두의 IDL (Institute of Deep Learning)의 산호세 연구소를 맡게 되었다는 소식입니다.

이 얘기가 왜 흥미롭냐면 참고로 딥러닝 분야에서는 몇몇 대가들이 계십니다.  캐나다 대학의 Geoffery Hinton 교수 , 이 분은 구글이 이 양반이 설립한 회사를 사버리면서 채용을 해버렸죠. DeepMind의 설립자와 연구원들도 이 분 제자들이죠. 뉴욕 대학의 Yenn LeCun , 이 분 역시 페이스북에 채용되어서 LAB을 맡고 계시고 최근에 앤드류 응교수가 바이두로 가게 된 것입니다. 그리고 토론토 대학의 Yoshue Bengio 교수가 있습니다. 이 분은 학계에 남기로 했다는 얘기가 들립니다만 아무튼 흥미로운 것은 이 4분이 최근까지 딥러닝에 연구 협력을 긴밀히 해왔는데 이렇게 각자 흩어지게 된 것입니다.  세계적으로 가장 많은 컨텐츠와 빅데이터 플랫폼을 갖춘 이 회사로 흩어진 이 분들의 경쟁과 협력을 통해서 딥러닝 분야 , 넓게는 머신러닝 분야에서의 획기적인 기술발전이 이루어지지 않을까 합니다. 실제 LeCun 교수가 최근 Reddit  에서 나눈 얘기중에 보면 페이스북에서 넉넉한 자원과 인력 그리고  데이터를 가지고 뚜렷한 목적성을 가지고 연구개발을 했을 때의 장점을 언급하고 있습니다. (http://www.reddit.com/r/MachineLearning/comments/25lnbt/ama_yann_lecun)

그리고 페이스북 역시 DeepFace 라고 하는 딥 러닝 기반의 사진 내 얼굴 인식 기술을 선보이는 등 이에 대한 기술투자와 전문가 영입을 늘리고 있습니다.
(https://gigaom.com/2014/03/18/facebook-shows-off-its-deep-learning-skills-with-deepface/https://www.facebook.com/publications/546316888800776/)

앞서 말씀드렸듯이 바이두는 아예 써니베일과 북경에 IDL을 작년에 설립해서 적극적으로 인력과 연구를 진행하고 있습니다. 연구는 써니베일에서 서비스는 북경의 연구소에서 진행하는 듯 보입니다. (http://idl.baidu.com/en/IDL-about.html)

아무튼 딥러닝에 관심이 있으신 분이라면 아래의 링크에서 공부할 것 , 연습할 것을 찾아보시면 어떨까 합니다. 파이썬 기반으로 구현된 라이브러리 소개되어 있고 튜토리얼도 있습니다. (http://deeplearning.net)

그리고 LeCun 교수도 언급을 하고 있고 딥러닝쪽에서 많이 활용하고 있는 툴킷으로는 LuaJit 기반 Torch7 이라는 것이 있습니다. 제가 이쪽 분야에 대해서는 아주 깊이는 모르지만 Lua를 활용하는 머신러닝 라이브러리가 있다는 사실은 이번에 처음 알게 되었습니다. (http://torch.ch/)

그리고 마지막으로는 국내에서는 음성인식 분야부터 시작해서 네이버와 다음쪽에서 딥러닝에 대한 연구를 깊이 하고 서비스까지 론칭한 것을 알고 계실텐데요. (네이버나 다음의 음성검색) 작년 DevView 발표 자료도 참고해보면 네이버랩의 김정희씨가  딥러닝에 대해서 국내에서는 가장 활발하게  알리고 다니시는 것 같습니다.  (http://deview.kr/2013/detail.nhn?topicSeq=39)

딥러닝에 대한 기술은 워낙 어렵고 접근하기 힘들지만 트랜드 , 분위기 정도를 알고 있다가 여력이 될테 뛰어드는 것은 어떨까 생각됩니다. 워낙 투자와 리소스가 많이 필요한 일이 거든요. 그러고보니 이 분야의 어떤 스타트업이 생각나네요.

카테고리: IT | 태그: , , , | 1개의 댓글

데이터가 21세기 원유라구요? 그렇다면 제일 먼저 생각해야 할 것은 …

몇년전에 가트너에서 데이터는 이 시대의 원유이고 앞으로 데이터는 경쟁우위를 좌우하기 한다는 글을 본 적이 있습니다.
– 이를 인용한 기사를 찾아보니 블로터에 있네요. ^^ (http://www.bloter.net/archives/74906)
 
그러고보니  데이터를 처리하고 분석하는 쓰여지는 일부 영어 단어를 살펴보면 distilled, drill down 와 같은  표현들이 있기도 합니다.
 
데이터를 잘 수집해서 정제하고 분석에 용이한 형태로 변환해서  데이터베이스 시스템에 넣어주는 것을 보통 ETL (Extract, Tranform, Load) 라고 말하고 고가의 ETL시스템들이 여러 분야에 활용되고 있지요. 이러한 시스템이 해주는  일은 다양한 포맷을 가진 데이터 소스를 다른 포맷으로 변환하는 것에서부터 이들을 결합하고 쪼개는 일을 복잡한 프로그래밍이 아니라 GUI 기반으로 손쉽게 정의하고 상대적으로 간단한 스크립팅을 통해서 가능하게 해준다는 것입니다.  당연히 이러한 프로세싱에 필요한 스케줄러를 내장하고 있습니다.  고가의 시스템이긴 하지만 다양한 데이터 소스 (상용 ERP, 데이터베이스, FTP, HTTP, 파일시스템 등) 를 위한 입출력 어뎁터를 갖추고 있어서 매우 유용한 솔루션이라고 할 수 있습니다. 즉 이러한 시스템이 있기에 데이터베이스나 데이터웨어하우스에서 데이터를 손쉽게 분석이 가능한 것은 당연한 것이죠.
 
빅데이터쪽에서도 여러가지의 데이터 수집 프레임워크들이 오픈소스로 공개되어 있습니다 . 대표적으로 Scribe, Flume도 있지만 사실 자신들의 환경에 맞추어 최적화해야 하거나 커스터마이징을 해야하는 것은 피할 수 없다고 봅니다. 오픈 소스는 아니지만 이런 측면에서 최근 Splunk는 정말 많이 주목받는 솔루션이기도 합니다. 그러면서 ETL이 아니라 ELT 라는 말도 나오기도 했죠. 
 
그런데 제가 오늘 말하려고하는 것은 이 영역에서의 업무가 얼마나 중요성한가에 대해서 강조드리고 싶어서 포스팅을 하게 되었습니다. 
 
사실 기업내에 흩어져 있는 다양한 데이터를 수집하고 이의 정합성을 맞춘다는 것이 보통일이 아닙니다. 아무리 각각의 시스템이 잘 개발되고 문제없이 잘 구축되었다고 하여도 운영을 하다보면 데이터를 주는 쪽에서의 문제, 네트워크 환경, 예기치 않은  데이터 오류, 데이터량이 증가함에 따라서 다시 튜닝해야하고 모니터링해야 할 것이 한두가지가 아닙니다. 그리고 애시당초 이러한 데이터를 한데 모아서 분석하거나 한다는 생각으로 설계되고 구현된 것들이 아니기 때문에 더욱 어렵지요.
 
그래서 현업에서 어떤 문제가 발생했을 경우 데이터에 복구와 정합성을 다시 맞추기 위한 일은 사실 데이터를 분석하고 원하는 결과를 뽑아내는 일 이상으로 중요한 것입이다. 가장 큰 이유중 하나는 데이터 규모가 매우 커지게 되면 롤백을 하거나 정합성을 다시 맞추기 위한 일이 생각한 것만큼 만만치 않기 때문입니다. 데이터 복구도 복구지만 복구 자체에 걸리는 시간이 매우 오래걸릴 수 있기 때문입니다. 따라서 대용량 데이터를 처리함에 있어서 이러한 복구와 정합성을 빠르게 하기 위해서는 (네 100% 회피할 수 없으니까요) 초기에 데이터를 저장하는 정책과 구조에 대해서도 반드시 고려를 해야하는 것은 당연합니다. 
 
사실 이게 어떤 정답이 있는 것도 아닙니다. 상황에 따라 쌓이는 데이터의 양, 업데이트주기, 데이터의 중요성, 투자할 수 있는 인프라와 인력에 에 따라서  천차만별일 수 밖에 없는 것입니다. 그래서 이 일을 맡고 있는 개발자나 시스템운영자 입장에서는 노심초사할 수 밖에 없게됩니다. 그런데 이러한 중요성에 비해서 담당자 입장에서는 티가 나는 일도 아닙니다. 문제가 생길때에만 욕만 먹는 위치이고 역할인 것이죠. 
 
빅데이터에 대한 분석과 이를 통한 다양한 가치창출에 대해서들 많이 얘기하시지만 상대적으로 이러한 데이터를 수집하고 정제하는 일은 덜 강조되는 것 같습니다. 이 위치에서 일하는 개발자, 운영자에 대한 역량과 그 역할의 중요성에 대해서 잊지 말아야하고 이 일을 맡는 사람에게도 이점을 강조하고 필요에 따라서는 이에 맞는 대우를 해주어야 한다고 생각합니다. 
 
자동차에 들어가는 맑고 투명한 가솔린을 얻기 위해서 누군가는 사막 한가운데서 바다 한가운데서 시커먼 원유를 온몸에 뒤집어쓰고 시추하는 사람들이 있듯이 다양한 포맷으로 여기저기 저장된 여러 데이터 소스로부터 Raw 데이터를 모으고 처리하는 이 일이 단순하고 저급의 일인듯 하지만 사실상  가장 중요하고 제대로 설계되고 관리되어야 한다는 것입니다.
 
쓰다보니 중언부언이네요. ^^;
 
이러한 일이 그다지 힘들지 않고 크게 대수롭게 느끼지 않다고 생각하신다면 대용량 데이터를 다루고 있는 것이 아니실테니 이런 분은 패쑤~🙂
카테고리: Uncategorized | 댓글 남기기