[인벤기고컬럼 10] 인터넷 세상에서의 캐싱 (caching)



컴퓨터 공학에서 캐시(cache) 는 굉장히 광범위하게 사용되는 개념이다. CPU 의 사양을 기재할 때 어김없이 등장하며, 하드디스크 스펙에서도 “디스크 버퍼” 라는 이름으로 표시되고, 인터넷 뱅킹이나 관공서 웹사이트에서 뭔가 안될 때 브라우저 설정 들어가서 삭제하라고 안내 받기도 하며, 웹사이트가 잘 되더라도 민망한 기록을 지우기 위해 일부러 지우기도 하는 대상이다. (개인적으로는 이런 경우에 브라우저 캐시를 지우기 보다는 in-private browsing 이나 incognito window 를 추천한다.)

1
그림 1: 인텔 CPU 소개에서 캐시는 클럭속도 다음으로 표시될 정도로 중요한 요소이다. (출처: intel.com)
2
그림 2: 인터넷 브라우저들은 임시 파일 이라는 이름으로 열었던 사이트들의 내용을 캐시로 저장한다.

.

■ 캐시는 책장에 있는 책을 책상위에 올려두는 것과 같다.

캐시(cache) 는 “은닉처” 라는 뜻의 영어 단어인데, 현금을 의미하는 cash 와 발음이 똑같아서, 컴퓨터 공학 교재에서는 캐시를 표시할 때 “$” 로 표시하기도 한다. 캐시는 매번 데이터 소스로부터 읽어들이는 것이 상당한 시간이 걸릴 때, 처음 읽어들인 데이터를 임시로 저장해두고 두번째부터는 데이터 소스까지 가지 않고 데이터를 반환하기 위한 공간이다. 마치 매번 책장에서 책을 꺼내 오는 대신 자주 쓰는 책은 책상 위에 책을 놓아두는 것과 같은 이치다.

인벤기고컬럼 본문 더보기>

[인벤기고컬럼 9] 건강한 게임 생태계 구축을 위한 오픈 퍼블리싱 플랫폼의 필요성

오늘은 지금까지의 기술적인 이야기가 아닌 시장에 대한 이야기를 해보려고 한다. 기술적인 내용들에 비하면 좀 더 이해가 쉬울 수 있지만, 다소 무거운 내용을 포함한다.
모바일 게임의 역사는 결국 아이폰이 언제 시장에 소개되었는지와 관련이 있다. 애플은 아이폰을 소개하면서 프로그래머들이 직접 프로그램을 만들어서 올릴 수 있는 AppStore 를 같이 소개했고, PC 에서의 교훈을 보더라도 개발자든 일반 대중이든 가장 많은 관심을 보이는 애플리케이션은 당연 게임이었다. 그 때문에 아이폰이 처음 소개된 미국에서는 2007년부터, 그리고 아이폰 3GS 모델부터 도입된 한국은 2009년부터 모바일 게임들이 본격적으로 개발되고 소비되기 시작했다.

i15538614366.jpg
▲ 애플의 첫 번째 아이폰. 이 당시에는 핸드폰의 크기를 경쟁적으로 줄이던 시기였다. 그 때문에 이 광고가 나왔을 때도 애플이 아이폰을 작게 보이게 하기 위해 일부러 손이 큰 모델을 사용해서 광고를 찍었다는 논란이 있었다. 그에 비하면 지금 패블릿이라 부르며 큰 폰을 선호하는 현상은 다분히 격세지감을 느끼게 한다.(출처: 애플)
■ 네트워크 연결이 필요 없던 초창기 모바일 게임

