〈터미네이터〉로 살펴보는 분산컴퓨팅의 위력!

16 comments

인터넷은 80 년대에 미국 군사 네트워크로 만들어진 시스템과 미국 페르미 연구소 – 유럽 선 입자가속기 사이에 정보를 빠르게 공유하기 위한 시스템으로 각기 만들어졌다. 처음에는 각각이 만들어진 목표에 따라 사용되었는데, 오늘날에는 인간의 모든 것에 영향을 미치고 있다.

우리나라는 1982년 5월 15일 전길남 박사가 국내 대학을 네트워크로 연결해서 인터넷을 처음 만들었다. 이후에 전화선을 통해 정보를 주고받는 PC통신이 만들어지면서 정보산업이 생기기 시작했다. 이후, 인터넷이 민간에 보급되기 시작하면서 우리 사회를 정보화사회로 급속하게 진입했다. 정보화사회가 되자, 이전에는 무가치로 치부되던 단순한 정보에서 가치를 가늠하기 시작했다. 이 글을 여러분이 읽고 가치를 찾고 있는 것처럼…..

정보화사회가 일반화되자 전체 네트워크 시스템은 마치 생태계처럼 진화하여 효율성과 다양성을 추구하기 시작했다. 생태계가 진화할 때 나타난 변화와 마찬가지로, 네트워크 시스템도 마찬가지로 동료와 기생이 생겨났다.

이 글에서는 분산컴퓨팅을 한때 전세계를 달구던 영화인 <터미네이터> 시리즈와 비유해 살펴보고자 한다.

한 개의 로봇 [The Terminator]의 T-101

터미네이터는 1984 년에 처음 우리에게 왔다. 인간의 탈을 쓰고, 사라를 죽이러 온 아놀드 슈왈츠제네거의 터미네이터 T-101은 전 세계를 충격에 휩싸이게 하기에 충분했고, 미래 병기는 인간이 아닌 로봇일 것이라는 모습을 분명히 보여줬다.

강력하지만 one core. System core만 부수면 Game Over~!!!

그러나 이 터미네이터를 막기 위해 온 미래의 전사는 다름 아닌 인간이었다. 인간이 우리보다 좀 더 많은 지식을 지녔다고 살인기계 터미네이터를 막을 수 있을까? 하지만 터미네이터 T-101은 강하지만, 중앙집중식 파워를 사용하기 때문에 그 자체로 한계를 갖고 있다. 약점을 아는 적에게는 무력하게 패하기 쉽다.

모든 것이 하나에 집중되는 중앙집중 구조는 중앙(System core)에 많은 부하가 걸리기 쉽다. 그 부하의 위험을 극복하기 위해서는 중앙을 보강해야 하는데, 그러기 위해는 더 많은 기술과 자원이 투자되어야 한다. (이 글을 쓸 당시까지는) 여러 서버가 연동되어 한 서버로 운영되던 네이버Naver가 자주 오류를 보이는 이유가 이때문이다. 그래서 Google은 좀 더 진보한 방법을 채용하기에 이른다. (현재는 네이버도 구글처럼 클라우드 시스템으로 운영되고 있다.)

무한 개의 로봇 [Terminator 2: Judgment Day]의 T-1000

T-101 다음 버전의 터미네이터는 1991 년에 우리를 찾아온 무한 개의 로봇으로 이뤄진 액체금속 로봇 ‘T-1000’이다. 액체금속 로봇은 어떤 공격에도, 어떠한 상황에도 유연히 대처할 수 있다.

그 당시에 막 보급되기 시작한 인터넷은 모든 평등한 사용자가 서로 떨어진 곳에서 서로 자유롭게 접속하고, 정보를 공유할 수 있는 체제인 WWWWorld Wide Web을 만들어가는 중이었다. WWW는 1990 년에 연구되기 시작하고, 1992년에 Mosaic이라는 웹브라우저 발표와 함께 널리 퍼지기 시작했다.

T-1000은 고정된 무엇인가가 전혀 없었기 때문에 그 어떠한 모양으로도 변할 수 있다. 이 점은 T-1000을 막는 것이 사실상 거의 불가능하게 만든다. 어지간한 물리적 공격으로는 충격을 줄 수 없기 때문이다.

