Daybreakin Things

Posted
Filed under 살아가기, 생각하기

이번 주에는 석사논문 마무리와 연구실 서버실 재정비 작업으로 인해 12월 31일 당일이 되어서야 다시 집에 왔다. 올 한해는 심리적으로 참 힘든 시기를 보냈지만 또 그만큼 얻은 것들도 많다는 생각이 든다. 한해 해왔던 주요 일들을 정리해본다.

*

석사 연구 - "DoubleClick: Boosting the performance of Click modular router"

내가 석사과정 동안 해온 연구는 고성능 소프트웨어 라우터에 관한 것이다.

라우터는 인터넷에서 사용되는 데이터 전송 단위인 패킷(packet)들을 각 패킷에 쓰여진 목적지 IP 주소를 보고 어디로 보낼지 결정하는 역할을 하는 장비이다. 전세계에 깔린 인터넷망에 골고루 접속하기 위해 가장 핵심적인 역할을 담당하는 셈이다. 이 라우터를 만드는 방법엔 여러가지가 있는데, IP 주소를 보고 목적지 정보를 가져오는 연산 하나에 엄청나게 최적화된 전용 하드웨어 칩(content addressable memory)을 이용하는 방법이 있고(대부분의 상업용 라우터는 이런 칩들을 사용한다) 소프트웨어 라우터처럼 범용 PC 기반의 소프트웨어만으로 구현되는 종류도 있다. 후자의 경우 손쉽게 기능을 바꾸거나 추가할 수 있기 때문에, 전통적인 TCP/IP가 아닌 새로운 종류의 네트워크 프로토콜을 연구한다든지 혹은 IDS(침입 탐지 시스템)나 방화벽 같이 복잡한 규칙을 구현해야 할 때 많이 사용한다.

하지만 소프트웨어 라우터의 가장 큰 문제는, 성능이 낮다는 점이다. Linux를 써서 "그냥" 구현하면, 아무리 i7급의 최신 쿼드코어 CPU를 박아도 10 Gbps의 트래픽을 처리하기가 버겁다. 일반 가정에서야 100M 광랜 정도면 충분하지만, 인터넷망의 근간을 구성하는 라우터는 100 Gbps는 보통이고 심지어 Tbps 급 장비도 존재하는 세상이다. 방화벽의 경우 기업 데이터센터의 관문(gateway)으로 설치하는 경우도 있기 때문에 수십 Gbps 정도는 거뜬히 처리할 수 있어야 한다. 그래서 우리 연구실 선배들이 했던 일은, Linux에 들어가는 10 Gbps급 랜카드 드라이버를 최적화하고 패킷 처리 연산 중 복잡한 부분을 CPU가 아닌 GPU에 맡김으로써 일반 PC로도 40 Gbps 이상의 성능을 낼 수 있음을 보인 것이다. 국내에는 많이 알려지지 않았지만, 네트워크나 시스템 분야의 해외 학회에서는 PacketShader라고 하면 꽤 유명하다.

내가 한(…이라기보다 하려고 했던…) 일은 PacketShader 플랫폼이 한 번에 한 종류의 패킷 처리 연산(IPv4/IPv6 routing, IPsec encryption 등)만 돌리도록 최적화된 것을 여러 종류의 패킷 처리를 동시에 같이 할 수 있도록 만드는 것이다. 실제 PacketShader에 손을 대기 시작한 건 작년 여름부터인데, 처음 6개월 동안은 "PacketShader를 실제로 다른 사람들이 써볼 수 있는 것으로 만든다"는 것을 목표로 control plane이라고 해서 라우팅 테이블(IP 주소와 목적지를 연결시켜주는 정보) 관리하는 기능을 구현하려고 했다. 그러다가 올해 초 방향을 바꿔 여러 패킷 처리 연산을 동시에 돌릴 수 있게 하는 것을 목표로 삼았다. 그래서 가을까지 내내 그걸 구현하려고 삽질했는데, 졸업논문 데드라인 3주 전이 되어서야(!) PacketShader 기반으로 구조를 바꾸기보다는 차라리 이미 modular archiecture가 잘 구현되어 있는(그러나 성능은 낮은) Click modular router의 성능을 개선하는 쪽으로 접근하는 게 낫겠다는 결론을 내린 것이다. 랄라; 처음 생각은 성능이 좋은 시스템을 모듈화하는 것이 쉽지 않을까였는데, 생각을 바꿔서 모듈화된 시스템의 성능을 높이자는 것이 된 셈이다.

결과적으로, 11월 한달 간 벼락치기한 졸업논문 연구를 통해 PacketShader에서 적용했던 최적화 기법들을 Click에 맞게 변용하여 PacketShader처럼 대략 30 ~ 40 Gbps 급까지 끌어올리는 데 성공했다. 원래 Click을 그냥 돌리면 10 Gbps도 채 나오지 않는다. 여기까지만 들으면 환상적으로 보이지만, 이걸 실제로 "다른 사람이 쉽게 가져다 쓸 수 있는" 물건으로 만들기 위해서는 갈 길이 멀다. 원래 연구라는 게 다 그렇기는 하지만, 실제 해보면서 느끼는 건 역시 '제품화', '상용화'라는 게 정말 귀찮고 힘든 일이라는 것.

이제는 연구와 개발(코딩)의 균형을 어떻게 잡아야 할 지도 감이 오고 연구와 개발이 어떻게 다른지도 알 것 같다. 말하자면 연구는 top-down approach(하향식 접근)이고 개발은 bottom-up approach(상향식 접근)라고 할 수 있겠다. 항상 코딩할 때 마음에 새겨야 할 것은, 내가 이 코딩을 왜 하고 있는지, 이것이 연구로 달성하고자 하는 목표에 얼마나 도움이 되는 것인지 끊임없이 질문해야 한다는 점이다. 코딩 자체의 재미를 좇아가다보면, 무언가 일은 열심히 했는데 연구 결과물은 남지 않는 상황이 생긴다. 또, 매주 있는 교수님과의 연구 미팅에서도 "내가 한 일"을 이야기하기보다는 "무슨 일을 어떤 의문에 답하기 위해 했고, 그 결과가 무엇인지 또는 무엇 때문에 결과를 얻을 수 없었는지"를 중심에 두어야 한다. 특히나 나처럼 오픈소스로 하고 싶은 거 하는 순수한 지적 유희의 재미를 즐기던 사람이라면 더욱 조심해야 할 부분이다. 물론 어느 정도 시간 여유가 있을 때는 연구에 당장 직접적인 도움이 되지는 않지만 장기적으로 시간 절약에 도움이 되는 refactoring 같은 작업을 해두면 좋다.

다만, 석사과정 하면서 개인적으로 아쉬웠던 부분은 생각보다 논문을 많이 읽지 못했다는 것이다. 숙독이 아니라 통독이라도 하루에 논문 1~2개씩은 봐야 한다고들 이야기하는데, 코딩에 치이다보면 며칠, 몇주씩 논문을 거의 읽지 못하는 경우도 있었다. 그래서 새해부터는 일주일에 2번 정도는 한나절 내내 논문만 읽는 시간을 따로 잡아볼 생각이다. 주말에 한번, 매주 있는 연구미팅 끝나고 한번 정도면 적당할 것 같다.

*

POPONG (Open Politics Engineering) - IT 정치참여 플랫폼 프로젝트

2010년 말부터 SPARCS 몇몇 선후배들을 주축으로 시작한 프로젝트로, IT 기술(여기서는 주로 소프트웨어를 의미)을 이용해 일반인들이 정치적 의사결정에 필요한 정보들을 손쉽게 얻을 수 있도록 하고 더 나아가 많은 사람들이 정치에 긍정적인 관심을 가지도록 돕는 일련의 소프트웨어와 서비스를 개발하자는 것이 목표이다. 또한 공돌이들이 물건만 만드는 사람들이 아니라 세상을 변화시키는 데 참여할 수 있는 사람들이라는 것을 보여주자는 것도 하나의 동기가 되었다. 나는 기본적으로 민주주의라는 틀과 선거 제도를 그대로 인정하되, 이 프로젝트를 통해 선거와 집회만으로는 정치 참여의 수단이 너무 부족하다는 인식을 가지고 선거기간에 사람들의 선택을 돕고 선거기간이 아닌 때에는 사람들이 정치인들에 대한 감시와 여론 수집의 역할을 함께 할 수 있게 만들고 싶다. 신앙적 관점에서는, "아버지의 뜻이 하늘에서와 같이 땅에서도 이루어지소서"의 구현 주체인 한 사람으로서 적어도 현재까지는 최선이라 여겨지는 지향점인 민주주의 시스템이 정말 사람들을 위해 동작하도록 만들고픈 것이기도 하다.

나는 학부 저학년 때까지만 해도 정치는 나와 상관이 없는 것이라고 생각했었으나, SNS의 급격한 보급과 더불어 주류 언론에는 잘 알려지지 않지만 실제로 일어나고 있는 여러 일들을 보았고, 각자의 정치적 입장에 따른 관점의 차이가 얼마나 다른지, 또 사람들이 생각보다 논리적·합리적이지 않고 자신이 속한 집단에 따라 맹목적인 주장을 펼치는 모습을 접하게 되면서, 사실은 내가 정치적 영향에서 살짝 빗겨난 위치에 있을 뿐이라는 것을 알게 되었다. 우리나라의 경제 성장과 민주화 덕분에 그나마 이 정도인 것이고, 그런 것이 없었더라면 지금의 내 생활도 많이 달랐을 것이라는 생각에 미치게 되니 정치를 "잘" 하는 것이 중요하겠구나 라는 생각을 하지 않을 수 없었다.

처음엔 공공데이터 개방과 활용에 초점을 둔 "정부 2.0" (government 2.0) 운동에 대한 해외 동향을 공부하는 것으로 시작했는데, 한국에서도 관련 움직임이 있다는 사실을 알게 된 이후 우리는 "정치 2.0" (politics 2.0)으로 초점을 맞추게 되었다. 여기서 2.0이라는 버전 번호를 붙인 것은 웹 2.0이 OpenAPI와 웹표준 준수를 통한 웹서비스의 개방과 소비자들의 참여 확대라는 트렌드를 가리키는 말이었기 때문이다. 따라서 정치 2.0이라 함은 선거로 뽑히는 지역자치단체 수장들과 행정부의 수장 대통령 및 국회의원·시/도의원 등의 전유물이었던 정치를, 선거라는 기존의 틀에 박힌 참여 방법에서 벗어나 보다 다양한 계층의 사람들이 사회적·정치적 합의를 도출할 수 있도록 웹과 모바일앱이라는 도구를 활용해보자는 것이 그 취지다. 얼마 전 다음세대재단에서 주최하는 비영리 미디어 컨퍼런스 "ChangeON"에서 프로젝트 리딩하는 은광 형이 발표한 내용을 보면 좀더 이해하는 데 도움이 될 것이다.

여기에서 내가 맡은 일은 국회에 공개된 회의록이라든지 웹에 올라오는 정치 관련 글들을 기계적으로 가공하여 유용한 정보를 뽑아줄 수 있는 기반 '데이터 플랫폼'을 만드는 것이다. 뭐, 말은 거창하지만 시작은 소규모로 간단하게 quick & dirty (…)의 정신을 발휘하여 되는대로 걍 하고 있다. 역시 refactoring의 유혹이 근질근질하지만 내가 이 프로젝트에 쓸 수 있는 시간이 얼마 없기 때문에 당분간은 힘들 것 같다. ㅠㅠ 이 일을 하면서 느끼는 게 한국어 NLP(자연 언어 처리) 연구가 많이 필요하다는 것. 나는 NLP 자체보다는 이런 기반 시스템을 설계하고 구현하는 일이 더 재미있기 때문에 내가 그쪽을 파고들 것 같지는 않지만(NLP 이론은 아니지만 이런 맥락에서 연구하신 분이 최근에 팀에 합류하기도 했고), 해외 유수 학술지에 나가는 연구만 주로 인정받는 국내 현실에서 한국어를 연구 대상으로 하는 NLP에 좀더 많은 투자나 지원이 이루어졌으면 하는 아쉬움이 생겼다.

2011년 한 해 동안 이 프로젝트에서 외부로 공개된 결과물은 서울시장 재보궐선거에서 후보 별 공약을 비교하고 이슈 타임라인을 제공한 '나는 서울시장이다' 사이트다. 기술적으로는 굉장히 단순한 웹사이트이지만---3명이서 대략 3일 정도에 뚝딱?---기획 면에서는 나름 고민을 많이 한 티저 격의 사이트이다. 실제로 사람들에게 뭔가 가치를 주기 위해서는 백엔드/프론트엔드의 다양한 기술이 결합되어야 하기에, 정말 골수 전산시스템을 다루는 연구와 달리 당장 눈에 보이는 결과물을 만들어내는 어떤 감각을 유지하는 데에는 큰 도움이 되는 것 같다. 사실, POPONG 프로젝트를 통해 함께 공부하고 배운 이런저런 웹기술들이 나중에 GFI PacketShader 데모 준비할 때 도움이 되었다는.

이 프로젝트에 좀더 시간을 투자하고 싶지만, 그래도 대학원생의 1순위는 연구이기 때문에 좀더 못하는 점이 아쉽고, 특히나 2년간 대학원 생활을 하면서 뭔가 의미 있는 연구 결과가 나오려면 다른 일 신경쓰지 않고 정말 거기에 집중해야만 가능하다는 것을 깨달았기 때문에 이 프로젝트에 대해 내가 가지는 강한 동기에도 불구하고 상당히 고민이 되는 부분이다. 게다가 올해 2012년은 총선과 대선이라는 빅 정치이벤트가 겹쳐있다는 거.

*

성가대

학부 때부터 주말에 학교에 있을 때면 가까운 궁동성당에 가곤 했는데, 대학원에 오면서 거의 대전에 있게 되자 본격적으로 성가대를 시작한 것이 벌써 1년 반이 넘었다. 이제 미사곡들은 어지간한 건 불러봐서 많이 익숙해지기도 했고, 특송이나 축가처럼 성부 나누어 부르는 것도 (여전히 음정 불안불안하기는 하지만) 나름 재미를 느끼는 단계가 된 것 같다. 내가 옛날부터 피아노를 취미로 쳐왔기 때문에 직접 목소리로 노래하는 것에서 새로운 재미를 찾게 된 것도 있고, 특히 여러 성부로 나누어진 곡을 함께 부르면서 연습 끝에 화음이 맞는 걸 느낄 때의 그 좋은 기분은 아마 직접 해보지 않은 사람은 모를 것이다. 혼자 치고 즐기는 피아노와 달리 여러 사람이 함께 마음을 맞춰 노래하는 것은 또다른 차원의 즐거움이 있다.

올 한해는 이 성가대 덕분에 힘들기도 하고 보람도 느끼고 한 일들이 많이 있었다. 바로 성가대 단장을 맡았던 것.;; 가톨릭 전례력 상으로는 대림시기부터 새해가 시작하는데, 그에 따라 재작년 말부터 2011년도 총무로 활동을 시작했다. 그러다가 5월쯤 원래 단장을 하던 형이 직장을 다른 지역으로 옮기면서 활동이 불가능하게 되자 내가 단장을 맡게 되었다. 이번 1년 동안 논문 데드라인이 가까웠을 때를 제외하고 온라인이든 오프라인이든 룸메이트와 가족을 제외하면 일요일에 날 본 사람이 별로 없을 텐데 이런 이유가 있었다.

연구와 병행하느라 매우 힘들었지만(특히 7월초 대전청년대회(DYD) 창작성가제 발표---내가 단장되기 전에 시작된 프로젝트라 좋든 싫든 마무리해야 하는 상황이었다---를 앞두고 말 그대로 멘탈붕괴 사태까지 갔다), 과학고·카이스트와 달리 여자들이 과반이 넘는다는 점, 그리고 신앙공동체로서 지켜야 하는 명시적인/암묵적인 규칙들, 이런 특징들이 이뤄가는 하나의 조직체를 이끌면서 얻은 경험은 잊을 수 없을 것이다. 여러 면에서 그간 경험해봤던 오픈소스 개발팀이나 동아리, 연구실, 벤처 회사와는 완전히 다른 커뮤니티다. 이른바 여자들의 "thought cloud"라는 것도 간접 체험할 수 있었다. (이것이 나쁘다는 것이 아니라, 남자 중심의 커뮤니티에서는 잘 나타나지 않는 현상이라는 점에서.)

성가대 단장 하면서 내가 변한 점이 있다면, 어떤 일처리를 할 때 전화로 하는 것에 대한 거부감이 거의 없어졌다는 것. 나는 무슨 사고가 났다든가 하는 정도의 정말정말 급한 일이 아니면 전화보다는 비동기 커뮤니케이션 수단인 문자나 이메일을 선호하는 편인데, 일단 성당 커뮤니티 사람들이 이메일 같은 것과는 별로 친숙하지 않기도 하고 전화를 하는 것이 '예의'로 간주되는 경우가 많기 때문에 처음에는 일을 진행함에 있어 상당한 불편함이 있었지만 오히려 여기에 익숙해지니 사람과 직접 말로 하는 것이 어떤 면에서는 오해의 소지를 줄이기도 하고 더 친밀해질 수 있는 기회라는 걸 알게 되었다. 다만 내가 연구실 일로 바쁘거나 해서 무언가 연락을 취해야 할 일을 진행하지 못한다든가 했던 경우가 좀 있었는데, 사실 "technically" 시간이 없는 건 아니지만 마음의 여유가 없어서 그런 경우가 많았다. 하지만 시간이 좀 지나니 이런 것도 결국은 적응해서 하게 되더라.

신앙적 관점에서도 많은 것을 얻었다. 특히 가톨릭에서의 성인식이라 볼 수 있는 견진성사를 받은 것과 신학대 교수 출신의 새 주임신부님 덕분에 사도신경을 중심으로 한 견진교리 및 매달 있는 주임신부님의 특별강론 덕분에 신앙의 지식적 측면을 보완하면서 더 깊은 묵상 속으로 들어갈 수 있었던 것을 들 수 있겠다. 성가대 활동이 힘들긴 했지만, 그 활동을 통해 직간접적으로 얻은 신앙의 자산은 평생의 것이 될 것이다.

*

Minecraft