모바일 게임이라는 이름은 “모바일 (mobile)” 이라는 이름에서 느낄 수 있듯 portable 한 게임을 의미했다. 즉, 들고 다니는 장치에 설치되어 들고 다니면서 플레이할 수 있는 게임이었다. 그 때문에 초기의 모바일 게임들은 자연스럽게 네트워크 기능이 없는 게임들이 주류였다. 들고 다니는 장치다 보니 안정적인 네트워크 상황을 가정할 수도 없었고, 대중들의 기대치도 “들고 다니는” 장소가 비행기같이 네트워크가 아예 불가능한 곳까지 포함됐기 때문이다. (우리나라의 경우 국내선이 1시간을 넘기지 않지만, 미국 같은 곳은 국내선만해도 5-6시간 시간이 걸리는 곳도 많기 때문에 비행기 안에서 게임을 할 수 있는 것은 큰 메리트다.)

이 때문에 초기의 모바일 게임은 3명 이내의 소규모 인원이 석 달 이내에 작업을 해서 결과물을 낼 수 있는 정도의 게임들이었다. 만일 개발 외주를 준다고 해도 3천만원 선에서도 게임을 만들 수 있는 정도였다. 천만 원이라는 숫자가 크게 느껴질 수도 있지만, 당시 경쟁적으로 대작 PC 게임을 만들던 상황에서 게임 하나의 제작비는 수백억까지 호가 했기 때문에, 1억도 안되는 제작비로 만들 수 있는 모바일 게임이 얼마나 라이트하고 단순한 게임들이었는지 알 수 있을 것이다. 나는 개인적으로 모바일 게임들을 보면서 갤러그 수준으로까지 PC 게임의 초창기 시절로 회귀한 것 같은 느낌까지 들었다.

인벤기고컬럼 본문 더보기>

[인벤기고컬럼 8] 자체 서버실부터 GBaaS까지, 게임서버 구축방법의 변천사

우리는 어디서나 컴퓨팅 자원을 쉽게 접할 수 있는 환경에서 살고 있다. 연산능력에 비해 PC 가격은 지극히 낮아졌고, PC를 직접 구하지 않더라도 클라우드라는 이름으로 가상 서버를 손쉽게 얻어 누구나 서버를 돌릴 수 있는 시대가 되었기 때문이다. 하지만 이런 일은 불과 20년 전만 해도 상상도 할 수 없는 일들이었다. 세월이 지나고 기술이 발전하고 내 머리카락이 빠져 프로스카를 쪼개먹는 일이 필요해지는 동안 게임 서버를 구축하는 방식 역시 많이 변화해왔다.

이번 회에서는 게임 서버를 구축하는 방식들이 어떻게 변화되어 왔는지 살펴보도록 하겠다.

■ 자체 서버실의 시대

우리나라에 초고속 인터넷이 대중화되기 시작한것은 대략 1999년정도이다. 지금은 상상도 할 수 없지만 그 전까지는 인터넷 연결 없이 PC를 사용하는 것이 당연하게 여겨졌다. 물론 “접속”같은 영화에서 보듯 하이텔이나 데이콤, 나우누리같은 PC 통신은 존재했고, 그들 서비스가 전화 PPP라는 방식을 통해서 인터넷 연결을 제공하긴 했지만 속도는 너무 느렸고, 전화비도 많이 나와서 마음대로 쓸 수 있는 것이 아니었다.

그래서 개인용 컴퓨터에서 하는 대부분의 작업은 창세기전 같은 패키지 게임을 설치해서 플레이하거나, 문서작업을 하거나, 아니면 CD-ROM이나 ZIP Drive같은 보조 저장장치로 복사해 온 동영상을 보는 것이 전부였다. 1998년도에 서울대학교 공과대학 전산실에 1배속, 그나마도 걸핏하면 뻑나는 CD Writer가 있는 정도였으니 정보의 이동이라는 것이 얼마나 제약이 컸을지 상상이 갈 것이다.

인터넷이 이런 상황이니 서버를 운영하는 주체도 별로 없었다. 서버는 대학이나 대규모 기업에서 활용하는 것으로 생각했다. 그 때문에 서버를 누군가가 대신 운영해준다는 것 역시 상상하기 어려웠다. 그래서 초창기 게임 서비스는 해당 개발사의 건물 어딘가에 서버실을 만들어 거기에 서버를 쌓아두고 이루어졌다.