나는 [터미네이터2]를 보면서 화학적으로 공격하면 어떨까 하는 궁금증을 떨칠 수가 없었다. 터미네이터 시리즈에서의 공격방법은 주로 치고, 쏘고, 자르고, 찌르고, 가열하는 등의 물리적인 것이다. 그리스 신화의 히드라에 관한 일화처럼 화학적인 공격방법을 시도해볼만 하다. 화학적인 공격은 사람들이 전쟁에서 화학무기를 사용하지 못하도록 국제협약을 만들 정도로 쉽게 눈에 띄지는 않지만 효과가 좋을 때가 많다.

그리스 신화에 나오는 히드라는 습지에 사는 머리가 아홉 개인 괴물이다. 여덟 개의 머리는 죽일 수 있지만, 한 개의 머리는 불사不死였다. 더군다나 여덟 개의 머리는 자르면 그 자리에 새로운 머리가 두 개씩 돋아났다. 히드라를 무찌르러 간 헤라클레스는 히드라의 머리를 자르고, 새로운 머리가 돋아나기 전에 상처에 재를 뿌려 새로운 머리가 돋아나지 못하게 하였다. 그러나 마지막 머리는 불사이기 때문에 처치하지 못했고, 대신 큰 바위로 짓이겨 죽였다.

T-1000을 제거하려면 어떻게 해야 할까? 확실한 것은 T-1000은 작은 빈틈만 있어도 도망갈 수 있다. 따라서 T-1000을 제거하려면 T-1000을 구성하는 모든 로봇들을 동시에 공격해야 한다. 이런 조건은 사실상 거의 없다.

동시에 공격하는 방법 1 : 냉동
동시에 공격하는 방법 2 : 가열

[터미네이터2]에서는 T-1000이 무력화되는 모습을 냉동과 가열 조건에서 찾는다.

만약 사람들이 컴퓨터를 T-1000과 같은 방법으로 사용하면 어떻게 될까? 이러한 방법은 edonkey나 torrent로 대표되는 P2P가 2000 년경부터 시도하여 성공한 적이 있다. P2P의 특징은 뚜렷한 형체가 없다는 것이다. 서버도 사실상 별로 필요하지 않기 때문에 한 번 공유가 시작된 파일은 사실상 제거할 수 없다. 그렇기 때문에 위키리크스의 줄리언 어산지Julian Assange는 이런 점을 십분 활용하여 각국의 부정비리 정보를 암호화한 1.38 GB 용량의 파일wikileaks.insurance.aes256로 만들어 P2P에 뿌리고는 암호를 무기로 각국 정부와 협상하는 사건이 벌어진다.

또 이러한 방법은 그리드 컴퓨팅에 사용되곤 했다. 한 대의 컴퓨터로는 수행하기 힘든 일을 수많은 컴퓨터를 병렬로 연결하여 해결하는 것이다. 이런 방법은 기본적으로 사람 뇌의 동작방법과도 비슷하다. 이러한 방법은 복잡한 암호해독이나 SETI 신호 분석, 소수(a prime number) 찾기 프로젝트 등에 이용되곤 했다. (이 프로젝트의 결과로 소수를 발견하기도 했다.) 우리나라에서도 이와 비슷한 프로젝트가 있었다.

중앙통제에 의한 무한 개의 로봇 [Terminator: Dark Fate]의 T-X

무한 개의 작은 로봇이 모여 활동하는 것은 T-1000과 같은데, 그 작은 로봇들을 중앙에서 강력히 통제하는 ‘T-X’ 모델이 우리에게 찾아온 것은 2003 년이었다. 비록 T-X는 중앙통제 로봇이 너무 크고 정형화되어 있어서, 과거 T-1000과 싸울 때 이긴다고 보장할 수 없을 정도로 위력은 약해 보였지만, 방식 자체는 매우 진보한 것처럼 보였다.

중앙통제 로봇을 작은 로봇들이 감싼 구조의 T-X

T-X는 무한로봇 이외에도 공격을 위한 무기와 다른 기기들을 마음대로 조종할 수 있는 나노머신을 탑재하고 있다.

무한 개의 작은 로봇과 중앙통제 로봇이 동시에 있는 T-X 방식은 무한 개의 작은 로봇으로만 구성된 T-1000 방식과 비교하면 몇 가지 장점이 있다. 시스템 전체가 무언가 위기에 빠졌을 때 강력하게 대처할 수 있다. 아래는 T-X가 입자가속기의 강력한 자기장에 붙잡혔을 때 탈출하는 장면이다. 만약 T-1000이 이 상황에 빠진다면 누군가가 입자가속기를 끌 때까지 빠져나오지 못했을 것이다. (사실 입자가속기에 들러붙는 이 장면은 물리적으로는 NG다. 원형 솔레노이드는 내부에는 강한 자기장이 생기지만, 그 자기장이 외부로 빠져나오지는 않는다. 그래서 터미네이터가 입자가속기에 달라붙을 수 없다.)