재작년부터 꽤나 오랫동안 즐겨온 게임인 마인크래프트 또한 취미생활에서 2011년의 한 축을 이루는 주제라 할 수 있겠다. 마인크래프트는 스웨덴의 인디게임 개발자가 만든 샌드박스 게임이다. 특별한 종료조건 없이(엔딩이 나중에 업데이트로 추가되긴 했지만 엔딩을 봐도 본 게임은 계속된다.) 1m x 1m x 1m 형태의 정육면체 블럭들로 구성된 3D 세상에서 나무나 돌·광물을 캐는 자원수집이나 돼지·닭을 잡아먹는 것, 밤이 되면 생성되는 다양한 몬스터들과 싸우는 것이 기본 활동이다. 가장 큰 특징은 모아놓은 정육면체 블럭들을 마우스 오른쪽 버튼으로 다른 블럭에 붙이는 방식으로 자유롭게 무언가를 만들 수 있다는 것이다.

이 게임을 하면서 느낀 건, 건축은 사실 사람의 욕망을 드러내는 수단이라는 것. 게임 내에서 처음 며칠(하루 = 20분)은 보통 안전한 집과 식량 보급 체계 마련에 투자하는데, 그 시기를 넘어가면 사람들이 슬슬 건축적 욕망을 드러내기 시작한다. 하늘 끝까지 닿는 타워나 계단 또는 지하 끝까지 파고들어간 광산이나 지오프론트(…) 같은 것들이 나오고 시간이 더 지나면 현실이나 영화에 존재하는 대형건축물들을 옮겨짓는다든지(피라미드, 천공의 섬 라퓨타, 알렉산드리아의 파로스 등대, 강남역 삼성타운 등 소재는 무궁무진하다) 맵 전체를 가로지르는 철도시스템을 구축하는 등 규모로 승부하게 된다. 하나의 사례를 보라. 몇몇 멀티플레이 서버에서 처음부터 개발이 이루어지는 과정을 지켜본 결과, 가장 기본적인 조형원리---큰 규모로 이루어지는 대칭성과 반복성---가 아름답게 느껴지는 건축물의 기본 조건이라는 것을 깨달았다. 마인크래프트에서 제공하는 미니어처 자연 속에 이러한 조형원리를 갖춘 건축물은 단연 돋보인다. 자연 속에 규칙성을 부여하는 것, 그것이 인간의 본성 중 하나가 아닐는지.

마인크래프트에는 비슷한 종류의 다른 게임들과 차별화되는 요소가 하나 더 있는데, 바로 레드스톤(redstone)이라 불리는 특수 광물이다. 스위치나 레버의 동작을 원거리로 전달하여 피스톤 같은 기계장치를 작동시키는 데 사용하는 것이 가장 기본적인 용도다. 현실에 비유하자면 실리콘과 같은 반도체라고 할 수 있는데, AND/OR/NOT 게이트의 구현이 가능하고 clock 반복자를 만드는 방법이 존재하여 실제로 이걸로 CPU를 만드는 사람들도 있다. 물론 x86과 같은 복잡한 건 거의 불가능에 가깝고 간단한 사칙 연산과 메모리 정도. 물론 이 CPU를 작동시키려면 게임 내에서 열심히 뛰어다니면서 버튼을 하나씩 눌러줘야 하기 때문에 실행속도도 느리고 에니악스러운 느낌이다. 무한궤도 엘레베이터, 블럭을 피스톤으로 "적절하게" 밀어넣어 구현하는 3D printer, 카트가 자동 공급·회수되는 양방향 지하철 시스템과 같은 응용들이 나와있다.

덕 중의 덕은 양덕이라는 온라인 속담이 있다. (여기서 덕이라 함은 지덕체 할 때 그 덕이 아니고 오타쿠에서 유래한 것.) 최근의 KPOP 한류 열풍에서도 볼 수 있듯이 서양 아이들이 뭔가에 빠지면 엄청난 잉여력을 보여주곤 하는데, 이런 동영상이 그런 예라고 할 수 있겠다. 더 자유분방한 문화 때문인지, 평균 근로시간이 더 적어서인지는 모르겠으나(…) 아무튼 대단하다.

*

돌아보면 가장 힘들었던 때는 논문과 졸업 때문에 스스로의 압박을 느끼는 와중에 '내가 대학원에서는 별로 쓸모 있지 않은 존재인건가' 하는 자괴감과 때맞춰 찾아온 DYD 창작성가제 압박, POPONG 프로젝트 관련한 고민이 모두 한꺼번에 겹친 덕분에 때문에 한 3일간 아무 일도 못하고 그야말로 세상으로부터 몇주 정도 잠적하고 싶었던 7월 초였다. 문자 그대로의 멘탈붕괴였다. 졸업논문 앞두고 주제가 급변경되면서 내가 그동안 이런저런 질문에 답하기 위한 일들을 뭔가 진행은 이것저것 했는데 하나의 논문으로 완성할 수 있을 만큼 진행한 것이 없어 고민했을 때가 두번째로 힘들었다. 농담 아니고 석사졸업 연기할까도 생각했었다. 결국 그럴 때 힘이 되는 건, 해결책은 제시해주지 못하더라도 내 이야기를 들어줄 수 있는 가족뿐이더라. 이런 일련의 힘든 시기를 거치면서, 연구와 개발의 균형을 잘 잡고 또 연구와 연구 외적인 일들 사이의 균형을 잘 잡는 게 중요하다는 사실을 알게 되었다. '어떻게'는 아직도 정답을 찾지 못한 것 같지만.

다가오는 2012년---이 아니라 가족들과 미사 갔다가 저녁 먹고 어쩌구 했더니 글을 쓸 시간이 많지 않아 이미 2012년이 되어버렸다---올해는 여러 일들의 균형을 잘 잡으면서 때에 따라 필요한 곳에 선택과 집중을 할 수 있는 그런 한 해가 되길 바래본다.

Posted
Filed under 컴퓨터

이번 주 월화수 3일간 포르투갈의 카스카이스(Cascais, Portugal) 열리는 ACM SOSP (Symposium on Operating Systems Principles) 학회에 다녀왔다. 비행기표 끊을 때 프랑크푸르트에서 환승하고 리스본으로 가는 비행기편이 아주 밤늦게 도착하는 것밖에 없어서 시차 적응 때문에 학회 당일 피로하지 않도록 하루 일찍 가는 편을 택했는데, 덕분에 포르투갈의 관광명소인 Sintra를 돌아볼 기회가 있었다. (온통 비바람 때문에 고생하긴 했지만... ㅠㅠ) 어쨌든, 관광에 대한 건 플리커 사진세트에 붙어있는 설명을 참고하고, 이 글에서는 학회 내용에 대한 것을 정리해볼 것이다.

플리커에 올려둔 사진 모음.

내가 작년 이맘때쯤 갔던 OSDI에 대해 들어본 사람이라면 아마도 SOSP도 알 것이다. 이 두 학회는 각각 USENIX와 ACM이라는 두 단체가 거의 같은 내용을 가지고 격년제로 번갈아 여는데, 실제로 참여하는 학생들이나 연구자 커뮤니티는 똑같다. 역사는 SOSP가 훨씬 오래되었는데, 1967년부터 시작했으니까 시분할 시스템이라는 개념이 막 탄생하던 때쯤부터 이어져온 시스템 분야 최고의 학회이다.

이번에 내가 학회에 간 목적은 크게 1) 포스터(extended abstract, 사실 실제 발표한 포스터는 설명 흐름을 부드럽게 하려고 순서가 살짝 바뀐 부분이 있음) 발표와 socializing을 통해 PacketShader 후속 연구와 관련한 피드백을 받고 PTaskClick modular router의 저자와 직접 만나 홍보 및 의견 나누기 2) 내년 인턴십 자리를 위해 기업들 미리 찔러보기 요렇게 두 가지였다.

포스터 발표에 대한 반응은 작년과 비슷했는데, PacketShader를 알고 온 사람들은 차이점이 무엇인지 무슨 추가적인 work을 하려는 것인지 물었고, 모르고 온 사람들은 GPU의 자체의 특징에 대해서 물어보는 경우가 많았다. 어떤 사람은 "experimental platform"이라는 말에 꽂혔다면서(?) 자기가 Emulab testbed 참여하는데 어떻게 쓰일 수 있는 거냐 묻기도 했다. 새로운 아이디어에 대한 피드백은 딱히 없었다. 몇 가지 이렇게 해보면 어떻겠냐 라는 제안은 받았는데 우리가 연구 과정에서 생각해본 범위 내였다. 예를 들면 branching/diverse code path에 약한 GPU에서 하기 어려운 router pipeline을 통째 GPU에서 구현하면 어떨까 라든지, 현재는 proprietary driver로 인해 불가능한 NIC-to-GPU direct copy라든지.

그래도 PTask 저자였던 Christopher Rossbach와의 만남이나 Click modular router 만든 (지금은 하버드 교수인) Eddie Kohler와의 만남은 그 사람들의 생각이 어떤지 알 수 있어서 소기의 성과를 건질 수 있었다.

PTask는 GPU에 대한 추상화를 운영체제에서 직접 제공해야만 운영체제 스케줄링에서 GPU의 workload나 CPU interaction을 함께 고려할 수 있어 더 나은 성능과 performance artifact를 줄일 수 있다는 것이 핵심이고, 여기에 disjoint memory를 사용하는 GPU로 오가는 dataflow를 datablock이라는 덩어리와 port끼리 연결관계를 미리 정의해놓는 일종의 UNIX pipe 개념을 활용해 다단계 행렬 곱셈 등에서 발생하기 쉬운 중복 복사를 막겠다는 아이디어가 들어가있다.

내가 발표 끝나고 했던 질문1은 datablock의 내용 변경 여부에 따른 GPU/CPU side의 invalidation 과정에서 datablock 통째로 하는 것이 좋을지 아니면 좀더 finer granularity (예를 들면 PacketShader에서는 한 datablock에 여러 개의 packet이 들어있을 수 있으니까)로 하는 것이 좋을지 물었는데, PCIe bus 타는 횟수를 줄이려면 자기가 한 것처럼 통째로 하는 게 좋지 않을까 라는 답을 들었다. 나중에 쉬는시간에 만나서 현재 Windows용 버전밖에 없는 것 같은데 공개할 계획이 있는지 물어보니 지금 코드는 MSR 내부 사정으로 공개가 불가능하나 참여한 대학원생들이 Linux 버전을 만들고 있다고 하고, PacketShader 팀하고 같이 일해보고 싶다고도 했다. 나중에 다른 사람들 얘기로는 PTask 연구의 문제점을 짚는다면 실제로 그러한 abstraction이 유용한 경우가 얼마나 있을 것인지 설득력이 다소 부족했다는 것을 들 수 있는데, PacketShader가 만약 PTask의 아이디어를 써서 큰 이득을 볼 수 있다면 대표 사례가 될 수 있기 때문이 아닐까 싶다.

Eddie Kohler를 만난 이유는, 내가 요 근래 Click + PacketShader-style HW optimization을 테스트해보면서 Click이 몇 가지 근본적인 한계가 있다는 것을 알게 되었기 때문이다. 그 한계란 약간의 코드 수정으로 NUMA-aware thread affinitization이나 IRQ pinning을 Click에 적용할 수는 있으나 싱글코어 시절 만들어져 나중에 멀티코어로 확장된 녀석이다보니 공통 데이터(router graph 등)에서 NUMA node crossing이 발생한다거나 user-level packet I/O가 특정 코어에서 병목이 된다거나(이건 pcap의 문제일 수도 있음) 하는 것들이다. 그래서 내가 물어본 것은 Click의 다음 step이 뭐라고 생각하는지였다. 그랬더니 대답 대신 질문이 되돌아왔는데, high-performace에 집중할 것인지 modularity + reasonable performance를 만들 것인지 아니면 정말 사람들이 쓰고 싶은 걸 만들 건지 알아야 한다는 것이었다. 어떻게 보면 모두 목표이긴 한데, 내 생각은 modularity는 적정한 수준까지만 쪼개고 performance에 집중하는 쪽이다. 아무튼 그러면서 덧붙이는 말이 자기는 Click의 performance를 위해 개발해온 게 아니라 correctness 쪽으로 집중해서 개발해왔다는 것. 결국 performance에 집중하려면 Click을 뜯어고치는 것보다는 새로운 코드를 짜는 게 낫다는 이야기였다.

어쨌든 직접 만나 이야기하니 재밌었다. 논문으로만 보던 사람들이 실제로는 어떤 사람인가 보는 것도 재밌고, 메일 주고받거나 하는 것보다 직접 눈앞에 두고 대화하는 것이 얼마나 더 효율적인지는 정말 안 해보면 모를 것이다.

다만 역시나 대화에 '적절하게' 끼어드는 것이 가장 어려운 일이었다. 이쪽 학회에 오는 서양 친구들은 기본적으로 '아무때나 끼어들어서 말 걸어도 괜찮아요' 모드인데 무언가 남의 말(그것도 교수님들 같은 윗사람들의)을 끊는 것이 실례라는 느낌을 항상 가지고 있는 동양 쪽 학생들로서는 언제 하고싶은 말을 어떻게 꺼내야 하는지 그 감이 잘 없다. 이럴 땐 두 가지 방법이 있는데, 에라 모르겠다 하고 끼어드는 방법이 있고 아니면 적당히 눈치를 줘가며(?) '이 친구가 뭐 말할게 있는 것 같은데' 하면서 알아서 끊어주기를 기다리는 방법이 있다. 문제는 인기있는 사람일수록, 말발이 좋은 사람일수록 전자가 어렵다는 것.

인턴십 관련해서는 아직 확정된 건 아무것도 없지만(내년에 울 교수님이 안식년 가시면 랩사람들을 대부분 인턴으로 내보내실 거라는 정도?) 일단 Facebook과 Google 쪽을 찔러봤고, 나중에 PTask 저자인 Rossbach나 다른 인맥을 통해 MSR도 찔러보려고 생각 중이다. 이런 학회에는 대개 스폰서 기업들의 비공식 recruiter들이 돌아다니기 때문에 나중에 실제 지원할지 어떨지는 몰라도 일단 눈도장이라도 찍어두는 셈이다. 내년에 "new" PacketShader가 어느 정도까지 논문이 될지 모르겠지만, 박사과정에서 인턴십을 간다면 기본적으로 논문을 쓸 수 있는 주제와 환경으로 가는 것을 교수님들이 선호하기 때문에 아마 그 연장선상의 일을 하는 쪽이 되거나, 그걸 응용·적용할 수 있는 약간 다른 토픽을 하는 쪽이 될 것이다.

논문 발표 중에서는 역시 내 논문과 가장 관련있는 PTask가 제일 기대되었지만 막상 발표는 그냥 그런 느낌이었고, 발표 스킬 자체만으로 본다면 MSR의 Jame Mickens라는 사람이 최고였다. Atlantis라는 Javascript/CSS/HTML parsing/rendering engine에 exokernel 개념을 도입한 웹브라우저에 대한 발표였는데, 문제 자체는 웹개발 좀 해본 사람이라면 누구나 아는 식상한 것이지만 그걸 너무나 재미있고 박력있게 풀어가서 그대로 몰입이 되었다. 발표들의 타입도 여러가지가 있었는데, Prezi를 이용해 화려하게 진행한 것부터 시작해서(개인적으로는 좀 산만하다는 느낌) 기술적인 디테일을 아주 상세히 다루거나 혹은 그 반대로 motivation과 evaluation만 보여주고 기술적인 내용을 질의응답으로 커버해버리는 경우까지 다양했다. Deterministic threading 발표가 많아 이게 화두인가 했는데, MIT 다니는 태수형 말로는 사실 강력한 motivation이나 usecase는 별로 없는데 일단 커뮤니티에서 어떻게 되는지 지켜보자는 느낌으로 근 몇년간 이쪽 논문들을 많이 뽑아서 보여주는 것 같단다. 기타 아이디어나 구현 방법이 모두 괜찮다고 생각되는 건 CryptDB 정도였고, 데이터분석을 통한 통찰로는 그와 함께 best paper 상을 받은 "File is not file" 정도가 있었다.

어쨌든 이 학회 통해서 느낀 건, 내가 누군가를 만나서 무슨 이야기를 해야겠다 하는 목적이 분명한 상태로 가면 훨씬 더 재미있게 사람들과 대화할 수 있다는 것이다. 비록 나와 정확히 같은 분야는 아니지만 그쪽의 아이디어를 내 연구에 어떻게 적용해보면 좋을 것 같다라든지, 혹은 근본적으로는 같은 문제를 어떻게 다르게 접근하는가 살펴보는 것이 직접적으로 연구와 관련되기 때문일 것이다. 얼른 1저자로 제대로 발표도 해보고 싶다.


  1. 이런 학회에서는 보통 발표 끝나면 중간중간 설치되어 있는 마이크에 쪼르르 달려가 줄서서 한사람씩 질의응답 주고받는 식인데, 청중들의 수준이 대단히 높기 때문에 질문 하는 것 자체도 상당히 긴장되는 일이다. 

Posted
Filed under 살아가기, 생각하기

김국현님의 트위터에서 퍼옴. 트위터의 글들은 한번 흘러가버리면 나중에 찾기가 힘들어서, 이렇게 여러 트윗으로 나눠 올라온 것은 모아 정리해두어야 한다.

개발자로서, 그리고 사회를 시스템으로 보는 관점을 지지하는 나로선 매우 적절한 비유라고 생각한다.

오늘은 '개발자니까 이해할 수 있는 정치학'을 조금 더 다루어 보도록 하겠습니다. 제 발언의 상당수가 반규제/자유주의로 이해되신다는 의견이 있습니다. 왜 그렇게 보일까요?

그 것은 제 주장이 if-else 사회에서 try-catch 사회로의 이행을 암시하기 때문입니다. 한국 사회는 모든 조건을 탑이 미리 설정하고 이를 조건 분기하는 if-else 사회지요. 규제란 바로 이 코드랍니다. ~해야 한다, ~하려면 ~가 필요하다는 명제에 근간으로 하고 있어요. 이는 매우 단순한 (개발)환경에서는 유의미했답니다. 이를 사회학에서는 가부장주의(paternalism)라고 하지요.

그러나 아시다시피 현대 프로그래밍 언어는 이런 식으로 코딩하지 않잖아요. 왜냐하면 모듈이 어떻게 확장될지 모르고, 또 이 코드를 누가 받아 짤지 모르기 때문입니다. 사회도 마찬가지입니다. 상위 조직이 모든 가능성을 알고 미리 규정하면 좋겠지만, 그 것이 가능한 시대는 이미 지나버렸죠. 결과는 if-else만 백만라인 이어지는 사회가 되어 버리는겁니다. (코드 유지 보수는 청춘의 몫?)

