Thoughts2011.07.08 13:11
요즘 IT 업계에서 가장 큰 화두 중에 하나는 '클라우드' 입니다. 세상의 모든 정보와 서비스를 유틸리티(Utility)화 하겠다는 이 전략은 이제 단순한 개념의 수준을 넘어섰습니다.

이런 개념은 1969년 Leonard Kleinrock의 논문, "A Vision for the Internet"에서 언급된 바 있습니다.

As of now, computer networks are still in their infancy, but as they grow up and become sophisticated, we will probably see the spread of `computer utilities' which, like present electric and telephone utilities, will service individual homes and offices across the country.

결국 컴퓨팅이라는 것도 나중에는 하나의 유틸리티 처럼 될 것이라는 거였죠. 인터넷 발전과 더불어, 이 이상은 지금 실현 단계에 와 있습니다.

그런데 이 이상이 올바르게 실현되려면, 한 가지 가정이 만족되어야 합니다. 전기와 전화같은 것은 '인프라'입니다. 어떤 것이 인프라로 취급될 수 있으려면, 그 성능에 대한 모든 측면이 예측 가능해야 합니다. 천재지변이 일어나지 않는 다음에야, 거의 항상 정상적으로 동작해야 합니다.

 


그런데 인터넷을 통해 유입되는 데이터 양이 기하급수적으로 늘어나다 보니, 현재 인터넷은 인프라로서의 구실을 하지 못하게 되었습니다. 바이러스가 퍼지면 네트워크가 다운되고, 특정한 컨텐츠에 대한 요구가 폭증하면 인터넷 접속이 올바르게 이루어지지 못하는 일도 왕왕 있습니다.

결국, 인터넷을 통해 유통되는 데이터가 인터넷의 올바른 동작을 막는 일이 생긴다는 겁니다. 그래서 인터넷은 다른 인프라와는 좀 다릅니다. 수도를 예로 들어봅시다. 수도관을 통해 유통되는 데이터는 '물'입니다. 물이 '수도관' 자체를 공격하는 일은 없습니다. 수도 사용자가 늘면 물 공급량이 부족해서 물이 찔끔찔끔 나오게 되는 일은 있을 수 있어도, 물이라는 데이터가 수도관이라는 인프라 자체를 못쓰게 만들어 버리는 일은 없습니다. 물에 바이러스를 뿌린다고 해도 물을 마시는 사람들이 타격을 입을 지언정, 수도관이라는 인프라가 고장나 버리는 일은 좀처럼 발견하기 힘들죠.

하지만 인터넷의 경우는 확실히 다릅니다. 데이터를 조작하면, 데이터를 실어나르는 인프라를 망가뜨리는 일이 가능합니다. 그것은 인터넷이 자신이 유통하는 데이터의 코드를 '해석'해서 움직이기 때문입니다.


인터넷을 통해 돌아다니는 데이터의 앞부분에는 '헤더(header)'라는 좀 특별한 종류의 데이터가 붙습니다. 이 데이터를 해석해서 인터넷 장비들은 데이터를 '어디로 보낼지' 그리고 '어떻게 처리할 지'를 결정합니다. 문제는 이 헤더라는 것이 '조작 가능하다'는 점입니다.

생각해보면 인터넷에 붙어 있는 모든 단말과 장비들은 유통되는 데이터들을 어떤 식으로든 해석합니다. 그 해석 메커니즘을 교란하여 단말에 해를 끼치는 코드를 우리는 '바이러스'라고 부르고, 인터넷에까지 영향을 미치는 코드를 우리는 때로 '웜(Worm)'이라고 부릅니다.

그러므로 인터넷을 '인프라'의 수준으로 격상시키려면, 우리는 가급적 인터넷을 구성하는 장비들이 (단말은 제외합시다. 결국 단말들은 수도관을 통해 흘러나오는 물을 받아마시는 사람들과 같은 존재들이니까요) 데이터의 내용을 해석하지 않도록 만들 필요가 있습니다. 그래야 데이터를 조작해서 네트워크 자체를 교란할 가능성이 줄어듭니다. 

하지만 현대 네트워크는 헤더 없이는 동작하지 않습니다. 이는 네트워크를 통해 유통되는 데이터가 전적으로 목적 지향적이기 때문입니다. 물은 어디로 배달되더라도 그저 물일 뿐이고, 전기는 어디로 배달되더라도 전기일 뿐입니다. 원하는 양만큼만 배달될 수 있으면 됩니다. 하지만 네트워크를 통해 배송되는 데이터는 반드시 '사용자가 원한 바로 그 데이터'이어야 하고, 내가 접속한 '바로 그 웹 사이트'로부터 만들어진 데이터이어야 합니다. 여기에 '인프라로의 격상'을 원하는 인터넷의 딜레마가 있습니다. 

데이터와 네트워크의 전쟁을 목도하는 많은 네트워크 연구자들은, 바로 이 지점을 고민하고 있습니다. 그리고 기본적으로 사람들이 내 놓은 아이디어는 이런 겁니다. 수도관에서 물을 받아 마시는 사람들은 수도관에 자기 위치를 전송하지 않습니다. 하지만 인터넷은 다릅니다. 위치에 관한 기본적인 정보가 인터넷에 전달되지 않으면 (IP 주소라고 하죠) 인터넷에서 정보를 받아 먹을 수가 없습니다. 그러니 사람들은 '위치 정보를 인터넷의 핵심 부분에서 가급적 떼어 놓도록 하면 어떨까' 하고 생각하기 시작했습니다. 

그래서 나온 아이디어가 IP 주소는 기존의 인터넷 망에 흡수해 버리고, 사용자는 IP 주소와는 무관하게 인터넷을 이용하도록 하자는 방안입니다. IP 주소는 인터넷을 포설하는 데만 쓰고 (마치 수도관 처럼요) 사용자는 자기가 원하는 데이터가 무엇인지만 명시하면 그 데이터를 받아먹을 수 있도록 하자는 겁니다. 

이 아이디어가 성공적으로 정착되려면, (1) 네트워크를 공격하려는 사용자가 IP 체계를 교란하지 못하도록 해야 하고 (2) 네트워크 사용자는 데이터 중심적으로 네트워크를 사용할 수 있어야 합니다. 그래서 사람들은 그런 아이디어들을 묶어 '미래 인터넷(Future Internet)'이라고 부르기 시작했습니다.

클라우드 서비스가 본격화되고, 아이폰과 같은 스마트 단말들이 깔리고, 바야흐로 세상이 유틸리티로서의 컴퓨텅을 본격적으로 사용하게 됨에 따라, '인터넷이 예전같이 빠르게 움직이지 않는다'고 투덜거리는 사람들이 늘어가고 있습니다. 사용자 입장에서야 어떨런지 모르겠습니다만, 네트워크 연구자들은 그 문제를 해결하기 위해서 지금도 고군분투하고 있습니다. 데이터와 인터넷 사이의 전쟁은 사용자들에게는 드러나지 않습니다. 마치 사이버 공간에서 진행되는 서바이벌 게임과도 같습니다.

그러니, 네트워크가 예전같지 않다고 서비스 제공 업체들을 너무 나무라지는 마세요. 인터넷을 정말로 뛰어난 인프라로 만들기 위해, 지금도 전 세계의 연구자들이 밤잠을 줄여가며 애쓰고 있으니까요.

신고
Posted by 이병준

소중한 의견, 감사합니다. ^^

Extremely Agile/General2011.04.05 17:41
http://ringblog.net/1934 그만님 블로그에서도 다루고 있는 주제지만, 카카오톡이 유발하는 keep-alive 성 트래픽이 단단히 문제가 되고 있는 모양. 특히 카카오톡 서버가 재부팅 되거나 재배치되는 경우에 증상이 심화되는 듯.

망 중립성 이야기도 나오는데, 아무래도 망이 좀 더 지능화 되어 '카카오톡 오버레이(overlay)' 같은 게 제공되지 않는 한 근본적인 해결은 어려울 듯. 그렇게 되면 카카오톡 회사는 타인의 트래픽을 침해하지 않는 선에서 ISP (Internet Service Provider)로부터 오버레이 회선을 구매하고, 그 오버레이 회선으로만 자사의 트래픽을 유통시킬 수 있을 것이다. 물론 그런 회선에 완벽한 QoS를 구현할 수 있고, 다른 사람들의 트래픽은 침해하지 않는다는 가정 하에서.

인터넷을 통한 '가상 회선별 QoS' 이야기는 NGN(Next Generation Network)이야기 나오면서 가장 크게 대두되었던 화두 중 하나인데 아직까지도 뾰족한 해결책이 없고, 그럼에도 사람들은 벌써 NGN을 넘어 '미래 인터넷' 이야기를 하고 있다.

사람들이 벌써부터 '미래 인터넷' 이야기를 하는 것은 아마 '현존하는 IP 프레임워크 위에서' 인터넷의 모든 문제를 해결하기가 굉장히 곤란해 보이기 때문인 듯. (이렇게 저렇게 다 해봤는데 안되더라 하는 게 가장 큰 이유일 것인데...)

사실 인터넷은 이미 '범 지구적인 인프라'가 되어 있지만, 아무도 그 인프라가 '정말로 안전한지', '정말로 예측가능한지' 모른다는 문제를 가지고 있다. 사실 이런 문제를 가지고 있는 인프라는 인프라로 불러서는 안된다. 왜냐? 인프라는 공공재적 성격이 크기 때문이다. 상수도도 인프라라고 부를 수 있고, 하수도, 전력 공급 시설 전부 인프라라고 부를 수 있다. 그런데 그런 인프라들은 예측 가능하다. 어떤 장애가 생겼을 때 어떻게 동작하게 될지, 예측이 가능하단 소리. 그래야 그 공공재에 기반하여 생활하는 사람의 삶의 질을 보장할 수 있다.

그런데 인터넷은 그렇지 않다. 웜 바이러스가 뿌려졌을 때 인터넷에 무슨 일이 벌어졌는지 아마 모두들 기억하시리라. 이런 건 인프라가 아니다.

이런걸로 만든 뭔가는 인프라라고 부를 수 있을지도



카카오톡 사태에서도 볼 수 있듯이, 우리는 인프라가 아닌 '무언가' 위에 '우리 삶을 해피하게 해 줄' 뭔가를 만들려고 한다. 그러다 보니, '무언가'를 만드는 사람도 그렇고 '해피하게 해 줄 뭔가'를 만드는 사람도 그렇고, 전혀 해피하지가 않다. 

이 사태가 원천적으로 해결되려면 우리가 쓰는 인터넷이 좀 더 예측 가능하게 바뀌어야 한다. 예측 가능한 인터넷은 선언적(declarative) 기술에 기반한 것이어야 하고, 증명 가능(provable)해야 한다. 현재 인터넷 기술을 구성하는 요소 중 많은 것들은 증명에 기반한 것도 아니고, 선언적이지도 않다. 프로그래밍 언어적으로 이야기하자면, 절차적이다. 그냥 그렇게 하니까 돌아가던데? 라는 말 쪽에 좀 더 가깝다. 

우리는 인터넷이 갖고 있는 이 '원천적인' 문제가 빨리 해결되기를 소망한다. 그러기 위해서는 인터넷을 설계하는 사람이나 그 위에서 돌아가는 뭔가를 만드는 사람들이 머리를 맞대고 함께 고민해야 한다. 대한민국은 세계 No.1 인터넷 강국이라서 그런 연구 하기 걸맞다.

그런데 대한민국에서 인터넷의 문제를 원천적으로 해결할 솔루션이 나오지 않는다면?

그건 아마 대한민국이 그런 일 하기에 썩 적합하지 않아서 일지도 모른다.
 
신고
Posted by 이병준

소중한 의견, 감사합니다. ^^