물론 이 장면은 심각한 오류를 포함한다.
자기장에 붙들리자 자기장의 생성원을 공격하여 제거한다.

작은 로봇으로는 가질 수 없는 무엇인가를 하려는 더 강력한 의지와 공격력도 중앙통제 로봇이 갖는 장점이다. 하지만 단점도 있다. 무엇이 문제일까? 이는 뒤에 살펴보자.

T-1000 모델과 같은 방식으로 구성된 스카이넷은
인류가 멸종할 위기에도 핵심부system core가 없어 끌 수가 없다.

T-X과 같은 방법으로 컴퓨터를 사용하기 시작한 것은 비교적 최근이다. 이 방식을 CCNCloud Computing Network이라고 부른다. CCN에 대해서 알아보자.


미래의 웹서비스 운영의 표준이 될 CCN

CCN은 크게 세 가지로 분류할 수 있다. 첫 번째는 인터넷 네트워크 자원을 분산하여 사용하는 것이고, 두 번째는 정보 처리(CPU) 자원을 분할해 사용하는 것이며, 세 번째는 저장공간을 유연하게 분산해 사용하는 것이다. 이는 현재 인터넷이 네트워크 자원, 정보 처리 속도 개선, 저장공간 확보에 대부분의 비용을 소비하기 때문이다.

뉴욕타임즈 사례는 정보 처리 자원을 분할해 사용한 대표적인 예다. 뉴욕타임즈는 1851 년부터 1922 년까지 작성되어 TIFF 그림으로 저장된 기사 1100만 개를 pdf 전자문서로 만들어 서비스하기로 했다. 그러나 TIFF를 1 초에 1 개씩 쉼 없이 pdf로 만들어도, 변환을 모두 끝내려면 127 일이 걸린다. 뉴욕타임즈가 갖고 있던 서버로 이 작업을 한다면 100 년이 넘게 걸릴 것이다. 그러나 뉴욕타임즈는 100여 대의 PC를 CCN으로 묶어서 하루만에 모든 일을 끝낸다.

미국 온라인 서점인 아마존의 EC2Elastic Computing Cloud는 저장공간을 분산한 대표적인 예다. 아마존은 서버의 정보Data를 저장하기 위해서 서버 카트리지저장장치를 구매하는 대신 사용자 컴퓨터를 CCN의 방법으로 연결하여 카트리지 구매보다 저렴하게 저장공간을 확보했다. 사용료는 cpu 개수와 메모리 크기, 디스크 크기에 따라서 시간당 10~80 센트, 저장공간도 1 GB를 한 달에 15 센트 정도로 저렴하게 사용하고 있다. 현재 EC2 참여 사용자는 33만 명 이상이다.

네트워크 자원을 분산하여 사용한 예는 아직 명확히 나타나지 않고 있다. 그러나 동영상 서비스에 사용될 것이다. 비슷한 예로 작년에 우리나라의 동영상 제공업체중 한 곳이었던 곰&컴패니Gom&Company 사 사건이 있다. 이 회사가 만든 동영상 플레이어인 곰플레이어Gom player에는 웹에서 제공하는 동영상을 감상할 수 있는 기능이 포함되어 있었다. 곰&컴패니 사는 웹을 통해 동영상을 감상한 사용자 컴퓨터에 몰래 비밀파일을 만들고 동영상을 저장한 뒤에, 같은 동영상을 보려는 다른 사용자에게 전송하도록 만들었다. 사용자 자원을 사용하면서 공지조차 하지 않은 것이 문제가 됐으며, 곰&컴패니 사는 도덕적으로 큰 타격을 입었다. 만약 곰&컴패니 사가 사용자에게 충분히 알리는 등, 정당하게 이용했다면 CCN의 큰 성공 사례로 남았을 것이다. 그러나 현실은 좋은 기술을 잘 만들어놓고 장기적인 안목과 발상이 없어서 오히려 역효과가 난 대표적인 사례가 되었다. (처음 이 글을 쓸 때는 없었지만, 이제는 다음 TVpot 같은 서비스가 많이 알려져 있다. 너무 익숙한 서비스들이라서 생략한다.)

실예를 살펴봤으니, CCN의 기본 개념을 살펴보자.

CCN의 기본 개념도