우리 사회도 ExceptionHandling의 아키텍처로 이행해야 합니다. 언제까지나 메인 프로세스가 if, elseif의 규제 방식로 모든 것을 걸러 낼 수는 없기 때문입니다. 사회참여자가 예외를 직접 정의하고, 그리고 이벤트가 발생했을 때, 합리적으로 "버블 업"을 일으키면 됩니다. 그 과정에서 정치인과 관료의 역할이 있는 것이구요. 그리고 여기에 addEventListener()를 하는 것도 국민의 몫입니다. 선거가 이에 충분한지는 이견이 많겠지만요. 이 메소드는 참여와 관심과 연대라고 해둘까요.

그렇게되어 새롭게 시작하는 사회적 프로세스, 새롭게 사회를 개발하려는 이들이 마음껏 사회적 코드를 try할 수 있고, 그 과정의 예외는 사회적으로 catch되게 되는 것입니다.

어쨌거나 코드를 짤 줄 아는 여러분, 사회와 국가의 코드가 이 모양인데, 소스 commit은 안하더라도 QA는 해 주셔야할텐데요, (아 네, 다들 생업에 바쁘신...)

출처 : 이 트윗부터 요 트윗까지.

Posted
Filed under 살아가기, 생각하기

하나씩 놓고보면 별것 아니게 넘길 수 있는 것들이 모여 어떤 촉매를 만나 걷잡기 힘든 상황이 되어버렸다. 잠시 나 자신에게 침잠하고 싶은데 모든 것을 내려놓고 멈추기엔 사회적 관계와 책임 때문에 할 수 없는 상황이 안타깝다. 무엇보다도, 나뿐만 아니라 다른 사람들도 각자 어떤 종류의 한계를 가지고 있음을 느꼈고 결국 선택은 혼자 하는 것이라는 걸 알기에 더욱 그렇다. 사람들에게 털어놓아 안정은 될수 있지만 맡기고 의지할 수는 없으며 해결을 대신해주는 것도 아니니까. 이성적으로는 이것도 (어쩌면 누구나 한번쯤 하는) 한때의 고민이란 걸 알고 어떻게 대처하면 되겠다는 것도 알지만, 마음이 지치니 그냥 모든게 귀찮고 싫어진다. 하느님에게 모든 것을 맡기고 의지한다 해도, 자유의지를 주신 이유가 다름이 아니고 무어랴.

Posted
Filed under 살아가기, 생각하기

오늘 학교에서 방송통신위원회 최시중 위원장의 강연이 있었다. '우리는 무엇으로 사는가, 행복과 선택'이라는 제목의 강연이었고, 내용은 제목에서 짐작할 수 있다시피 "좋은 말씀"들로 이루어져있었다. 그래도 우리나라에서 상당한 영향력을 가진 인물이기도 하고, 아이패드2 추첨(!)도 한다기에 어떤 사람인지 얼굴이나 한번 보자 하고 가본 것이었다.

강연 내용은 평이했고, 끝나고 2개의 질문이 있었다. 첫번째는 어느 교수님의 질문이었는데 평등의식과 교육열이 우리나라가 IT 강국으로 도약하는 밑거름이 되었다는 것과 최시중 위원장 자신도 어려운 어린 시절을 보냈지만(중1 때 6·25 겪음) 극기와 노력으로 이 자리에 섰다는 내용에 대해, 최근의 젊은 세대들은 노력해도 성공하기 어렵다는 어떤 좌절감을 많이 느끼는데 그런 점에 대해 어떻게 생각하느냐라는 것이었다.

아쉽게도 강연 내용처럼 답변도 평이했다. 이명박도 농부의 아들이고 자기도 어부의 아들이었으며 어려운 환경 속에 부단히 노력해서 성공한 것이니 열정을 가지면 해결된다는 것이다.

두번째 질문은 어느 07학번 학생이 했는데 맨 마지막 슬라이드에서 '공짜로 얻을 수 있는 것은 없다'는 내용 설명 중에 지속가능한 발전을 위해선 무조건적 무상복지만 생각하면 안 된다는 언급이 잠깐 들어간 것을 두고, 그럼 위원장님은 어떤 것이 모든 사람들이 함께 잘 살기 위한 복지모델이라고 생각하느냐라는 것이었다.

이것에 대한 답변은 이랬다. 일단 이 강연은 일반론적인 맥락에서 이야기하는 것이지 정치적인 이야기가 아니라고 못박은 다음, 최근 이슈가 되었던 통신료 인하를 예로 들며 통신사들이 지속적인 망 고도화 투자를 하려면 소비자들이 원하는 대로 다 인하해줄 수는 없듯이 복지도 그런 관점에서 봐야 한다는 것이었다.

무상복지에 대한 두번째 질문이야 개인마다 견해가 다를 수 있는 부분이니 그렇다치더라도, 첫번째 질문에 대한 답변은 많이 아쉬웠다.

강연 주제가 '행복'이었던만큼, 무엇이 사람을 행복하게 하는가에 대해서 먼저 생각해볼 필요가 있다. 개인적으로 나는 우리 가족이 매우 행복하다고 생각하고 있고 이 부분은 부모님과도 함께 공유하고 있는데, 우리 스스로는 그 행복이 '앞으로 삶이 더 나아질 것이라는 믿음'에 있다고 보고 있다. 마찬가지로, 사회적 관점에서 개인의 행복이라는 것도 각 개인이 지금 현재 어떤 상황에 있든지 앞으로 노력하면 내가 더 잘 될 것이라는 믿음, 내가 원하는 것을 성취할 수 있다는 믿음이 있을 때 당장은 힘들더라도 행복할 수 있을 것이다.

그런데 그 교수님이 이야기한 것처럼 최근의 젊은 세대가 좌절감을 느끼는 이유는 단순이 열정이 부족해서가 아니다. (답변으로 미루어보건대 그 점을 인식하지 못하고 있음이 안타까웠다.) 대한민국이 이제는 헌법에서 이야기하는 사상과 종교의 자유나 선거를 통한 정치권력 교체 등 기본적인 자유 민주주의의 틀은 어느 정도 갖추었지만, 갈수록 심해지는 경제적 불평등과 기존에는 학연과 지연이 계층간 진입장벽이었다면 이제는 경제력의 차이가 진입장벽이 되고 있다는 점을 간과해서는 안 된다. 또한 새로운 시도를 가로막는 규제와 통제는 날로 늘어만 가고(그것도 특히 IT 분야에서) 언론조차도 광고수입과 재벌유착에 의해 좌지우지되는 현실을 보면 정치적으로는 계급이 없는 사회이지만 경제적으로는 계급이 존재하는 사회에 더 가깝다는 것을 알 수 있다.1 이러한 사회 분위기 속에서 말마따나 높은 교육열로 치열한 경쟁에 내몰린 사람들은 그 경쟁의 과실이 자신한테 돌아온다는 믿음을 잃어버린 것이다.

최근의 신부님 강론 중에서 가장 고통스러운 것이 무엇인가하는 질문에 대한 답으로 성서에서 욥의 이야기를 예로 들며 '고통 자체가 아니라 그 고통의 의미를 모르는 것'이라고 했던 것이 기억에 남는다. 경쟁 과정 자체는 고통스럽지만, 그것을 이겨낼 수 있다는 믿음과 이겨냈을 때 그 과실을 얻을 수 있다는 믿음이 있으면 버틸 수 있지만, 자신이 속한 시스템 때문에 반드시 해야 하는 경쟁이지만 그 경쟁을 통해 경쟁자들 자신이 아닌 다른 누군가가 이득을 보는 상황이라면 누가 행복하겠는가.

물론, 언제나 그렇듯 젊은 세대·기성 세대를 막론하고 소수의 과실을 따먹는(내지는 독점하는) 사람들이 생긴다. 그런 사람들은 이른바 '성공한 사람'이 된다. 어떻게 보면 최시중 위원장 본인도 그 어려운 시기에 태어난 다른 대다수의 사람들과 달리 사회적으로 큰 영향력을 가진 자리에 올랐으니 그러한 사례라고 할 수 있겠다. 그 사람들의 부단한 노력을 무시하면 안 되지만, 그 사람들이 가졌던 기회와 희망을 지금의 젊은이들이 그대로 가지고 있는지는 재고해볼 필요가 있다. 그때는 모든 것이 부족한 시절이었기 때문에 힘들었지만 대신 그 부족한 것들을 채울 수 있는 기회가 많았다. 지금은 물질적으로 훨씬 풍요로워졌지만 기득권층이 새로운 시도와 변화를 막으려고 하는 모습을 보이고 있기 때문에 사람들이 기회에 대한 믿음을 잃어가고 있다. 실제로 기회가 있느냐 없느냐와는 별개로 말이다. 문제는 이미 성공한 사람들은 기회가 있으니 노력하면 된다는 것만 강조할 뿐, 기회에 대한 믿음(=희망)을 잃게 만드는 상황에 대해선 이야기하지 않는다는 점이다.

강연 끝나고 같이 들었던 선배와 밥먹으며 이야기하다가, 예전에 장병규 선배님이 오셔서 강연했을 때 누군가 '실패했던 경험을 들려주세요'라고 했더니 매우 난감한 표정을 지으며 '성공만 해봐서 모르겠다'라고 하는 바람에 갑자기 확 공감이 안 되더라 하는 경험담을 들었다. 오늘 강연에서도 겸손해야 한다는 말이 나왔는데, 그래서 성공한 사람들이 항상 감사하고 겸손해야 하는 것이 아닌가 하는 생각이 들었다.

최근 '나는 가수다'나 '위대한 탄생'과 같은 TV 프로그램들이 인기를 얻는 것도 일반인들이 거기에 출연하는 가수 지망생들에게 공감할 수 있기 때문이 아닐까 한다. 기존 가수나 아이돌들도 많은 노력과 인내의 시간을 통해 그 자리에 있게 된 것이지만(이쪽은 '강심장' 같은 프로그램을 보면 알 수 있다), 누구나 끼가 있는 사람이라면 보다 손쉽게 시도해볼 수 있게 해주었다는 점과 출연자들의 구구절절한 사연을 통해 그들이 겪은 어려움을 직접 노출시켜주기 때문에 보다 쉽게 공감하는 것이다.

요는, 모든 부를 똑같이 나누어 공산주의처럼 살자는 것이 아니라, 기회의 평등을 제공하고 누구나 노력하면 잘 될 수 있다는 희망을 가질 수 있게 해주어야 한다는 것이다.2 그러려면 투명하고 공정하며 믿을 수 있는 사회가 되어야 한다. 오늘 강연을 들으며, 우리나라 IT 산업에 막대한 영향을 가지고 있는 최시중 위원장이 그런 희망에 대한 생각을 묻는 질문에서 신중한 고려를 보이지 않았음에 실망했다.


  1. 이런 관점에서, 자유민주주의와 대의적 정치 제도가 과연 자본주의 체제에서 완전한 공정성을 가질 수 있는가에 대한 회의적 시각도 있다. 

  2. 요새 인터넷 돌아다니다보면 뭔가 조금만 기득권에 반하는 이야기만 하면 빨갱이 좌파라고 하는 것이 많이 보여서 노파심에 적은 말이다. 지금의 제도와 상황을 부정하는 것이 아니라 '그것이 최선인가요?'라고 묻는 거라고 이해해주면 좋겠다. 

Posted
Filed under 살아가기, 생각하기

삼가 고인들의 명복을 빕니다...

사실 나는 워크샵 논문 데드라인이 일주일 정도밖에 남지 않았고, 오늘 미팅하고 내일 미팅도 있는 그런 급한 상황이다. 그래서 이미 세 차례나 있었던 자살 사건들을 보고 또 여러 경로로 여러 관점의 이야기들을 접하면서도, 일단 데드라인이 지난 후에 생각을 좀 정리해볼까 했었는데, 오늘 또다른 비보를 접하고 더 이상은 안 되겠어서 글로 쓴다.

우리나라에서 한 해 대학생들의 자살 수가 2~3백명 정도 된다고 하지만1, KAIST는 우리나라 최고의 인재들을 모아놓고 전략적으로 과학기술 인력을 양성하는 곳이라는 상징성이 있기에 그 파장이 더욱 크다. 게다가 이렇게 짧은 기간에 많은 자살이 발생한 것은 이번이 처음이다.

이 문제를 바라보는 시각은 학점에 따른 징벌적 수업료 부과, 재수강 제한, 연차초과 수업료 부과 등에 따른 지나친 학업 스트레스와 경쟁 분위기 때문이라는 시각이 일단 지배적이다. 그런 문제들을 해결해야 한다는 점은 나도 동의한다.

실제로 2007년 이후 많은 비학업 동아리가 위축되는 경향을 보여왔으며, 일부 과목을 제외하고 대부분 상대평가를 시행하는 우리학교 상황에서 학점에 따른 수업료 부과는 심리적으로 아주 큰 압박이 된다. 안 그래도 전국의 과학고와 여러 고등학교에서 모아놓은 우수한 학생들끼리 경쟁하고 있는데, 최근에는 입학사정관제라면서 '공부를 잘 하는' 학생이 아닌 '창의력 있는' 학생을 뽑기 시작했고 그 결과로 나타난 것이 올해 처음 있었던 로봇영재 조군의 자살이었다.

서남표 총장이 3일 전에 전체 이메일을 돌렸다. 그 중에 두 문단을 뽑아보면 이렇다.

학생들은 미래에 직면할 도전이나 기회에 대해 실제 겪어 볼 수 없고, 막연하게 ‘그럴 것이다’라는 상상만 하기에 장래에 대한 불안감을 많이 느낍니다. 그러나 한편으로 생각해보면, 오늘날 우리는 예전 세대들이 가질 수 없었던 많은 편리와 기회를 누리고 있으며, 가중된 압박감은 현대사회를 살아가면서 우리가 지불해야 되는 대가일 수도 있습니다. 우리 삶은 거의 모든 면에서 상응관계(quid pro quo)로 이루어져 있다고 봐도 과언이 아닙니다. 이 세상 그 무엇도 공짜로 얻을 수 있는 것은 없습니다. 노력 없이, 고통 없이, 희생 없이는 아무것도 성취할 수 없습니다.

궁극적으로 해결책은 우리들 각자의 마음과 자세에 달렸다고 봅니다. 만일 우리가 ‘항상 이길 수는 없으며, 나중에 이기기 위해 때로는 지금 질 수 있다’는 생각을 받아들일 수만 있다면, 우리는 이런 문제를 충분히 극복할 수 있다고 봅니다. 우리 주위의 성공한 사람들도 이전에 수없이 실패하고 좌절해봤기 때문에 현재의 위치에 있는 것입니다.

그냥 아무런 맥락 없이 보면 위인전에 나올 것 같은 '좋은' 말이다. 하지만 학생들이 몇 명씩 자살하고 있고, 그 원인 중 하나가 자신이 만든 학교의 지나친 경쟁 시스템이며, 그러한 상황 속에서 학교 구성원들에게 애도의 뜻을 표하며 보내는 것임을 생각한다면 과연 이런 말을 떳떳이 고개들고 한다는 것이 가능한지 묻고 싶다. 보는 관점에 따라 남은 학생들에게 더 노력하면 된다고 말한 거라 볼 수 있겠지만, 여기서 말하는 희생이 자살한 학생들을 가리키는 거라고 생각하면 섬뜩하지 않은가.

서남표 총장은 세계 최고의 수준에 다다르기 위해서 경쟁은 꼭 필요하다고 주장하고 있다. 하지만 그것이 매우 제한적인 부분에서만 사람을 평가할 수 있는 학점이 중심 기준이 되어서는 안 된다. 학점을 잘 받는 사람들이 대체로 성실하고 맡은 바 일을 잘 해내는 경향은 있지만, 학점을 잘 받지 못하는 사람이라도 학점을 잘 받는 사람만큼이나 혹은 그 이상의 가치있는 일을 충분히 해낼 수 있다. 그리고 역사적으로 breakthrough는 그런 사람들에게서 더 많이 나왔다. 그리고 경쟁이 가장 좋은 효과를 발휘하는 것은 제도적으로 강제하는 것이 아니라, 내가 우수한 사람들과 함께 하고 있기에 자연스럽게 발생하는 peer pressure가 클 때다. KAIST라면 그 조건은 충분히 만족한다고 생각한다.

스마트폰이 대중화되면서 우리나라도 스티브잡스나 빌게이츠를 양성해야 한다는 이야기가 많이 들린다. 그리고 KAIST는 우수한 이공계 인력을 육성한다는 취지 아래 일정 부분 우리나라에 그러한 인재를 공급하는 역할을 해왔다. 하지만 그런 인재들은 체계적으로 양성하려고 하면 오히려 더 멀리 달아나버리는 특성이 있다. 틀에 얽매이는 것이 싫기 때문이다.

언젠가 전산과 김진형 교수님이 하신 말씀 중에, 전산과에서 학점 잘 받는 그런 학생이 아니라 학점 좀 안 나와도 정말 '슈퍼코더'가 될 수 있는 그런 사람들도 받아들이고 키울 수 있어야 한다는 이야길 하셨던 기억이 난다. (아마 그런 생각이 좀더 정제된 것이 이런 것 아닐까 싶다) 돌이켜보면, 내가 학부 저학년이었을 때 동아리 고학번 선배들이나 더 위의 90년대 학번 선배들 이야기를 들어보면, 수업 좀 땡땡이치고 그러면서 며칠 밤낮을 만들어보고 싶은 거 만들어보고 그랬다고 한다.2 실제로 그런 사람들 중에 크게 사고를 친(?) 케이스도 있었고, 그런 사람들이 지금은 벤처기업가가 되어 역할모델이 되기도 한다.3 4

과연 지금의 KAIST 학사 경쟁 시스템에서 그런 사람들이 나올 수 있을까? 공부를 잘하고 유학가고 대학원에서 좋은 논문을 쓰는 사람들, 그리고 엘리트코스를 밟아 사회지도층이 되는 사람들은 나올 수 있을 것이다. 하지만 세상에 없던 새로운 것을 기존 제도적 틀을 깨고 만들어내는 사람은 나오기 어렵다.

예전의 KAIST는 비록 학점이 좀 안 좋아도 학교는 마음껏 다닐 수 있었고, 이미 학사경고 제도를 통해 정말 최소한의 한계점은 지정해놓고 있었다. 그런 환경에서 어떤 사람들은 열심히 공부해서 20대에 박사 따고, 어떤 사람은 사고 치면서 10년만에 겨우겨우 졸업했지만 벤처로 성공하기도 했다. 과연 후자가 전자보다 못하며, 국가의 세금을 낭비해 공부시키는 것이라고 말할 수 있을까? 그리고 대학교육이란 그러한 사람들이 각자 자신의 길을 갈 수 있도록 도와주는 것이지 모두가 공부 잘 하는 길을 가도록 만드는 것은 아닐 것이다. KAIST가 또 하나의 학원이자 세금으로 운영하는 사교육장이 되지 않으려면 그런 점을 살려야 한다.5

