NoSQL이 진정으로 의미하는 것

전문가 칼럼입력 :2014/01/09 10:33

임백준
임백준

해마다 가을이 되면 소프트웨어 업계의 고수들은 덴마크의 작은 항구도시 오르후스(Aarhus)에 모여든다. 앤더스 하일스버그나 마틴 파울러 같은 스타를 비롯해서 뛰어난 기술력으로 팬덤을 형성한 재기발랄한 개발자들이 각국에서 모여드는 다른 개발자들과 아이디어를 교환하고 정보를 나누기 위해서 결집하는 것이다.

봄에는 코펜하겐에서 열리고 가을에는 오르후스에서 개최되는 고우투(GOTO) 컨퍼런스는 소프트웨어를 다루는 개발자라면 관심을 갖고 지켜볼 필요가 있다.

리팩토링과 UML 등을 전파하면서 유명세를 타고 있는 마틴 파울러는 2012년 가을에 열린 고우투 컨퍼런스에 참가해서 'NoSQL에 대한 소개'(Introduction To NoSQL)라는 제목의 강연을 했다. 2012년 여름에 출간된 자신의 저서 'NoSQL Distilled'를 기반으로 한 강연이었다.

그가 쓴 책은 국내 인사이트 출판사에서 'NoSQL: 빅데이터 세상으로 떠나는 간결한 안내서'라는 제목으로 번역출간 되었고, 강연 내용은 유투브에 동영상으로 올라와 있다.

지난 칼럼에서 마이클 스톤브레이커 MIT 교수의 NewSQL에 대한 이야기를 했으니, 이번에는 NoSQL에 대한 이야기도 해야 균형이 맞을 것 같다는 생각이 들었다. 그래서 파울러의 강연을 들으면서 생각을 가다듬었는데, 그러는 동안 오랫동안 궁금하게 생각했던 문제가 하나 해결되었다. 그것은 바로 NoSQL이라는 이름이 가지고 있는 비밀이었다.

스톤브레이커 교수는 NoSQL을 NotYetSQL이라고 ‘조롱’했고, NoSQL 운동을 비판적으로 바라보는 사람들은 NoSQL이라는 이름이 실체가 없는 공허한 단어에 불과하다고 지적한다. 나 역시 관계형 데이터베이스의 패러다임을 뛰어넘으려고 하는 시도가 NoSQL이라는 생뚱맞은 이름으로 불리는 이유가 궁금했다.

그들의 깃발에 NoSQL이라는 구호가 적혀 있다면, 운동이 극복하고자 노력하는 대상은 SQL이라는 말인가?

파울러에 의하면 NoSQL은 런던에 살고 있는 요한 오스칼손(Johan Oskarsson)이라는 개발자가 만들어낸 단어다. 오스칼손은 2009년 무렵에 캘리포니아에 있는 개발자들과 데이터베이스에 대해서 토론을 하기로 했다. 그리고 트위터에서 이 토론과 관련된 해시태그를 정하기 위해서 기억하기 쉽고 독특한 표현으로 ‘NoSQL’이라는 태그를 고안해냈다.

NoSQL이 어떤 거창한 흐름이나 운동을 가리키기 위해서 일부러 고안된 말이 아니라 특정한 모임을 가리키기 위한 태그였다는 것이다. 그렇지만 어쩐 일인지 NoSQL이라는 이름은 시대를 관통하는 운동을 하나로 묶는 거대한 깃발의 역할을 담당하게 되었다.

찰리 채플린 영화를 보면 누가 흘리고 간 깃발을 돌려주기 위해서 채플린이 별다른 생각 없이 깃발을 들고 걸어가는데 그 뒤로 데모를 하는 노동자들이 우연히 따라오면서 졸지에 격렬한 데모의 주모자처럼 보이는 장면이 있다. 이와 마찬가지로 NoSQL이라는 표현은 그 자체로 (“No more SQL!”이라는 식의) 의미를 담고 있는 표현이 아니라 다분히 상징적이며, 우연의 산물에 불과하다.

이런 것을 영어로 미스노머(misnomer)라고 일컫는데 예를 들어서 ‘아라비아 숫자’와 같은 표현이 대표적인 미스노머다. 우리가 사용하는 수는 인도에서 만들어진 것이기 때문에 사실은 인디언 숫자라고 불러야 옳다.

