사고 조사는 두 단계로 이루어집니다

종종 공강 시간에 낮잠을 잘 때 켜 두는 내셔널지오그래픽채널
항공사고수사대》를 보다가, 뭔가 느낌이 오는 부분을 발견해서 기록으로
옮겨 봅니다. 흐흐. 요새는 TV에 재미있는게 참 많아요~ -O-

그 에피소드는 1990년의 British Airways 5390편 사고를 다루고 있는 시즌 2 에피소드 2 였습니다. 이 사고는 기장 앞의 창문이 뜯겨나가서 기장이 밖으로 튕겨나가고 부기장이 극적으로 비상착륙을 시켜서 결국엔 사망자 없이 무난히 마무리한 사건입니다. 그런데, 창문이 갑자기 뜯겨나간 이유가 조사가 진행되면서, 정비기사가 창을 고정하는 볼트 크기를 설계상의 크기가 아니라 다른 것을 끼운 것이 발단이 되어서, 상공에서 풀려서 사고가 생기게 되었다는 것이 밝혀졌습니다.

정비기사는 원래 끼워져 있던 볼트와 같은 크기의 볼트로 갈았을 뿐이라고 주장하며 전혀 문제가 없을 것이라고 했는데, 결국 그 비행기에는 원래부터 잘못된 볼트가 끼워져 있었고, 잘못된 볼트 크기에 맞게 정비기사가 역시나 또 작은 볼트를 끼운 것이었습니다.
다른 일반적인 사고에서는 정비기사 위로 직계 상사 몇명이 짤리면 그만이겠지만, 역시 우리의 항공사고수사대! 돈이 많이 드는 사업이니 만큼 철저한 조사를 합니다.

Accident investigation certain aircraft comprises two parts. First part is what’s happened and that’s usually well to the easy bit. And second part is why did it happen. — Stuart Culling (Accident Investigator, AAIB)
항공기 사고 조사는 두 단계로 이루어집니다. 첫 번째는 어떻게 일이 일어났는가를 조사하는 것인데, 보통은 쉬운 부분입니다. 두 번째 부분은 바로 왜 그런 일이 일어났는가를 조사하는 것입니다. – 스튜어트 컬링 (사고조사자, AAIB)

음.. 그러니까, 사고의 원인을 “정비기사가 볼트를 잘못 끼운 것”이나 “4년 전에 조립한 곳에서 잘못 끼운 것”이 아니라, 더 깊숙한 심리적인 원인을 분석했습니다. 조사자는 정비기사의 숙련도를 고려하여 자기의 책임으로 몰아가는 것처럼 느끼지 않게 최대한 배려하면서 어떤 경위로 정비기사가 그런 선택을 하게 되었는지 조사를 해서 결국은 더 깊은 원초적인 원인을 분석했습니다.

원래 항공기를 제작한 회사에서는 정비 매뉴얼에 모든 부품의 규격을 적어 두고
그에 따라 항상 확인하여 쓰도록 되어 있었지만, 실제로 정비창에서는 매뉴얼을
일일이 확인하여 작업하면 시간이 3배가 넘게 걸려서, 항공기의 스케줄에는
절대로 맞출 수가 없다는 것이었습니다. 또한, 인력 부족과 과도하게 빡빡한
항공 스케줄을 이유로 여러 사람이 반복적으로 안전을 확인해야 할 정비 공정
중에서 많은 부분을 정비기사 개인의 육감적인 판단에 맡기고 있었다고 합니다.
정비기사도 그런 부분에 대해서 상부에 얘기하고 싶었지만, 따로 따로 바쁘게
다른 시간에 떨어져서 일하다 보니 그런 기회가 적었다고 합니다.

결국 조사팀에서는 항공사에 품질관리 시스템을 점검하고, 기사들이 피드백을
주는 것을 장려하도록 했으며, 항공 당국에는 안전에 결정적인 영향을 주는
요소에 대해서 재직 중에도 계속 테스트를 하도록 권고했다고 합니다.

소프트웨어 프로젝트에서도, 많은 팀에서 프로젝트 일정에 쫓기다 보면, 우선
버그를 해결하고 나서는 그 버그가 뭔지 버그 트래커에 기록이 남으면 무척
다행이지만, 사실 상 많은 곳에서 그냥 “아차!”하고 남들 보기 전에 얼른
고치거나, 다른 사람이 만든 버그를 고친 경우에는 괜히 원망 한 번하고 끝납니다.
단순히 “잘못해서” “실수로” 라던지, “포인터를 잘못 접근해서” 같은 직접적인
이유 말고도, 근본적이고 기초적인 “모니터가 작아서 앞뒷 부분이 잘 안 보여서”
라던지 “의자가 불편해서 결국 치질에 걸리고, 자세를 자주 바꾸다보니 결국에
코드 집중도가 떨어진다” 같은 좀 더 사람에 초점을 맞춘 원인을
가끔씩은 분석하면 앞으로 발생할 여러 문제를 한꺼번에 잡아버릴 수도
있지 않을까 생각을 해 봤습니다.

원래 잘 돌아가던 코드를 그냥 다른 데 썼을 뿐인데,
그게 나중에 대형사고를 일으킨 경험을 해 본 적이 있는
게.. 엉뚱한데에 참 와닿네요 ^.^;;

인터넷 금융 공개 표준 프로토콜의 여러가지 구조

앞에서 살짜쿵 얘기해 보았던
〈인터넷 금융 서비스 플랫폼 문제의 현실적 대안〉
에서 공개 표준 프로토콜을
도입하는 방법에 대해서 조금 더 자세하게 살펴 보겠습니다. 물론,
photon님께서 말씀하신
대로
단기적인 해결책은 우선 현재 돌아가는 형태 안에서 플러그인을
많이 쓰이는 대안 플랫폼들에 포팅하는 것이 되겠습니다. 장기적인 안을
고려하자면 여러 다른 형태도 고려해 봄 직 합니다.

자바스크립트 API로 표준화하기