이제는 조금 다른 관점에서 이야기를 해보려 한다.

일련의 자살들은 모두가 똑같이 학업 스트레스가 원인인 것은 아니다. 최근의 한 학생 같은 경우는 과학고 출신에 공부도 곧잘 하는 경우기도 했다. 여러 경로로 전해들은 바, 몇몇은 이성관계나 인간관계에서의 스트레스 및 원래 가지고 있던 우울증 등이 좀더 큰 원인이 되었던 것 같다.

중학교 고등학교 때 열심히 공부해서 과학고-KAIST 코스를 밟든, 혹은 자기가 좋아하는 분야만 깊게 파다가 입학사정관의 눈에 띄어 들어오게 되었든, 대체로 이공계 분야 특성 상 사람들이 외골수 경향을 보이는 편이다. 왜냐하면 고도의 집중과 온 뇌를 동원한 맥락 구성이 뒷받침되지 않으면 복잡한 과학기술 문제를 풀기 어렵기 때문이다. (불행히도 사람의 뇌가 이런 쪽으로 친절하게 진화되지 않은 듯하다.)

그렇다보니 대학이라는 기존에 경험해보지 못한 넓은 공간에서 인간관계에 어려움을 겪는 경우가 많다. 나도 학부 저학년 때 동아리 2개를 한꺼번에 뛰다가 맡았던 일을 제대로 하지 못하고 그렇다고 다른 사람한테 넘겨주거나 대안을 마련하지도 않고(그 정도는 할 시간과 기회가 있었음에도) 그래서 인간관계에서 좀 힘들었던 적이 있다. 또 어떤 경우에는 동아리 정모에서 선배들의 '까대기'와 설전이 오가는데 그 분위기가 자못 무거워서 부담스럽게 느껴졌던 적도 있다. 지금 와서 보면 별 것 아닌 일들이었지만.

어쨌든 내가 잘 견디고 그런 경험들을 반면교사 삼아 조금 더 성숙해질 수 있었던 것은 나름대로의 스트레스를 해소할 수 있는 길이 있었기 때문이다. 여러 지역사회 활동을 하며 다양한 좋고 나쁜 인간관계를 겪어보신 어머니 덕분에 인간관계 문제가 있을 때 어머니와의 상담과 격려가 큰 도움이 되었고, 개인적으로는 스트레스 상황일 때 피아노를 두들긴다(...)거나 하는 방법들도 사용한다. 또, 종교적인 문제를 깊이있게 터놓고 이야기할 수 있는 친구나 geek한 전산 이야기를 마음껏 나눌 수 있는 친구도 있고, 서로 자기가 작곡한 곡을 쳐주며 교감할 수 있는 친구도 있다. 그런 취미나 인간관계에서의 소소한 다양성과 유대감은 스트레스 해소의 직간접적인 수단임과 동시에 자신이 좋은 사람, 가치 있는 사람이라는 사실을 스스로 깨닫게 해줌으로써 삶의 질을 높이는 데 중요한 역할을 한다.

학창시절 내게 가장 큰 힘이 되었던 건 어렸을 때부터 학교 끝나고 돌아오면 그날 있었던 일을 털어놓으면 항상 들어주셨던 어머니의 격려였지만, 집에서 멀리 떨어져 기숙사 생활을 하며 항상 그걸 기대하기는 힘든 일이다. 그렇기 때문에 많은 학생들이 가족 중심의 인간관계에서 동아리나 수업 등 여러 활동을 통해 만나는 친구들과 선후배가 인간관계의 중심에 서게 된다. 그런데 이성문제가 생기거나 그런 인간관계 속에서 갈등이 표면화되기 시작하면 큰 스트레스를 받을 수밖에 없다. 특히나 학부 저학년 때는 (지나고보면 학부 4~5년 금방이지만) 앞날이 막연해보이는 법이다. 기숙사 학교라는 특성 상 혼자 틀어박혀있기 좋고, 외골수 기질까지 더해지니 자신만의 세계에 갇히기 매우 쉬운 환경이라 더 그렇다.

그래서 나는 후배들에게 무엇이든 간에 동아리 활동을 적극적으로 권장해왔고, 나는 이런저런 기회로 외부에서 오픈소스 활동을 하며 전산 분야의 다양한 사람들을 만남으로써 내가 스스로에게 갇히지 않을 수 있었다. 거듭 말하지만, KAIST는 일반적인 학생들은 물론이거니와 이미 정서적 문제를 가지고 있거나 불우한 가정환경을 가지고 있는 학생들은 특히나 자신만의 세계에 갇히기 매우 쉬운 곳이고 그렇기에 자살에 취약하다.

서남표 총장이나 우리 학교에 이야기하고 싶은 것은, 경쟁에 몰아넣는 학사시스템을 없애고 각 개인이 스스로 자유롭게 길을 찾아갈 수 있는 시스템을 만들어달라는 것과, 거기에 더불어 학생사회가 더욱 다양성을 가지고 많은 동아리들이 자유로이 활동할 수 있도록 하는 것, 그리고 학생들끼리의 자연적인 커뮤니티가 발생할 수 있는 그런 기회와 공간을 제공해주었으면 하는 것이다. 기숙사와 강의실과 식당만 왔다갔다 하는 것이 아니라 어디 앉아서 친구들하고 이야기도 하고 함께 과제도 하고, 악기 연주를 할 수도 있고 맥주 마시고 떠들 수도 있고 그렇게 말이다. 하지만 일단 그러한 여유가 생기려면, 학업으로 인해 사람의 마음이 심정적으로 소모되어 지친 상태가 되면 안 되기에 학사제도 개선이 조금 더 시급한 문제라 생각한다. 건전한 경쟁은 꼭 필요하지만, 경쟁이 삶의 여유를 갉아먹도록 해서는 안 된다는 얘기다.

외부에서는 KAIST 학생들은 세금으로 공부하는 것이고, 그래서 무조건 열심히 공부해서 국가에 공헌하는 것이 도리라고 보는 시각이 많다. 하지만 다양한 문물을 접하며 성장하는 지금의 학생들은 과거 70~80년대처럼 허리띠 졸라매어 하나에만 몰두하는 것이 더이상 정신적으로 쉬운 일이 아니다. 그보다는 그런 다양한 자극으로부터 시너지 효과를 일으켜 더 창의적인 실험이 이루어지도록 해야 한다. 시대도 그런 것을 원한다. KAIST 학생들은 공부하는 기계가 아니며, 특히나 이제는 그것을 강요당하고 싶어하지 않는다.

KAIST는 이공계가 중심인 대학이지만, 공부만 강조할 것이 아니라 이제는 학생들이 감성적으로나 정신적으로 보다 성숙해지고, 인간관계를 다양화할 수 있는 방법에도 신경써야 한다. 물론 그것이 주가 될 수는 없겠지만, 세계 최고의 대학을 자부하는 만큼, 그리고 이제는 우리나라도 그런 부분에 신경쓸 수 있는 수준이 된 만큼 가능하고 또 해야 한다고 생각한다. 조금은 비약적인 생각이지만 사회 전체가 정신적으로 한쪽으로 쏠리기 쉽도록 병들어있는 것이 아닌가 싶기도 하다.

어느 후배가 트위터에 명언을 남겼다. 명령하는 사회가 아닌 설득하는 사회가 되었으면 좋겠다고. 공부하라고 명령하는 학교가 아니라, 자연스럽게 자신을 위해 공부하고 싶어지는 학교가 되었으면 좋겠다.