내가 재직했던 넥슨 역시 선정릉역 인근 건물에 단지 서버 몇 대를 가지고 바람의나라 서비스를 시작했다. 그 서버는 지금 기준으로는 어이없을지 모르지만, 당시 PC 기준으로는 최첨단인 Pentium II 350Mhz CPU 두 개 꽂고 256MB RAM을 사용한 조립 기계였다. 세월이 지남에 따라 Pentium II가 Pentium III가 되고, 메모리는 512MB까지 쓸 수 있었지만 어쨌거나 기계를 직접 마련해서 회사 건물에 쌓아두는 건 마찬가지였다. 당시에도 엔씨소프트처럼 직접 조립을 하지 않고 인텔 서버를 공급하는 업체에서 사다가 쓰는 회사도 있었고, 인텔 서버가 아니라 SPARC이나 IBM AIX를 쓰는 경우도 있었지만, 어쨌거나 서버는 회사 서버실에 있는 것이 보통이었다.

i13166288105
▲ 그림1: 인텔 Pentium III CPU를 두 개 꽂은 서버. 지금의 CPU와는 달리 팬 일체형에 슬롯 형태로 꽂는 타입이다. 이런 서버들을 서버실 한켠에 쌓아두고 서비스를 했었다. (출처: tyan.com)
이렇게 서버를 직접 두고 서비스한다고 할 때 사용자가 늘어남에 따라 어떤 것이 큰 병목이 되기 시작했을까? 바로 네트워크였다. 예나 지금이나 서버측에서는 네트워크가 큰 병목이 되는데, 일반 인터넷망으로 서비스를 하는 것은 불가능하다. 그래서 전용선을 서버실까지 끌어와야 했는데 이것이 돈도 많이 들고 단순히 돈을 지불한다고 한도 끝도 없이 공급해주는 것도 아니었다. 당시에 넥슨에서 이걸 담당하신 분이 과거 넥슨 공동 대표와 네오플 대표를 하셨고 현재 한국인터넷디지털엔터테인먼트 협회장을 맡고 계신 강신철 회장님인데, 그때 회선 따오려고 통신사 분들과 술을 엄청나게 많이 드시고 그랬다. 나의 저질체력이라면 절대 못할 일이었다.

.

인벤기고컬럼 본문 더보기>

[인벤기고컬럼 7] 네트워크 용어 정리: 네트워크에서부터 SDN 까지

이번 회에서는 몇 가지 네트워크 용어들을 설명하도록 하겠다. 내용이 점점 아스트랄해지는 것 같지만 인터넷들 설계 원칙과 더불어 내가 평소에 주변 사람들이나 직원들에게 적극적으로 설명하고 있는 내용이라서 내가 이런 개념을 소개하는 것을 업무나 사석 혹은 다른 뉴스레터 등을 통해 몇 번씩 들어본 분도 있겠지만, 네트워크 단어의 개념을 확장해 가다 보면 일종의 사고실험과 같은 효과가 있어서 개인적으로는 기회가 될 때마다 소개하는 내용이다.

영어권이 아닌 우리 한국 사람들은 안타깝게도 영어로 표현된 단어의 미묘한 느낌을 직관적으로이해하기 보다는 하나의 전공 용어로서 그대로 외워버리는 경우가 많다. Google 이나 Yahoo 처럼 그냥 단어가 마음에 들어서 작명을 하는 경우도 있지만, 표현하고자 하는 것의 미묘한 뉘앙스를 포함하고 있는 경우도 있기 때문에 단어의 개념을 명확히 이해하면 그 개념이 다른 상황에서 사용되더라도 쉽게 이해할 수 있는 경우가 많다.