이 방법은 자바스크립트 API를 “인증서를 확인하라”, “개인 인식 번호를
전송하라”, “송금 확인을 해서 싸인하라” 등의 기초적인 기능을 수행하도록
표준안을 만드는 것입니다. 그러니까, 세션 암호화 등의 밑에 깔리는
것들은 HTTPS를 이용하고, 인증서 확인과 관련된 것을 웹브라우저 플러그인으로
들어가거나 다른 방법으로 자바스크립트의 함수를 호출하는 것으로 해결을 하는
방법입니다. 도식화 하자면, (이 그림은 일반인의 이해를 돕기 위해 과하게
단순화를 한 것이며, 실제 구조를 정확하게 표시한 구조도가 아닙니다.)

자바스크립트 API로 표준화 구조

대충 모양은 이렇게 나오는데, 예를 들자면
W3C XMLHttpRequest
같이 자바스크립트 오브젝트를 정의하는 형태이면 적당할 듯 합니다.

자바스크립트 API를 그냥 중간전달자로만 활용하기

이 구조는 지금 이니텍과 소프트포럼에서 채택하고 있는 방식과 비슷한
것입니다. 정확히는 이니텍과 소프트포럼은 Active X 오브젝트나
플래시 오브젝트를 대신 경유하고 있지만, 경유하는 과정을 굉장히 단순하게
전달자로만 쓴다는 점에서는 비슷합니다.
원래는 128비트 암호화를 웹브라우저에서 HTTPS로 지원하지 않아서, 암호화를
하려다 보니 이런 형태를 띠게 되었습니다. 이 구조에서는, 자바스크립트
API를 제공하기는 하는데, 거의 의미없이 그냥 전달만 합니다. 안에
전달 받은 곳에 구체적인 프로그램 동작이나 사용자의 행위를 요구하는 것에
대한 정보가 암호화되어 저장됩니다.

이 경우에는 호출하는 방법도 물론 표준화를 해야겠지만, 매우 간단하기 때문에
별로 흉내내는 것도 어렵지는 않아지고 플랫폼에 따라서 선택적으로 취할 수도
있습니다. 자세한 내부 정보의 바이너리 포맷을 정하는 것이 표준화에서 중요한데,
RFC3261 SIP 같이 텍스트
기반의 프로토콜을 채택할 수도 있고,
RFC2138 RADIUS같이
바이너리 프로토콜을 채택할 수도 있습니다.

바닥부터 TCP또는 SSL기반의 프로토콜을 만들기

독일에서 쓰는
HBCI (Home Banking Computer Interface)
에서 쓰는 방식입니다.
이 방식에서는 HTTP
SMTP같이 아예
바닥부터 프로토콜을 새로 만들어 버립니다. 이렇게 되면, 꼭 웹브라우저에 의존할 필요가 없기 때문에,
플랫폼이 GUI 프로그램이 될 수도 있고, 텍스트 콘솔이 될 수도 있고,
웹 브라우저에 들어갈 수도 있고, 심지어 집 현관문에 붙은 인터폰에
들어갈 수도 있습니다. 구조를 보면 대략,

바닥부터 만든 프로토콜 구조

이렇게 볼 수 있습니다. 바닥부터 만드니 만큼 호환성에 대한 테스트가
많이 이뤄져야 하고, 구현 작업에서 전반적인 작업량도 많습니다.

RPC 기반의 프로토콜

네트워크 부분을 신경쓰지 않고 그냥 서버를 호출할 수 있게 RPC
프로토콜을 활용하는 방법입니다. 인터넷을 경유하는 RPC 프로토콜로는
SOAP이나
XMLRPC 같은 것이 많이 쓰입니다.

RPC 기반의 프로토콜 구조

전체적인 구조는 이렇게, 클라이언트가 호출하는 RPC API를 정하고,
네트워크에서 돌아가는 RPC 클라이언트 – 서버 구간은 기존 표준을
활용하게 됩니다.
Blogger API
같은 것이 대표적인 RPC 기반 표준 API입니다.
SOAP와 XMLRPC 둘 다 밑에 HTTPS를 깔고 들어갈 수 있기 때문에,
암호화 채널에 대해서도 크게 복잡하지 않습니다.

표준 API만 정하고 SDK 제공

이 방법은 아예 프로토콜을 정하지 않고, 금융회사나 보안솔루션회사에서
제공해 주는 SDK(Software Development Kit)를 이용해서 최종
프로그램을 컴파일하는 방식입니다.
여기서 각 SDK의 API를 통일해서 표준 API만 지키면 아무 회사의
SDK라도 사용할 수 있게 하는 것입니다.

API만 표준화 한 구조

실제 예를 찾아보면, IETF Draft 상태인 Diameter API가 그런 비슷한
방법입니다. 이 표준안에서 정의된 API로 Sun과 Toshiba등의 회사에서
SDK를 만들었기 때문에 어느 회사의 라이브러리를 쓰느냐와 상관 없이
그냥 링크를 할 수 있습니다. (Diameter는 범용 표준 인증/과금 프로토콜인데,
TCP와 SCTP위에서 작동하는 바이너리 프로토콜입니다.) 물론, OpenGroup의
SUS (Single UNIX Specifications)
그런 비슷한 것이긴 하지만, 용도가 좀 다르군요. ^^;

물론, 이렇게 되면, 제공되는 SDK가 네이티브 바이너리인 경우에는
플랫폼의 제약이 매우 심해지겠지만, 자바 클래스 라이브러리이거나
파이썬 모듈 같이 크로스플랫폼 포맷이라면 별 제약이 없을 수도
있습니다.

객관적이지 않은 편견을 드리지 않기 위해서, 각 방식의 장단점에 대해
제 주관적인 의견을 최대한 빼고 쓰려고 노력해서 설명을 해 봤습니다.
^^; 장기적인 대안은 아직 멀리 있는 뜬구름 잡는 얘기이기는 하지만
그래도 독일에서도 어떻게든 공개 표준이 있는 만큼, 우리도 영원히
못할 일은 아닌 듯 싶습니다.

인터넷 금융 서비스 플랫폼 문제의 현실적 대안