추가: 사실 나는 이 글을 다소 마음이 급한 상황에서, 하고 싶은 얘기가 많은 채 적다보니 좀 정리가 안 된 감이 있다. 그래서 이 사안에 대해서 무엇이 본질이고 중요한 문제인지, 앞으로 나아가야 할 방향에 대해서 아주 잘 정리한 글이 있어 링크한다. 카이스트, 4월 7일


  1. 2011년 3월 27일자 MBC 뉴스 "벼랑 끝 대학생들‥한 해 2-3백명 자살" 

  2. 내가 대학원에 와서 특히 더 많이 느끼는 것이지만, 학문적 성취가 실질적으로 사람들에게 이용되고 가치를 창출하기 위해서는 공부를 잘 하는 사람보다는 삽질(전산과를 예로 들면 프로그래밍 그 자체)을 잘 하는 사람도 있어야 한다. 공부를 잘 하는 사람은 학문을 하면 되지만, 엔지니어링이 결합되지 않으면 학문에서 나온 결과를 활용할 수 없다. 나도 가끔 내가 학문을 하는 사람이 되어야 할지 엔지니어링을 하는 사람이 되어야 할지 고민할 때가 있다. 

  3. CEO 노정석. ABLAR Company. 이분은 블로그 벤처인 태터앤컴퍼니를 만들어 한국 기업 최초로 구글에 인수되도록 하기도 했고, 지금의 티스토리도 태터앤컴퍼니의 작품이다. 

  4. 장병규 본엔젤스 대표, 블루홀스튜디오 대표. 인터뷰 참조. 

  5. KAIST는 연구중심대학이라고 스스로를 표현해왔는데, 사실 교육과 연구 사이에서 어떻게 중심을 잡아야 하는가에 대해선 논란이 있고, 교육도 좋은 연구를 하기 위한 교육이냐 실용적인 기술들을 잘 다루게 하기 위한 교육이냐에 따라 방향이 많이 다르다. 이점에서 전산과도 이론 분야와 공학 분야는 하는 일도 그렇고 요구되는 능력도 매우 다르다. 그래서 김진형 교수님이 슈퍼코더 양성에 대해 새로운 대학이라도 만들어야 하나 하고 고민하셨던 것이다. (링크 참조

Posted
Filed under 살아가기, 생각하기

인간은 도구를 사용할 줄 아는 동물이라 했던가? 사람이 지금처럼 문명의 혜택을 누리고 살 수 있는 것은 하루 종일 먹을 것을 찾기 위해 헤매지 않아도 될만큼 생산성이 좋아졌기 때문이다. 그러한 생산성은 바로 도구의 사용에서 비롯한다. 기왕이면 같은 일을 하더라도 좀더 빠르게, 적은 노력으로 할 수 있게 해주는 것이 도구다.

현대인들은 거의 대부분이 컴퓨터를 사용한다. 나처럼 직업적으로 컴퓨터를 '연구'하는 사람도 있지만 그 정도는 아니더라도 인터넷 서핑, 게임, 문서 작업 같은 건 거의 누구나 하는 일이다. 그런 사실을 가만히 들여다보면, 컴퓨터의 목적도 도구임을 알 수 있다. 다만 할 수 있는 일이 아주 많은 조금 비싼 도구라는 정도?

사람들이 컴퓨터로 하는 일 중에서 문서 작업을 예로 들어보자. 대부분 MS워드나 아래아한글 같은 워드프로세서를 이용할 텐데, 여러 문단의 서식을 한번에 바꾸거나 자동 목차 생성에 활용할 수 있는 '스타일' 기능을 제대로 쓰는 사람은 몇이나 될까? 또, 인터넷 서핑을 예로 들면 웹브라우저에 확장기능을 설치해 광고를 차단한다거나 마우스 제스처로 서핑을 좀더 편하게 하는 사람은 과연 몇이나 될까? 워드프로세서나 웹브라우저는 매우 많은 사람들이 사용하는 도구이지만, 의외로 이들 도구를 속속들이 잘 쓰는 사람은 많지 않다.

아무래도 나는 전산을 공부하는 사람이고 직업적으로 다루는 사람이다보니, 남들하고 똑갈은 소프트웨어를 쓰더라도 어떻게 하면 그걸 더 잘 쓸 수 있을까를 고민하며 쓴다. (때론 직접 만들기도 하고.) 그러한 고민의 순간에는 약간의 시간과 노력이 소모되지만 대부분 시간이 지날수록 비약적인 생산성 향상을 가져온다는 것을 경험적으로 체득하고 있다.

한 가지 아쉬운 것은, 위에서 이야기했듯 컴퓨터와 거기에 올려진 소프트웨어라는 아주 좋은 도구들---표현하자면, 인류 문명의 가장 최첨단을 달리는---을 제대로 쓰는 사람이 생각 외로 적다는 것이다.

그 이유는 여러가지가 있는데, 그런 더 좋은 사용방법이 존재한다는 것 자체를 모르는 경우가 가장 많은 것 같다. 옆에서 누가 알려주기라도 하면 시도라도 해볼 텐데 말이다. 하지만 반대로 배울 의지도 있고 가르쳐줄 사람도 있지만 여러 현실적 여건(특히 시간부족) 때문에 그냥 넘어가는 경우도 많다. 그리고 대부분 이런 사용방법들은 책이나 매뉴얼을 그냥 읽는 것으로 습득되는 것이 아니라 자기 손으로 직접 그렇게 써봐야 익혀지는 경험적 지식이라서 더 전파속도가 느리다. RTFM("Read the fucking manual")이라는 말이 있긴 하지만, 결국 써보지 않으면 남지 않는다.

내가 학부 때 SPARCS 동아리 활동과 Textcube 개발 활동을 하면서 얻은 소득이라면, 전산분야에서 많이 사용되는 여러 소프트웨어 도구들을 상당한 수준으로 쓸 수 있게 되었다는 점이다. 안타깝게도 학교 수업만으로는 그런 도구를 잘 쓰게 되기 매우 어렵고, 교수님들이 학생들에게 일일이 그런 것을 가르치는 것 또한 더 중요한 지식 전달에 방해가 될 뿐이다. 하지만 동아리에서는 몇몇 선배님들이 도구 사용의 중요성을 끊임없이 역설했고, 나또한 그러한 경험을 쌓으면서 그에 공감할 수 있었다. (좀더 넓은 인간관계를 경험해본다는 점에서도 동아리 활동이 중요하지만, 전산을 하는 사람이라면 도구를 제대로 익힌다는 점에서도 매우 중요하다.)

아무리 이론적 지식이 많아도, 요즘엔 너무나 많은 아이디어가 쏟아지기 때문에 자기 아이디어를 prototype이라도 남에게 직접 보여주고 경험시켜주지 않으면 인정받기 어렵다. 그렇기 때문에 주어진 도구를 잘 사용하는 것은 자기 아이디어를 재빠르게 구현하는 데 이르는 가장 중요한 첫걸음이다. 그래서 도구를 잘 사용하기 위한 노력과 시간에 투자를 아끼지 않아야 한다.

하지만 도구의 함정에 빠지는 것은 또 경계해야 할 일이다. 전산 분야에서 유명한 농담 중에 '야크 털깎기(Yak shaving)'라는 것이 있다. 원래 하려던 일은 나무를 깎으려던 것인데, 도끼가 더 잘 들면 나무를 더 빨리 벨 텐데 해서 도끼 날을 세우다가, 좋은 숫돌이 있으면 도끼 날을 더 잘 세울 텐데 해서 좋은 숫돌이 있는 곳을 수소문하고, 저 멀리 어디 있단 얘길 들어 야크를 타고 가려다가 야크 털을 깎고... 로 이어지는 무한삽질(...)을 비유한 것이다.

한 마디로, 도구를 잘 다듬고 잘 배우는 것도 중요하지만 도가 지나치면 안 된다는 이야기다. 좀 불편하긴 해도 주어진 도구로 주어진 시간 내에 일을 끝낼 수 있다면 굳이 새로운 도구를 찾아나설 필요는 없다. 헌데 사람 마음이라는 게 그렇게 논리적으로만 동작하는 것은 아니라서 나도 가끔은 본래 목적과 상관 없는 엉뚱한 곳에 시간과 노력을 들이곤 한다. (바로 이전 글에서 이야기한 '쓸데없는 장인정신'이 이런 걸 두고 하는 말이다) 뭐... 내 나름대로는 그런 작은 삽질들이 인류 발전에 기여한다고 위로하기도 하지만;;1

아무튼 하고 싶은 이야기는, 우리가 일상에서 흔히 쓰는 소프트웨어들도 잘 알고 쓰면 좋은 기능이 많다는 것과 바쁠 땐 어쩔 수 없더라도 자신이 쓰는 도구를 좀더 잘 사용할 수 있도록 하는 노력을 게을리 하지 않는 자세를 가졌으면 하는 것이다. 괜히 평생교육이란 말이 나온 게 아니지 않을까.


  1. 이런 위안을 삼을 수 있는 건, 다른 분야에 비해 전산은 자신이 개선한 도구를 다른 사람들에게 전세계적으로 전파시키기 쉽다는 특징이 있기 때문이다. 오픈소스가 바로 그것이다. 

Posted
Filed under 컴퓨터

요즘 연구실에서 워크샵 논문을 하나 준비하고 있다. 얼핏 보면 그리 어렵지 않은 듯하면서도, 막상 실제로 구현하려면 꽤 생각해야 할 것이 있어서 생각보다 어려움을 겪고 있다. 이미 있는 코드 분량이 꽤 되고 리눅스 커널 드라이버도 함께 맞물려 돌아가는 프로그램인데다 성능도 민감하기 때문에 생각보다 고려해야 할 것이 많은 것이다.

문제는 추상화다. 나도 '추상화의 덫'에 걸리지 않도록 조심해야 한다는 사실 정도는 알고 있지만, '나중에 유지보수할 일'을 생각해서 코드를 짤 때 되도록이면 기본적인 추상화는 하려고 하는 편이다. 하지만 프로그래밍에 데드라인이 생기면서부터는 이것이 만만치 않은 일이 된다. 추상화는 잘 할수록 나중에 좋지만, 데드라인이 있는 일에서는 결국 어느 정도 수준까지만 하고 포기해야 하는데, 가끔 이럴 때 장인정신(...)이 발휘되면 곤란한 상황에 처한다.

이쪽 시스템 분야로 내공을 쌓으신 연구실 선배와 이야기하다보면 많이 느끼는 차이점이 있다. 프로그램의 어떤 부분에서 임의의 16-bit integer key로 table lookup을 해야 하는데 나는 이것을 hash table로 짜야 되나, 그럼 이걸 어떻게 간단하게(적은 노력으로) 짤 수 있을까, 라이브러리를 쓴다면 뭘 쓰는 게 좋을까, C++ 인터페이스를 쓰는 게 좋을까 그냥 C로 하는 게 좋을까, random dereference를 하면 그 자체가 lookup 오버헤드가 되지는 않을까 등등등을 꼬리에 꼬리를 물고 고민하는데, 선배들과 이야기해보니 간단하게 그 table에 들어가는 item 개수가 많아야 수백개 정도일 것이므로 그냥 array에 때려박고 index로 접근하게 한 다음 table 변경될 때도 일부만 잘 고치려 할 필요 없이 전체 다 재생성하도록 해보고 나중에 성능 보고 더 나은 방법을 쓸지 말지 결정하자는 결론이 나왔다.

그러니까 요는 처음부터 너무 미래의 걱정을 하지 말라는 이야기다. 일단 지금 필요한 수준에 맞게만 구현하고 문제가 있으면 그때 가서 고치자는 것. 이 이야기를 건축에 비교해볼 수 있다. 물리학이나 공학이 지금처럼 발전하기 전에는 (상징성이나 예술성이 목적인 경우를 제외하면) 같은 기능적 목표를 충족시키기 위해 지금보다 훨씬 많은 재료가 들어갔으나 기술이 발전할수록 점점 그것이 최소한 필요한 만큼만 쓰게 되는데---사실 건축뿐만 아니라 많은 분야가 그렇다---처음부터 프로그램을 모든 경우를 대비해서 비대하게 짤 필요 없이 필요한 만큼씩만 덧붙여나가는 것이 이와 비슷하다.

그나마 '얼핏 보기에 간단한' 정도의 일도 이런 고민을 하게 만드는데, '얼핏 보기에도 어려운' 정도의 일을 하려면 아직도 내공을 더 많이 쌓아야 할 것 같다. 프로그래밍이라는 게 항상 끊임없는 의사결정의 과정인지라 개발자 자신이 처한 사회적 맥락, 프로그램 코드가 속해있는 기술적 맥락 모두를 잘 꿰뚫어보지 않으면 여러 의미로 좋은 코드가 나오기가 정말 어렵다.

(살짝 덧붙이자면, 그래도 ipv4와 ipv6를 하나의 인터페이스로 통합하려고 했던 시도는 그나마 빨리 접어서(...) 다행이다. -0-)

Posted
Filed under 살아가기, 생각하기

내가 블로그에는 일부러 종교적인 이야기를 거의 올리지 않는 편인데, 이번 주일의 신부님 강론이 내가 고민해왔고 주변 사람들로부터 영감을 얻어 만든 신앙에 대한 관점을 너무나 잘 표현하고 있어 기록으로 남긴다. 아마 세월이 좀 흐른 후에 이 글을 돌아보면 초심을 잃지 않는 데 도움이 되리라 생각한다. 오늘 들었던 강론은 내가 평생 성당 다니면서 들은 강론 중 단연 최고라고 할 수 있을 것이다.1

(모르시는 분들을 위해 살짝 설명을 곁들이자면, 가톨릭의 미사는 크게 말씀의 전례와 성찬의 전례 2단계로 구성된다. 말씀의 전례에서는 구약, 신약, 복음의 일부분들이 낭독되고 성찬의 전례에서는 예수님이 세운 성체성사를 제사로써 재현한다. 보통 그 사이에 20분 가량의 신부님 강론이 들어가며, 강론에서는 보통 그날의 복음을 신부님의 묵상을 곁들여 해설하지만 특별한 날에는 주교나 교황의 메시지를 대신 낭독하기도 한다. 각 미사마다 축일 여부나 가톨릭 전례력에 따른 의미와 주제가 부여되어 있고 성경에서 그와 관련된 부분들이 발췌되어 사용된다.)

오늘 나온 복음말씀은 마태복음 5장 17절에서 37절까지의 내용으로, 예수님이 유다인들이 지켜온 율법들을 다시 설명하면서, "율법을 폐지하러 온 것이 아니라 완성하러 왔다"라고 말하는 내용이었다. (매일미사 참조) 먼저 신부님의 강론 내용을 요약해보면 아래와 같다. 기억나는 대로 최대한 옮겨보았지만 역시 한 단계 거치는 것이라 본래의 그 감동(?)이 다시 느껴질런지는 잘 모르겠다. 혹시나 잘못 전달하는 부분이 있을까 조심스럽기도 하고.

농부가 씨뿌리는 건 무엇을 믿기 때문일까요? 씨를 심으면 열매가 가득 열리리라 믿기 때문입니다. 우리가 이 땅을 딛고 서 있고, 지금 이 성당에 들어와 앉아있는 것은 그 땅과 성당이 우리를 받쳐주고 무너지지 않으리라는 믿음이 있기 때문입니다. 허나 우리는 살아가면서 사고를 겪기도 하고 믿었던 친구로부터 배신을 당하기도 합니다. 우리 믿음대로만 되지 않는 것이 세상이기에 믿음은 너무나 쉽게 흔들립니다.

믿음보다 더 강한 힘이 있는데 그것은 희망입니다. 우리가 어지러운 세상의 불의를 보고, 자연재해로 삶을 터전을 잃어도 다시 일어설 수 있는 것은 다시 나아질 것이라는 기대와 희망이 있기 때문입니다. 그러나 희망은 시간에 의해 제약을 받습니다. 죽기 직전까지도 자신의 노력으로 인해 뭔가 더 나아질 것이라는 예상을 할 수 없다면 희망을 잃게 되고 우리는 절망 속에 살 것입니다.

하지만 희망보다 더 강한 것이 있으니 그것이 바로 사랑입니다. 농부가 단순히 소출만을 기대한다면, 지속되는 흉작 후엔 포기해버리고 말 것이지만 천직에 재한 애착심이 있기에 다시 씨를 뿌립니다. 친구에게 몇번씩 배신당해도 우정을 지속할 수 있다면 그것은 친구에 대한 사랑이 있기 때문입니다.

저 뒤에 앉아계신 형제 자매님들 잘 들으세요. 아내 여러분, 남편에게 의지하지 말고 사랑하십시오. 그래야 남편이 기댈 만한 곳이 못 되더라도 함께 살 수 있습니다. 남편 여러분, 아내에게 기대하지 말고 사랑하십시오. 그래야 아내가 보잘것 없는 여자임을 깨닫더라도 계속 같이 살아갈 수 있습니다. 또 자식들에게 기대하지 마십시오. 설령 그동안 실컷 늘어놓았던 자식자랑이 헛되이 되는 모습을 보이더라도 실망하지 않도록 기대하지 마십시오. 그들을 사랑해야 그들을 용납할 수 있습니다.

교회에 나오는 여러분, 교회로부터 무언가 얻어가려고 하지 마시고, 예수님의 희생으로 만들어진 교회 공동체가 무엇을 의미하는지 생각하십시오. 교회는 뭔가 얻어가는 곳이 아니라, 이미 얻은 사람들을 위한 사랑의 전시장입니다.

다들 이태석 신부님의 이야기 들어보셨지요? 종교를 초월하여 그분의 이야기가 우리에게 감동을 주는 이유는 무엇이겠습니까? 우리는 그분으로부터 사랑으로부터 오는 고통까지도 사랑하신 하느님(예수님)의 모습을 보았습니다. 우리는 그러한 사랑의 모습을 하느님이라고 부르지만, 그것이 부처님이든 마호메트이든 세상 사람들이 무엇이라 부르든 중요한 것이 아닙니다. 현대인들은 겉으로는 종교와 멀어지려고 하는 것처럼 보이지만, 사실은 하느님에 대한 갈증을 느끼고 있습니다. 이태석 신부는 바로 그 갈증을 채워준 것이지요.

우리의 삶을 지탱하는 원동력은 어디에 있을까요? 이태석 신부님은 누가 떠밀어서 그곳으로 가지 않았습니다. 누구도 그분에게 그 일을 하라고 시키지 않았습니다. 그러나 그분은 하느님의 사랑의 포로가 되었기 때문에 그곳으로 갔고, 죽을 때까지 행복하게 그 일을 하였습니다.

중요한 것은 사랑입니다. '사랑이 없으면 아무것도 아니다'라는 성경구절을 생각하십시오. 예수님은 율법 그 자체를 비판한 것이 아니라, 율법의 형식에 매여 그 근간에 깔려있는 사랑을 보지 못함을 비판한 것입니다. 하느님 나라가 온다는 것은 우리들의 삶이 사랑의 힘으로 밀려 움직이는 것이고, 우리는 하느님을 하늘에 있는 어떤 특별한 존재가 아니라 우리 마음 속에 항상 함께 하는 분이심을 깨닫게 될 것입니다.

성경을 한 마디로 요약하면, "서로 사랑하라"는 이야기입니다.

-- 2011년 2월 13일 연중 제6주일 청년미사에서 이상일 야고보 주임신부님

이쯤 되면, 한때 내가 그랬던 것처럼 과학적으로 하느님이 존재하느냐, 혹은 하느님을 인격신으로 봐야 하느냐 자연신으로 봐야 하느냐와 같은 논쟁은 별 소용이 없다는 것을 알 수 있다. 그 존재의 형식이 무엇이건 간에, 하느님은 우리가 마땅히 따라야 할 사랑의 가치를 예수님의 죽음과 부활로 알려주신 분이다. 흔히들 그리는 이미지처럼 천국의 옥좌에 근엄한 표정으로 앉아있는 그런 존재가 아니라, 우리 마음 속에서 삶의 여정을 함께 걸어가는 존재이다. 내 개인적으로는, 하느님이라는 실체가 없다 해도 좋다. 창세기와 구약은 단순히 신화이고 성경은 예수라는 인물의 행적이 후대에 와서 신격화되어 포장된 것이라 해도 나는 상관없다. 역사적·과학적 사실이 무엇이건 간에, 삶을 살아가는 철학적 기초를 제공하는 것만으로도 나는 충분한 의미가 있다고 생각한다.

길을 가다 '예수천국 불신지옥'이라는 팻말을 큼직하게 붙여놓고 전도하는 사람들을 종종 볼 수 있다. 마치 구원이라는 어떤 보상을 받기 위해 교회에 나오라는 소리로 들린다. 하지만 이 강론에서는 교회에 무엇을 얻으려 오지 말라고 한다. 상당히 많은 사람들이 신앙생활을 시작하는 계기가 전화위복이기에 신앙도 구복적 양상을 보이는 경우가 많은데(심지어 사후세계에 대한 일종의 보험으로 보는 경우도 있다), 그러한 자세에 따끔한 일침을 놓는 것이다. 기독교는 계시의 종교이다. 우리가 살아가는 방법과 지향해야 할 가치를 알려주는 것이다.

물론, 죄를 아무리 많이 지어도 회개하면 천국에 갈 수 있다는 이야기도 분명히 성경에 나온다. 하지만 여기서 회개한다는 것은 단순히 교회에 나가는 것이나 세례받는 것을 말하는 것이 아니라, 마음 기저의 어떤 근본적인 변화로 사람이 완전히 바뀌는 것을 말하는 것이다. 고해성사로 사제를 통해 하느님께 죄를 고백하는 것도, 어떤 죄의 행위 그 자체를 설명하는 것이 중요한 것이 아니라 왜 그랬는지 자신을 되돌아보고 작은 변화라도 일으키는 것이 더 중요한 것이다. (좀더 신앙적으로는 '하느님과의 끊어진 관계를 복원한다'라고도 표현한다.)

그래서, 나는 대놓고 '하느님을 믿습니다!'라고 외치거나 다른 사람들에게 '하느님을 믿으라'고 전도하지는 않는다. (뭐, 미사 때 기도문에 나오는 정도는 하지만.) 그 대신, 나의 삶을 영적으로 충만하게 채워주시는 하느님의 존재를 생각하고 그 존재와 함께 걸어감으로써 더 강해지고 편안해지는 나를 보고자 한다. 어쩌면, 내가 살면서 만나본 몇몇 사람들처럼 '세상에 믿을 건 자신밖에 없다'라고 말하는 자아가 강한 사람들은 그러한 존재를 상정하는 것이 별로 필요 없는 일일지도 모르지만, 내가 스스로 혼란에 빠질 때 최소한의 판단의 기준으로서 사랑의 가치를 되돌아볼 수 있게 해주기에 나는 거부하지 않을 것이다.

나는 사람들에게 직접적으로 하느님을 믿으라고 이야기하는 대신에, 내가 내 삶의 자리에서 그러한 사랑의 가치를 직간접적으로 보여줌으로써, 향기가 퍼져나가듯 은근히 국물이 배어나오듯 그러한 가치가 따를 만한 가치이고 복잡한 세상에서 자신을 지탱함과 동시에 더 많은 사람들을 행복하게 할 수 있는 방향임을 설득하고 싶다. 이태석 신부님처럼 아주 짧고 굵게 그 모든 가치를 한방에 보여주고 가실 수도 있지만, 그것만이 정답은 아닐 것이며 모든 사람이 그렇게 살 수도 없을 것이다.

나도 사람이기에 완벽하지 않아서 살다보면 죄도 짓고 화도 내겠지만, 적어도 반성할 때라도 그 기저에 깔린 가치가 사랑인지 항상 되짚어볼 것이다. 어려서부터 많은 사랑과 복을 받고 자라서일까, 이따금 사람들에게 좌우명 삼아 말하듯, 내 재능을 통해 많은 사람들을 기쁘게 하고 싶다. 그 근간에는 나에 대한 사랑과 동시에 다른 사람들에 대한 사랑이 깔려있다.

오늘 강론에는, 얻으려 하지 말고 사랑하여 마음을 비우라는 의미로는 어머니가 대략 나이 오십 중반을 넘기고서부터 자주 해오셨던 말씀들이, 영적 갈증에 대해선 독실한 개신교 신자인 한 친구와 여러 차례 걸쳐 나눴던 대화들이 모두 녹아들어있었다. 아직도 '사랑'이 무엇인지 정확히 정의할 수는 없지만---강론 중에 '하느님은 도덕교사가 아니다'라는 언급이 있었는데 그것의 더 깊은 뜻은 아직 모르겠다---때로는 논리적 엄밀함 대신 마음에 와닿는 것이 더 중요하다는 것을 생각하며 글을 마친다.


  1. 이 강론이 최고로 느껴진 것은 신부님이 물론 강론을 잘 하신 것도 있지만 그동안 내가 살아온 경험과 축척된 생각들이 접점을 만나는 순간이었기에 더욱 그러했다. 

Posted
Filed under 살아가기, 생각하기

아마도 내 또래에서는 많은 사람들이 정치가 자기 삶에 어떤 영향을 끼치는지 명확하게 인식하는 사람이 그리 많지는 않으리라 생각한다. 알더라도 별로 관심이 없거나. 이를 환기할 만한 일이 있어 포스팅해본다.

얼마 전 교수님이 포워딩하신 이메일을 하나 받았다. 학교 부서 중 하나인 연구처라는 곳에서 "연구노트 관리지침에 대한 안내문"이란 제목으로 보낸 거였다. 요는 교육과학기술부에서 2010년 8월 11일에 전부개정한 "국가연구개발사업의 관리 등에 관한 규정"이 2011년 1월 1일부터 시행되기 때문에, 우리 학교 또한 자체 연구노트관리지침을 만들어 관리해야 하니 그 지침을 준수해달라는 것이다. 그러면서 몇가지 주요 조항이 첨부되었는데, 그 중에 논란이 되는 것이 바로 모든 연구노트를 KAIST 소유로 하고 사본 소유를 원할 경우 연구책임자 승인과 기록관리팀 서면 보고가 필요하다는 제7조(연구노트의 소유) 부분이다.

연구노트를 양식에 맞춰 일일이 기록하고 연구책임자의 서명을 받아야 한다든지, 전자연구노트 프로그램은 (가상머신이나 원격데스크탑을 쓰지 않는 한) 절대로 MacOS나 Linux에서 이용할 수 없는 구조라든지 하는 불편함은 둘째치고라도, 연구 과정에서 발생하는 여러 아이디어나 관찰을 연구노트에 기록하게 되면 그것이 KAIST 소유가 되어버리는 것이다.

이런 일이 왜 벌어졌는지 궁금해서 그 근거라고 하는 '국가연구개발사업의 관리 등에 관한 규정'에 대해서 좀 조사를 해보았다.

우선 알아둬야 할 것이 있다. 법에는 여러 등급(?)이 있는데 다들 알다시피 헌법이 가장 상위의 법이고 그 아래에 법률이 있다. 그런데 이 법률을 잘 보면 실무적이거나 자세한 부분들은 '~은 대통령령으로 정한다'와 같이 위임하는 경우가 많다. 이때 대부분 해당 법과 관련된 실무부처에서 시행령을 만들어 국무회의에 올리면 대통령, 국무총리 및 관련 국무위원의 심사와 서명을 거쳐 그 효력이 발생하게 된다. 이 경우는 중앙행정부에서 만드는 법이라면, 지방자치제도에 의해 지방자치단체가 정하는 법들은 조례라고 한다.

해당 규정은 교육과학기술부에서 발의한 것으로, 2010년 2월 4일 개정된 '과학기술기본법'을 바탕으로 2010년 8월 11일 국무회의에서 이명박 대통령, 당시 정운찬 국무총리와 안병만 교과부장관의 서명을 거쳐 통과된 것이다.

과학기술기본법 제11조의3(국가연구개발사업결과물의 소유·관리 및 활용촉진) 조항을 보면 "국가연구개발사업의 결과물은 국가연구개발사업에 참여하는 연구형태와 비중, 연구개발결과물의 유형 등을 고려하여 대통령령으로 정하는 바에 따라 연구기관 등의 소유로 한다."는 내용이 들어있다. 이에 따라 대통령령으로 2010년 8월 11일에 전부개정·공포된 규정에서는 제20조에서 해당 부분을 자세하게 정의하고 있는데 바로 여기에 주관연구기관의 소유가 되는 대상물 중 하나로 문제의 "연구노트"가 명시되어 있다. 개정되기 전에는 없었다.

※ 참고로 위와 같은 법령 정보는 국가법령정보센터라는 곳에서 손쉽게 검색해볼 수 있다. 모든 법령은 당연히 국민의 알 권리에 의해 누구나 볼 수 있게 되어있음은 물론이다. 나름 잘 만들어놔서, 언제 어떻게 개정되었는지를 해당 조항에 대해서는 일종의 diff처럼 볼 수도 있다.

처음에는 이것 또한 '학교의 새로운 정책'으로 생각해서 이놈의 학교가 또 왜 이러나... 싶었는데 자료를 뒤지다보니 (학교가 원했든 그렇지 않았든) 외부의 정치적 요인이 이렇게 영향을 끼침을 알 수 있었다.

이렇게 법적으로 국가연구개발사업의 결과물을 국가나 주관연구기관 소유로 못박는 것 자체도 그렇고, 법의 개정 이력을 뒤져보니 점점 법이 구체화되는 게 어쩌면 정부가 말하는 소위 '선진화'의 방향이 이런 게 아닐까 싶은 생각이 들었다. 많은 사람이 함께 살다보니 어쩔 수 없이 case by case로 주관적 해석을 피하기 위한 고육지책일 수도 있겠으나 전반적으로는 국가가 너무 많은 걸 통제하려고 한다는 느낌이 들었다.

물론 이 사안에 대해서는 보는 관점에 따라 세금으로 한 거니까 국가 소유라고 볼 수도 있겠고, 그래도 연구자의 창의성이 발휘된 부분이니까 연구자에게도 공로를 인정해서 공동소유권 정도로 해야 한다고 볼 수도 있겠고, 국가의 지원 목적이 과학기술진흥 그 자체에 있는 것이지 결과물 소유가 아니기 때문에 완전히 연구자의 소유권·저작권을 인정해야 한다고 볼 수도 있겠고 등등 여러 의견이 나올 수 있을 것이다.1

그런데 정말 궁금한 건, 이런 법률과 규정의 제정·개정 과정에 실제 연구자들의 의견이 반영될 여지가 있느냐 하는 것이다. 국회의원들이 참여하는 법률인 과학기술기본법 자체로만 보면 별 문제가 없어보이는데, 실무적 세부 지침은 행정부에서 만든 규정을 국무회의를 통해 대통령령으로 정하니 그나마 국회의원 선거를 통해 국민들의 개입 여지가 있는 법률과 달리 대통령을 중심으로 한 세력가들의 생각과 기조가 그대로 드러날 수밖에 없는 것 같다. 이것이 바로 '대통령 중심제'의 폐단인 걸까?

이 규정 개정에 서명한 이명박 대통령과 정운찬 전 국무총리와 안병만 교육과학기술부 장관은 과연 위와 같은 고민을 하고 서명한 것인지 자못 궁금해진다. 그리고, 선거 때 후보를 고를 때 이 후보가 어떤 정책에 어떤 영향을 끼칠지 미리 알 수 있는 방법이 있으면 좋겠다.


  1. 내가 법률 지식이 짧아서, 여기서 말하는 소유권과 저작권, 저작인접권 등은 어떤 차이점들이 있는지 잘 모르겠다. 아시는 분은 댓글로 달아주시면 큰 도움이 될 듯. 

Posted
Filed under 살아가기, 생각하기

드디어 29일부로 드디어 "나의" 가을학기가 끝났다.

올해는 5년간의 학부 생활을 끝내고 대학원생활을 시작한 것이 삶에 있어서 가장 큰 변화였다고 할 수 있겠다. 대학원은 학부 때와는 확실히 느낌이 다른데, 수업만 들으면 되는 학부 때와 달리 우선 해야 할 일이 압도적으로 많고(대신 수업을 적게 듣긴 하지만) "재밌어보이는 것"과 로드를 고려하여 수강신청하는 정도가 아니라 직접 배울거리와 연구거리를 찾아나서야 한다는 것이 가장 큰 차이인 것 같다. 학부 때는 주변에서 '가능성'의 인재로 보는 시각이 있지만 대학원생은 무언가 실제로 이루어내야 하기 때문에 좀더 압박이 심해지는 것 같다. 사실 이건 직장생활을 해도 마찬가지겠지만 업무가 구체적으로 주어지는 것이 아니라 연구라는 것 자체가 스스로 길을 파야 나오는 것이기도 하고 졸업연한에 대한 부담도 있기 때문에 더 그렇게 느끼는 것 같다.

또 한 가지 깨닫게 된 것은, 교수님들도 사람(?)이라는 것. 학부 때는 왠지 모르게 교수님이라고 하면--좀 과장하자면--변소에도 안 갈 것 같은 그런 느낌이었는데(...) 교수님들도 정말 바쁘고 힘들게 사시는 분들이라는 걸 알게 되었다. 연구비 따오기 위해서 과제 제안서 쓰고, 다른 교수님들이나 정부연구소 등과 계속 연락 유지하면서 정부과제 로드맵 짜고, 단순히 학회에 참석만 하는게 아니라 학회 논문 리뷰에 session chair 같은 것도 가끔씩 해줘야 하고, 수업도 해야 하고, 학생 논문 지도도 해야 하고, 테뉴어 받으려면 실적도 쌓아야 하고... 나는 대학원생이라 일이 늘었다지만 교수님 말씀마따나 농담반진담반 "그래도 게임할 시간이라도 있으니" 말이다.; 정말 연구하고 학문을 좋아하는 게 아니라면 (되고 안 되고를 떠나서) 교수도 참 어려운 직업임을 알게 되었다.

대학원에서 듣는 수업들은 학부도 카이스트였기 때문에 쭉 이어지는 느낌이라 큰 감흥은 없었다. 다만 논문 읽거나 요약 발표하는 과제가 많아지고 교수님 수업에서는 좀더 근본적인 이야기들 또는 최신트렌드에 가까운 이야기들이 나오는 느낌이다. 그리고 전산과의 경우 이론 수업이 아니라면 거의 다 자유주제 기말프로젝트가 있다. 이 프로젝트가 참 골때리는 것이, "잘 하면" 논문도 써보자(임도 보고 뽕도 따고-_-)..는 컨셉인데 사실 연구실 과제나 프로젝트를 하려다보면 이것을 과목 프로젝트에 끼워맞추는 게 쉽지 않아서 후자에 집중하기 위해 과목 프로젝트는 최대한 대충대충 때우려는 경향이 생기는 것이다.

특히 가을학기에 들었던 분산시스템의 경우 그냥 한번 아이디어로 이야기해본 주제가 교수님 맘에 들었는지(?) 많은 기대(...)를 받아버리는 바람에, 그리고 수업 자체가 프로젝트 중간 발표를 3번씩이나 하면서 계속 progress 점검을 하고 마지막에는 evaluation 결과를 아무도 안 가져왔다는 이유로 크리스마스 이후로 데드라인을 부왘 연기해버리시는 바람에 매우 고생한 케이스였다. 그래도 프로젝트 내용(peer-to-peer online social network) 자체는 내가 관심있던 부분(소셜네트워크에 시스템적 관점을 결합시켜보는 것)을 과목프로젝트로 작게나마 시도해본 것이라 개인적으로는 나름 의미가 있었기에 다행이다. 다만 evaluation 방법론--어떤 변수들을 측정하고 어떤 변인들을 가정을 통해 통제하고 시뮬레이션은 어떻게 돌려야 하는지 이런 것들--이 익숙하지 않아 생각보다 많은 시간이 걸린 것이 아쉽다. 한 가지 재밌는 것은 우리 연구실 석사졸업하시고 NHN에서 전문연구요원하시다가 미국 유학가신 선배가 이번 학기 학교 수업으로 거의 같은 주제의 프로젝트(P2P Twitter)를 진행하셨다는 것이다. (다만 peer와 client에 대한 모델이 좀 다르긴 하다) 일단은 PacketShader에 집중해야겠으나 나중에 기회가 되면 다시 살려볼 수 있을지도 모르겠다.

아직 본격적으로 연구를 시작했다고 보기는 힘들지만 그래도 이제 대학원 레벨의 연구가 어떤 것인지 조금이나 느끼게 된 것도 2010년의 성과라 할 수 있겠다. 특히 포스터 작성하여 OSDI 학회에 참석하였던 것이 여러가지로 자극도 되고 '학계가 어떻게 돌아가는지' 파악할 수 있는 좋은 기회였다. 원래 가을학기 때 예정되었던 PacketShader control plane 구현이 빨리 진행되었으면 어쩌면 내년에 스페인 Telefonica 인턴을 간다거나(!) 하게 되었을지도 모르지만 분산시스템과 조교 로드가 예상 밖으로 쎄서 거의 진행하지 못한 것이 좀 아쉽다.

얘기가 나왔으니 말인데, 조교도 세 종류를 다 해본 것 같다. CS101은 '재미있게' 했고 CS220은 '널널하게'(수강생이 많았지만 대신에 조교도 많아서 숙제 채점 한번과 시험감독 한번만 하면 되었다), CS443은 '빡세게' 한 조교였다. CS101은 내가 가장 좋아하고 자주 쓰는 파이썬 언어를 사용한 것이기도 하고 프로그래밍 입문자들이나 문외한들에게 설명하는 연습(?)을 하고 싶었던 것도 있고 해서 재밌었다. 대신 (월급 받긴 하지만) 한 주 6시간이나 연습반에 꼬박 할애해야 한다는 점은 다소 부담이었고 가을학기 때는 수업과 연구 로드를 고려하여 더 하지 못했다. CS443은 원래 MapReduce만 하던 수업을 MPI까지 확장하는 바람에, 그리고 작년과 달리 서버 자원이 충분하지 않아서 자주 문제가 발생했기 때문에, 게다가 조교가 나 한 명이었기 때문에 상당히 힘들었다. 나도 내 프로젝트 하느라 한창 바쁜데 학생들이 찾아오면 그래도 응대를 해주어야 할 때, 아침에 자고일어날 때마다 자꾸 서버가 죽어있었을 때가 가장 힘들었다. (서버가 죽는 원인은 여러가지가 있었는데, 주원인은 사용한 학과 클러스터의 설정 문제로 인한 것이 가장 컸고 그 다음이 로그가 용량을 꽉 채워버리는 경우였다.)

특히 CS443 조교를 하면서 몇가지 노하우를 터득하였는데 이건 다음번에 내가 조교를 하거나 후배가 조교를 할 때 꼭 적용해야겠다고 생각하는 것들이다.

  • 숙제 제출 경로는 무조건 일원화. 이메일로만 받는 경우 고유한 제목 형식 명시하고 지키지 않을 경우 0점 나올 수 있음을 사전 고지. gmail 필터링 기능 등으로 숙제 제출 메일은 따로 태깅하고, 위와 같이 엄격하게 체크할 경우 학생 입장에서 수신여부 확인이 되어야 하므로 24시간 이내 이메일 확인 즉시 답장해주기. (내가 받는 메일이 상당히 많아서, 별도로 메모해두지 않은 상태로 '읽음' 상태로 넘어간 경우 성적처리에서 누락되는 경우가 생길 수 있다...가 아니라 실제로 그런 케이스가 이번에 발생해서 성적 정정해야 함. orz)
  • 단순 질의응답의 경우에도 제목 형식 지정해주고 안 지킬 경우 응답 없을 수 있음을 명시. 이것도 gmail 필터 적용.
  • 숙제 낼 때 입출력 형식과 결과를 담을 파일명, 전체 압축 파일명 형식 명시. (안 그럼 이런 삽질을...ㅠㅠ)
  • 딜레이의 경우 서버의 잦은 다운 문제로 감점을 최대 50%로 제한했는데 일정 threshold 넘어가면 0점 처리하는 것이 좋을 것 같다. (최대 40일 딜레이한 경우가 있었는데 서버세팅이 바뀐다거나 할 경우 채점하기도 힘들어질 수 있고, 누락되기 쉽다.)
  • 조교하다가 했던 삽질은 다음 조교에게 문서화해서 넘겨주기. 이번학기에 문제가 많았던 VC 클러스터의 경우 예전에 CS443 조교하셨던 선배님이 클러스터 관리자를 하면서 설정 노하우를 가지고 있었는데 그분이 조교하셨다는 건 알았으나 클러스터 관리자였는지는 전혀 몰랐고 현재는 별도로 학과에 고용된 관리자가 있기 때문에 설정 문제가 생겼을 때 애초에 그분께 물어볼 생각을 못했음. 현 관리자도 해결못하던 게 그 선배한테 여쭤보니 며칠 삽질하던 게 30분 내로 해결되더라는...
    • 나도 이번 경험은 연구실 위키에 별도로 정리할 생각이고, 서버 세팅이나 관리 관련한 삽질은 이미 어느 정도 기록해두었다. 관련해서 오픈소스화한 코드도 만들어둠.
  • 숙제 내용은 가능하면 학기 시작 전 미리 만들어두고, 이전에 해본 검증된 숙제가 아닐 경우 조교가 완전 구현까진 아니더라도 feasibility test는 해보는 것이 좋겠다. (예를 들면 병렬화 불가능한 알고리즘을 병렬화하는 숙제를 내면 안 되겠지...)

조교를 하면서 힘들었지만, 나는 힘들었더라도 다음에 하는 사람들은 힘들지 않도록 해야겠다. 그래야 수업도 나날이 더 나아질 것이고, 교수님도 더 좋은 강의평가를, 조교도 더 좋은 조교평가(...)를 받을 수 있을 테니 말이다. 학생들도 좀 덜 고생하고 더 많은 것을 배울 수 있다면 좋을 것이고.

대학원 생활 얘기는 이쯤에서 마무리해야겠다. 그리고 해가 갈수록 느끼는 것이지만 내 할일을 제대로 하기 위해서 때로는 약아져야 한다는 것. 많은 사람들을 대하면서 살아가다보니 하고 싶다고 혹은 부탁한다고 다 하려다보면 내가 할 수 있는 한계를 넘어서기 마련이다. 이 밸런싱의 묘는 항상 어렵다.

대학원 외의 이야기를 해보면, 중학교 1학년 때 그만둔 피아노 레슨을 다시 시작했다는 것. 물론 그 이후로도 혼자 취미삼아 계속 쳐오긴 했지만 역시 레슨 받으니 다르다. 물론 바빠서 자주는 못하고 2주에 한번꼴로 하고 있으나 그나마도 11~12월엔 쭈우우욱 밀렸다. 그래도 앞으로 계속 이어서 할 생각...인데 왜 기숙사는 문지동이 된 건지...ㅠ_ㅠ 이 외에 성가대 시작한 것도 좋은 변화였다고 할 수 있겠는데 역시 이것도 문지동 기숙사 크리가...-_-;

한편으로는 2008년 구글에 인수된 텍스트큐브닷컴이 문을 닫게 된다는 사실이 알려지기도 하고, Needlworks 그룹 내부에서도 새로운 인원이 충원되는 등 변화가 제법 있었다. 우리를 오랫동안 리딩해오신 신정규님이 미국으로 파견연구를 나가시기도 했고, 겐도님의 결혼과 같은 굵직한(...) 이벤트도 있었다. 오픈소스 텍스트큐브에서는 IIS7 지원이라든지 OSS Camp 참여라든지 마이크로소프트의 협력을 새롭게 받게 되었다는 것도 한 변화였다고 할 수 있겠다.

그 외에 천안함 사건과 북한의 연평도 포격, 북한정권의 3대 세습, 여소야대의 결과를 가져온 지방선거, 무상급식 이슈, G20 정상회의, 한미 FTA, 예산안 날치기 통과, Wikileaks 등을 통해 정치에 대해 시스템 관점에서 더욱 구체적인 관심을 가지게 되었다.

IT 분야에서는 단연코 스마트폰과 소셜네트워크가 대세였고 우리 연구실이나 내 관심 연구주제 중 하나가 온라인 소셜네트워크였다는 것 또한 빼놓을 수 없을 것이다. 2010년대의 시작을 스마트폰·모바일 혁명과 함께 시작한만큼 이제 더욱 다이나믹한 기술과 생활 변화가 이어지지 않을까 싶다. 과학 분야에서는 비소기반 생명체의 실증이 이루어지고 칠레 광부 구조 등의 좋은 일도 있었던 반면 나로호가 발사 70초 후 폭발하는 안타까운 일도 있었다.

세계적으로는 이상기후가 본격화·일상화된 한 해였다. 2008년까지만 해도 겨울이 이상하리만치 따뜻하더니(스톡홀름에 6개월 살면서 눈을 하루밖에 못봤다) 올해 초부터 폭설과 이상저온이 이어지고 여름엔 폭우와 태풍이 몰아치더니 겨울 초입부터 이상한파와 폭설이 더 심해지고 있다. 이건 우리나라뿐만 아니라 전세계적인 현상이기도 하다. 인간이 발생시킨 이산화탄소가 이상기후의 가장 직접적인 원인이냐 아니냐에는 논란이 있지만 이유야 어쨌든 기후가 변화하고 있는 것은 사실이다. 이젠 그 사실을 있는그대로 받아들이되 변화 추이를 예측하고 대비하는 것이 중요해질 거라는 생각이 든다.

(위의 2010년 주요사건 돌아보기는 위키백과를 참고해도 좋을 것이다.)

어쨌든 또 이렇게 한 해가 갔다. 내년은 토끼띠의 해이니 연구도 잘 되고(...) 좀더 좋은 일이 많이 생기길 기대해본다. ㅋㅋ

Posted
Filed under 살아가기, 생각하기

인터넷의 발전으로 인해 민주주의가 실현되는 데에 더욱 도움이 된다는 이야기를 들어본 적이 있다. 맞는 말이긴 한데, 여기에는 여러가지 복잡한 문제가 얽혀있는 것 같다. 인간의 언어라는 게 참 오묘한 것이라서 단어 하나 어떻게 사용하느냐에 따라 객관적으로는 같은 사실을 이야기해도 그것이 받아들여지는 것은 매우 다른 방식이 되기도 한다. 그래서 사람들은 서로 논쟁하기도 하고 편을 가르기도 하는데, 'positioning'이나 'framing'이라는 단어에서 알 수 있듯 여러 이익집단들이 자기 자신이 어떤 맥락에서 어떤 의미를 가지게끔 보여지도록 하느냐에 따라 사건의 본질과 양상이 완전히 달라지기도 한다.

이번에 G20 정상회의와 관련된 언론 보도 및 각종 SNS에 올라오는 사람들의 반응, 정부에서 만든 홍보 홈페이지 등을 살펴보면서 정치와 인터넷의 관계에 대해 만감이 교차했다. 세계 주요국 정상들을 모아놓고, 그렇기에 세계 이목이 집중되는 중요한 회의를 우리나라에서 한다는 것 자체는 좋은 일이다. 하지만 정부의 홍보 자료들을 읽다보면 무언가 정부(혹은 이명박 대통령)가 굉장한 업적을 남기는 것 같은 느낌이 들었다. 대부분의 언론 보도도 그런 관점이 많았고, 어쩌면 일상을 영위하는 국민들은 별로 알지 않아도 될 것까지도 구태여 세세하게 소개하는 것 같았다.

또, 어떤 사람들은 정상회의 전후로 삼성역에 쫙 깔린 경찰들을 굳이 사진찍어서 트위터에 올리는 것도 봤는데 이것도 잘 이해가 가지 않는다. 이해관계가 첨예하게 대립하는 주요국 정상들이 모이는 자리에서 국가 입장에서는 철통보안을 하는 것이 당연한 것이다. 내가 만약 그날 삼성역을 이용했다면 물론 나도 위압감을 느꼈겠지만, 그래도 필요한 일이라고 생각하기 때문에 약간의 행동의 제약이 따르는 불편을 감수하고라도 이해하려고 했을 것이다. 이걸 두고 '21세기 공안정국'이라고 볼지 '불편하지만 필요한 것'으로 받아들일지 '이거 무조건 잘 해야 각하가 힘 좀 받으십니다'라는 자세를 취할지는 각자의 몫이겠지만 인터넷으로 사람들의 반응을 접하다보면 내 스스로도 이런 것 같기도 하고 저런 것 같기도 하고 frame의 혼란이 온다. 이럴 때 정부가 중심을 잘 잡아주면 좋을 텐데 그렇지 않은 듯하다.1 2

한편으로는 회의 자체는 비교적 성공적으로 주재했다고 생각하지만, 괜히 다른 데서 잡음 만드는 것보다 차라리 이런 데에 신경썼으면 더욱 국격이 올라갔을 것 같은데 하는 아쉬움이 남는 대목도 있었다. 두 기사(1, 2)를 보면 단순히 보안에 필요한 만큼 회의장 근처의 시위를 막는 정도가 아니라 NGO에 대해 과잉 예방 조치를 했음을 알 수 있다. 맨날 철통 보안에 근거로 가져다붙이는 '시민의 안전'에 위해를 가하는 것만 아니라면 표현의 자유는 항상 보장되어야 한다. (더 큰 문제는 이 안전의 범위가 어디까지이고 그로 인해 자유를 어디까지 제한할 수 있는가에 대한 일관성 있는 합의가 이루어지지 못했다는 것이지만.) NGO들이 모여서 폭력시위를 하자는 것도 아니고 정상회의를 계기로 한곳에 모여 의견을 교환하고 정상회의 취재 차 온 세계 각국 기자단들에게 그들 나름의 이야기를 들려줄 수 있게 해줬다면 훨씬 좋지 않았을까? 다른 나라들처럼 굳이 세금으로 그들의 활동을 지원할 필요는 없지만(물론 그렇게 하면 더 국격이 올라가겠지만) 굳이 막을 이유는 없지 않은가?

대안적 목소리들이 자유롭게 나올 수 있도록 하지 못하고, G20 정상회의의 모든 공이 정부(또는 이명박 대통령)에게 있는 것처럼 포장하고, 꼭 해야 하는 일과 그렇지 않은 일이 혼재된 채 소통이 이루어지지 못하고... G20 정상회의를 통해서 그간 우리가 안타까워했던 정부의 자화상이 그대로 나타났다. 또한 그 과정 중에 일어난 다양한 사건들을 어떤 관점에서 바라보느냐(framing)에 따라 내 자신이 보수와 진보를 왔다갔다하는 느낌을 받을 만큼 근본적 가치관들이 더 이상 절대불변의 가치를 지닌다고 말할 수 없음을 깨닫게 되었다.

2008년 광우병 쇠고기 촛불시위도 그 과정을 보면 상당히 흥미롭다. 처음에는 과학이냐 괴담이냐, 확률적으로 안전한 것이냐 하는 쪽에서 논의가 진행되다가, '검역도 국방', '검역 주권'과 같은 단어들이 등장하며 10만명 중에 단 한 사람만 영향을 받는 것이라도 정부가 국민들의 안전을 위해 최선을 다해서 예방해야 하는 것이 아니냐라는 논리가 전개되었고, 한국과 미국의 역학관계나 정부의 책임론에 촛점이 맞춰졌다. 그러더니 (야간집회가 법적으로 금지되어있었던 당시 상황에서) 촛불시위가 '문화제'라는 이름으로 확산되자 경찰이 사람들을 연행하기 시작했고 이때부턴 시위 자체의 합법/불법 여부로 주요 논점이 모아졌다. (그 와중에 반대입장의 정치세력들은 '맞불집회'라는 것을 하기도 했다) 나중에는 정부가 국민과 소통할 줄 모른다며 명박산성이 그 상황을 대표하게 되었다.

촛불시위에 대해 여러 관점에서 여러 평가가 엇갈리지만, 나는 일반인들이 정치적 결정 과정에 참여할 수 있다는 가능성을 보여주었다는 것과 동시에 현재의 시스템에서 그것이 쉽지 않다는 한계점을 보여준 것이 가장 중요한 결과라고 생각한다. 인구 수에 의한 물리적 한계로 어쩔 수 없이 대의민주주의를 하고 있지만, 인터넷을 통해 직접민주주의의 가능성이 열린 셈이다. 하지만 동시에 포퓰리즘 일변도로 흘러갈 수도 있다는 우려 또한 불러왔다. 누구나 쉽게 의견을 피력할 수 있게 되었다는 장점은 정보과잉 덕분에 곧 소수 전문가의 의견이 더 옳은 것이어도 그것이 여론의 힘을 받지 못하면 그대로 사장되기 쉽다는 단점으로 이어진다.

아마도, 누구나 그냥 물어보면 표현의 자유는 보장되어야 한다고 대답하겠지만, 인터넷이라는 공간 특성이 여기에 결합하면 그것이 항상 긍정적 결과로만 이어지진 않을 수도 있단 점을 이해하는 사람은 많지 않을 것 같다. 표현의 자유라는 기본 가치를 침해하지 않으면서도, 정보과잉의 시대에 여러 이익집단의 가치가 서로 혼재하는 상황에서 어떻게 해야 각자 올바른 판단을 하도록 할 수 있을지 참으로 어려운 문제다.

여러 정치세력들 사이에서 어떤 하나의 본질을 가진 문제를 두고 사람들이 각기 속한 집단이나 주로 접하는 매체에 따라 건설적인 토론이 불가능할만큼 표현이 극단적으로 갈라지는 이유가 바로 이러한 framing의 혼란스러움에 있는 것 아닌가 싶다. 무엇이 정말 문제를 해결하는 데 도움이 되는 frame인지 혹은 누가 의도적으로 자신만의 이익을 위해 만들어낸 frame인지 잘 구분하는 것은 너무 어렵다.

보수냐 진보냐 하는 정치적 사상의 차이를 떠나서, 현대 사회에는 또 하나의 큰 변수가 도사리고 있다. 바로 자본이 움직이는 기업들이다. 얼마 전 어느 아는 분으로부터 이런 말을 들었다: 자본주의와 대의민주주의를 사회제도로 삼고 있다면 부패가 필연적일수밖에 없다는 것. (심지어 그 유명한 '문명' 게임에서도 통치규모가 커지고 민주주의가 발달할수록 부패비용이 함께 올라간다고...)

우리나라에서는 삼성이 바로 그 대표적인 예다. 국가는 표면 상 경제 발전과 기업 보호라는 이유로 너무 관대하지만 그 이면에는 돈이라는 무소불위의 도구로 이미 밑바닥부터 온갖 분야에서 사회를 잠식해버린 재벌이 있다. 태안 기름 유출 사고에 대한 대응, 반도체 공장 노동자들의 죽음에 대한 조사나 대응, 김용철 변호사의 '삼성을 생각한다'는 책에서 나오는 온갖 비리들을 보노라면, 그럼에도 잘먹고 잘사는 책임자들을 보노라면 실로 기업 독재 국가가 아닌가 하는 생각이 든다.

정치적으로는 민주화가 이루어지고 보편인권이 당연한 개념이 되었지만, 자본주의 사회에서는 기업이 또 다른 독재 체제로 군림하고 있고 가만히 둔다면 결국 국가와 정치의 공공기능을 마비시킨다. 따라서 반드시 견제가 이루어져야 하는데, 돈이라는 강력한 수단 덕분에 언론통제가 가능하고 대다수 개인을 월급쟁이로 만들어버려 힘을 못 쓰게 할 수 있으므로 결국 자본이 원하는 frame 안에 모두가 갇히게 되기 십상이다. 오죽하면 '억울하면 돈 벌어라'는 말까지 나올까. 개인의 도덕성이 삶을 영위해야 하는 필요에 무너지는데 개인 스스로 그걸 인지하지 못하는 상황까지 갈지도 모른다. (이미 보편도덕이라는 개념은 말이 안 된다고도 하지만...)

인터넷을 비롯한 IT 기술이 민주주의에 변화의 가능성을 열어주었지만, 오히려 framing의 문제는 더욱 복잡다단한 양상을 띠게 만들었다. 민주정치와 자본주의 체계에서 우리가 균형점을 찾아가도록 어떻게 도움줄 수 있는 일이 있는지 한번쯤 고민해봐야 할 것 같다.


  1. 한편 정부에서는 그런 시각에 대해 '시민의 안전을 위한 것'이라는 식으로 그다지 세련되지 못한 이유를 들어 사람들을 설득하려 하니 반발심만 공연히 더 생겨나는 것 같다. 차라리, '이러이러한 이유로 어느 정도 수준의 보안(어느 지역에 어떤 특성의 경비 인력이 배치되는지 등을 공개 가능한 범위에서 설명해가며)이 필요하기 때문에 시민들께서는 가급적 의심을 살 만한 행동(구체적 예를 들어가며)을 삼가하여 주시고 정상회의 양일간 다소 불편하시더라도 양해 부탁드립니다' 이런 식으로 잘 설명했으면 좋지 않았을까? 트위터에 보니 어떤 사람이 우연히 오바마 대통령을 태운 의전차량 행렬이 지나갈 때 육교를 건너다가 도로가 비어있고 차량행렬이 지나가자 손에 음료수병을 든 채 구경하려 했고, 이때 경비 중이던 경찰에게 제압당하며 아이폰을 떨어뜨리는 바람에 손상된 경우가 있었는데, 이런 것도 사전 안내를 통해 예방할 수 있었던 일이 아닌가 싶다. (물론 충분히 안내를 했음에도 본인이 몰랐다면 어쩔 수 없었겠지만.) 

  2. 유명한 웹툰 중에 이번 정상회의를 전후하여 '국격을 떨어뜨린다'며 시민들의 일상 행위를 일시적으로 금지하는 정부를 신랄하게 비판하는 것이 하나 있었는데, 아무리 사람들이 이명박을 까고 싶어한다해도(...) 왜 사람들이 이렇게밖에 느낄 수 없도록 만들었는지 궁금할 따름이다. 우리나라가 진짜 선진국이라면 회의장 주변의 보안에만 신경쓰면 될 일이지 이렇게까지 억지로 만들어진 모습을 보여주려 해야 했을까(혹은 국민들의 시선에 그렇게 보이도록 해야했을까) 말이다. 

Posted
Filed under 컴퓨터

앞서 공지한 바와 같이, 10월 1일이부터 8일까지 5박 7일 일정으로 첫 해외 학회 출장을 다녀왔다. 다녀온 학회의 공식 명칭은 9th USENIX Symposium on Operating Systems Design and Implementation (일명 OSDI)이며 10월 4일부터 6일까지 캐나다 밴쿠버에서 열렸다. 컴퓨터 시스템 분야에서는 가장 인정받는 최고의 학회라고 할 수 있겠다. 이번 출장을 통해 아메리카 땅을 처음 밟아볼 수 있었고, 전산의 기원지이자 중심지인 미국의 파워도 실감할 수 있었다. 또 미국 유학 중이신 여러 선배들을 만날 수 있는 좋은 기회이기도 했다.

밴쿠버 인증샷
도착 다음날 오전에 스탠리파크 자전거 대여해서 돌다 찍은 사진. 뒤로 보이는 것이 밴쿠버 다운타운.
Main Conference Room
학회 발표가 이루어진 British Columbia Ballroom. 하루종일 저런 어두컴컴한 방에 있으니 더 졸려운 것 같았다;;
Panoramic View from Hotel
이런 날씨에 좀 돌아다니고 싶었는데 말이지. (자전거 탈 때 흐리다 워크샵 가려고 호텔 올라오니 맑아진 상태)

본격 논문 프레젠테이션이 이뤄지는 technical session은 3일 동안 진행되었으나, 나는 그보다 이틀 앞서 "Diversities in Systems Research"라는 작은 워크샵에 참석하였다. 학문적인 내용이 아니라 '대학원 생활 잘 하는 방법'을 공유하는 워크샵이었는데, 석사 1년차로서 듣기에는 더할나위 없이 좋은 워크샵이었다. '논문은 언제나 떨어지라고 쓰는 것이니(...) 떨어졌다고 해서 펑펑 울고 개인적으로 실망하고 그러지 마라'라는 얘기부터 시작해서, 학회는 social networking이 가장 중요하다는 점도 알려주고, 대학원 공부하는 요령이나 academic job과 industry job의 차이점 등 유용한 내용이 많았다. (물론 미국 기준의 이야기이긴 하지만.) 교수님, 대학원생들, 인텔과 MS에서 온 사람 등등 30명 정도가 가족적인(?) 분위기로 모여서 진행되었고, 특히 나처럼 해외 학회에 처음 가보는 것이라 아는 사람이 아무도 없고 그런 입장에서는 사람들과 친해지고 본격 tech session에서 말 걸 수 있는 사람들을 미리 만들 수 있는 좋은 기회였다. 여기에서 학문적 관점의 문제를 푸는 것도 재미있지만 스타트업에서 일해본 경험으로는 학문적이진 않지만 현실에서는 중요한 여러 문제들이 있고 그걸 푸는 것도 재밌다는 것을 알기 때문에 나는 박사과정을 계속 하는 것이 좋을지 고민된다는 질문을 하였더니, 내가 만든 무언가를 실제로 사람들이 사용하는 것이 가장 보람되다면 industry로, 새로운 아이디어를 제안하고 사람들과 공유하는 것 자체가 즐겁다면 academy로 가라고 명확하게 대답해주더라. (근데 난 둘 다 재밌을 것 같다는 것이...orz) 혹시 둘 다 하고 싶다면 일단 Ph.D를 먼저 따고 나중에 industry로 가는 것이 좋다는 것과, research intern을 반드시 해보라는 조언도 받았다. 참고로, 미국 대학원은 우리나라처럼 석사/박사가 명확하게 분리되기보다는 (학교마다 차이는 있지만) 박사과정을 하면서 중간에 석사 수료를 받을 수 있는 식이었다. 스웨덴 교환학생 때 보면 유럽은 학사+석사를 합쳐 5년에 끝나는 체제였던 것과는 또 다르더라. 또, 연구 동향 세션에서는 MSR/Google/Yahoo 등에서 나오는 논문들처럼 연구용이나 수업용으로 대용량 클러스터를 써보고 싶은데 현실적으로 어렵더라 이런 얘기를 했더니 인텔에서 온 사람이 Amazon이랑 긴밀하게 일하고 있다며 가상화 클러스터의 artifact 문제를 해결하고 더 많은 research community를 끌어들이기 위해 노력하고 있다는 얘기도 해주었다.

이렇게 이틀을 보낸 다음날 본격 학회 일정이 시작되었다. 몇 가지 기억에 남는 발표들만 얘기해보겠다. 위의 워크샵에서 했던 미니 포스터 세션에서 FlexSC라는 걸 들고나와서 몇 가지 질문을 했었는데, 알고보니 그게 첫번째 세션 발표였고 그 사람이 1저자였다; Linux systemcall에서 exception을 이용하지 않고 multithread로 만들겠다는 아이디어였는데, 나중에 사람들과 얘기해보니 다들 비슷한 생각을 하고 있었던 모양이나 이 팀이 시기적절하게 좋은 결과를 낸 것 같다. Linux many core scalability 발표는 나중에 전해들은 이야기인데 원래 linux는 scalable하지 않다는 걸 보이려고 하다가 조금(커널코드 5천줄 정도?) 고쳐보니 생각보다 결과가 잘 나와서 방향을 반대로 바꾼 거라고 한다. 살짝 기대했던 Facebook의 Haystack 발표는 그냥 잘 엔지니어링했다는 것 말고 뭔가 새로운 아이디어가 있거나 한 게 아니라서 실망이었다. 주변에서 태수형의 1저자 발표로 많이 기대했던 selective re-execution은 태수형이 아직 1년차라는 이유로(?) 교수님이 대신 발표를 맡아버려서 아쉽게도 태수형의 발표를 볼 순 없었다. 시스템 침입/침해 사고에 대응하는 방법으로 re-execution이라는 게 있다는 것 자체를 처음 본 것이라 신기했는데 기존 방법은 매우 많은 리소스를 요구하지만 action history graph를 잘 분석해서 적은 리소스로 복구 가능하게 했다는 내용이었다. 대체로, 시스템 분야 발표들을 보니 컴퓨터 성능이 충분히 좋아지니까 기존에 못하던 것들을 약간(수 퍼센트 정도)의 오버헤드를 감수하고라도 더 고차원적이고 새로운 요구를 해결하는 아이디어를 추가하는 느낌, 아니면 기존 구조를 멀티코어 시대에 맞게 고치는 느낌이었다.

또다른 큰 축으로 determinism을 운영체제 수준에서 보장해주겠다는 것이 있었다. 기존 multithreading 모델 자체가 프로그래밍 실수가 잦다(뭐 이쪽 분야에선 수도 없이 나온 이야기이긴 하다)는 점 때문인데, 이들 역시 deterministic하게 만듦으로 인해 발생하는 오버헤드를 어떻게 잘 줄이느냐가 관건인 듯했다. 특히 deterministic execution 보장뿐만 아니라 record & replay를 가능하게 해서 디버깅을 쉽게 한다는 점은 맘에 들었다. (오에스 pintos 플젝할 때 1000번 돌리면 한번 뻑나고 뭐 이런 버그 잡으려면 꼭 필요한 기능이다. ㅋㅋㅋ) 시스템 설정을 자동화하거나 설정 오류를 잘 잡아주겠다는 연구들도 있었는데, 그닥 잘 될 것 같지 않아서 큰 흥미는 없었지만(...) 그만큼 대규모 시스템에서 사람에 의한 설정 실수가 큰 문제가 되고 있고 research interest로 받아들여지고 있다는 것을 알 수 있었다. 얼마 전 Facebook에서도 설정값 잘못된 것을 자동으로 고치려는 내부 시스템들의 오작동이 일파만파 퍼지면서 전체 시스템을 다운시킨 사례가 있었으니 뭐.

데이터센터 쪽 연구들로는 computation과 data를 어떤 캡슐화된 단위로 보고서 클러스터 내에서 어떻게 잘 재배치·재활용할 것인가 하는 것들이었다. 특히 기존의 MapReduce 모델이 가지는 한계를 해결하고자 한 시도들이 몇 개 있었는데, 많은 사람들의 관심을 받은 Google의 Percolator도 그런 것 중 하나였다. 지난 4월부터 구글 검색 인덱스 백엔드에서 MapReduce를 버리고 Percolator로 바꿨다고 하는데, 구체적으로 PageRank를 이걸로 어떻게 구현했는지는 소개되지 않았지만 BigTable에 distributed transaction을 도입해 수십분 단위의 인덱스 갱신 시간을 문서 단위로 매우 빠르게 업데이트할 수 있도록 바꿨다는 것이 골자였다. 아마 트위터 실시간 검색 같은 것도 이걸로 구현한 것일 테다. 그리고 "Active" key-value storage를 구현한 Comet 발표도 재미있었다. memcached를 비롯한 많은 key-value storage는 그저 key/value pair만 왕창 저장할 뿐이지만, 여기에 "active" 개념을 도입해서 각각의 pair object가 이벤트 핸들러와 간단한 코드를 가질 수 있도록 하여 application-specific policy를 구현할 수 있도록 한 것이다. key-value storage의 문제점이라고 생각하고 있었던 부분인데 이렇게 접근하는 방법도 있구나 하고 배울 수 있었다. 마지막날 네트워크 시스템 분야의 rule-based forwarding 발표는 active의 의미를 조금 제한하여 원하는 만큼의 유연함은 확보하되 보안과 속도를 잡는 방법을 택했는데, 10년 전에 나왔지만 여전히 유효한 개념을 담은 논문에게 주는 상을 Active Network 논문이 받은 걸 보면 확실히 아직도, 그리고 앞으로도 계속 이쪽 연구들이 나올 것 같다.

가상화 쪽에서는 TaintDroid와 Turtles 프로젝트가 눈에 띄었다. TaintDroid는 안드로이드 플랫폼의 VM 자체를 고쳐 개별 변수, 파일 등을 모두 추적해서(이걸 얼마나 효율적으로 짰느냐가 강점) 개인의 위치 정보나 IMEI 등이 원하지 않는 시점에 외부로 전송되는 것을 탐지하고 사용자에게 이를 경고로 띄워준다. 앞에서 말한 것처럼 성능 희생을 조금 감수하고라도 고차원적 가치를 제공하기 위한 연구 흐름에 부합한다고 할 수 있겠다. Turtles 프로젝트는 이미 가상화 기능을 제공하는 OS(예: 윈도7의 XP Mode)를 어떻게 가상머신으로 돌리겠느냐 하는 nested virtualization 문제를 다룬 것인데, 아직 CPU 구조 상 지원되지는 않지만 몇가지 방법(multidimensional paging, single-level VMX multiplexing)을 통해 작은(6~8%) 오버헤드로 돌릴 수 있었다는 내용이었다. 그 외에 가상화 환경에서 clock timing을 어떻게 정밀하게 관리할 것이냐 하는 연구도 있었는데 나름 의미있는 작업이긴 하지만 큰 관심이 가지는 않았다.

아무튼, 이번 OSDI에서 발표된 전체 논문을 보려면 이곳을 방문하면 된다.

아침부터 저녁 늦게까지 계속 학회 일정이 이어진 데다 시차적응 문제까지 더해 아주 힘들었지만 승엽이형, 태수형, 민종이형, 상만이형, 박소연 박사님 등 미국 유학 중이신 여러 선배들 및 한국에서 오신 다른 분들도 만나고, 몇몇 발표자(FlexSC 발표한 Livio Soares, Rule-based Forwarding 발표한 Lucian Popa)와는 안면도 쌓을 수 있었다. 이를 테면 아침에 엘레베이터에서 만나 같이 걸어가면서 얘기했다든지 돌아올 때 공항에서 계속 마주쳤다든지. 하지만 여전히 미국 사람들의 빠른 영어와, 이미 서로 알고 있는 사람들의 대화에 끼어들기는 어려웠던지라 좀더 많은 사람들을 못 만난 것은 살짝 아쉽다.

포스터 발표 인증샷

포스터 걸어놓은 모습. 꼬박 한시간 반을 서있어야 했다;

포스터 세션의 경우 내가 포스터 발표를 한 덕에 저녁도 못 먹고(ㅠㅠ) 계속 사람들 와서 질문하는 거 대답해주느라 다른 사람들 포스터들을 거의 못 봐서 좀 아쉽기도 했지만, 내 포스터는 도이치텔레콤의 Rob Sherwood, 유타대학교 Robert Ricci, 인텔의 Mazier Manesa 등 몇몇 사람들이 관심있게 봐주었다. PacketShader가 여전히 임팩트있는 연구임을 확인할 수 있었고(메일로 논문 보내달라는 사람도 있었음), 가장 걱정했던 부분인 실제 라우터에서의 FIB update overhead에 대해 구체적으로 물어본 경우는 다행히(?) 없었다.1 피드백 중에 IPv4는 비교적 간단하게 구현 가능한데 OpenFlow에서는 패킷마다 routing table이 바뀌기 때문에 double buffering 적용이 어렵지 않겠냐는(lock overhead 등) 것이 있어서 이 부분은 내가 OpenFlow를 좀더 공부해봐야 할 것 같다. 포스터 세션 끝나고 정리할 때 한 사람이 안 가고 계속 설명 중이길래 가서 들어봤는데, Yagz Onat Yazr라는 친구가 클라우드 컴퓨팅의 리소스 배분 문제를 설명하고 있었다. 현실의 예를 들어가며 아주 흥분된 목소리로 재미나게(...) 설명해서 이해는 잘 되었는데, 이 친구 말이 논문도 그렇게(!) 쓰고 싶은데 잘 될지 모르겠다는 농담반 진담반(?) 이야길 해서 다들 웃었다. 아무튼 이 친구 설명은 다들 기술적인 내용을 다루고 있고 듣는 사람들도 그런 배경지식이 있는 사람들이라지만 설명 방법을 좀더 고민해볼 필요가 있겠다는 생각이 들게 해주었다. 포스터 세션 전체 발표 목록은 여기 있는데, "Monster poster session"으로 이름을 바꿨을 만큼 많이 뽑았더라.;

한편 한국인 선배들과 만나 이런저런 이야기도 듣고, BoF 세션의 community resource 톡이나 일상에서 내가 보고 느낀 것이나 유럽과의 분위기 비교 등을 통해 느낀 것은, 미국이 컴퓨터 시스템 분야는 단연코 원조이자 선진국이며 연구 규모도 크다는 것, 그리고 전체적으로 모든 것을 체계화·시스템화하려는 경향이 강하다는 것, 그러한 경향 때문에 대다수의 국민들은 조금 멍청(?)해도 잘 살아갈 수 있게 되어 있다는 것. 대신 사람과 사람의 끈끈한 정은 느끼기 힘들다는 것. 또, 우리는 미팅을 할 때 미리 다 논문도 읽고 그러는 것이 좋다고 생각하지만 미국 애들은 발표에 없고 논문에 있는 것이라도 일단 질문하고 본다는 것. 나는 tech session에서 보다가 궁금한 게 있으면 논문을 훑어봤는데 대개 내가 궁금해한 것 정도는 이미 논문에 다 있어서(...그러니 OSDI에 나왔겠지 ㅋㅋ) 질문을 못했는데, 미국 애들은 그런 거 신경 안 쓰고 일단 질문하고 보는 것 같았다. 선배들 말로는 이게 숙독하는 것과 비교해 나름의 일장일단이 있지만 어쨌든 짧은 시간에 효율적으로 공부하는 방법의 하나라면서, 미국 쪽에서 공부하려면 반드시 익숙해져야 하는 것이라고도 한다.

이번 출장 다녀오면서 역시 한국이 인터넷이랑 공항은 잘 되어 있구나 하는 느낌을 지울 수 없었다. 특히 미국 LA에서 환승할 때는 터미널마다, 항공사 카운터마다 시스템이 달라서 나처럼 좀 특이하게 미국 입국 후 다시 해외로 환승하는 경우는 미리 알지 않으면 헤매기 딱 좋게 되어 있었다. 인터넷으로 미리 '톰브래들리 터미널(인터내셔널 전용 터미널)에서 내리고 미국 입국 절차를 밟고 수하물을 찾은 후 터미널 2번으로 이동해야 캐나다행 비행기를 탈 수 있다'는 정보를 알고 갔기에 망정이지, 2번 터미널 찾는 것도 한참 헤맸고(결국 누군가한테 물어봐서 해결) 톰브래들리 터미널에서는 전광판도 시스템이 아예 달라 캐나다행 비행기가 나오지 않았기 때문에 아마 터미널을 바꿔 타야 한다는 걸 아예 모르고 갔으면 정말 비행기 놓쳤을 것이다.2 그래도 캐나다에서 돌아올 때는 밴쿠버 공항에서 미국 입국 절차를 다 밟고 LA에서 수하물 찾지 않고 체크인만 다시 하면 되었기 때문에 훨씬 편했지만 이때는 보안검색 줄이 엄청 길었다. 2번 터미널은 오래돼서 시설이 엄청 구렸는데 톰브래들리는 새로 지어서인지 상당히 좋은 편이었다. 공항 서비스면에서도 차이가 많이 났다. 인천공항과 밴쿠버공항은 무료 Wifi를 빵빵하게 쓸 수 있었는데, LA 공항은 유료 Wifi만 있고 (KT Wifi 로밍도 실패했는데, 앱에서 오프라인으로 제휴사 목록을 볼 수 있었음 좋겠다) 3G망도 엄청 신호가 약해서 배터리 소모가 심했다. 특히 보안검색할 때 우리나라에서는 신발 벗으면 잠깐이지만 임시로 신으라고 슬리퍼도 주고 바구니도 친절하게 다 가져다주는데 미국과 캐나다는 그런 거 얄짤 없더라.;; 그냥 다 알아서 해야 한다;

참고로 미국 입국은 이번이 처음 해보는 것이었는데, 열손가락 지문 다 찍고 안경과 모자 모두 벗고 얼굴 사진 찍고 하느라 조금 신경쓰이긴 했지만 다행히 무사 통과(?)하였다. 한번 해두니 두번째 캐나다에서 미국으로 갈 때는 오른손 네 손가락 지문과 사진만 다시 찍어서 확인하더라. 입국심사관이 뭐 하러 왔냐고 해서 academic conference 왔다고 하니 거기서 뭐 하느냐, 며칠 동안 있다 갈 거냐 이런 것을 물어봐서 잘 대답하니 별 문제 없었다.

아무튼, 이렇게 해서 첫 해외 학회 출장은 나름 잘 다녀온 것 같다. 출장 직전까지 할일이 잔뜩 있어서 쉬지도 못하고(인천공항에서 비행기 한 시간 지연된 덕분에 숙제 제출하고 막...아놔) 힘들었지만 사람들 만나는 건 언제나 즐거운 일인듯.


  1. 라우터가 설치된 곳이나 설정에 따라 FIB update overhead가 있다고 주장할 수도, 없다고 주장할 수도 있어서 내 연구가 언제나 항상 가치있다고 말하기는 조금 어렵기 때문이다. 게다가 아직 내가 라우터를 많이 다뤄본 경험이 있는 것도 아니어서 어떤 경험을 토대로 얘기를 하기도 힘든 상황이었다. 

  2. 참고로 말하면 미국과 캐나다는 인터내셔널이 아니라 국내선처럼 되어있다. 물론 입출국 절차와 보안검사는 다 하기 때문에, 공항 터미널이 인터내셔널, 국내선, 미국/캐나다의 3가지로 분리되어있다. 

Posted
Filed under 컴퓨터

뭐 요즘이야 어디서나(?) 인터넷이 잘 되니 여전히 인터넷을 통한 연락은 닿겠지만 그래도 공지합니다.

내일 10월 1일부터 10월 8일까지 캐나다 벤쿠버로 OSDI 학회 출장갑니다. "Dynamic Forwarding Table Management in High-speed GPU-based Software Routers"라는 주제로 포스터 발표도 하나 할 예정입니다.

아이폰 데이터+와이파이 로밍을 써볼 기회가 생겼는데 과연 얼마나 잘 될런지 궁금하군요.

그럼 잘 다녀오겠습니다. :)