예를 들어 관계형 DB 의 효시로 불리는 Berkeley 의 INGRES 디비의 경우, 그것 자체가 INteractive Graphics Retrieval System 이라는 표현의 첫 글자를 딴 조합이긴 하지만 이 조합은 영어 단어 ingress 를 흉내 내어 만들어졌다. 그리고 ingress는 안쪽 방향으로 들어오는 것을 의미하기 때문에 데이터를 모아두는 디비의 특성을 잘 설명하고 있다. 그리고 INGRES DB 의 후속타는 ‘그다음에’ 라는 뜻의 영어 단어인 ‘POST’ 를 써서 POSTGRES DB, 정식 명칭 PostgreSQL 이다. 내가 이 예에서 설명하려고 했던 것은 단어를 전공 용어가 아닌 영어 단어로 접근하면 ingres/postgres 의 예에서처럼 서로의 관계를 쉽게 이해할 수 있는 것들이 있다는 점이다.

이제 다시 본 주제로 돌아와서, 아래 내용은 다들 알고 있는 단어들을 조금 다른 각도에서 설명을 시작하여 최근 많이 회자되는 네트워크 가상화, 그중에서도 Software Defined Networking (SDN) 과 관련된 기본 용어들까지에 대한 내용이다.

 

■ 점 들의 연결 관계 – 네트워크

네트워크: 일반화된 개념으로 네트워크는 점 들의 연결 관계를 선으로 표시한 것을 의미한다. 여기서 점과 선이 무엇을 의미하는지는 네트워크가 표현하려는 것에 따라 달라지는데, 점을 개인으로, 선을 개인 간 관계로 생각하면 소셜 네트워크가 되는 것이고, 점을 옥천 허브 같은 물류 기지, 선을 도로라고 생각하면 물류 네트워크가 된다. 그리고 점을 컴퓨터로, 선을 회선으로 생각한다면 우리가 익숙한 컴퓨터 네트워크가 되는 식이다. 네트워크는 굳이 복잡한 모습일 필요는 없다. 단지 점 두 개가 이어진 것도 네트워크고 복잡하게 얽히고설킨 것도 네트워크다.

i10755442501.jpg
▲ 그림 2: 어떤 점들은 여러 점들과 연결될 수도 있다. 그렇게 되면 그 점은 여러 경로를 선택할 수 있게 된다. 이런 점을 스위치라고 한다. (아이콘 출처: WPZOOM, iconfinder.com, Creative Commons License)

.

인벤기고컬럼 본문 더보기>

[인벤기고컬럼 6] TCP, 그리고 UDP 쉽게 알아보는 두 개념과 차이점

벌써 여섯 번째 연재다. 처음에 이렇게 길게 연재할 수 있을까 생각했는데, 인내를 가지고 기회를 주신 인벤 측과 재미도 없는 글을 가끔 들러주는 독자분들께 깊은 감사를 드린다. 이번 칼럼에서는 TCP/IP의 계층화와 게임 구현에 사용되는 TCP 와 UDP 의 차이점에 대한 이야기를 해보겠다.

■ IP. 모든 것의 허리
 
아마 많은 프로그래머들에게 익숙할 이름인 TCP/IP 라는 프로토콜 체계는 나중에 두 개로 분리된 것이 아니라, 인터넷 프로토콜 표준이 제정될 때부터 지금처럼 두 개로 분리되어 제안되었다. David Clark 교수님의 88년 논문은 TCP/IP 를 설계할 때 어떤 우선순위로 설계되었는지에 대해서 설명하고 있는데, 그중에서 “여러 종류의 데이터 전달 방식을 지원할 것 (multiple types of delivery services)” 이라는 목적을 달성하기 위해서 가장 기본이 되는 기능만을 IP 에 포함시키고, 그 위에 TCP 라는 새로운 계층을 얹는 형태가 된 것이다. (관련해서 설명이 더 필요한 분들은 블로그에 별도로 정리한 “인터넷은 어떤 기준으로 설계되었을까” 라는 글과 “모듈화, end-to-end 원칙, 그리고 fate-sharing” 이라는 글을 참고하길 바란다.) 그리고 이를 도식화 하면 TCP/IP의 관계는 다음 그림처럼 모래 시계 모양으로 표시한다.
.
i12467896678.jpg
▲ TCP/IP 모델은 IP 가 허리인 모래시계 형태로 표현된다.(출처 : ifew)