요즘 웹 표준에 옹호적인 커뮤니티들에서는 한 법대 교수님의 웹 페이지 국제 표준화를 위한
민원/소송 준비
를 무척 반기며 들떠 있습니다. 그 동안에도
웹 표준과 관련된 운동은 몇 번 있기는 했지만, 엉뚱한 사람들
불러다가 토론 한 번하고 끝난다거나, 기업 사이트들의 느리디 느려서
언제 끝날지 모르는 프로젝트의 시작을 떠들썩하게 광고한 것으로
그쳐왔습니다.

이번 소송 준비에서는 그야말로 “끝장을 보겠다”고 선언을 하시고
진행을 하고 있기 때문에, 정말로 뭔가 뚜렷한 변화가 있지 않을까 하고
생각하고 있던 것들 중, 인터넷 금융 서비스에 대한 부분을 글로
옮겨 봅니다.

지금까지의 상황

그 동안에는 마이너 브라우저와 플랫폼에 대한 운동으로 어정쩡한 태도로
시작해서, 어정쩡하게 끝난 프리뱅크 같은 커뮤니티 기반의 움직임도
있었고, 공개소프트웨어 포탈에서
정부 지원으로 진행된
이니텍/경원대학교의 프로젝트 같은 것도 있었습니다.
현재 소비자 인터넷 금융 기술 시장의 거의 대부분을 차지하고 있는
소프트포럼이니텍
해외수출이나 다양한 서버 플랫폼의 지원 등을 위해서
이미 오래 전에 기술적으로는
이미 거의 완성단계
인 듯 합니다.

“플러그인 만들어 주세요”의 문제

현재 “웹 페이지 국제 표준화를 위한
민원/소송 준비”
모임에서도 지금까지 다른 운동이나 프로젝트에서
진행해 왔던 것처럼, 플러그인을 다른 플랫폼으로 포팅하는 것을 유도를
하려는 듯 보입니다. 그렇지만, “플러그인을 리눅스로 포팅해 주세요.”
류의 의견으로는 지금 당장의 승리라고 볼 수 있을 지는 몰라도, 또 다시
다른 어쩔 수 없는 마이너 사용자들을 낳을 수 밖에 없습니다.

플래시 기반 플러그인

우선, 플래시
플러그인을 포팅하는 것에 대해서 논하자면, 플래시는
생각보다 그렇게 공식 지원 플랫폼이 많지 않기 때문에, 또다른 소외를
낳을 수 밖에 없습니다. 즉, 윈도우, 리눅스, 맥 사용자는 전혀 불편함을
느끼지 않을 지 몰라도, FreeBSD, NetBSD 또는 리눅스라도 CPU가
MIPS
UltraSPARC
같은 것인 경우에는 공식적으로 플래시가 지원되지 않습니다.
또한, 플래시의 가장 큰 문제점은 하드웨어 접근이 어렵다는 점입니다.
인증서 관련 작업은 특성상 비정규 USB 장치까지 접근을 해야하기 때문에,
순수 플래시로는 구현이 어려우며, 특히 전송 채널 암호화 같은 것은
플래시로 반응성이 제대로 나올 수 있을지도 의문입니다.

XPCOM 기반 플러그인과 ABI 문제

그 다음으로, 모질라 계열의 클라이언트 측 API인
XPCOM을 쓰는 플러그인은
우선, 모질라 계열의 브라우저들을 지원할 수는 있겠지만, 결국에는
여러 이유로 네이티브 라이브러리가 들어갈 수 밖에 없습니다. 즉,
플러그인 제작사의 네이티브 라이브러리가 지원되는 플랫폼에 한해서 지원이
가능하기 때문에, 사실상 플랫폼이 굉장히 제한될 수 밖에 없습니다.
오픈소스 플랫폼의 ABI(Application Binary Interface)가 상당히 다양하다는
것이 바로 그 이유입니다. 즉, 주요 오픈소스 운영체제인 Linux,
FreeBSD,
OpenBSD,
NetBSD,
OpenDarwin
만 따져도 벌써 5개인데, 여기에 각각 아키텍처가
6개씩이라고 치면 5*6=30, 그리고 각 플랫폼 별로 호환되지 않는 널리 쓰이는
libc 버전이 3개씩이라고 치면 30*3=90, 게다가 gtk, libX11, libcrypto등의
기타 라이브러리들 중에 5가지 정도의 버전 조합이 널리 쓰인다고 치면
90*5=450. 즉, 플러그인을 배포할 때 무려 450가지 아키텍처와 플랫폼 조합을
배포하고 테스트하고 관리해야 한다는 말이 됩니다. 게다가, 플랫폼 별로
브라우저도 또 3~4가지씩은 있고.. 450가지 중 많이 쓰이는 3가지 정도의 환경만
지원한다고 선언을 하면, 물론 구글 서비스 같은 곳에서는 통하겠지만,
마이너를 왜 차별하냐고 선언한 서비스가 별로 차이나지도 않는 마이너들을
또 다른 조건으로 차별하는 일은 설득력이 별로 없을 것입니다. 수치 산정에
좀 무리를 하긴 했지만, 앞으로 더 희한한 상황이 올 지도 모릅니다.

“플러그인”의 역할

그럼, 플러그인은 과연 무슨 역할을 하는 것일까요. 우선, 가장 기본적으로
오프라인의 사람이 온라인의 이 사람이란 것을 증명하는 “신원 증명” 역할이
가장 주된 것입니다. 또한, SSL/TLS과 비슷한 역할을 수행해서, 다른 사람들이
통신 내용을 중간에서 보지 못하고, 변조하지 못하도록 하는 “채널 암호화”
기능도 지원합니다. 그리고, 송금이나 가입, 대출신청 등의 중요한 작업에서
사용자에게 내용을 확인하게 한 뒤에, 그에 대해서 싸인을 하게 하는
“부인 방지” 기능도 중요합니다. 사실 “신원 증명”이나 “채널 암호화”는 HTTPS 같은 것으로도 충분히 가능하지만, 바로 이 “부인 방지” 때문에 아직도 별도의 플러그인이 필요한 것입니다.

공개 표준 프로토콜

