블로그와 태그 시스템의 데이터베이스 설계

맛있는 인터넷으로의 세대교체 블로그와 태그 시스템의 데이터베이스 설계

정의식 l 온네트

다양한 환경과 웹2.0이 이슈화되면서 웹에서의 서비스 환경은 다양하게 변화하고 있다. 웹 서비스를 위해 뛰어난 데이터베이스를 설계하려면 우선 웹 서비스의 특성을 이해해야 한다. 웹 서비스는 특정 페이지에 트래픽이 몰리기도 하고, 트래픽이 거의 없는 페이지도 있으며, 통계에서는 나오지 않는 검색 로봇(Robot)이나 RSS 크롤러(crawler)에 의해 숨겨지는 페이지에서 더 많은 트래픽이 발생할 수도 있다. 블로그와 태그의 설계 방법을 통해 웹 서비스의 특성을 이해하면서 효율적인 데이터베이스를 설계하고 관리할 수 있을지 생각해보자.


 

웹 서비스에서 데이터베이스를 가장 효율적으로 운영하는 방법을 극단적으로 말하자면 데이터베이스를 쓰지 않는 것이다. 다시 말하면 꼭 필요한 부분에서만 쓰고 그 외의 서비스는 쓰지 말아야 한다는 의미이다. 데이터베이스를 쓰지 않아도 되는 로우 데이터(Row Data)에 의해 다른 퍼포먼스를 내야 되는 데이터베이스에 영향을 주어서는 안 된다.
그리고 웹 서비스에서의 데이터베이스는 생각하는 것만큼 관계형 데이터베이스를 잘 표현하지 못한다. 특히 트래픽이 많은 웹 서비스를 구현 할 때는 더더욱 그렇다. 웹 서비스의 데이터베이스를 가장 설계를 잘했다고 말할 수 있으려면 가공되지 않은 로우 데이터를 웹서버에 그대로 보내도록 설계해야 한다. 데이터베이스에 의해 원하는 표현 방식으로 가공된 데이터를 뿌려주도록 설계하는 것은 가장 낮은 퍼포먼스를 내는 지름길이다.

필자의 경우 한때는 편집증이란 소릴 들을 만큼 이런 부분에서 조심한 적도 있다. 웹 서비스에서 심한 트래픽으로 인해 데이터의 과부하를 경험해 본 개발자라면 쿼리 하나를 날리는 데에도 상당히 조심스러워 질 것이다. 서비스를 구현하고 있다면 특히 그렇다. 심지어 그룹 바이(Group by)를 쓰는 것도 조심스럽고 트랜잭션(Transaction)을 걸어야 할 때는 하루정도 고민한 적도 있다. 데이터베이스 때문에 느려질 염려가 없다는 이유로 클러스터 인덱스(Cluster index)되지 않은 오더링(Ordering)을 하지 않기 위해서 오더링 되지 않은 로우 데이터를 웹에 그냥 던져주고 웹에서 오더링을 구현한 적도 있다.

그룹 바이나 해빙(having), 유니온(Union), 낱 인(not in), 라이크(Like) 등은 관리자용 SQL언어이지 웹 서비스에서 표현할 수 있는 SQL은 아니라 생각했던 적도 있다. 지금도 아니라고는 말 못하겠다.

요즘은 데이터베이스의 효율성을 높이기 위해 MMDBMS를 비롯하여 여러 솔루션들이 많이 등장하고 있다. 하지만 대부분의 가난한(?) 개발자에게는 이런 솔루션을 비싼 돈을 주고 적용시켜 볼 여력이 없다. 어떻게든 최소한의 비용으로 최대한의 효율을 내는 방법만을 고민할 뿐이다. 게다가 웹 서비스에서의 데이터베이스는 장비의 성능에 그다지 영향을 받지 않기 때문에 데이터베이스의 설계나 인덱스 하나를 잘 만드는 것이 장비를 업그레이드 하는 것 보다 더 높은 퍼포먼스를 낼 수도 있다.


웹2.0의 데이터베이스


갑자기 웹2.0이라는 말이 홍수처럼 밀려오면서, 개발자들이 이러한 개념을 받아들이기는 꽤나 어려웠을 것이다. 그리고 요즘 새로 만들어지거나 개발 중인 서비스에서 웹2.0을 기반으로 서비스를 오픈하는 경우가 많다. 개발자적인 입장에서 웹2.0의 웹 서비스들을 살펴보면. 몇 가지 주요한 특징이 보인다.

첫째, 대부분의 정보가 사용자에 의해 생산된다.
둘째, 생산된 정보는 그 사용자나 다른 사용자들에 의해 분류되어진다.
셋째, 생산된 정보들은 그 분류를 통해 서로 관계(relation)를 맺는다.

이런 관점에서 보면 웹2.0의 데이터는 살아있다고 할 수 있다. 서비스를 만드는 입장에서 이런 데이터를 어떻게 분류할 것이며 어떻게 관계를 맺는지에 따라 그 데이터는 죽을 수도 있고 가치 있는 삶을 누릴 수도 있다. 그 만큼 웹2.0에서 데이터의 생산, 분류와 관계는 가치가 있으며, 사용자의 노력이나 서비스의 구현 방법에 따라 데이터의 평가가 달라진다.

기존의 웹이나 시맨틱 웹은 리스트 구조의 로그를 연상시킨다. 게시판처럼 리스트를 보여주고 검색을 통해 결과를 추출해내며, 컴퓨터에 의해 자동으로 정보를 생산하거나 수집하게 한다. 하지만 웹2.0에서의 데이터는 엄청난 양의 정보를 유저가 직접 생산해 내고 분류하며, 그 분류를 통해 관계를 성립하게 된다.

처음 웹2.0이란 말이 나올 때 지극히 개발자적인 섣부른 생각으로 웹2.0은 검색을 개발할 수 없는 여건에 있는 가난한 업체들의 컨소시엄이나 상술처럼 보이던 적이 있다. 하지만 절대 그렇지 않다. 처음 정보를 생산하는 동시에 그 생산된 정보는 이런 분류나 관계를 통해 가치 있는 정보가 되고, 유저의 아이덴티티(identity)을 높여주는 역할을 한다. 이것은 정보를 생산하는 사용자에게있어 얼마나 가치 있는 일인지 모른다. 그러한 사이클 때문에 사용자는 더 많은 정보를 생산하게 된다.

이렇게 웹2.0이 이슈화 되면서 개발자들은 엄청나게 쏟아져 나오는 정보들을 분류하고 관계를 맺어줘야 하는 어려운 숙제를 떠맡게 되었다. 가공된 검색의 로우 데이터로서가 아닌 진정한 분류 및 관계를 형성해줘야 하는 역할은 개발자들에게 있다. 또, 이렇게 생산된 로우 데이터를 효율적으로 설계하고 관리하는 것 역시 개발자의 몫이다.

