최근에 블로그에 대해 전혀 무관심적이다가 요즘 눈에 자꾸 들어옵니다...

사실 듀라는 트래백이 먼지도 모르겠고 Rss 머 이것도 별로 모르겠고 그랬답니다.

그래서 찾아봤습니다..

가깝고도 먼 이웃 만들기「트랙백」
블로그는 네트워크 상에서 자신의 정체성을 나타낼 수 있는 좋은 표현 수단입니다. 블로그간 커뮤니케이션 수단에는 꼬리말, 트랙백, 핑백 등이 있는데, 이 중 트랙백은 기존의 게시판 활용에서 볼 수 없었던 새로운 의견 표현 방법과 다양한 활용 가능성을 제공해 관심을 끌고 있습니다.
박병권 (다음커뮤니케이션 카페팀 엔지니어)
2004/06/24
우리나라에서는 작년부터 1인 미디어 성격의 블로그 서비스들이 유행처럼 생겨났지만 무언가 빠진 듯한 느낌이 들었습니다. 사실 달력, 꼬리말, 카테고리 이러한 것들만으로 사용자들에게 기존의 게시판과의 차별성을 이해시키기는 힘듭니다. 개인의 정체성을 네트워크를 통해 표출하는 것에 정답이 있는 건 아니지만 기존의 블로그들은 더 ‘블로그답게’ 변해야 할 필요가 있었습니다. 그래서인지 요즘에는 트랙백, 관련 글 등의 이름으로 트랙백이 지원되는 블로그 서비스들이 많이 등장했습니다.

‘블로그다운’ 의사소통 방식
블로그란 사람입니다. 다만 존재하는 공간이 다를 뿐입니다. 우리는 실제 세계에 살고 있지만 블로그는 네트워크 상에서 살고 있습니다. 제가 블로그를 쓸 때면 가끔 애니메이션 ‘공각기동대’에 나오는 “네트워크로 다이브(dive)한다”라는 말이 떠오릅니다. 네트워크로 다이브해서 나의 정체성을 표현하고 네트워크에 다이브해서 들어온 다른 블로거들을 만나는게 블로깅(blogging)이라고 생각합니다.

구체적으로 말하자면 자신의 정체성을 표현한다는 것은 대개 글이 되겠지만 사진, 음악, 동영상 등 추상적인 멀티미디어로도 가능합니다. 기존의 웹 게시판을 통해 자신의 목소리를 표현해 온 네티즌들에게는 자신의 정체성을 표현하는 것은 자연스럽게 받아들일 수 있는 개념입니다.

사실 자신의 정체성을 표현하는 것보다 더 중요한 것이 링크입니다. 여기서 링크라고 말한 것은 단순히 연결된 상태만을 나타내는 것이 아니라 연결된 상태 위에서 이루어지는 상호 작용까지 포함한 말입니다. 사회에서 사람이 혼자 살 수 없듯이 네트워크상에서 블로그는 혼자 존재할 수 없고 다른 블로그들과 링크를 만들게 됩니다.

사람들은 말, 글 또는 몸짓 등을 매개물(medium)로 자신을 표현하고 다른 사람들과의 링크를 만들어 가지만 블로그는 네트워크라는 아직은 미숙한 사회에서 링크를 만들어가야 합니다. 이러한 블로그간의 링크 역할을 해줄 수 있는 매개물은 꼬리말(comment), 트랙백(trackback), 핑백(pingback) 등이 있습니다. 꼬리말의 경우 워낙 익숙한 표현 방법이라 따로 설명이 필요 없을 것이고 핑백은 다른 블로거의 포스팅(posting, 블로그에 쓰여진 하나의 글을 의미함)을 링크로써 인용한 경우 원래의 포스팅에 대해 링크가 걸렸다는 것을 알려주는 기능입니다.

이 글에서 설명할 내용인 트랙백은 서로 다른 웹 사이트간의 알림(notification)을 가능하게 해주는 기능으로써 핑백과 비슷하게 원래의 포스팅에 대해 링크를 알려주긴 하지만 역으로 자신의 의견을 원래의 포스팅에 보낼 수 있다는 점이 특징입니다.

트랙백의 아이디어는 매우 간단하지만 아직도 몇몇 유명 블로그에 ‘트랙백 테스트’, ‘트랙백이 뭐지?’ 등의 트랙백이 들어오는 것을 보면 처음 접하는 사람들이 이해하기는 쉽지 않은 것 같습니다. 필자 또한 처음 접할 당시 무엇에 쓰는 것인지 무슨 의미를 가지는 것인지 알아내기 위해 꽤나 고민했습니다.