이 그림에서 주의 깊게 바라볼 부분은 잘록한 허리 부분인 IP 다. 이건 후세의 누군가가 꿈보다 좋은 해몽으로 붙여놓은 것도 아니고, 우연의 결과물도 아닌 TCP/IP 의 의도된 디자인인데, 어떤 통신 관련 하드웨어 기술이든 IP 만 구현하면 되고, 어떤 응용 프로그램이든 IP 위에서만 동작하게 하면 된다는 실로 엄청난 의미를 내포한다.

유선 랜 (Ethernet 이라 불림)과 WiFi 모두 IP 주소를 쓰고, 우리가 잘 인식하지는 못하지만, Bluetooth, LTE 나 3G 도 통신을 할 때는 IP 주소를 부여받아 통신한다. 그 덕에 까페의 WiFi 에서나 길을 걸으면서 LTE 상에서도 똑같은 앱을 이용해 스마트폰에서 음악을 들을 수 있다. 즉 어떤 통신 방법이든 IP 를 구현하는 한, IP 위에서 동작하던 응용 프로그램을 지원하는 데 문제가 없으며, 어떤 응용 프로그램이든 IP 로 통신한다는 것을 전제만 하면 IP 를 지원하는 어떤 하드웨어 기술에서도 동작할 수 있다.

인벤기고컬럼 본문 더보기>

[인벤기고컬럼 5] 냅스터 부터 P2P까지, PC와 모바일의 클라이언트-서버 모델

P2P vs. 클라이언트-서버 모델 Part 2

지난 칼럼에서는 게임 서비스 구성을 위한 네트워크 방식 중에 서버-클라이언트 방식에 대해 살펴봤다. 이 방식은 중앙 집중식이기 때문에 “중심”에 해당하는 서버와 서버 네트워크에 과부하를 유발할 수 있지만, 구현 방법이 직관적이고 간단하다는 장점 때문에 게임뿐만 아니라 네트워크 프로그래밍에 보편적으로 많이 사용되는 방식이라고 했다. 이번 회에서는 서버-클라이언트 방식과 더불어 많이 사용되는 방식 중 하나인 P2P 방식에 대해서 살펴보도록 하자. 그러기에 앞서 파일 공유에 많이 사용되던 P2P가 어떤 방식으로 동작했으며, 그게 어떻게 해서 게임 서비스 환경에 도입되어 사용되게 되었는지 살펴볼 필요가 있다.

요즘은 음악이나 비디오 같은 멀티미디어가 소유보다 소비의 관점으로 인식되는 것 같다. MP3 나 영화 파일을 내려받아서 소유하기보다는 벅스나 멜론, IPTV 혹은 YouTube 같은 스트리밍 서비스를 이용하는 경우가 더 일반적인 게 되었다. 이는 모바일 디바이스와 모바일 네트워크의 비약적 발전 때문에 파일을 복사하는 것이 귀찮아진 것도 있고, 즉각적인 것을 선호하는 사회 변화의 속도와 스트리밍 방식의 실시간적 편리함 때문이기도 하고, 팀 과제에 참여 안 한 선배 이름을 빼겠다는 음료 광고 및 그 광고의 “그런데 그것이 실제로 일어났습니다” 일화에서 보듯 저작권에 대한 사회 전반적 인식의 성숙 때문이기도 한 것 같다.

그러나 몇 년 전까지만 해도 멀티미디어 파일에 대한 저작권 인식은 지금보다 훨씬 흐릿해서 어둠의 경로를 통한 불법 다운로드는 굉장히 공공연한 일이었다. 심지어 습관적으로 스마트폰을 들여다보는 것처럼 인터넷이나 CD/DVD writer가 놀고 있으면 초조함을 느껴서 열심히 다운로드 받고 구워놓는 사람들도 많았다. (비록 그때 구워 놓은 CD/DVD 중에 대부분은 그 이후로 열어보지도 않았지만….) 그리고 그런 일이 가능했던 것은 수많은 파일 공유 프로그램 덕이었다. 그 중 가장 중요했던 프로그램이 냅스터다.