자 그럼 이제 웹2.0의 대표적인 서비스라 할 수 있는 블로그와 태그 시스템을 통해 데이터 생산과 분류, 관계를 어떤 형태의 데이터베이스로 설계하는 것이 효과적인지 알아 보자.


정보를 생산해내는 블로그의 설계 방법


웹2.0에서 유저들이 정보를 생산하는 툴로써 가장 많이 사용하고 있는 것은 바로 블로그이다. 정보를 생산하는 입장에서의 블로그의 설계 방식을 살펴보자. 또, 어떻게 하면 효과적으로 정보를 모으고 용량이 크거나 많은 트래픽에서도 효율적으로 데이터베이스를 관리할 수 있는지에 대해서도 함께 고민해 본다.


단일 데이터베이스에서의 블로그 스키마


<그림 1>은 블로그가 가진 중요한 속성들을 표로 만든 것이다. 그림의 Blog_info에는 블로그에 대한 기본 정보 데이터가 들어가 있고, Blog_post는 블로그에 사용자가 직접 생산한 데이터들이 있다. Blog_trackback은 blog_post에 올라온 글에 대한 다른 블로거들의 의견이 있으며, Blog_comment는 blog_post의 글에 대한 코멘트이다.
사용자는 포스트를 통해 UCC(User Created Contents)를 계속 생산해내고, RSS를 통해 배포하며 태그나 카테고리를 통해 분류하거나 관계를 형성한다. 또, 트랙백(trackback)이나 코멘트(comment)를 통해 커뮤니티를 형성하기도 한다.

<그림 1>의 블로그 데이터베이스 구조는 설치형 블로그들이 일반적으로 가지고 있는 데이터베이스의 구조이다. 하나의 블로그 또는 소규모의 커뮤니티를 운영하는 곳에서는 유용한 구조이다.

블로그를 설계할 때 RDBMS 제품군을 이용하지 않고 블로그를 구성하는 방법을 생각해 볼 수도 있을 것이다. 예를 든다면 mdb와 같은 파일 DB로 하나의 블로그당 하나의 파일 DB를 생성해주는 방법이다. 이렇게 하면 백업하기도 쉽고 익스포트(export)나 임포트(import)하기도 쉽다. 블로그를 생성할 때 mdb를 하나 만들어주면 그만이니 만들기도 간단하다. 트래픽이 몰려도 트래픽을 분산시키느라 고민할 필요도 없고, 새로운 서버에 디렉토리만 이전하면 트래픽 분산이 가능하다. 또, 인덱스를 걸지 않아도 혼자 쓰는 DB인데 부하가 있어도 얼마나 있겠는가.

하지만 회원가입을 받는 웹 서비스를 만들 때 이런 방법은 사용할 수 없다. 커스터마이징 하거나 오류가 있을 때 고치거나, 버전업하기도 힘들고 일괄 관리도 힘들다. 만약 설치형 블로그 툴을 만들고자 한다면 성능 좋은 파일 DB들이 많이 있으니 한번 생각해 볼만하다.

그리고 <그림 1>과 같은 구조로 서비스하는 블로그 서비스 중 로우 데이터만 데이터베이스에 저장하고 있고, 표시되는 페이지는 정적인(Static) Html로 만들어 제공하는 곳도 있다. 다시 정리해 보자면 <그림 1>과 같은 구조는 데이터의 양이 많아졌을 때 해결 방법을 제공하기 어려운 탓에 대규모 서비스의 블로그 형태로는 접합하지 않다.



<그림1> 블로그 스키마1


기능별로 분류한 블로그 스키마


<그림 2>는 각 블로그의 주요 특성에 의해 분류한 것이다. 초창기 카페나 동호회가 이런 구조로 만들어 졌다. 어느 정도 트래픽을 분산시킬 수도 있고, 각 블로그 간의 관계를 형성하거나 통합된 정보를 보여주기에 용이하다. 예를 들면 내가 링크한 블로그의 새로 올라온 글을 보거나 트랙백을 볼 때, 특정 분류의 관계된 정보를 보여주기에 편리한 구조이다. 게다가 트래픽도 어느 정도 분산시킬 수 있는 구조이다. 하지만 여러 가지 이유 때문에 blog_post 등에 트래픽이 집중될 경우 데이터를 분산시키기 어렵다는 단점을 가지고 있다.

<그림2> 블로그 스키마2


블로그 아이덴티티에 의해 분류한 블로그 스키마


<그림 3>은 <그림 1>에서 데이터베이스를 블로그의 특정 ID값에 의해 나눈 것이다. 각 블로그 ID에 분류 가능한 고유의 아이덴티티 값을 부여하고, 분류가능한 값에 의해 블로그가 어느 데이터베이스에 만들어 질지를 정한다.

<그림3> 블로그 스키마3

예를 들어 blogid의 맨 처음 문자를 분류 가능한 코드로 만들고 나머지를 일련번호로 구성한 blogid 값이 있다고 하면, blogid가 10000001이면 blog1 데이터베이스에, blogid가 30001234이면 blog3 데이터베이스에 들어가게 된다. 이 구조는 블로그의 특징을 잘 표현해서 보여주는 분류이다. 그리고 blog1, blog2, blog3는 같은 데이터베이스 구조를 가지고 있기 때문에 확장하기도 용이하고 트래픽이 몰리는 데이터베이스를 조절할 수 있다. 만약 관리자에 의해 트래픽을 예상하고 모니터링 할 수 있으면, 더 효율적으로 트래픽을 분산시키는 구조도 만들어 볼 수 있을 것이다.


블로그 관리 툴에 의해 분류한 블로그 스키마


<그림 4>에서 Blog_admin은 관리용 데이터베이스이다. blog1, blog2, blog3 등 블로그 데이터베이스의 총 블로그 개수, 블로그 포스트 개수 등 블로그에 관련된 정보들을 가지고 있다. 그리고 스타트 서버(stat server)나 애드 서버(ad server)를 운영하고 있는 서비스의 경우 해당 블로그의 데이터베이스 트래픽까지도 blog_admin에서 확인할 수 있다.

또, 현재 어느 데이터베이스의 트래픽이 많은지 로우 데이터는 어디에 많이 쌓이는지도 파악할 수 있다. blog_admin을 통해 나온 자료를 바탕으로 앞으로 만들어질 블로그를 어느 데이터베이스에 생성할 것인지를 정할 수 있는 것이다. 어떻게 보면 blog_admin 데이터베이스가 로드 밸런싱(road balancing)의 역할을 한다고 볼 수도 있다.

