웹진 액트온

여론 조작에 대한 사소한 오해 – 멀티서버 카운터

By 2010/06/10 10월 25th, 2016 No Comments

이명박 정부가 들어서면서 엉뚱하게도 다음 아고라가 유명세를 타게 되었습니다. 물론 그 전에도 사회적 이슈에 대한 토론을 주목적으로 하는 게시판 서비스로서 한겨레 토론방과 함께 나름 알려지긴 했지만, 기존 언론이 차지하고 있던 사회적 논의의 장에 있어 인터넷이 그렇게 큰 역할을 차지하진 못했기 때문에 아고라는 아는 사람만 아는 곳일 뿐이었습니다. 하지만 이번 쇠고기 파동을 통해 아고라는 거의 실시간으로 이슈를 생산하고 재생산하는 인터넷의 매체적인 특성을 잘 보여주며 단순한 토론장 이상의 기능을 하고 있습니다.

아고라는 이명박 탄핵 서명이 폭발적으로 일어나며 사회적인 관심을 받기 시작했습니다. 순식간에 서명 회수가 100만을 돌파하면서 반이명박 정서를 보여주는 대표적인 사건이 되었는데요, 이 서명수는 현재 130만을 넘어서 있는 상태이고 지금도 여전히 서명이 올라오고 있습니다. 물론 다음의 회원 정책상 한 사람이 복수의 아이디를 만들 수 있기 때문에 130만명 이상이라고 단언할 수는 없겠지만, 대선-총선에 걸친 승리로 의기양양하던 정부와 여당의 독선적인 정책에 대해 이루어진 강력한 조직적 반대라는 점에 있어 무시할 수 없는 숫자가 아닐까 합니다.

그런데 이 서명이 한창 불꽃튀며 올라가고 있을 당시, 서명수 조작에 대한 불신이 널리 퍼졌습니다. 서명수가 너무 가파르게 올라가다 보니까 정부에서 다음에 압력을 넣어, 또는 다음이 알아서 서명수를 줄이고 있다는 것입니다. 서명을 했을 때 서명수보다 서명을 하고 나서의 서명수가 더 적더라라는 이야기가 돌기 시작했고, 어떤 사람은 아예 화면을 동영상으로 캡쳐하여 실제로 F5를 눌러 화면을 갱신했을때 실제로 서명수가 줄어두는 장면을 올리기도 했습니다.

이는 모든 정보를 독점하고 있는 포털의 구조상 언제라도 제기될 수 있는 문제입니다. 의견을 낼 수 있는 통로를 포털이 독점하고 있고, 의견을 수렴한 결과를 투명하게 공개하지 않으며, 이러한 포털은 기업 논리상 정부 기관에 협조적일 수밖에 없다는 인식이 이러한 문제제기를 낳게 되는 거죠. 실제로 포털은 미디어의 역할을 일부 수행하고 있으며, 그것도 사회에 상당한 영향력을 미치고 있습니다. 포털은 뉴스를 생산하진 않지만 이를 유통시키고 있으며, 제휴사들로부터 들어온 다양한 뉴스와 사용자가 작성한 UCC를 어떻게 편집하느냐에 따라 논조를 만들 수 있기 때문이죠.

그 런데 아고라의 서명수 조작 문제는 약간의 오해가 들어간 부분이 있습니다. 일단 아고라 같이 대량의 트래픽을 다루는 게시판은 여러 대의 웹서버가 트래픽을 분산해 처리하는 멀티서버 구조를 가지고 있습니다. 만약 아고라 게시판 웹서버가 10대 있고 모든 웹서버는 동일한 역할을 담당하도록 만들면, 서버가 한 대 있을 때보다 산술적으로 10배 많은 트래픽을 처리할 수 있게 되는 것입니다. 보통 이렇게 구성한 서버의 제일 앞에는 요청을 분배하는 서버가 따로 있어서, 요청이 들어오면 가장 한가한 서버에게 요청을 돌려주는 역할을 하게 되는데 이를 로드밸런싱Load Balancing이라고 합니다.

이 렇게 멀티서버 구조를 지닌 시스템에선 다음과 같은 현상이 일어납니다. 1번 글을 읽을 땐 1번 서버에서 요청을 처리하고, 2번 글을 읽을 땐 5번 서버에서 요청을 처리해서, 결과적으론 매번 다른 서버에서 글을 읽어오게 되는 것이죠. 글을 쓸 때도 마찬가지여서 처음 쓴 글은 2번 서버에서 저장시키고 그 다음 쓴 댓글은 9번 서버에서 저장시키는 식으로 됩니다. 물론 최종적으로 글이 저장되는 공간인 데이터베이스는 하나만 존재하여 2번 서버에서 쓴 글이라도 5번 서버에서 읽을 수 있도록 되어 있습니다.