Posted
Filed under 살아가기, 생각하기

요 근래 두문불출(?)하고 바빴던 이유는 OSDI1 학회에 poster abstract2를 제출하기 위해 한동안 삽질(...)하고 있었기 때문이다. 여름방학 때부터 이어서 하고 있던 PacketShader의 후속 프로젝트로, 대략 GPU 기반 소프트웨어 라우터에서 forwarding table을 관리하기 위한 구조를 만들 때 생기는 이슈들을 다루는 내용이다.

보통 정식논문과 달리 poster abstract는 형식이 자유로운 편이다. (글꼴 크기, 여백 제한, 분량 정도만 지정해줌) 하지만 학회마다 poster abstract를 쓰는 스타일이 상당히 다른 듯한데, 이번 포스터도 처음에는 거의 소논문 같이 two-column layout에 레퍼런스 달고 엄청 길게 썼다가 아무래도 USENIX 학회들은 심플한 걸 원하는 것 같다는 판단에 따라 one-column으로 고치고 세 문단을 한 문단으로 합치고(...) 하는 삽질을 거쳐 다시 쓰게 되었다.

예전에 블로그에 잠시 한글/영어 혼용 포스팅을 했던 것이나 스웨덴 교환학생 지원하려고 자기소개서 쓴 것, TOEFL CBT 시험을 위해 준비했던 것 말고는 영어로 제대로 글쓰기를 해본 건 이번이 처음이다. 다행히 교수님은 생각보다 잘 쓰는 것 같다고 하시긴 했는데, 역시 처음 써보다보니 실수들이 많았다. 교환학생 시절 스톡홀름 시립도서관에서 영어 소설도 빌려읽고 어쨌거나 영어를 많이 쓰다보니 한국인들이 가장 어려워한다는 관사(a, the)는 그런대로 쓸 만했는데(사실 소유격이나 특정한 걸 지칭하지 않는 복수형은 관사 생략이 가능하다는 점을 이용하면 좀더 쉽게 접근할 수 있다), 대표적으로 단복수 실수부터 시작해서, 맞춤법 검사가 되는 환경에서 작성하던 걸 갑자기 vi로 옮겨 편집하면서 생긴 오타들(moderm, udpate 등), 그리고 몇 가지 문어체 스타일에서 주로 지적을 받았다. 직접 해설을 써주신 경우도 있고 설명은 없지만 '아하, 이건 이래야 하는 거구나' 깨닫는 경우도 있었는데, 특히 also는 피한다든지, usually 대신 typically를 쓴다든지, 주어가 길면 안 되지만 중요한 내용은 앞으로 와야 하고(문장이든 문단이든), 수동태를 피하고, to 부정사를 동사적 용법 말고도 형용사적 용법으로도 적절히 활용해야 하는 점, 문장 자체를 되도록 짧께 끝내는 것 등이 있었다. 간혹 교수님이 아예 문장을 다시 써주시는 경우도 있었는데 문장 표현이 역시 다르긴 다르더라.;; inureyes님은 챗으로 이야기하던 중 '장비나 사물이, 일반적인 개념으로는 사람만 쓸 수 있는 동사를 능동태로 쓰는 것도 생각보다 광범위하게 허용된다'거나, MS Word에서 맞춤법 관련 옵션 다 켜고 한번 넣어보면 꽤 많은 문법 오류 잡아낼 수 있다는 팁을 알려주시기도 했다.