간혹 blog_admin을 보고 아무리 관리를 잘한다고 하더라도 예상치 못하게 어느 블로그의 데이터베이스에 트래픽이 몰리는 경우도 있다. 이런 경우도 데이터베이스 단위로 쉽게 백업과 리스토어를 할 수 있어 데이터베이스 서버간의 이동 또한 상당히 자유로운 편이다. 트래픽이나 관리자의 의도에 따라 전략적으로 데이터베이스를 이동할 수 있는 것이다.

잘 살펴보면 블로그도 일정한 생명주기를 가지고 있다는 점을 알 수 있다. 일괄되게 처음 만들 때부터 블로그를 잘 쓰고 있는 경우도 있겠지만, 많은 블로그 사용자들의 주기는 1년을 넘지 않는다. 이런 블로그를 위해 많은 노력이 필요하겠지만 노력만으로 해결할 수 없는 문제들에 봉착하게 마련이다.

이런 경우 blog1, blog2, blog3 순으로 계속 해서 분산 시키며 운영하게 될 경우 시간이 지나면 blog1의 트래픽은 많이 떨어질 것이다. 이때 blog_admin 데이터베이스를 통해 다시 트래픽을 blog1로 보내주는 구조도 가능해진다.

<그림 4>의 구조는 대용량의 트래픽도 쉽고 유연하게 대처할 수 있다. 하지만 블로그 간의 관계를 맺기가 어렵다는 문제가 있다. 예를 들면 사용자가 RSS로 등록한 블로그의 최근 포스트를 보고 싶을 때 blog1, blog2, blog3… 등을 모두 선택해야 하는 아주 비싼 쿼리를 날려야 한다. 하지만 이 쿼리는 가장 많이 쓰이는 쿼리 중 하나이다.
특히 데이터베이스가 서버단위로 분리가 되어 있을 경우는 더더욱 어려워진다. 데이터베이스간의 연결(join)은 웹서비스에서는 피해야 하는 쿼리 중에 하나이다.


<그림4> 블로그 스키마3-1


블로그 간의 관계형성이 가능한 블로그 스키마


<그림 5>의 구조는 블로그를 생성할 때나 blog_post를 쓸 때 blog_info와 blog_post의 정보를 blog_total에 똑같은 데이터를 복사한다. 그래서 blog_total에는 모든 생성된 블로그의 정보를 blog_info_total을 통해 가지고 있으며, blog_post 또한 blog_post_total을 통해 가지고 있다. 그래서 필요한 쿼리(개인 블로그나 RSS)는 blog1, blog2, blog3 각각의 데이터베이스를 통해 정보를 수집하고, 통합된 정보를 읽거나 최근에 올라온 포스트를 확인하는 경우 blog_total 데이터베이스를 통해 정보를 얻을 수 있다. Blog_total 데이터베이스는 각 블로그 간의 연결 고리 역할을 한다.

이때, blog_total의 데이터양이 많아질 우려가 있지만 이것은 블로그의 특성이나 웹 서비스의 특성을 잘 이해하고 있다면 크게 염려할 문제는 아니다. blog_total의 blog_post_total은 최근 1개월 정도의 포스트 자료만 가지고 있어도 유저들이 보고 싶어 하는 정보의 99%는 보여줄 수 있다. 그리고 1개월 후의 데이터는 스케줄러에 의해 삭제한다.

지금까지 블로그의 스키마(Schema)를 설명하고 데이터를 효율적으로 생산하고 분산하는 방법에 대해 몇 가지 예를 들어 설명해 보았다. 물론 앞에서 설명한 방법 이외에도 훨씬 다양하고 잘 설계된 블로그 서비스들도 많다. 특히 웹 서비스는 너무나 많은 환경과 변수, 요구사항들이 발생하기 때문에 같은 서비스라도 다양한 설계 방법이 나올 수 있다. 앞에서 설명한 블로그의 설계 방법은 여러 방법 중 일부라는 점을 잊지 말고, 자신의 기준에 맞는 서비스를 설계하는 것이 가장 중요하다.

<그림5> 블로그 스키마3-2


정보를 분류하고 관계를 맺는 태그 시스템


블로그와 더불어 태그는 웹2.0에서 정보를 분류하고 재생산 하고 관계를 맺는 도구로 최근 가장 이슈가 되고 있는 서비스이다. 요즘 새로 오픈하는 서비스들의 대부분이 태그를 통해서 정보를 분류하여 보여주는 방법을 사용하고 있다.

태그 시스템은 많은 개발자들에 의해 구조화 되어 왔으며 각 개발자들의 방식을 발전시켜가며 정형화되고 있다. 하지만 데이터베이스를 통한 거대(Scale)한 태그 시스템을 만드는 방법에 대해서는 아직 누구도 뚜렷한 해답을 내지 못하고 있으며 여러 논의만 진행되고 있는 상황이다.

del.icio.us 메일링 리스트에 “누군가 del.icio.us의 데이터베이스 스키마에 대해 좀 알려주세요” 같은 질문이 종종 올라온다고 한다. del.icio.us의 개발자인 조슈아 샤흐터(Joshua Schachter)의 인터뷰를 보면 이런 말이 있다.

“나는 mod_perl, HTML::Mason, 그리고 MySQL. 주로 사용한다. 이들은 매우 전형적인 툴이다. 최근 그 로드를 유지하기에는 몇몇 문제점을 가지고 있다. 그래서 지금 새로운 아키텍쳐를 찾고 있는 중이다. 태그는 표준 RDBMS로는 만족스럽게 표현하지는 못 한다”

맨 마지막 문구는 조슈아 샤흐터가 인터뷰나 메일의 답변을 통해 자주하는 말이 있다. 데이터베이스를 설계하는 입장에서는 다소 실망스러운 말이겠지만, 많은 웹 서비스의 경우 특히 큰 규모의 웹 서비스에서는 RDMBS로 구현하기 힘든 부분이 많이 있다.
조슈아 샤흐터는 이런 말도 한다.

“빠른 최적화는 피하라”

물론 요구분석에 따른 설계는 철저히 해야 하지만, 결과를 미리 예측하고, 섣부른 판단으로 최적화(optimize)하는 것보다 하나하나 부딪히며 경험을 통해 재설계(rearchitechting)하는 방법이 기술을 가장 빨리 습득하고 업무도 가장 빨리 진행할 수 있는 지름길이 된다(물론, 욕도 많이 먹는다).
이제 많은 개발자들로부터 커스터마이징 되고 있는 태그 시스템의 여러 가지 구현 방법에 대해서 이야기 해보자. 이 방법들 중 자신이 만들려고 하는 서비스에 적합한 방법을 찾고, 큰 규모의 태그 시스템을 구현할 수 있을지에 대한 해답도 찾아보기 바란다. http://tagschema.com/blogs/tagschema/에서는 태그의 구성요소를 <그림 6>과 같이 정의하고 있다.