트랙백의 원리
트랙백의 핵심은 매우 간단합니다. 누군가의 글에 대해 자신의 블로그에 의견을 피력하면서 그 글에 대해 “당신이 쓴 글에 대해 제가 의견을 썼습니다. 당신이 관심을 가질 것 같아서 일부 내용과 함께 알려드립니다”라고 알려주는 것이 바로 트랙백입니다. 트랙백을 사용할 때와 그렇지 않을 때 어떻게 커뮤니케이션이 이루어지는지 예를 들어 보겠습니다.

◆ 트랙백을 사용하지 않은 경우
디지털 카메라(이하 디카) 커뮤니티 사이트에서 활동하고 있는 A와 B가 있습니다. 어느 날 A는 B가 써놓은 글을 보게 되고 B가 자신이 가지고 있는 디카와 동일 기종을 가지고 있고 그 디카에 대한 활용팁 등을 적어 놓은 것을 보게 됩니다. 이 글을 본 A는 B의 글이 상당히 유용하지만 자신이 알고 있는 활용팁이 몇 가지 빠진 것을 보고 답글 또는 꼬리말 형식으로 B의 글을 보충해줍니다.

◆ 트랙백을 사용한 경우
디카에 대해 관심이 있는 A와 B가 각자의 블로그를 쓰고 있습니다. 어느 날 A는 B의 블로그에서 자신이 가지고 있는 디카와 동일 기종에 대한 활용팁을 적은 글을 보게 됩니다. A는 B의 글에 대해 꼬리말을 달아 자신만이 알고 있는 부분을 보충할 수도 있지만 그 글의 트랙백 URL을 찾아서 자신의 블로그에 나머지 활용팁을 적은 후 B가 자신의 글에 대해 관심을 가질 거라고 생각하고 B의 글에 대해 트랙백 핑을 보냅니다.

이 두 가지 예제는 웹 사이트에 올라온 글에 대해 트랙백을 사용한 경우와 사용하지 않은 경우 그 글에 대해 취할 수 있는 한 가지 행동 예를 보여 줍니다. 트랙백을 사용하지 않은 경우에 비해 트랙백을 사용한 경우가 가지는 가장 큰 차이점은 하나의 웹 사이트 공간(블로그)을 초월한 A와 B 사이의 링크가 만들어진다는 점과 A는 자신의 공간에서 자신의 의견을 독립적으로 표현할 수 있다는 것입니다.

프로토콜 명세
트랙백의 프로토콜은 매우 간단합니다. HTTP의 POST 메쏘드를 통해서 몇 가지 파라미터(매개변수)를 보내고 XML로 된 응답으로 성공, 실패 여부만 판단해주면 됩니다.

트랙백 핑 보내기
트랙백은 기본적으로 HTTP를 이용해서 보내게 됩니다. Trackback 1.0에서는 GET 메쏘드를 이용해서 보내게 되어있지만 현재 쓰이는 1.1에서는 POST 메쏘드를 이용하게 되어 있습니다. Content-Type request header와 url이란 이름의 파라미터는 필수 요소입니다. Content-Type은 항상 appli cation/x-www-form-urlencoded이어야 하고 파라미터의 charset을 다음과 같이 추가로 지정해줄 수도 있습니다.

[표 1] POST request body로 보낼 파라미터  
파라미터명 설명
titile 트랙백으로 전송되는 글 제목
excerpt 트랙백으로 전송되는 글의 일부분. 전송되는 글이 무엇인지 알 수 있을 정도의 양이면 된다. 보통 글자수로 잘라서 보내는데 movabletype에서는 255자가 넘는 경우 252자까지 자르고 "..."을 붙여서 보낸다. 트랙백을 위한 excerpt를 따로 작성하여 보내도 된다.
url 트랙백으로 전송되는 글의 permalink
blog_name 트랙백으로 전송되는 글이 쓰여진 블로그 이름

◆ Content-Type
application/x-www-form-urlencoded 또는 Content-Type: application/x-www-form-urlencoded; charset=EUC-KR 또는 Content-Type: application/x-www-form-urlencoded; charset=UTF-8
POST request body로 보낼 파라미터들은 [표 1]과 같습니다. 이 트랙백 요청을 보내는 것을 ‘트랙백 핑을 보낸다’라고 합니다. 예를 들어 어떤 글이 http://www.anyblog.com/ tb.cgi/7과 같은 트랙백 URL을 가지고 있다고 한다면 다음과 같은 HTTP 요청으로 그 글에 트랙백 핑을 보낼 수 있습니다. 여기서 트랙백 URL이란 트랙백 핑을 받는 프로그램이 실행되는 URL을 말합니다.