우선 서버Original Server에서는 Data의 원본을 갖는다. (꼭 갖고 있을 필요는 없다.) 그리고 각각의 데이터는 세계 전역에 분포하고 있는 Cloud Member computer에 분산하여 저장한다. 사용자가 데이터를 필요로 하면 데이터는 Cloud Member에게서 받는데, 만약 데이터를 갖고 있는 Cloud Member가 없다면 IDC의 CDN 서버에서 다운받는다. 이러한 방법을 사용하면 대부분의 데이터는 주변 컴퓨터가 전송하므로, 서버Original Server는 컴퓨터나 인터넷 라인 속도가 빠를 필요가 없어진다.

CCN이 그리드 방식과 다른 중요한 특징은 사용자 PC를 이용하지만, 계약을 통해 사용자 유휴자원을 이용하고 그만큼 보상한다는 것이다. 또한 P2P와는 서버Original Server가 관여하여 Cloud Member computer에 없는 데이터DATA를 전송한다는 중요한 차이를 갖는다.

그렇다면 서비스를 CCN으로 구성했을 때 어떤 강점이 있을까?
서버 유지보수 비용이 절감된다. 그러면 지금은 비용 때문에 만들지 못하는 다양한 서비스가 가능해질 수 있다. 거기다가 사용자는 놀고 있는 자기 컴퓨터에게 일을 시키고 수익을 올린다. (사실상 일반적인 사용자는 컴퓨터 능력을 10%도 채 활용하지 못한다. 컴퓨터는 대부분 순간순간 집중해서 일할 뿐, 나머지의 시간 대부분은 놀고 있다. 따라서 사용자와 서비스 업체 또는 사용자끼리 자원을 공유하면 훨씬 많은 일을 할 수 있다. 그리고 CCN은 서버사용자 PC 연결이 자유롭기 때문에 서비스 상황에 따라서 얼마든지 멤버를 늘리거나 줄여 시장변동에 탄력성이 좋아진다. 그리고 진짜 중요한 점은 서버 정기점검을 없앨 수 있다.
(물론 뭐든 통제하려는 습성을 지닌 경찰 입장에서 보면 재앙이나 다름없다. SKcommunications의 Nateon 서버 압수수색 같은 무리한 수사는 의미가 없어지기 때문이다.)

물론 CCN도 단점이 있다.
우선 CCN의 가장 큰 걸림돌은 보안 문제이다. 정보가 여기저기 저장되기 때문에 해킹이나 실수 등의 위험에 항상 노출되어 있다. CCN은 초기에 스스로의 유용함을 증명하기 위해서 암호를 뚫는 시범을 자주 보였다. 그런데 이제 스스로가 보안 공격을 받을 때 어떻게 대처할 수 있는지를 보여야 한다. 전반적으로 CCN을 적용할 서비스는 보안과 크게 상관없는 분야로 한정되거나, 현재 구글이 구축한 것처럼 보안이 확보된 회사 내에 전용 PC를 연결하는 방법이 사용될 수밖에 없을 듯하다.

인터넷 회선 제공업체의 입장에 대한 문제도 있다. 무선인터넷을 통해 CCN에 접속했을 경우 자신이 사용하는 서비스가 아닐 가능성이 있다. 그리고 자신이 사용하는 인터넷 회선이라고 해도, 인터넷 회선 서비스 제공업자가 약관으로 제동을 걸려고 할지도 모른다. 안 그래도 인터넷 회선 제공업자는 보장된 회선의 전송속도도 충분히 제공하지 않으면서도, 다양한 방면으로 이용하는 것을 막으려 하고 있으니 말이다.

우리나라에서는 CCN 도입이 늦었다. CDN 업체의 대표격인 위즈솔루션도 2008 년 여름에 베이징 올림픽 영상을 SBS가 인터넷으로 생중계할 때 CCN을 처음 도입했다. (물론 SBS의 생중계에 이용했던 CCN 시스템은 일반사용자 PC를 이용한 시스템은 아니라고 한다. 보안을 강화하기 위해서 전용 서버에 전용 OS를 사용했단다.) 앞으로 안정적이고 값싸게 서비스를 만들고 운영하기 위해서라도 CCN을 되도록 많이 활용해야 한다. CCN은 인터넷에 천재지변을 일으키지는 않겠지만, 어떠한 작은 요소라도 큰 변화를 이끌어낼 수 있다는 카오스 이론에 따라 상당히 많은 변화를 불러올 것이다.


다시 [터미네이터3]의 T-X 약점에 대해서 생각해 보자.

T-X는 액체금속 내부에 있는 무한 개의 로봇과 소통해야 한다. 그런데 이들이 소통하는 코드가 외부에 알려지면 어떻게 될까? 무한 개의 작은 로봇이 행동을 억제당하거나 중앙통제 로봇이 공격당할 수 있다. 이 단점은 CCN의 보안문제와 완전히 같다. 물론 T-1000도 비슷한 문제를 가지고 있다. 그러나 중앙통제 로봇의 존재 유무는 공격 방향을 정할 수 없게 만든다. 말하자면 DDos 공격이나 해킹이 중앙통제로봇이 있는 T-X에게는 통하지만 T-1000에게는 거의 통하지 않는다.

물론 edonkey 계열의 P2P에도 ‘푸루나’ 같이 기생하는 서비스가 생기기도 했다. 뭐 그걸 만든 사람들은 나중에 인터넷에 민폐를 끼치는 문제의 서비스들을 만들기도 했다.

ps.
CCN 관련자료를 보면 CCN 때문에 사용자의 컴퓨터PC가 없어질 것이라고 나오는 경우가 많은데, 그런 날은 오지 않을 것 같다. 피쳐폰이 스마트폰으로 변하듯이, PC도 그냥 형태만 바뀌지 않을까?

ps.
미래에 대한 생각 관점에서 살펴볼 때 [터미네이터4]는 정말 실망이었다. 컴퓨팅, 로봇 등에 대해서 앞으로의 선견지명을 보여준 것이 아니라 전편의 역사 사이의 고리를 이어맞추는 것에 치중했고, 새로 나오는 터미네이터는 현대인의 인식을 살짝 변형한 것에 불과했기 때문이다. 난 앞으로 터미네이터 시리즈는 보지 않을 생각이다. (그리고, 이후의 후속작은 전부 모조리 망했다.)

16 comments on “〈터미네이터〉로 살펴보는 분산컴퓨팅의 위력!”

  1. 좋은 글 잘 읽었습니다. 다만 각주 1번에서 인용하신 그리스 신화에 대한 부분이 틀린 것 같은데요. 머리를 자르면 그 부분에 새로운 머리가 두 개 돋아난다는 전설의 괴물은 히드라이며, 이 괴물은 헤라클레스가 두번째 임무에서 조카 이올라우스와 같이 머리를 벤 자리를 불로 지져 해치운 것으로 알려져 있습니다.

  2. 글 재미있게 읽었습니다^^ 클라우드 컴퓨팅과 이전 시스템 구조를 다시 이해하는데 도움이 되네요 :)

  3. 글 재밌게 잘 봤어요~* 제가 도무지 흥미를 갖지 못해왔던 과학분야의 이야기였지만, 풍부한 전거들을 들어주신 덕에 조금은 더 친숙해진 느낌이랄까요^^ 아직 자기 홈피주소도 제대로 못 외우는 저를 살갑게 대해주셔서 넘 감사했구요ㅎㅎ 사실 못 외우는 건 아니고 순간 당황했을 따름이었답니다.

  4. 터미네이터와 CCN을 이런 식으로 연동시킬 수도 있었군요. 그동안 클라우드 컴퓨팅이라면 단순히 웹 기반 어플리케이션에 대한 이야기 정도로만 생각했는데 모르는게 많군요..;; 지금 제가 아는 것도 뭐가 맞는건지 모를 정도입니다.ㅠ 좋은 글 잘 읽었습니다.

    1. ^^ 감사합니다.
      처음 CCN에 대해서 들었을 때 어떻게 글을 써야 할지 참 난감해서 고민을 많이 했습니다.
      일반적으로 웹에 관심이 없는 분들께는 설명하기가 좀처럼 어려울 것 같아서 비슷한 용례를 찾아야 했고, 약간 어거지가 있을지도 모르지만, 터미네이터를 끌어오는 것이 괜찮은 생각일 것 같다고 생각했습니다.
      좋은 글이라고 말씀해 주시니 몸둘바를 모르겠네요. ^^;

  5. 핑백: 학주니닷컴
  6. 좋은글 잘읽었습니다. ^^ Cloud computing 에 대해 관심이 많았었는데, 막연한 일부분이 시원하게 정리되는 느낌이었습니다.

  7. 안녕하세요. 현재 개발환경에 관련된 책을 쓰고 있습니다. 내용이 너무 좋아서 그런데, 해당 자료를 책 내용에 사용해도 될까요?

에 응답 남기기응답 취소