<그림 6>에서 말하는 세 가지 구성요소로써의 태그 시스템의 구성은 특히, 연관관계는 굉장히 어렵고 복잡하다. 그리고 대부분의 웹 서비스들이 위의 세 가지 구성요소에서 태그 시스템을 구현하는 경우는 거의 없다.

<그림 7>은 우리가 일반적으로 생각하는 태그의 구조이다. 여기에서 사용자는 아이템과 태그에 종속적이다. 아이템은 태그로 분류할 수 있는 모든 단위를 뜻한다. <그림 7>에서의 user라는 구성요소로 관계설정 필요하다면 보통은 아이템 중 하나의 종류로 들어갈 수 있다.

아이템은 포스트가 될 수도 있고, 사진이나 북마크가 될 수도 있다. 그리고 태그가 아이템의 한 종류가 될 수도 있다. 아이템과 태그의 관계는 ‘Item(1-many) <---------> (0-Many)Tags’이다. 아이템이 태그를 0개 이상 가질 수도 있지만 태그는 아이템이 없이는 따로 존재할 수 없다.

태그 시스템에서 가장 일반적으로 쓰이는 관계를 설정하고 그에 따라 각 태그의 구조를 쿼리로 분석해보자.

1. Item(tag) : tag가 가지고 있는 Item List
2. Tag(item) : item이 가지고 있는 Tag List
3. Tag( ) : 중복을 허용하지 않는 모든 Tag list

현재 서비스 중인 대부분의 태그 서비스가 표시되는 방식은 이 세 가지 표현으로 소화할 수 있다. 이제 이 세 가지 관계를 통해 각 태그 스키마의 구현 방법에 대해 알아보자. 또, 앞으로 나올 태그 스키마의 이름은 http://www.pui.ch/phred/archives/ 2005/04/tags-database-schemas.html에서 나온 이름을 붙일 것이다.


‘MySQLicious Solution’ 태그 스키마


<그림 8>의 구조는 태그에 관한 스키마를 따로 구성하지 않은 형태이다. 하나의 테이블로 구성되어 있으며 분류로서의 태그를 구현했다기 보다 아이템에 대한 키보드와 비슷한 개념의 구조이다. 대부분의 태그에 대한 분류는 풀텍스트 서치(fulltext search)로 구현될 수 있지만 비용이 아주 많이 든다는 단점이 있다.

<리스트 1> MySQLicious relation query

Item(tag)
SELECT * FROM Item WHERE tags like ‘%blog%’
Tag(item)
SELECT tags FROM Item WHERE Itemid = ‘1’
Tag()
Query로 표현하기 힘들다.


‘Scuttle Solution’ 태그 스키마


<그림 9>처럼 태그에 대한 스키마를 정의해 놓으면 ‘MySQLicious’ 보다 효율적인 분류가 가능해 진다. 두 개의 테이블로 구성되어 있으며, 대부분의 서비스들은 이런 스키마를 ‘카테고리’라는 기능으로 구현한다.

이 구조의 스키마는 위의 관계를 표현하는 데에만 적용한다면 참 좋은 스키마 구조이다. 하지만 보다 기능적인 태그의 관리를 하고 싶다면 스키마로는 부족한 점이 많다.

<그림6> 태그의 구성요소

<그림7> 일반적인 태그 구조

<그림8> 태그 스키마 1 (MySQLicious)

<그림9> 태그 스키마 2 (Scuttle)

<리스트 2> Scuttle relation query

Item(tag)
SELECT i.* FROM Item i, Tag t
WHERE i.itemid = t.itemid AND t.tagname = ‘blog’
Tag(item)
SELECT t.tagname FROM Item i, Tag t
WHERE i.itemid = t.itemid AND t. itemid = ‘1’
Tag()
SELECT tagname FROM Tag
GROUP BY Tagid


‘toxi Solution’ 태그 스키마


<그림 10>의 구조는 ‘Scuttle’보다 태그 관리를 유용하도록 하기 위해 태그 테이블을 하나 더 두고 있다. 태그 맵은 아이템과 태그의 게이트웨이와 같은 역할을 한다. 태그 테이블은 태그를 다양한 방법으로 관리할 수 있도록 도와준다. 태그 서비스의 대부분은 ‘toxi’의 구조를 적용하고 있다.

<그림10> 태그 스키마 3 (toxi)


추가(Insert)나 갱신(UPDATE) 비용이 다른 스키마구조 보다 많이 들기는 하지만 그 비용보다는 선택(SELECT)의 비용이 훨씬 줄어들고 전체의 태그를 보여 주거나 태그에서의 링크 순으로 표시할 때 효과적으로 관리할 수 있다.

<리스트 3> toxi relation query

Item(tag)
SELECT i.* FROM Item i, Tagmap tm, Tag t
WHERE t.itemid = tm.itemidAND tm.tagid = t.tagid AND t.tagname = ‘blog’
Tag(item)
SELECT t.tagname FROM Item i, Tagmap tm, Tag t
WHERE i.itemid = tm.itemid AND tm.tagid = t.tagid AND i.itemid = ‘1’
Tag()
SELECT tagname FROM Tag


<그림 10>과 같은 구조의 ‘toxi’에서 약간의 테이블 구조를 변화 시키는 것만으로 자신의 서비스에 맞는, 아니면 경우에 따라 비용이 많이 절감될 수 있는 태그 스키마도 제공해 줄 수 있다.

<그림11> 태그 스키마 3-1 (toxi1)

<그림 11>은 <그림 10>에서 Tagid를 없애고 tagname을 기본 키로 두면서, Item에 Tags 필드를 추가한 구조이다. 이 구조는 테이블간의 연결을 많이 줄일 수 있는 구조이다. 하지만 추가(Insert), 갱신(Update), 삭제(Delete)의 비용이 ‘toxi’보다 두 배 이상 더 비싸다. 한편, 이용 패턴의 대부분이 선택(Select)에 편중되어 있기 때문에 서비스의 흐름을 파악한다면 오히려 비용을 줄일 수 있는 여지도 많이 보이는 구조이기도 하다.

<리스트 4> toxi relation query 2

Item(tag)
SELECT i.* FROM Item i, Tagmap tm
WHERE i.itemid = tm.itemidAND tm.tagname = ‘blog’
Tag(item)
SELECT tags FROM Item WHERE itemid = ‘1’
Tag()
SELECT tagname FROM Tag