그래서 대안으로 생각할 만한 것은, 공개 표준 프로토콜을 수립하는 것입니다.
즉, 현재와 같은 웹브라우저에서 HTML을 통한 통신이든,
SOAP 같은 표준 RPC 프로토콜이나
별도의 프로토콜을 마련하든간에 플러그인 구현과 전혀 상관 없이, 서버는 서버대로
표준을 지키고, 클라이언트는 클라이언트 대로 표준을 지키면 제대로 서비스를
쓸 수 있도록 하는 것입니다. 우선 이렇게 되면, 굳이 은행이나 보안관련 회사들이
플러그인을 구현해 줄 필요 없이, 표준에만 맞으면 누구든 플러그인을 만들어서
팔아도 되고, 공짜로 줘도 되고, 혼자 써도 되고 여러가지 스스로의 환경에
맞는 선택을 할 수 있게 됩니다. 특히, 오픈소스 클라이언트가 나오면, 사용자가
자기 플랫폼에 맞게 컴파일을 할 수 있기 때문에, 아무리 특이한 플랫폼이
나오더라도 어떻게든 해 볼 수는 있는 여지가 있습니다. 또한, 이로써 얻을 수
있는 다른 이익으로는 똑같은 서버로 같은 기능을 PC외에도 손전화, PDA, 타블렛PC
또는 심지어 인터넷 뱅킹만 되는 전용 단말기까지도 쓸 수 있게 됩니다. 따라서,
인터넷 금융이 좀 더 자유롭고 잠재적인 발전 가능성을 얻게 됩니다.

보안 관점에서의 공개 표준 프로토콜

프로토콜이 공개되는 것에 대해, 일반적인 금융회사의 반응은 아마도 “보안에
취약하지 않겠느냐.”일 것입니다. 그렇지만, 사소한 하나의 보안 사건도
치명적인 금융의 특성상, 오히려 더 프로토콜을 공개해야 할 필요가 있습니다.
즉, 아무리 암호화를 하고 이런 저런 장치를 해 봐야, 결국에는
리버스 엔지니어링이나
스니핑을 통한 추측과 분석을 통해서, 디지털 컴퓨터 상의 구현인 한은
보안 결함은 뭐든 공격을 받을 가능성이 있기 마련입니다. 게다가,
금융 서비스에 대한 공격이라면, 그냥 돈 받고 해외로 도망가는 사람은
법적인 처벌도 신경을 안 쓸 것이기 때문에, 아무리 리버스 엔지니어링으로
불법으로 규정하려고 해도 법적으로 제재할 방법이 없습니다.
그렇지만, 간단하게 정의된 공개 표준 프로토콜은 결국 넓은 전문가
집단에서의 평가를 받을 수가 있으며, 보안적 위험성에 대해서도
어느 정도 위험성을 미리 느끼고 방어를 위한 수단을 공개적으로 여러 겹
마련할 수가 있습니다.

금융 회사로서의 입장

아무리 좋아도, 금융 회사로서는 새로운 시스템의 도입이 쉽지는 않은데,
금융 회사의 입장에서 얻을 수 있는 이득을 예상해 보겠습니다.
우선, 금융 회사는 클라이언트 측 보안 솔루션을 공급하는 회사와
서버측 솔루션을 공급하는 회사를 분리할 수 있는 자유가 생깁니다.
또한, 리눅스 사용자들이 매일같이 지원해달라고 아우성을 쳐도, 표준을
지키니까 표준 프로토콜을 지원하는 클라이언트를 쓰라고 대답하면 되기
때문에, 공짜로 새로운 플랫폼 지원을 얻을 수가 있습니다. 아무래도 더
중요한 것은 보안상 한 회사에 지나치게 의존할 수 밖에 없었던 것을,
공개 프로토콜로 하게 되면 양쪽을 분리해서 생각할 수 있고, 외부에
위탁할 수 있는 방법도 생기므로 보안 감사가 훨씬 더 쉬워집니다.

보안기술회사로서의 입장

보안기술회사도 중요한 당사자로서 손해만 있다면, 이런 움직임에
참여할 수가 없겠지요. 그러나, 보안기술회사라도 공개 표준이 도입되는
것이 나쁘지만은 않습니다. 공개 표준이 도입되면, 포팅이 훨씬 자유로워지기
때문에, 잠재적인 새로운 플랫폼이 늘어납니다. 따라서, 굳이 금융회사의
적극적인 리드가 없더라도 다른 플랫폼으로 포팅해서 그 쪽에서 벌일
수 있는 시장이 확보됩니다. 그리고, 당장에 이런 일이 생기면 서버쪽에서
작업해야 할 것이 꽤 있기 때문에, 프로젝트가 생겨서 좋겠죠. 🙂
물론, 잠재적인 금융사고에 대해 폐쇄적인 프로토콜에서 생기는 문제보다
공개 프로토콜에서 생기는 문제가 발견하기 쉽기 때문에, 미래의 금융사고에
대한 예측가능성 면에서도 유리하다고 볼 수 있습니다.

정부로서의 입장

정부는 계속 늘어나고 있는 MS의 데스크탑 운영체제 점유율에 때문에
외화 유출과, 독점사에 대한 지나친 의존성을 피할 수 있다는 점에서
당연히 여러 플랫폼을 장려하는 것이 더 안전합니다. 또한, 플러그인을
포팅하는 것으로 해결하면, 지속적으로 발생하는 마이너 플랫폼 때문에
이런 저런 민원이 생기고, 제대로 지원하는지 감시 하는 데에 쓰이는
노력을 많이 줄일 수 있겠습니다.

오픈소스 사용자로서의 입장

당연히 좋지 않겠어요? ^^;

제대로 된 보안을 위해