그래도 영어 자체에 관한 건 지적받으면 비교적 쉽게 고칠 수 있는 것들이라 괜찮았는데, 내용 전개가 훨씬 더 어려운 부분이었다. 무언가 하고 싶은 얘기에 집중하다보면, 그 이야기까지 흘러가는 논리적 사고의 흐름에서 무언가 빠뜨리게 되는 경우가 많았다. 특히 한 문장 한 문장이 엮어져 전체적인 근거를 구성해야 하는데 문장들의 연결을 (굳이 접속사를 쓰지 않고도) 자연스럽게 흘러가도록 하는 것이 포인트. 그리고 논문을 목적으로 하는 글쓰기이다보니 역시 대세(?)가 막연히 그렇다고 쓰면 안 되고 실제로 숫자값을 찾아서 구체적으로 레퍼런스를 넣어주는 것이 중요했다. (다만 처음 쓴 버전은 이렇게 했으나 abstract화할 때는 레퍼런스 없이 가긴 했다.) 직접적인 관련이 없는 논문이라도 레퍼런스를 통해 관련 정보를 찾을 수 있는 경우가 많았는데, 검색할 때 직접 원하는 정보가 있는 논문을 바로 찾을 수 없더라도 어떤 논문의 레퍼런스를 보면 그 내용이 있을 것이다라는 감각을 익히는 것이 중요한 것 같다.