POST /tb.cgi/7 http/1.1
Host: www.anyblog.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 96

title=hello&excerpt=trackback%20test&url=http://www.mtgear.net/archieve/xx.html&blog_name=mtgear

알다시피 HTTP의 POST 메쏘드는 request body를 통해서 파라미터를 전달하고 HTTP request에서 request body가 있을 경우 Content-Length가 request body를 지정해줘야 합니다. 여기서 보내는 사람의 블로그는 mtgear(http:// mtgear .net)이고 제목이 hello라는 글을 쓰면서 글 내용의 발췌인 ‘trackback test’를 http://www.anyblog.com/tb.cgi/7이란 트랙백 URL을 가진 글에 트랙백 핑을 보내는 것입니다. 트랙백 핑을 보낸 후 성공한 경우에는 다음과 같은 응답을 받게 됩니다.

lt;?xml version=”1.0” encoding=”iso-8859-1”?><response><error>0</error> </response>

실패한 경우에는 다음과 같은 응답을 받게 되고 메시지의 텍스트 요소(text element)를 통해서 오류의 원인을 알 수 있습니다.

<?xml version=”1.0” encoding=”iso-8859-1”?><response><error>1</error> <message>The error message</message></response>

트랙백 핑을 보내는 프로그램 작성
그럼 실제로 트랙백 핑을 보내는 프로그램을 만들어 봅시다. 언어는 자바를 사용하겠습니다. 먼저 트랙백 자체를 나타내는 클래스를 만듭니다. 이 클래스에서는 트랙백을 통해서 보내지는 4가지 파라미터의 내용을 담고 있습니다.

 트랙백 자체를 나타내는 클래스

그리고 실제로 트랙백 핑을 보내는 클래스는 다음과 같습니다.

 트랙백 핑을 보내는 클래스

여기서 HTTP 부분은 직관적으로 이해하기 쉽게 하기 위해 jakarta commons의 HttpClient를 이용했습니다. send() 부분에서 application/x-www-form-urlencoded으로 Content-Type을 설정하고 request body 부분의 character set을 설정해주는 부분과 트랙백으로 전송될 4가지 파라미터를 설정하는 부분이 있습니다.

트랙백 핑에 대한 응답으로 HTTP response code인 200 OK를 받는지와 response body 부분에 <error>가 0인지를 검사해서 트랙백 핑의 성공 여부를 알 수 있습니다. 그러면 앞의 코드가 실제로 작동하는지 테스트해 봅시다. 테스트 코드는 junit을 이용해 작성했습니다.

 코드가 작동하는지 테스트

앞의 테스트에서 TrackbackPing의 constructor에 주는 값은 트랙백 URL이어야 합니다. 이 테스트가 성공한다면 실제로 트랙백이 보내진 것입니다.

트랙백 핑 받기
트랙백 핑을 받는 입장에서는 트랙백을 받아 자유롭게 저장해서 나중에 보여주기만 하면 되고 별다른 제약 사항은 없습니다. 다만 받는 입장에서는 글을 사람이 올리는게 아니라 다른 웹 사이트에서 올려진다는 것이 다를 뿐입니다.

트랙백 핑 목록 보기
어떤 글에 보내진 트랙백들을 보려면 HTTP GET 메쏘드로 트랙백 URL과 함께 __mode=rss 파라미터를 같이 주면 됩니다. 트랙백 핑이 POST 요청으로 보내지므로 GET 요청만으로도 트랙백 목록을 보여줘도 됩니다. 하지만 트랙백이 1.0에서 1.1로 올라오면서 GET에서 POST로 변한 것이기 때문에 아직은 GET 요청으로 트랙백 핑을 보내는 경우가 있다는 가정 하에서 앞의 파라미터를 따로 사용하는 것입니다. 하지만 추후에 발표될 트랙백 표준에서는 GET 요청만으로 트랙백 목록을 가져오도록 명세가 변한다고 합니다.

URL 자동 찾기, 오토 디스커버리
트랙백을 보내는 입장에서 트랙백 URL을 일일이 찾아 복사하기와 붙여넣기 후 트랙백 핑을 보낸다는게 꽤나 귀찮은 일입니다. 블로그 글을 읽으면서 그 글에 대한 트랙백 URL을 자동으로 찾아주는 기능이 있는데 그게 바로 오토 디스커버리(auto discovery)입니다.

최근 포털 사이트에서 서비스하는 블로그들을 보면 트랙백 또는 관련 글 등의 이름으로 트랙백이 지원되는데 다른 사람의 블로그에서 글을 읽다가 ‘관련 글 쓰기’ 등의 버튼을 누르고 글을 쓰면 그 글이 자동으로 자신의 블로그에 등록되고 읽고 있던 글에 트랙백 핑이 전송됩니다. 읽고 있던 글의 트랙백 URL을 몰라도 이렇게 트랙백 핑을 전송할 수 있도록 해주는 기능이 바로 오토 디스커버리입니다.

이는 트랙백 URL을 찾도록 HTML에 임베드된 RDF와 그 RDF에서 트랙백 URL을 찾아내는 부분으로 되어 있습니다. 트랙백 핑을 보내는 입장, 즉 트랙백 클라이언트는 블로그 글과 함께 제공되는 RDF에서 해당 글의 트랙백 URL을 추출해 냅니다. 이렇게 찾아낸 트랙백 URL은 전용 클라이언트 또는 웹 프로그램을 통해서 트랙백을 보내는데 이용됩니다. RDF 내에서 트랙백에 관련된 태그는 [표 2]와 같은 두 가지가 있습니다.

[표 2] RDF에서 트랙백에 관련된 태그  
trackback:ping 트랙백을 받을 수 있는 URL을 나타내며 오직 하나만 있다.
trackback:about 현재 글에 전송된 트랙백 핑을 보낸 곳의 트랙백 URL이 나타나며 여러개가 있을 수 있다.
예를 들어 A와 B가 C에 트랙백 핑을 전송했다면 C의 trackback:about에 A와 B의 트랙백 URL이 나타난다.

다음은 실제 블로그 글에 포함된 RDF의 일부 샘플이고 여기에서 trackback:ping으로 된 부분 http://mtgear.net/mt/ mt-tb.cgi/200이 이 글에 대한 트랙백 핑을 받을 트랙백 URL입니다.

 실제 블로그 글에 포함된 RDF

트랙백의 활용
트랙백은 원격 꼬리말과 컨텐츠 수집 등과 같은 방법으로 많이 활용되지만 그 이외에 여러가지 방법으로 활용될 수 있습니다.

원격 꼬리말
원격 꼬리말(Remote commenting)은 어떤 글에 대한 자신의 의견을 그 글이 있는 곳에 답글이나 꼬리말 등으로 남기는 대신 자신의 사이트에 관련된 글을 남기고 그 글을 트랙백 핑으로 보내는 것입니다. 이렇게 보내진 트랙백 핑은 외부 사이트에 쓰여진 글이 마치 자신의 사이트에 꼬리말처럼 남겨지는 효과를 줍니다. 또한 이렇게 트랙백으로 자신의 URL을 보냄으로써 블로그간의 링크를 형성할 수도 있습니다.

컨텐츠 수집
http://www.blogkorea.org가 트랙백의 컨텐츠 수집(content aggregation)을 적절히 활용한 예라 할 수 있는데 트랙백을 받는 주체가 특정 글이 아닌 일종의 추상적인 카테고리가 될 수 있다는 것을 응용한 기술입니다. 예를 들어 내가 관심있는 주제에 대한 카테고리를 만들고 그 카테고리에 대한 트랙백 URL을 공개한다면 그 주제에 대해 공통 관심을 가진 사람들이 자신의 블로그에 글을 남기면서 그 카테고리에 트랙백 핑을 보내줄 것입니다. 이렇게 보내진 트랙백 핑들은 같은 관심사에 대한 글일 것이므로 자동으로 관련된 글들, 즉 컨텐츠를 수집할 수 있습니다.

적극적으로 정보를 전달하는 트랙백
자신의 의견을 표현하고 남이 읽어주기를 바라는 기존의 피동적인 웹 이용 행태와 비교해보면 나의 의견을 읽도록 적극적으로 강요(?)할 수 있는 트랙백은 자기 주장이 뚜렷하고 솔직해지는 요즈음의 사회 흐름에 잘 부합할 수 있는 기능입니다. 그리고 앞의 두 가지 트랙백 이용 사례가 있지만 정보의 흐름을 적극적으로 컨트롤할 수 있다는 측면은 더 나은 응용 사례를 만들어낼 수 있습니다. 더군다나 이런 생각이 표준으로 어느 곳에서나 활용될 수 있다는 것이 얼마나 멋집니까! @

*  마이크로소프트웨어

+ Recent posts