.

냅스터 (Napster)

파일 공유 프로그램의 역사에서 냅스터를 빼놓고 이야기할 수는 없다. 냅스터는 1999년에 서비스되기 시작되어, 편리한 음악 파일 검색 기능으로 급속도로 확산하였다가, 메탈리카와 닥터 드레 (헤드폰의 그 닥터 드레가 맞다) 그리고 미국 음반 산업 협회 (RIAA) 등이 제기한 저작권법 위반 소송으로 2001년 서비스를 내리게 되었다. (국내에서는 “소리바다” 라는 유사한 음악 공유 프로그램이 2000년도에 큰 인기를 얻었다.)

i12793884000.jpg

인벤기고컬럼 본문 더보기>

[인벤기고컬럼 4] P2P vs 클라이언트-서버 모델, 각각의 장단점은?

P2P vs. 클라이언트-서버 모델 Part 1

첫 회에서 게임 서비스를 구성할 때 사용하는 네트워크 모델들에 대해서 간단하게 언급했었는데, 이 중에서 클라이언트-서버 모델과 P2P 모델에 대해 두 회에 걸쳐 좀 더 깊이 살펴보도록 하자. 이번 회에서는 클라이언트-서버 모델에 대해 설명을 하고 다음 회에 이어서 P2P 모델에 대해서 설명을 하도록 하겠다.

클라이언트-서버 모델: 중앙 집중 방식

집집마다 ADSL 인터넷이 설치된 것은 채 20년도 되지 않는다. 그전에 인터넷이라는 것은 학교 전산실에서나 경험해 볼 수 있었고, 컴퓨터 전공자들에게만 익숙한 것이었다. 지금은 컴퓨터를 사도 메인보드에 랜 포트가 달려나오고, 노트북 컴퓨터 같은 경우는 유선 랜 포트가 거추장스럽다고 아예 WiFi만 지원할 정도로 네트워크 연결 측면에서 많은 진보를 이루었지만, 당시에 랜카드는 당연히 별도로 사서 설치하는 것이었고, 그나마도 OS에서 이를 인식시키는 것은 나름 까다로운 작업이었다. 조금 더 쉽게 설명하면, 컴퓨터에 랜 카드를 설치해주는 것만으로도 컴퓨터 잘하는 동네 오빠로서 이성에게 호감을 얻을 수 있는 정도? (물론 나에게는 그런 여자 후배는 없었다… 왜냐면…. 나는 공대니까…)

인벤기고컬럼4.png
▲ 예전에는 랜카드를 별도로 설치해야했다. 크고 아름다운 랜카드의 위용(출처 : wikipedia)

이런 초고속 인터넷 (영어로는 broadband Internet) 의 대중화 과정은 비단 우리나라에서만 그런 것이 아니었고, 그 때문에 일반적으로 서버라는 존재는 압도적인 계산 능력을 갖춘, 특별히 관리되는 존재로 인식되었다. 우리가 일반 컴퓨터에서 사용하는 인텔 x86 CPU가 서버에도 활용되기 시작한 것 역시 역사가 그다지 오래되지 않았다.

이런 배경 때문에 대부분의 인터넷 서비스는 가장 직관적이고 일반적인 형태로, 정보를 몰아넣고 중앙에서 관리하는 강력한 컴퓨터가 빈약한 사용자 컴퓨터에 서비스를 제공해주는 형태로 갖춰지게 되었다. 정보를 제공(서빙)해주는 사람이라는 뜻에서 ‘서버’라고 불리게 되었고, 정보를 활용하는 고객이라는 의미에서 ‘클라이언트’라고 불리게 되었다. 그러니 클라이언트-서버 모델은 컴퓨터 네트워크 초창기부터 가장 일반적으로 활용되어온 서비스 구성 방식이다.

인벤기고컬럼 본문 더보기>