위키피디아의 ‘NoSQL’이라는 항목은 파울러의 설명보다 조금 더 자세한 내용을 담고 있다. NoSQL이라는 단어가 처음으로 등장했던 것은 1998년으로 거슬러 올라간다. 카를로 스트로치(Carlo Strozzi)라는 개발자가 실제로 SQL을 사용하지 않는 작은 오픈소스 버전 관계형 데이터베이스를 만들고 거기에 NoSQL이라는 이름을 붙였다. 스트로치는 현재 진행되고 있는 NoSQL 운동은 실제로 SQL에 대한 것이 아니라 관계형이라는 패러다임을 극복하려는 것이므로 ‘NoREL’이라는 이름이 더 어울릴 거라고 지적했다.

하지만 우리가 숫자의 기원이 인도라는 사실을 알면서도 여전히 아라비아 숫자라는 표현을 쓰는 것처럼, 스트로치의 제안은 별 다른 주목을 받지 못하고 있다.

위키피디아에 의하면 2009년에 열린 오스칼손의 모임에 NoSQL이라는 트위터 태그를 붙인 사람은 오스칼손이 아니라 에릭 에반스(Eric Evans)라는 주장도 있다. 에반스는 '도메인 주도 개발'이라는 책으로 잘 알려진 업계의 고수 중 한 명이다. 그렇지만 NoSQL이라는 태그를 처음 고안한 사람이 오스칼손인지 아니면 에반스인지 하는 것은 별로 중요하지 않다.

NoSQL이라는 이름의 기원을 자세하게 설명하는 이유는 많은 사람들이 잘못된 이름 때문에 혼란을 겪고 있기 때문이다. 스톤브레이커 교수가 NoSQL을 NotYetSQL이라고 비판하는 것이 대표적이다. 붕어빵에 붕어가 없듯이, NoSQL은 SQL에 대한 것이 아니다.

NoSQL은 관계형이라는 패러다임을 극복하기 위한 노력, 클라우드 컴퓨팅으로 대표되는 클러스터 환경에 맞는 데이터베이스를 만들려는 노력, 엄청난 분량과 속도로 생산되는 빅데이터를 처리하기 위한 노력, 미리 정의된 스키마를 사용하지 않으면서 데이터를 처리하고자 하는 노력 등을 하나로 묶어서 지칭하는 포괄적인 표현이다.

이러한 노력들은 때로는 스톤브레이커 교수가 말하는 NewSQL 운동과 겹치기도 하고 때로는 전례가 없었던 새로운 패러다임으로 무장한 채 ‘빅데이터’나 ‘클라우드’ 같은 버즈워드들과 어깨를 나란히 하며 새로운 차원의 컴퓨팅 환경을 열어나가고 있다.

NoSQL이라는 말 자체는 미스노머이지만 그것이 가리키고 있는 운동은 실제로 존재하며 소프트웨어를 다루는 사람들 모두에게 직간접적인 영향을 미치고 있다.

파울러가 강연한 내용을 여기에서 소개하기는 어렵지만 '폴리글랏 퍼시스턴스'(ployglot persistence)라는 개념은 기억해둘 만하다. 파울러에 의하면 NoSQL 운동은 관계형 데이터베이스의 종말을 의미하는 것이 아니다.

관련기사

대신 컴퓨팅 환경에 새로운 차원의 문제가 주어지면서 관계형 패러다임으로 모든 문제를 해결할 수 있는 시대가 끝났음을 알리고 있을 뿐이다. 컴퓨터 프로그래밍 언어가 하나의 언어로 모든 것을 해결하지 못하는 ‘폴리글랏 프로그래밍’의 시대를 맞이하고 있는 것처럼, 데이터베이스 역시 본격적인 ‘폴리글랏’의 시대를 맞이하고 있다.

그렇기 때문에 NoSQL이 진정으로 의미하는 것은 SQL의 부재가 아니라 선택할 수 있는 새로운 데이터베이스 패러다임의 범람이다.

*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.

임백준 IT컬럼니스트

한빛미디어에서 『폴리글랏 프로그래밍』(2014),『누워서 읽는 퍼즐북』(2010), 『프로그래밍은 상상이다』(2008), 『뉴욕의 프로그래머』(2007), 『소프트웨어산책』(2005), 『나는 프로그래머다』(2004), 『누워서 읽는 알고리즘』(2003), 『행복한 프로그래밍』(2003)을 출간했고, 로드북에서 『프로그래머 그 다음 이야기』(2011)를 출간했다. 삼성SDS, 루슨트 테크놀로지스, 도이치은행, 바클리스, 모건스탠리 등에서 근무했고 현재는 맨해튼에 있는 스타트업 회사에서 분산처리, 빅데이터, 머신러닝과 관계된 업무를 수행하고 있다.