이 런 경우 가장 문제가 되는 부분이 어디일까요? 일단 웹서버를 여러대 확보했기 때문에 사용자가 웹서버에 보내는 트래픽은 웬만큼 처리가 됩니다. 하지만 웹서버는 여러 대인데 데이터베이스 서버는 한 대뿐이기 때문에, 웹서버에서 데이터베이스 서버로 요청이 가는 부분에서 병목현상Bottleneck이 발생하게 되죠. 그래서 멀티서버 구조에선 데이터베이스로의 요청을 최대한 줄이기 위해 캐싱Caching을 사용합니다. 데이터베이스의 데이터를 미리 가져와서 보관하고 있다가 자신이 가지고 있던 글에 대해 읽기 요청이 발생하면 굳이 데이터베이스를 갔다 오지 않고 조회수를 하나 올린 다음 자신의 보관하고 있던 데이터를 돌려주는 것이죠.

이 렇게 캐싱을 활용하면 웹서버와 데이터베이스와의 병목을 크게 줄일 수 있습니다. 하지만 모든 요청을 이렇게만 처리한다고 가정하면 큰 문제가 발생합니다. 여러 대의 서버가 서로 다른 요청을 처리하기 때문에 서버들이 갖고 있는 데이터에 점점 차이가 생기게 되는 것이죠. 예를 들어 조회수가 10인 1번 글을 1번 서버에서 읽었다고 가정하면, 1번 서버는 1번 글의 조회수를 11로 갖고 있지만 나머지 서버들은 여전히 10으로 갖고 있게 되는 셈입니다. 따라서 이렇게 서버마다 발생한 차이들을 한꺼번에 맞춰주는 일이 필요한데, 이를 동기화Synchronization라고 부릅니다. 동기화는 사용자가 이런 차이를 눈치채지 못하도록 충분히 짧은 시간 동안 이루어져야 하며, 동기화가 오히려 서버에 부담을 주지 않을 만큼의 충분한 시간 간격을 둬야 합니다. 따라서 멀티서버 시스템에선 동기화를 어떤 간격으로 잘 하느냐가 매우 중요한 일이 되는 거죠.

그럼 아고라 조회수 조작 문제로 돌아가 봅시다. 아고라의 게시판 시스템이 어떻게 구성되어 있는지는 잘 모르지만, 아마 멀티서버 구조로 되어 있음은 분명합니다. 아고라의 추천수는 각각의 서버들이 처리한 결과를 동기화를 통해 맞춰진 값으로 나올텐데요, 이명박 탄핵 서명 같이 순식간에 엄청난 양의 트래픽이 몰리는 경우에는 동기화가 추천수의 변화량을 따라잡지 못하는 현상이 발생합니다. 이런 경우 F5를 눌러 화면이 갱신되었을 때 미처 추천수를 동기화하지 못한 서버에서 추천수 값을 가져와 추천수가 더 줄어든 것처럼 보이는 현상이 발생할 수도 있습니다. 이런 경우 추천수의 감소량은 매우 적은 수로 나타날 것이며 시간이 지나 동기화가 이루어지면 제대로 된 추천수 값으로 보일 것입니다.

포털에서 여론을 조작하는지 안하는지는 확실하지 않습니다. 하지만 여론을 조작하고 싶다 하더라도 데이터를 임의로 지우거나 조작하는 방법은 너무 거칠고 위험한 방법이라 생각됩니다. 그런 경우 아마 블라인드 처리를 하거나 서버렉을 발생시켜서 접근을 어렵게 하는 방법을 사용하겠죠.

어 쨌거나 아고라의 급부상과 인터넷 여론의 표출은 미디어 지형의 큰 변화를 가져올 것임이 분명합니다. 온라인에서 발생하는 다수 여론의 힘을 알게 되었고 이 힘이 오프라인까지 진출하게 된 사건을 경험하였기 때문이죠. 이 힘을 민주적인 방법으로 발생시키고 민주적으로 사용할 수만 있다면, 타락한 대의민주주의를 탈피한 새로운 형태의 민주주의를 실현할 수도 있지 않을까요.

2008-06-23