현재 국내 소비자 인터넷 금융 서비스는 사용자들에게 강제로 관리자 권한을
요구해서 바이러스/웜 감염 위험에 노출시키고, 많은 네이티브 소프트웨어 설치를
요구함으로써 중간자 공격에 의한 심각한 보안 위험을 방치하고 있습니다.
게다가, 지원하는 플랫폼을 획일화해서, 한 회사의 독점을 계속 더 촉진시키는
역할까지도 수행하고 있습니다.
한편, 어설픈 키보드 안전 플러그인은 사실상 완벽하게 동작할 수가 없는
것이 자명한데, 사용자에게 마치 안전한 것 같은 인식을 심어줘서 오히려
위험합니다.
결국, 정보의 위치와 흐름을 고려해 볼 때, 해결하는 방법은 비밀번호를 컴퓨터의
통제에서 벗겨내는 방법 밖에 없습니다. USB 장치가 요즘 사용자 권한에게도
많은 기능을 제공하는 쪽으로 발전하고 있는 것을 보면, USB 장치를 통한
적절한 키 관리/사인 등이 결국 좀 더 나은 해결책이 아닐까 합니다.
물론 비싼 장치를 배포해야하는 부담이 있긴 하지만, 사용자들이 하드웨어를
받을 때는 지불하려는 성향이 훨씬 높다는 것을 생각해 보면, 뭐 크게
문제가 되지는 않을 것 같고요. 🙂
USB 장치를 접근하는 것만 허용하면, 어설픈 보안을 하느라 관리자 권한을
요구하는 것이나, 엄청나게 깔아대는 플러그인도 별로 많이 필요가 없어질
것입니다. (드라이버를 깔아야하는 문제는 생기지만요;;)

공개 프로토콜의 시대

이미 Flickr, Amazon같은 인터넷 기반의 서비스 뿐만 아니라,
해외의 큰 규모의 은행들도 API를 공개해서 오픈소스 프로그램에서 쓸 수 있게하고 있습니다.
이제 열만한 것은 열어서, 열린 것들끼리의 카테시안 프러덕트를 최대한
활용하는 다양성의 시대가 되고 있습니다.
온몸을 항상 천으로 똘똘 두르고 있으면, 상처가 곪아도 안 보이고 발견하기도
힘들 뿐더러, 장갑 낀 손으로 다른 사람과 악수하면 사람들과 친해질 수도
없습니다. 어느 정도 얼굴도 보여주고 맨손도 느낄 수 있어야 공기도 통하고
좋겠지요.

뻔한 부탁은 하지 말자

channy님의 말씀에 따르면, 제주도에서는 뭍에서 놀러와서는 놀아달라고 재워달라고 먹여달라고 하는 사람들이 너무 많아서 뭍으로 다시 돌아가는 사람들도 제법 있다고 합니다.

어느 출판사 편집자 글에서는 문학 작품을 출판하는 사람들은 상당수가 지인들이 무심코 던진 “책 나오면 한 부 주세요 ^^”류의 부탁에 많은 책을 보내고도, 책이 한 권도 안 팔리고 인세도 기대하지 않는 경우가 허다하다고 합니다.

변하지 않는 것

많은 것이 달라진 듯 보이지만, 실제로는 대부분이 그대로인 법입니다.
MBC드라마 《궁》에서 혜경궁이 황후에게 서로의 처지가 바뀌었다고 하자, 황후가

날이면 날마다 새로운 것이 쏟아져 나오는 세상인 것 같지만, 사실은 별로 그런 것 같지는 않습니다.
강유원의 재미없는 철학 이야기 2006년 4월 22일 방송

사람은 뭔가를 볼 때, 항상 변한 것을 주목하게 됩니다. 끊임없이 엄청나게 많이 들어오는 양의 정보를 효율적으로 처리하기 위한 방법으로 항상 눈은 자기도 모르게 움직이는 물체에 초점을 맞춥니다.

소스의 변경사항을 메일링 리스트 같은 것으로 볼 때에도 항상 무엇이 바뀌었나를 받습니다. 그러나, 그 소스 일부가 바뀌는 도중에도 대부분의 나머지 다른 소스는 바뀌지 않은 상태로 있고, 바뀌어야 하지만 바뀌지 않은 부분과, 원래 있었던 문제점은 알아챌 수 없습니다.

쟁점이 되는 입법 사안으로 매일같이 싸워대는 정당들도 사실은 같은 의견을 가진 것들이 더 많이 있습니다. 매일 매일 오늘은 출근길 차가 어디가 막히고 어디는 괜찮고 그러지만, 사실 전체적으로 보면 매일 막히는 곳은 막히고, 한산한 곳은 한산합니다. 무언가 잘못한 것이 있어서 벌을 받고 있는 학생도 사실은 더 많은 면에서 칭찬할 것이 있습니다.

그냥.. 시험공부하려니 딴생각만 하다가.. 변하지 않는 것이 무엇인가를 유심히 보면 깨달을 수 있는 사실들이 제법 있지 않을까 생각을 이리 저리 해 봤습니다. f'(x)=0 이더라도, f(x)≠0 이기도 하고, 심지어 F(x)는 움직이기까지 하는 것처럼 말이죠..

공은 사람보다 빠르다

(축구장에서 뉴캐슬 후보팀이 훈련하는 중에 감독이 훈련생 산티아고 뮤네즈를 부른다)
감독: 뮤네즈! 이리 와 봐!
산티아고: 네 감독님
감독: (멀리 있는 골대를 가리키며) 내가 뛰라고 하면 골대까지 최대한 빨리 달린다. 알겠나?
(산티아고가 골대로 달려가는 도중에 감독이 골대를 향해 공을 찬다. 공이 먼저 골대에 들어간다.)
감독: 다시 와
감독: 다시 뛰어!
(다시 산티아고가 달려가고 감독이 찬 공이 앞지른다.)
감독: 뭘 배웠나?
산티아고: 중앙선에서도 골을 넣을 수 있다는 건가요?
감독: 공이 사람보다 더 빠르다는 것.
감독: 우리는 패스한다. 알겠나? 우리는 팀이야. 원맨쇼가 아니라구. 셔츠 앞에 있는 이름이 등 뒤에 있는 이름보다 더 중요해, 알겠나?

오늘 《Goal》이라는 영화를 보다가 문득 생각이 나서.. 🙂 산티아고는 동네 축구에서 자기 실력이 워낙 뛰어나다보니 패스를 잘 하지 않는 습관이 있었는데 훈련 모습을 보고 있던 감독이 그것을 지적해주기 위해서 직접적으로 패스를 하라고 다그치지 않고 직접 느끼는 기회를 만들어주었습니다. 산티아고가 조금 더 똑똑했더라면, 바로 뭘 발견하게 하려 한 것인지 눈치를 챌 수 있었겠지만, 충분히 느낄 수 있는 여유를 준 다음에 설명을 해 주었기 때문에 산티아고는 아무래도 패스를 해야 한다는 것에 대해서는 잊을 수 없는 기억을 갖게 되었을 것입니다.