<그림 11>과 같은 스키마 구조에서의 선택과 추가 등의 비용을 비교해보자.

선택(Select) 비용 : MySQLicious > Scuttle > Toxi > Toxi1
추가(Insert), 갱신(Update), 삭제(Delete) 비용 : MySQLicious
< Scuttle < Toxi < Toxi1

자신이 개발할 태그 시스템의 규모와 용도를 파악하고 위의 스키마를 커스터마이징 한다면, 분명 효과적인 태그 시스템을 개발 할 수 있을 것 이다.
마지막으로 앞에서 설계한 블로그의 포스트를 예로 Toxi 솔루션을 적용해보자.


Toxi 솔루션을 블로그에 적용하기


<그림 12>는 블로그의 스키마에서 나온 blog_post에 태그 스키마를 적용한 모습이다. 이 예에서는 블로그의 포스트를 기준으로 태그를 적용한 모습이지만 다른 아이템에서도 적용되는 모습은 대부분 비슷할 것이다. 그리고 <그림 12>에서 태그 맵과 태그 테이블을 잘 이용한다면 서비스를 이용하는 모든 사용자의 태그와 그 태그에 대한 모든 분류의 정보를 얻고, 사용자에게 어떠한 태그가 가장 인기 있는지의 여부도 파악할 수 있다.


<그림12> blog_post에 테그 스키마를 적용한 모습


<리스트 5> Blog tag relation query

Item(tag)
SELECT b.* FROM blog_post b, Tagmap tm
WHERE b.blogid = ‘10000002’AND b.blogid = tm.blogid AND b.blog_serial = tm.blog_serialAND tm.tagname = ‘blog’
Tag(item)
SELECT tags FROM blog_post
WHERE blogid = ‘10000002’ AND blog_serial = ‘123’
Tag()
SELECT tagname FROM Tag
WHERE blogid = ‘10000002’

지금까지는 한 가지 아이템으로서 태그와의 관계를 구성해 보았다. 같은 태그로 구성된 여러 아이템이 있다고 가정해보자. 블로그를 예로 들면 아이템으로 활용가치가 있는 것 중 포스트, 사진, 블로그 심지어 태그까지도 아이템으로 묶을 수 있다. 특히 블로거라면 이처럼 서로 다른 아이템을 태그를 통해 한꺼번에 분류하고 싶어할 수도 있다. 아이템으로서의 태그도 중요한 개념이긴 하지만 태그는 다른 태그와 조합하여 새로운 아이템으로 구성할 수 있다는 장점을 가지고 있기 때문이다.

이렇게 여러 아이템에 대한 태그와 관계를 스키마로 표현하는 것도 상당히 의미 있고 재미있는 일이다. 이렇게 하는 데에는 여러 가지 방법이 있다. ‘toxi’ 스키마를 예로 든다면 각 아이템마다 태그 맵 테이블과 태그 테이블을 따로 두고 연결(Union)하는 방법도 있고, 태그 맵에 각 아이템의 특성을 구분할 수 있는 필드를 추가하여 분류할 수도 있다. 많이 복잡하고 어려울 수도 있지만 기술적으로 가능하다면 충분히 설계할 만한 가치가 있는 분류 방법이다.

지금까지 태그 시스템에서 알아본 방법은 가장 일반적으로 사용되고 있는 스키마의 형태이다. 아직도 계속 이런 스키마에 대해서 연구 중이다. 태그 시스템을 DBMS가 아닌 파일 시스템으로 구현해 놓은 곳도 쉽게 찾을 수 있다.

현재의 웹 환경은 이전과 달리 다양하고 복잡한 스키마 구조를 요구한다. 그리고 쏟아지는 데이터의 분량 또한 엄청나다. 이러한 데이터들은 태그나 다른 툴에 의해 분류되고 공유되어 진다. 지금까지 블로그와 태그 시스템을 통해 그러한 웹 환경의 일부분을 살펴보았지만 앞으로는 더욱 다양한 서비스들이 쏟아져 나오고 우리들이 해야 할 일도 늘어날 것이다. 앞서 말한 것처럼 이러한 웹 환경에서 유저들이 생산해내는 정보나 데이터의 가치를 더 높여주는 것이야 말로 개발자들이 해야 할 몫이다.


참고자료

1. http://www.pui.ch/phred/archives/category/tags/
2. http://tagschema.com/blogs/tagschema/
3. http://www.randsinrepose.com/archives/2004/12/03/a_delicious_interview.html


스핑(Sping-트랙백 스팸)

‘핑 스팸’이라고도 부르는 스핑은 최근 블로그 사용자가 늘어나면서 골칫거리가 되고 있다. 대부분의 스핑은 트랙백을 통해 이뤄진다. 다른 방법으로 핑백(pingback)과 코멘트를 사용할 수 도 있지만, 핑백은 거의 사용하지 않고 코멘트는 관리자가 충분히 막을 수 있어 의미가 적다. 그 밖의 다른 몇 가지 방법도 대부분 막을 수 있는데 유독 트랙백 스팸만은 대책이 거의 없다. 다음은 이러한 스핑 문제를 해결하기 위해 블로거들이 내놓은 해결책이다.

● 오래된 퍼머링크에는 핑 수신을 하지 못하게 한다
대부분의 스팸은 최근 글에 쌓이지 않고 오래된 이전 글에 쌓이는 특성이 있다. 이 부분은 블로그들의 관리에 의해 오래된 글에 대해서는 핑 수신을 하지 못하도록 하여 스팸 트랙백을 막을 수 있다. 하지만 이는 퍼머링크라는 의미를 퇴색시키는 일이기도 하다.

● 존재하는 퍼머링크에만 핑 수신을 가능하게 한다
존재하지 않는 퍼머링크에 대해서는 트랙백이나 코멘트를 받지 못하도록 설정한다. 이 부분은 매우 중요하다. 하지만 많은 블로그 서비스들이 이 부분을 간과하는 경우가 많다. 대부분의 스펨은 일련번호 형식으로 자동으로 주소를 부여해서 핑을 보내기 때문에 존재하지 않는 퍼머링크에 대해서 스팸 핑을 보내는 경우가 대부분이다.

● 트랙백 주소를 어렵게 만든다
앞의 방법에 이어서 실행할 수 있는 방법으로 퍼머링크의 주소와 다르게 알기 어려운 랜덤한 트랙백 주소를 부여하는 방법이 있다. 이 방법을 통해 자동으로 보내지는 스팸의 많은 부분을 차단 할 수 있다.