어쨌든, 아직 포스터가 뽑힐지 어떨지는 모르겠지만, 영어로 논리적 글쓰기 과정을 통해 논문 쓰는 게 어떤 것이구나 하는 맛보기(?)를 할 수 있어서 큰 도움이 되었다. 특히 이렇게 논리 전개를 해나가려고 하다보면 자연스럽게 실제 코딩하거나 일하는 것도 그러한 논리 전개에 최적화된다는 것을 직접 체험할 수 있었다. 예를 들면 PacketShader의 control plane을 구현할 때 전에는 뭔가 구조적 깔끔함을 고민해가며 진행했다면 이번에는 일단 근거로 제시될 만한 실험을 위한 코딩에 집중하게 되었다. 선배들이 짜놓으신 코드를 보면서 뭔가 구조를 더 깔끔하게 했으면 좋았을텐데 하는 생각을 했는데, 이렇게 놓고 보니 정말 딱 필요한 만큼만 짜고 구조화한 거라는 사실을 알 수 있었다.

한국어로 수필 쓰기에 가까운 블로그를 오래 해와서인지, 논리적 영어 글쓰기는 말의 호흡이 달라서 앞으로 좀더 연습이 많이 필요할 것 같다. 다음 번엔 좀더 나은 글쓰기를 할 수 있었으면 좋겠다.


  1. "Operating Systems Design & Implementation". USENIX 계열 중 소프트웨어 시스템 분야에서는 최고의 학회로 꼽힌다. 짝수년도에는 OSDI가, 홀수년도에는 SOSP가 열리며 Google File System이라든지 MapReduce 등의 논문도 이 학회를 통해 발표되었다. 

  2. 전산 분야의 학회에서 이루어지는 활동으로는 크게 워크샵, 테크니컬세션, 포스터세션이 있다. 그 중에 정식논문(full paper)를 제출하고 발표하는 건 테크니컬세션이고, 특정 주제에 대한 논문들을 모아 공유하는 자리가 워크샵(테크니컬세션보다 리뷰가 조금 덜 까다롭다고 한다), 그리고 포스터세션은 현재 진행 중이거나 초기 단계에 있는 연구들의 핵심 아이디어를 서로 공유하고 피드백받는 자리이다. Poster abstract는 실제 포스터를 만들어가기 전에 심사를 위해 제출하는 1~2쪽 짜리 연구 요약문이다.