또한, “패스를 해야 한다.”라고 말해 주었다면 느끼기 힘들거나 곧 까먹어버렸을 언제 패스를 해야하는가, 패스를 안 하면 어떻게 되는가, 패스할 기회를 어떻게 만드는가 등등 파생되는 지식들도 쉽게 생각할 수 있었을 것입니다.

대안언어축제생물정보학 S/W XP 세미나에서 창준형의 제안으로 같이 시도했던 여러가지 일들에서 정말 놀랍게도 참가하는 분들이 훨씬 열정적이고 능동적으로 참가하게 된 것에는, 신체의 극히 일부인 귀와 뇌로만 느낀 것이 아니라, 머리 끝부터 발 끝까지 함께 다 경험한 것이 큰 도움이 되지 않았나 하는 생각이 들었습니다.

예를 들어, 개발 프로세스 개선을 하면 더 적게 일하고도 좋은 결과가 나온다는 것을 위해 종이비행기 공장을 게임처럼 해 본 것이나, 개개인의 사소한 마음이 모여서 큰 차이를 보일 수 있다는 것을 느꼈던 날아가는 새 편대/수호천사놀이 같은 것은 굉장한 효과를 느낄 수 있었습니다. 그 뿐만 아니라, 스케줄 안에서도 다음 단계에서 나오는 개념들이 자연스럽게 앞에서 삽질을 하면서 도출될 수도 있도록 한 것은 마치 자신이 발명했다는 느낌까지 들 수 있다는 점에서 어느 교육과정에서도 반드시 고려해야 할 사항이 아닌가 생각이 듭니다.

요즘 학교에 다니면서 수업들을 들을 때 얼마 전에 읽었던 《미국 최고의 교수들은 어떻게 가르치는가》의 교수들이 가르치는 기법들을 생각하며, 그 교수들이 가르친다고 상상하면서 최대한 그 사람들에게 배우는 효과를 누려보려고 노력해 보고 있습니다. 그래서, 괜히 앞에서 설명하는 것을 들으면서 다음에 나올 내용 같은 것을 상상해보면서 딱 맞히면 괜히 뿌듯하기도 하고.. 흐흐.. 대부분의 과목들이 실질적으로는 시간이 부족해서 비판적인 수업을 전혀 하고 있지 않지만, 속으로 수업 중에 의아했던 부분과 갑자기 등장하는 개념들 같은 것들을 비판해보면서 종이에 적어 뒀다가, 다음에 책을 찬찬히 보면서 그에 대한 반론도 혼자서 해보고.. (요즘은 숙제에 치여서, 그럴 여유는 잘 없지만;;)

그래서, 또 하나 전에 학교 갔다가 집에 오면서 생각해 본 것이, 컴퓨터과학에서 “자료구조”와 “프로그래밍언어구조론”같은 과목들은 비교적 쉽게 “학생들이 늦게 태어난 바람에, 좀 더 늦게 발견을 했을 뿐” 이라는 감정을 느낄 수 있게 발견으로 가득 찬 수업을 할 수 있지 않을까 생각을 해 봤습니다. 소팅을 배울 때는 카드를 정렬할 때 규칙을 세우라고 하고서는 계속 개선 방법을 만들어 본다던지.. 트리를 배울 때나 amortized analysis 같은 것도 삽질을 해 보면서 발견을 쉽게 할 수 있도록 (그리고 꼭 경험해야 하는 삽질은 고루 거칠 수 있도록 함정을..) 도와주면 좀 더 재미있지 않을까 생각을 해 봤습니다. 흐흐..

에.. 뭐 그냥.. 영화보다가 딴 쪽으로 공상을 너무 많이 했군요. -O- 요새 TV를 봐도 온통 “맞아 맞아~” 하면서 끄덕거리고.. 길거리의 엉뚱한 포스터를 봐도 “맞아 맞아~” 하면서 끄덕거리고.. 귀가 얇아진건지 원.. 으흐흐~

《도덕교육의 파시즘》

얼마 전 TV에서 책을 소개하는 프로그램을 보다가, “아!!” (수화로는
검지만 펴서 입에 대고 앞으로;;) 하며 저도 모르게 탄성을 낸 책을
발견했습니다. 바로 《도덕 교육의 파시즘》 (ISBN 8987671410) 입니다.
한 철학교수가 여러 도덕교사 모임에서 한 강연을 책으로 묶은
것인데, TV에서 보자마자 바로 충동적으로 구입해서 읽게 되었습니다. 🙂

이 책에서는, 한국의 초등/중학교 도덕 교과 교육은 도덕적인 사람을
만들기 위한 교육이라기 보다는, 권력의 말을 잘 듣는 착한 노예를
강요하는 것을 교과의 깊숙한 곳부터 깔고 있다고 말합니다. 따라서, 실제 교육 현장의
교사들은 교과서와 교육 지침에 따르지 않고, 원하지 않게 지나치게
창의적인 강의를 해야하거나 엉뚱한 다른 용도로 전용되는 것을
문제로 지적하고 있습니다. 즉, 우리의 도덕교과는 사회적인 규율과
규범들을 왜 그래야 하는지, 그렇게 함으로써 얻어지는 것이 어떤 것인지도
모르는 채, 곳곳에서 단지 열심히 권력자의 눈치를 봐서 덤비지 말고
잘 살라는 것과 같은 시대착오적인 강요들로 넘쳐다고 있다는 것입니다.
즉, 책 속에서 설명하고 있는 것 중 대표적인 것 두 개만 인용해 보자면,

삶의 보람을 말하든 자아실현을 말하든 결론은 언제나 마찬가지이다.
도덕 교과서는 끊임없이 “공동체의 발전과 복지증진에 기여”하는 것이
올바른 자아실현이며, 보람 있는 삶이라는 것을 강조하는 것이다. 그리하여
학생들을 언제라도 타인과 공동체를 위해 자기를 희생할 준비가 되어 있는
사람으로 기르는 것이야말로 도덕 교과서가 가르치는 도덕의 존재이유이다.
— 책 p.32에서