● 블랙리스트의 ip, header, url등을 체크한다
현재도 많은 blacklist들의 ip 및 url정보들이 공유되고 있다. 그리고 자신의 블로그에 많이 보내어지는 spam들의 ip와 url등을 체크해서 막고, 공유함으로써 spam을 차단하는 방법이다.

● 스팸 필터를 이용한다
현재 설치형 블로그들에서는 플러그인 형태로 제공하는 많은 스팸 필터 도구들이 있다. 이런 도구는 블랙리스트 ip에 대한 필터와 함께 특정 단어가 들어가 있는 것들을 막는 방법으로 트랙백 스팸을 필터링한다.

● 전송된 IP와 트랙백 주소를 비교한다
대부분의 스팸은 보내는 IP주소와 알리고자하는 도메인이 일치하지 않는다. 대부분의 스패머(spammer)들은 오픈 프락시를 통해 스팸을 보내고 있다. 이와 같이 둘의 비교로 인해 많은 스팸을 줄일 수 있다. 하지만 이 경우도 이런 프락시를 통하는 정상적인 블로그가 스팸으로 간주될 수 있다.



제공 : DB포탈사이트 DBguide.net


출처 : 마이크로소프트웨어[2006년 6월호]
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by akiss4u

2007/08/13 15:15 2007/08/13 15:15
, , , ,
Response
No Trackback , No Comment
RSS :
http://akiss4u.co.kr/blog/rss/response/47

네이버 블로그를 사용하다, 게임샘이 첨 생겼을때 신기해서 모든 종류의 게임을 다 해본 기억이 있다. 특정 게임은 랭킹 상위에 들기 위해 밤을 셌던 기억도 있는데, 이 게임샘이 내 머리속에서 사라졌던 것 처럼 실제로도 사라져 버렸다.

이구아수 블로그에서 이 내용을 접하게 되었는데, 아래는 그 내용을 옮긴것이다.
----------------------------------------------------------------------------------
지난 5월 4일 네이버 커뮤니티 서비스 공지 게시판에 "아이템 골짜기 게임샘 서비스 종료 안내"라는 짧은 공지가 떴다. 네이버 블로그, 카페를 통해 판매되던 유료 아이템의 주요 카테고리 중 웹 게임을 5월 10일 부로 폐쇄한다는 내용이었다.

커뮤니티의 수익 모델 중 매우 중요한 요소로 인지되었던 것은 디지털 아이템의 판매였다. 싸이월드의 도토리로 구매할 수 있는 배경음악이나 스킨, 기능, 아이콘 등이 그 대표적인 예다. 네이버는 2003년 후반부터 블로그와 카페 서비스를 런칭한 후 2004년 8월 "아이템 골짜기"라는 디지털 아이템 판매처를 공개했다. 동시에 사이버머니인 "은화"도 함께 공개했다. 네이버는 싸이월드의 "아이템샵"과 "도토리"의 모방이라는 비판과 함께 블로그의 상업화라는 극렬한 반발에 직면해야 했다.

사용자들의 극렬한 반응과 별개로 인터넷 서비스 업계 내부에서는 과연 네이버가 싸이월드에 이어 디지털 아이템 판매에 성공할 것인가에 깊은 관심을 갖는 사람들이 많았다. 그로부터 약 2년 가까운 시간이 흐르도록 NHN은 분기 실적 발표나 일반적인 인터뷰에서 아이템 판매액에 대한 특별한 언급을 하지 않았다. 그리고 갑작스럽게 게임샘의 서비스 중단을 발표했다. 나는 아이템 판매에 대한 특별한 성과 발표가 없었던 점과 네이버 비즈니스 모델의 특성을 생각할 때 있을 수 있는 일이라고 생각했다. 그리고 이번 기회에 네이버 측의 커뮤니티 아이템 판매에 대한 의견을 직접 들어 보기로 했다.

나는 지난 5월 4일 네이버 커뮤니티 유닛장(부서장)인 이람님에게 네이버 커뮤니티의 아이템 비즈니스에 대한 몇 가지 질문을 이메일로 보냈다. 그리고 오늘 아침 장문의 답신을 받을 수 있었다. 원래 몇 차례의 이메일을 주고 받을 계획이었으나 최초의 답신이 매우 상세하여 수정이나 편집없이 답변 내용을 그대로 옮긴다.
(※ 주 : 이람 유닛장은 답변한 의견이 단지 개인적 의견이 아님을 강조했다)

블루문 : 게임샘 서비스 종료는 아이템 골짜기의 매출 부진의 반영인가? 질문을 하기 전에 네이버 블로그 무작위 100개를 대상으로 조사해보니 게임 아이템이 노출된 블로그는 5개가 되지 않았다. 반면 배경음악 아이템은 지속적으로 판매되고 있는데 게임샘의 경우 현저하게 판매율이 낮았던 이유를 무엇이라고 보는가?

이람 게임샘 서비스의 종료이유는, 게임샘이 이용자에게 충분한 가치를 제공하지 못했기 때문입니다. 그것을 게임샘의 매출부진 때문이라고 바꾸어 말해도 큰 차이는 없을 것 같아요. 화폐는 가치와 등가교환되기 위해 만들어진 것인데, 충분히 가치를 못 주었으므로 화폐가 되어 돌아오지 못한 것이지요.

그런 의미에서, 매출은 정말 냉정하고도 중요한 지표인 것 같습니다. 이용자는 가치가 있는 것에는 기꺼이 화폐를 내놓지만 물리적/심리적으로 가치가 떨어지는 것에는 절대로 그렇지 않으니까요.

무언가 발언하기 전에 늘 이용을 해보시던데, 아마 게임샘도 그러셨을것 같은데요. 게임샘 자체는 뮤직보다 훨씬 인터랙티브한 매개체가 없을까 하며 기획했었습니다. 사람들의 일상속는 대화 외에도 작은 이벤트, 그걸 매개로 한 웃음이나 소소한 잡담들이 있지 않겠는가 라는 것, 그러면서 <오락실> <오락기 빌려주기> 같은 것을 떠올렸구요.

그런데 이런 생각의 게임샘이 전혀 '가치가 없'었다라는 것보다는, '가치가 적었다' 혹은 서비스의 핵심에서 많이 먼 '부가적 가치'였다, '굳이 이 서비스에 없어도 큰 상관없는' 수준의 가치였다라는 것이 문제였겠죠.

생각해보면 발언과 경청, 토론과 대화를 메인으로 하는 소사이어티에서 오락성 이벤트의 가치가 부가적인 것은 당연할지도 모르겠습니다.

그러면서도 가치와 화폐 사이에 잦은 등가교환이 일어나게 하도록 가격도 낮춰보고, 기간도 늘려보고, 노출도 바꿔보고, 로직도 바꿔봤지만 여전히 '이용자가 기대하는 가치'와 '서비스가 제공하는 가치' 사이의 간극은 컸습니다.