한국의 도덕 교과서는 자기가 타인이나 사회에 대해 행할 수 있는 악에
대해서는 너무나 많이 말하면서도 타인이나 사회 또는 국가가 개인에게
가할 수 있는 악에 저항해야 할 의무에 대해서는 단 한마디도 말하지
않는다. (중략) 그런데 한국에서 예절이란 처음부터 사람들 사이의
불평등한 권력관계를 전제하고 있는 규범이다. (중략) 이를 통해
사람들 사이의 불평등한 권력관계를 제도화한다. (중략) 현실적으로
정착되어 있는 불평등한 사회관계에서 아래에 있는 사람이 지켜야 할
도덕뿐만 아니라 위에 있는 사람이 지켜야 할 도덕 역시 학생들이
배울 필요가 있다. (중략) 도덕교육은 사회적 약제에게 예절을
강요하는 만큼, 사회적 강자의 폭력과 횡포에 대해 어떻게 자기를
지켜야 할지도 말해주어야 한다.
— 책 p.36에서

그래서, 결국은 도덕 교육은 과거 군부정권 시대의 노예화 교육의 도구로
사용되던 것이 이제는 일반인들의 상식에까지 침투하여, 이제는 개인의
국가에 대한 희생을 강요하는 것이나 권위자에 대한 절대적 복종 등을
보고 감동을 할 정도까지 전개가 돼서 결국은 최근 H교수 사태에서
말도 안 되는 국익론까지 등장할 정도가 되었다고 생각이 들었습니다.

한편, 그동안 도덕 교과서 외에도 여러 곳에서 이런 비슷한 사례를 보고서는
평소에 많은 감정을 느끼고 있었습니다. 요즘 TV에 나오는 것으로는
조그만 꼬마 여자애가 여기저기 난로를 켜고 온기를 쬐고 있는 어른들을
따라다니면서 “꺼주세요”하고 지나가는 광고가 있습니다. 굉장히 아름다운
행동을 하는 듯한 느낌을 주기 위해서 따뜻하고 아름다운 것을 강요하는
음악이 배경음악으로 깔립니다. 이 광고를 되새김해 보면, 전혀 낭비로
보이지 않고 오히려 온기를 아끼려고 난로에 붙어있다던지 난로를 쓰는데
있어서 적당한 사용이라고 생각되는 것조차도 무작정 끄기를 강요하고 있습니다.
전혀 공감을 줄 수도 없을 뿐만 아니라 도대체 낭비의 기준이 무엇인가에
대해 혼란을 주며 모든 국민을 나쁜 사람으로 몰고 있습니다.

똑같은 사례로 KTF광고 중에서 사람도 없는 지하철에서 “나 지하철이거든?
좀 있다가 전화할게”라고 하는 것도 있고.. 흐흐.. 그 외에도, 제가 아주
싫어하는 TV 프로그램으로 “만원의 행복“이라는 것이 있습니다.
이 프로그램에서는 그래도 소득이 많은 측에 속하는 연예인들이 나와서
1만원으로 주로 먹을 것 같은 생활에 꼭 필요한 곳의 지출을 비상식적으로
아끼면서 1주일을 지내는 것을 보여주고 있습니다. 그리고 그 기간이 끝나면
다시 “정상적”인 생활로 돌아간다는 것을 꿈꾸며 진행을 합니다. 그런데, 이런
비정상적인 생활로 소비를 줄이는 것은 실현도 불가능하고 제대로 된 절약의
기준을 흐릴 뿐이라고 볼 수 있습니다. 게다가, 먹을 것을 아껴서 나중에
비싼 것에 쓴다는 식의 의식을 심어줄 수도 있어서 기초 소비재 내수 시장을
위축시키고, 부동산이나 외산 제품같은 것을 사는 것이 도덕적으로 더
옳은 일인냥 무의식 속에서 국민들을 혼란시키고 있습니다.

물론 이런 것은 하루 이틀의 일이 아니라 오래 전부터 내려오던 것입니다.
90년대 초반에 이경규가 나와서 한밤중에 차도 사람도 거의 다니지 않는
밝은 곳에서 차선에 딱 맞춰서 서면, “우와~~” 하면서 칭송을 하며
가서 영웅으로 만들어주는 그런 프로그램이 그런 포맷의 전성기라고
생각됩니다. 신호등의 존재 목적은 신호등을 지키기 위한 것이 궁극적인
목적이 아니라 사람과 자동차를 사고 없이 통행시키기 위한 것인데,
목적을 잊어버린채 맹목적으로 사람이 다니던 말던 칼같이 지키는 것을
강요하며, 왜 그렇게 해야하는지에 대해서 당위성 없이 국민들의
무의식에 그런 것들을 주입시켜왔습니다. 오락 프로그램으로써 어쩔
수 없었겠지만, 지켰을 때와 안 지켰을 때의 시험/심리학적 비교를
해 보고, 밤에 통행할 때는 서행을 한다던지 등의 현실적인 대안을
제시하는 것이 옳은 일이 아니었을까 싶네요.. 이 관련된 책의 부분을 하나 인용하면,

유감스럽게도 법은 완전한 균형과 공정성에 도달할 수는 없다.
설령 어느 순간에 그럴 수 있다 하더라도 현실의 권력관계는 언제나 변하는 까닭에 법이 지향하는 균형과 공정성이 언제나 그대로 유지될 수는 없기 때문이다. 그런 까닭에 우리는 정당한 법을 마땅히 지켜야 하겠지만 법 자체를 절대시 하는 어리석음에 빠져서는 안된다.
– 책 p.296