디지털아이템이라고 해도 이곳은 시장이고, 시장의 논리가 지배합니다. 꾸준히 잘 선택되는 상품이 있는가 하면, 의욕적으로 진열했지만 외면당하는 상품도 있지요. 아이템골짜기라는 곳에서 게임샘이 그랬구요.

단, 이것은 '게임' 이라는 것이 근본적으로 가치가 없다기 보다는, 이런 가치를 본격적으로 제공하는 여러 서비스들이 있는데 굳이 블로그에서 해야 할 필요가 없다는 것이라고 해석하면 될 것 같습니다.

또한 게임샘은 웹생태계와 포탈의 역할이라는 각도에서 시작되었는데, 그때의 시작이유를 말해야만 이번의 종료이유도 설명할 수 있을 것 같습니다.

커뮤니티 아이템을 둘러싼 관계는 흔히 예상되는 대로 서비스제공자(네이버)와 이용자, 양자의 관계가 아니라 아이템제작자와 서비스제공자, 그리고 이용자라는 삼자의 관계입니다. (이 관계의 삼각형은 아이템을 둘러싼 여러 오해를 푸는 열쇠이며, 어쩌면 게임아이템과의 근본적 차이일 수도 있는 것 같습니다)

하루종일 노동하여 훌륭한 상품을 만들어 냈지만 이용자 접점이 부족한 제작자에게 이용자와의 접점을 풍부히 연결하고 원래의 서비스와 짜임새 있는 로직을 제공해서 공급자-서비스제공자-이용자 모두가 가치를 셰어할 수는 없을까 라는 것이지요.

게임샘 역시, 게임에 열정이 있던 한 플래시게임 벤처를 만나면서 함께 구상했는데요. 그런 종류의 회사들이 '타회사에 커스터마이징 납품' 해서 이용자를 만나던 기존의 방법 말고, 직접 이용자들에게 라이트한 게임을 만나게 하는 방법이 없을까 라고 생각하게 되었습니다.

게임샘이란 것을 만들면서 타 서비스제공자들도 관심을 보였고 시장이 열리는 것 같았지만 역시 서비스 핵심가치와 동떨어진 부가가치에 머물면서 전체적으로 부진했던 것 같습니다. 결국 플래시게임 회사들에게도 좋은 마켓플레이스를 제공하지 못하게 되었지요.

그러므로 게임샘 종료의 이유는

1) 이용자에게 드리는 가치가 부족했다, 그래서
2) 가치사슬의 시작인 공급자에게 원하는 만큼의 가치를 환급하지 못하게 되었다,

라고 요약할 수 있을 것 같습니다.

comment :
이람 유닛장의 이야기에는 게임샘에 대한 초반기 기획 의도와 블로그를 계속 운영하며 바뀐 생각을 읽을 수 있었다. 지금도 여전하지만 네이버는 블로그(Blog)에 대해 저널리즘보다는 즐기는 도구로써 접근하는 경향이 컸다. 그러나 현재에 와서 이람 유닛장은 "발언과 경청, 토론과 대화를 메인으로 하는 소사이어티"라고 블로그를 정의하고 있다. 게임샘을 살리기 위해 다양한 시도를 했지만 실패했다고 말하고 있는데 그 이유를 '시장 논리'로 이야기하고 있다. 그러나 애당초 블로그의 특성을 미니홈피의 그것으로 재정의하여 첫 발을 잘못 디딘 것에서 문제가 시작되지 않았나 생각해 볼 일이다.

이런 블로그의 근본적 특성을 이해하지 못한 상태에서 다양한 제작자가 참여하는 마켓 플레이스를 생성하려는 시도를 했으나 그 또한 실패로 끝났다. 결과적으로 소기의 사업 부문은 실패한 셈이지만 네이버 측에서는 블로고스피어의 특성을 깊이 인식하게 된 계기가 되었으니 손해는 아니다. 다만 의욕적으로 도전했다는 그 벤처 업체와 나머지 업체들이 성과적으로 실패의 교훈을 얻었는 지는 미지수다.

블루문 : 게임샘 서비스를 개시한 후 총 98 개의 게임이 공급되었는데 사용자에게 충분한 콘텐트 공급이었다고 생각하는가?

이람  1번에서 설명한 것이 근본적인 이유이구요, 동어반복일 수 있지만 콘텐트의 양에 집중해서 다시 설명해보겠습니다.

전체 콘텐트의 총량도 중요하겠지만, 개개 콘텐트의 하나하나의 가치가 적으면서, 결국 총량을 만들어줄 서플라이어의 참여가 부진했던 것 같습니다.

뮤직 아이템 역시 최초에는 단 몇곡만이 배경음악으로 제공되었지만 이용자들이 기뻐하고 그것을 자신의 아이덴터티이자 취향으로 받아들이면서 등가교환되자 현재는 수십만곡의 음악이 디지타이즈 되어 확대재생산 되었습니다.

comment :
총량을 만들어 낼 서플라이어 즉, 게임 제공업체의 부족의 이유로써 개개 콘텐트의 가치를 이야기하고 있다. 앞서 이야기했듯 블로그라는 특성에 유료 플래시 게임(웹 게임)이 어울리지 않는다는 판단이 우선하고 그 다음으로 개별 게임이 개인에게 매력적이었나는 반성이 있었던 것 같다. 아마도 해당 게임 제공 업체들과 많은 토론을 했으리라 생각한다. 그러나 네이버 블로그 사용자를 환호하게 만들고 새로운 문화적 트랜드를 만들 계기를 찾는데 실패했을 것이다.

배경음악과 관련한 이람 유닛장의 해설은 다소 이해가 되지 않는다. 2004년 음악샘이 시작될 때 공급된 음원은 단지 네이버 사용자의 환호 때문이 아니라 음원 저작권 관련 업체와 갈등이 이 시점에 일부 해결되어 포탈과 개별 음악 사이트에 정식 공급된 상황적 요인이 크다. 또한 이것은 네이버를 비롯한 포탈 서비스에 대한 불법 음원 단속도 상당한 영향을 끼쳤다고 본다.

블루문 : 싸이월드의 경우 아이템 판매가 주요 캐시 플로우를 장악할 정도로 비즈니스 로직의 주요한 부분을 차지하고 있다. 반면 네이버 아이템 골짜기는 서비스 로직의 주요한 부분을 차지하고 있는 듯 하며 주 수익은 검색 비즈니스에 대한 기여에서 발생하고 있는 듯 하다. 이 정도의 역할로도 충분하다고 생각하는가? 아니면 좀 더 공격적인 디지탈 아이템 판매에 매진해야 한다고 생각하는가?

이람 정확하게 잘 보셨습니다.

네이버의 아이템은 이것을 통해 꼭 돈을 벌어야 해서 유료화되었다기 보다는, 서비스에 필요하다고 생각하는 <부분>을 제공하는 과정에서 이 <부분>이 또다른 제공자의 노동에 의해 가치가 발생했기 때문에 이용하는 사람으로부터 <부분>의 가치와 화폐를 등가교환되도록 할 필요가 있었습니다. 유료가 아니면 제공할 수 없는 <부분>이라고나 할까요.

일러스트레이터, 픽셀디자이너, 포토그래퍼, 플래시게임개발자, 폰트디자이너.. 등등. 필요한 것을 제작하고 가치 있는 것이 선택되어 나가는 과정을 오픈하여 이들에게 충분히 가치 있는 마켓플레이스를 만드는 것이 이용자를 위해 우리가 오더하고 일방적으로 공급하는 것보다 낫다고 보았습니다.

comment :
질문의 내용과 다소 차이가 있는 답변이었지만 다른 의미에서 네이버가 왜 '아이템 골짜기'를 만들었고 유지하고 있는 가에 대한 답변이 되었다. 싸이월드의 아이템 판매는 주 수익원 역할을 하지만 네이버는 블로그나 카페를 통한 사용자 제작 콘텐트의 확보가 훨씬 중요한 의미를 갖지 않냐는 질문이었다. 때문에 아이템 판매와 매출에 대한 압박은 존재했겠으나 싸이월드의 경우보단 덜하지 않았느냐는 의미이기도 하다.

이에 대해 이람 유닛장은 서비스를 제공해야 하는데 그것을 외주사가 개발하는데 비용이 발생하고 그것 때문에 유료화했다고 답변하고 있다. 또한 이들과 관계를 통해 투명하고 쌍방에게 도움이 되는 마켓 플레이스를 형성할 계획이었다고 말하고 있다.

블루문 : 아이템 골짜기의 향후 발전 전략과 새로운 디지탈 콘텐트 제공 계획은 어떠한가?

이람  질문이 절묘하네요. 미래 전략에 대한 이야기이지만 조금 언급하도록 하겠습니다.

아이템골짜기는 현재 변화를 위한 프로젝트의 와중에 있습니다. 홍대앞 프리마켓, 요요기공원 플리마켓이 변화의 컨셉입니다.

서비스 변화의 이유는, 패러다임이 변하고 있기 때문인데요. 전에 우리가 주체로 보았던 제공자-이용자의 간격이 허물어지기 때문입니다. 옥션이란 서비스를 보면 4천만이 모두 셀러고 바이어인 세상이 온 것처럼. 여러 서비스들에서 디지털 아이템의 제공자와 이용자도 변하는 것을 볼 수 있습니다.

요즘 얼리틴(early tean)의 방과후 놀이는 포토샵이고 디지털팬시 만들기입니다. 자기가 포토샵으로 만든 시간표, 미니홈피 서명, 블로그 스킨들을 나누길 바라고 반응을 바라고.

그러므로, 만들 수 있는 모두가 만들고, 투명하게 교환, 혹은 판매할 수 있는 마켓플레이스를 통해 쓰고 싶은 모두가 쓰는 방식으로 이 방향으로 적극적으로 변경하려고 합니다.

또한 새로운 디지털 콘텐트 장르 역시 열어두려고 합니다. 유저메이드 디지털 콘텐트는 무엇이라고 될 수 있고, 다양하게 제안 받을 수 있을 것 같구요. 저희도 제공하고 유저도 제공하는 방식이 좋을 것 같습니다.

이를테면 블로그 부품 같은 것인데요. 저희가 실시간검색어 데이터를 제공해서 부품으로 장착하게 드릴 수도 있을 것 같구요. 네이버 메인의 시계나 달력, 날씨을 제공하면, 그대로 블로그에 부품으로 쓰셔도 되고 아니면 또 다른 시계나 달력의 모습으로 유저가 커스터마이징할 수 있는 모습 같은 것..아예 무언가를 유저메이드로 만들어 플리마켓에서 교환, 판매할 수도 있을 것 같아요.

향후 이정도의 컨셉과 아이디어를 가지고 움직이고 있다는 것으로 갈무리 하겠습니다.

이람 유닛장은 향후 네이버 커뮤니티의 아이템 개발 전략에 대해 프리마켓 혹은 사용자가 직접 제작하는 콘텐트를 팔고 살 수 있는 오픈 마켓 프로젝트를 구상 중이라는 답변을 했다. 그런 전략이라면 현재 네이버 붐의 '오이깎기'의 그림 그리기 툴이나 플레이의 간단한 동영상 편집 툴은 네이버 사용자를 학습시키기 위한 도구가 되고 있는 셈이다. 사용자들이 네이버라는 도메인에서 놀고 즐기며 네이버가 제공한 도구에 익숙해지고 그 도구를 사용하여 '판매할만한' 콘텐트를 생산하면 낮은 수준의 콘텐트 오픈 마켓을 생성할 수 있을 것이다. 불가능한 일은 결코 아니다.

네이버 커뮤니티의 아이템 비즈니스는 네이버의 다른 서비스와 밀접하게 연계되어 있다. 단선적으로 아이템 판매의 성과(매출) 이상의 과제가 있고 그것은 올해 상반기에 오픈된 서비스와 하반기에 계속될 네이버가 아닌 다른 웹 서비스에 영향을 받게 될 것이다. 네이버는 이런 정책과 프로젝트를 성공시키기 위해 과거보다 좀 더 적극적으로 외부 업체와 그룹 그리고 개인들에 집중할 필요가 있다. 네이버가 제공하려는 것은 포탈에 갖힌 솔루션으로는 해결할 수 없는 것이기 때문이다.

포탈의 과제는 보다 명확해지고 있다.

출처 : Iguacu Blog
----------------------------------------------------------------------------------
이 내용을 읽고 있으니 KT의 포토로그 Allpot을 준비 할 당시 사전 조사 단계에서 싸이월드의 어마어마한 아이템 수익에 놀랐던 사실이 세록세록 떠오른다. 그리고, 결국 네이버 커뮤니티의 아이템 전략은 ㅠㅠ 웹2.0에 UCC!!! 좀더 깊이 들어야 속내를 알겠지만 조금은 미약한 고객층을 대상으로 무모한 프로컨슈머적인 도전은 아닐까?

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by akiss4u

2006/05/10 10:50 2006/05/10 10:50
, ,
Response
No Trackback , No Comment
RSS :
http://akiss4u.co.kr/blog/rss/response/11