그동안 우리나라는 개화기-일제시대-군부정권의 흐름 때문에, 언론이나
정치인 등의 권력자들은 자기도 모르게 항상 국민을 계몽하려고 시도를
하고 있습니다. 국내의 언론사들은 거의 통계용으로 가입하지 않았을까
싶은 생각까지 드는 OECD 통계 자료를 인용하여 국민들의 도덕이 해이해지고
있다며 항상 뭔가를 시킵니다. 예를 들어 얼마 전에 통계청 자료를 이용해
거의 대부분 언론의 헤드라인에 오른
한국인 책값지출 거의 ‘제로’ 수준이라는
기사는 여기저기 비주얼한 자료가 가미되고 숫자로 채워져 있지만
전하고 있는 메시지는 “요새 니들 책을 안 읽으니 앞으로 많이 사서 읽어라.”라는
단 한 마디에 불과합니다. 국민들이 책을 안 사는 이유에 대해서는
사회적인 흐름을 분석해서 영향을 미친 것들을 고치던지,
대상인 국민들에게 거부감을 주지 않고 감화를 줄 수 있는 방법으로
알게 모르게 스며드는 캠페인을 하는 등의 방법을 쓰는 것이
무작정 국민들을 비난하며 계몽하려는 시도보다는 훨씬 결과적으로
영향을 줄 수 있다고 생각됩니다. “국민들”이라는 대상은 일단 개체의
수가 매우 많기 때문에, 무슨 일에는 이유가 있고 그에 대한 이유가
논리적이라면 결과가 전통적 도덕에 옳지 않더라도, 흐름을 바꾸려면
양의학적인 결과 바꾸기보다는, 한의학에서와 같이 원인을 통제하는 것이
현실적으로 더 효과적일 것입니다.

인터넷을 통해 사람들 간의 커뮤니케이션이 활발해지고 있는 만큼 이제는
확실하게 “계몽의 시대는 갔다”고 선언할 수 있겠습니다. 각자의 마음 속의
도덕은 이제 “~해야 한다”로 끝나는 말들로 가득찬 기억이 아닌,
“그래서 나는 ~한다”라는 식의 말들이 되어야 합니다. 이미 우리나라는
창의적인 지식인이 필요한 시기로 접어들고 있습니다. 단순하게
월화수목금금금하면서 교수들에 대해 주입된 예절과 복종을 강요받는
시대에 대한 자성이 이제 곳곳에서 이루어지고 있다는 점에서 이제
우리나라도 “근면-자조-협동”이 지배하는 부품으로써의 개미 사회에서
충분히 벗어나고 있지 않은가 하고 희망을 가져 봅니다. 🙂

(참고: 이 책은 소수의견에 속하는 편이며, 다른 윤리교육학자들의 논리적인 반론들도 여럿이 있으니 관심이 있으신 분들은 인터넷에서 검색하셔서 반론들도 같이 읽어보시면 좋겠습니다~)

*가 와일드카드로 쓰인 이유

*(U+002A)는 꽤 오래 전부터 와일드카드로 쓰이고 있었는데, 근래에 와서는 검색엔진이나 컴퓨터와 별 관계없는 수업에서도 *가 와일드 카드로 쓰는 것이 종종 목격이 되기 시작했습니다. (와!)

과연 그 유래는 무엇일까! 곰곰히 생각해 보고 이리 저리 생각해본 결과 *의 아스키 코드값에서 그 답을 찾을 수 있었습니다.

*의 정체는 삶과 우주와 모든 것에 대한 답, 42였던 것!

(Don’t panic! 너무 진지하게 생각하지 마세요 =3=33)

To Me, C is dead.

To Me, C is dead. Except for the JIT!

[WWW]mono 프로젝트의 카리스마 넘치는 이 시대의 리더 Miguel de Icaza씨의 선언! ==> [WWW]O’Reilly 글

그래요. 제가 생각하기에도 사실은 C는 엔드유저/데스크탑/웹/비즈니스 로직 등 숫적으로 대부분을 차지하는 프로그래밍 분야를 이미 잃어버렸다고 사실 생각합니다. 컴퓨터는 갈 수록 빨라지고, 남는게 CPU 파워인데 궁상맞게 C로 열심히 구현해봐야 좀 있으면 고객이 뭐 바꿔달라고 하면 T_T 울면서 싹 갈아엎고.. (잘 짜면야 된다지만.. 잘 짤 시간을 줘야~~ 흐흐..) 아무래도 이제 C는 C#, 파이썬 같은 언어들의 기본 툴킷을 개발하기 위한 언어, JIT를 개발하기 위한 언어, 커널을 개발하기 위한 언어, 아주 일부분의 중요한 부분을 가속하기 위한 언어.. 정도로 일상에서 물러나는 날이 곧 오겠지요. 으흐흑~ 그나마 파이썬을 배워서 얼마나 다행인지~ -ㅇ-;

그나저나, mono에게 얽힐 수 있는 최악의 상황인 .NET MS API부분의 특허 문제는 정말 어떻게 될 지 궁금하군요… 그냥 갈데까지 해보자는 Ximian과 절대 안 된다하는 RedHat의 대결~~ 과연 MS가 .NET API의 특허에 대해 유료화를 선언할 지, 과연 선언한다면 언제쯤 그럴지는.. 으음.. 점쟁이한테 물어봐야..

메일링 리스트에서 가장 어려운 것은..

그동안 별로 좋지도 않은 영어 실력으로 메일링 리스트에서 몇 해 활동하면서 그래도 사전도 찾고 구글도 찾고 해서 문장 만드는 것은 하고 싶은 말은 할 수 있을 정도로는 익혔는데.. (구글님의 힘 -.-v) 아 요즘따라 또 다른 문제점을 많이 만나는군요.. 으흐

아무래도 영어 메일링 리스트에서 가장 힘든 것은 상대방이 농담하는 건지, 심각하게 말하고 있는 건지 알아내는 것 같습니다. -ㅇ-; 이것.. 상대방이 농담을 한다고 치면 재미있는 말로 받아줘야할테고.. 심각한 얘기라면 또 그에 대한 사과라던지 그런게 필요할텐데.. 농담인지 진담인지 사전적인 의미만으로는 파악 못하는 문장이 나오면 당황하며.. 막강 이모티콘 :)로 넘겨보지만.. –;;

말의 분위기 같은 것은 진짜 외국에서 좀 살아야 익힐 수 있는 것 일까요? 흐흐;;