팟캐스트 플랫폼에 묶이지 마세요: 팟캐스트 피드는 직접 호스팅하세요
Libsyn이나 Podbean 같은 플랫폼에 팟캐스트를 호스팅하고 있다고 가정해 보겠습니다. 나중에 팟캐스트 플랫폼을 옮기기로 하면 어떻게 될까요? 이미 모든 사람에게 기존 플랫폼을 가리키는 RSS URL을 알려준 상태입니다.
예를 들어 Libsyn은 팟캐스트에 다음과 같은 RSS URL을 제공합니다:
https://feeds.libsyn.com/12345/rss
Apple Podcasts에 팟캐스트를 등록하고 청취자에게 RSS URL을 공유했을 때, 청취자를 팟캐스트 플랫폼으로 직접 연결한 셈입니다.
플랫폼을 옮기면 청취자의 팟캐스트 앱은 여전히 기존 URL에서 팟캐스트를 찾게 됩니다.
리다이렉트에 의존하지 마세요
대부분의 팟캐스트가 플랫폼을 옮길 때는 기존 플랫폼에 리다이렉트를 설정해 달라고 요청합니다. 예를 들어 Libsyn에서 Podbean으로 옮긴다면 Libsyn 설정에서 새 팟캐스트 URL을 가리키도록 설정하는 방식입니다.
이렇게 하면 청취자가 기존 Libsyn RSS URL에 접속할 때마다 Libsyn이 이전했다는 사실을 알려줍니다.
이 방식에는 두 가지 문제가 있습니다:
- 모든 팟캐스트 플레이어가 리다이렉트를 보고 URL을 업데이트하는 것은 아니므로, 계속해서 기존 피드만 확인하게 됩니다.
- 기존 팟캐스트 호스트가 계속 리다이렉트를 제공해 준다는 보장이 없습니다.
(2)번 문제가 특히 중요합니다. 팟캐스트 호스팅 플랫폼 입장에서는 고객이 플랫폼을 떠나는 것을 돕는 기능을 왜 제공하고 싶겠습니까? 플랫폼이 사업을 유지하기 위해 필사적인 상황에 처하면 리다이렉트는 가장 먼저 없앨 기능 중 하나일 가능성이 높습니다.
그렇다면 어떻게 해야 할까요? 청취자에게 팟캐스트 URL을 알려줘야 하는데, 이 문제를 어떻게 피할 수 있을까요?
직접 RSS 피드를 호스팅하세요
팟캐스트 플랫폼은 겉보기에는 하나의 서비스처럼 보이지만 실제로는 두 가지 서비스를 별도로 호스팅하고 있습니다.
Libsyn이나 Podbean에 팟캐스트를 호스팅하면 실제로는 두 종류의 파일을 대신 호스팅해 주는 것입니다:
- 오디오/비디오 녹음 파일
- 팟캐스트 RSS 피드, 즉 모든 녹음 파일의 목록
하지만 이 두 서비스는 사실 완전히 독립적입니다. 원한다면 두 곳의 다른 업체에서 각각 호스팅해도 아무 문제 없이 동작합니다. 실제로 저는 그렇게 하고 있으며, 다른 팟캐스트 운영자들에게도 같은 방식을 권합니다.
두 서비스 모두 기술적으로 크게 어렵지 않지만, 특히 (2)번 서비스는 비용이 매우 저렴합니다.
팟캐스트 녹음 파일은 길이와 음질, 영상 포함 여부에 따라 보통 50MB에서 5GB에 이르는 큰 파일입니다. 반면 팟캐스트 RSS 피드는 매우 작아서 보통 1MB 미만입니다. 호스팅 비용으로 따지면 청취자가 팟캐스트 피드를 1만 번 확인할 때마다 약 1센트 정도 듭니다.
팟캐스트 제공자 앞에 CDN을 두면 RSS 피드를 간단하고 저렴하게 호스팅할 수 있습니다. CDN은 RSS 피드를 제공하는 역할만 담당합니다. 팟캐스트 플레이어는 여전히 용량이 큰 오디오/비디오 파일을 팟캐스트 제공자로부터 직접 가져옵니다.
본인 소유의 커스텀 도메인으로만 배포하세요
https://feeds.libsyn.com/12345/rss 같은 URL을 청취자와 팟캐스트 디렉터리에 배포하면 Libsyn(또는 사용 중인 호스팅 제공자)에 묶이는 셈입니다.
대신 본인이 소유한 도메인 이름의 RSS URL만 배포해야 합니다.
예를 들어 팟캐스트 이름이 “My Awesome Dinosaur Podcast”라면 쇼를 위해 다음과 같은 도메인 이름을 등록할 수 있습니다:
- myawesomedinosaurpodcast.com
참고: 도메인 이름 구매 방법은 이 글의 범위를 벗어나므로 설명하지 않겠습니다. 어느 도메인 업체를 이용해도 괜찮습니다. 저는 개인적으로 DNSimple을 선호합니다.
청취자와 팟캐스트 디렉터리에 알려줄 팟캐스트 피드 주소는 다음과 같습니다:
팟캐스트 호스트를 옮기더라도 청취자는 아무것도 할 필요가 없습니다. 여전히 동일한 feeds.myawesomedinosaurpodcast.com URL로 청취하면 되기 때문입니다. 청취자는 Libsyn이나 Podbean URL을 본 적조차 없습니다.
직접 RSS 피드 호스팅하기
이 예시에서는 다음과 같은 예시 값을 사용하겠습니다:
https://feeds.libsyn.com/12345/rss: 팟캐스트 호스트가 사용하라고 알려준 RSS 피드입니다.https://feeds.myawesomedinosaurpodcast.com: 실제로 사용하게 될 URL입니다.
BunnyCDN 계정 만들기
먼저 BunnyCDN에 계정을 만드세요.
어떤 CDN을 사용해도 되지만 저는 Bunny가 간단하고 저렴해서 선호합니다.
Pull Zone 추가하기
Bunny 계정에서 CDN > Add Pull Zone으로 이동하세요.
Pull Zone의 이름을 정하세요. 어떤 이름이든 상관없습니다. 이 예시에서는 example12345라는 이름을 사용하겠습니다.
Origin Type에서 “Origin URL”을 선택하고 업체의 팟캐스트 RSS URL을 입력하세요:
“Standard Tier”를 선택하세요.
“Pricing Zones”에서는 가장 저렴한 옵션만 선택하고 나머지는 해제하세요. RSS 피드가 모든 지역에서 초고속으로 제공될 필요는 없습니다. 청취 경험에 영향을 주지 않기 때문입니다.
마지막으로 “Add Pull Zone”을 클릭하세요.
URL 테스트하기
Bunny가 Pull Zone을 생성하면 상단에 생성된 b-cdn.net URL로 접속해 보세요:
정상적으로 동작했다면 해당 링크로 접속했을 때 팟캐스트 RSS 피드가 표시됩니다(브라우저가 파일을 자동으로 다운로드할 수도 있습니다).
모든 것이 정상적으로 동작한다면 어려운 부분은 끝났습니다. 이제 커스텀 도메인 이름만 설정하면 됩니다.
커스텀 도메인 연결하기
방금 만든 Pull Zone에서 General > Hostnames로 이동하세요.
다음과 같이 팟캐스트 도메인을 입력하세요:
feeds.myawesomedinosaurpodcast.com
참고: 서브도메인이 반드시 feeds일 필요는 없습니다. 원하는 무엇이든 사용할 수 있지만 저는 feeds가 유용한 관례라고 생각합니다.
Bunny가 도메인 등록 기관 쪽에서 활성화해야 하는 DNS 레코드를 알려줄 것입니다.
도메인을 등록한 곳으로 돌아가 Bunny가 보여준 DNS 항목을 추가하세요.
도메인 등록 기관에 CNAME 레코드 추가를 마쳤다면 다시 Bunny 화면으로 돌아와 “Verify & Activate SSL”을 클릭하세요.
캐시 설정 재정의하기
Bunny(그리고 모든 CDN)는 데이터를 적극적으로 캐시합니다. 다른 서버의 부하를 줄이기 위해 설계되었기 때문에 Bunny는 기본적으로 “Origin URL”(팟캐스트 제공자)에 가끔씩만 업데이트를 확인합니다.
이 때문에 청취자가 제때 업데이트를 받지 못할 수 있습니다. 팟캐스트를 업데이트했는데 Bunny가 오래된 사본을 제공해서 하루 이틀 동안 아무도 새 내용을 보지 못하는 상황은 원치 않을 것입니다.
Pull Zone에서 Caching > General로 이동하면 Bunny가 오래된 팟캐스트 피드를 제공하는 것을 방지할 수 있습니다.
“Cache Expiration Time”을 “Override: 20 minutes”로 변경하세요.
이렇게 하면 Bunny가 팟캐스트 피드 사본을 최대 20분 동안만 저장하도록 설정됩니다. 선호에 따라 이 시간을 늘리거나 줄일 수 있습니다.
“Do not cache”는 권장하지 않습니다. 인기 팟캐스트의 경우 수백 명의 청취자가 동시에 피드를 확인할 수 있는데, 그렇게 되면 Bunny가 팟캐스트 제공자에게 한꺼번에 수백 건의 요청을 보내게 됩니다. 그러면 팟캐스트 제공자가 Bunny의 요청을 차단할 수 있고, 결국 청취자에게 오류 메시지가 표시될 수 있습니다.
정규 URL 교체하기
RSS 피드의 한 가지 미묘한 점은 다음과 같은 self 태그가 포함되어 있다는 것입니다:
<atom:link href="https://feeds.libsyn.com/12345/rss" rel="self" type="application/rss+xml"/>https://feeds.myawesomedinosaurpodcast.com URL을 배포하더라도 일부 팟캐스트 플레이어는 원래 URL 대신 self 태그를 우선시하여 CDN에서 호스팅하는 버전을 우회할 수 있습니다.
이를 방지하려면 커스텀 Bunny 엣지 스크립트를 사용해야 합니다.
- Edge Platfrom > Scripting으로 이동하여 “Add Script”를 클릭하세요.
- “Deploy and edit on Bunny.net”을 선택하세요.
- 스크립트 이름을 “Replace RSS self tag”로 지정하세요.
- Type을 “Middleware”로 변경하세요.
- “Add Script”를 클릭하세요.
- 코드 편집기에서 다음 코드를 입력하세요:
import * as BunnySDK from "https://esm.sh/@bunny.net/[email protected]";
// Replace with the vendor-specific URL to your RSS feed.
const SOURCE_URL = "https://feeds.libsyn.com/12345/rss";
// Replace with the domain name that you own.
const TARGET_URL = "https://feeds.myawesomedinosaurpodcast.com";
/**
* Modifies the response from the origin to replace a specific URL.
*
* @param {Context} context - The context of the middleware.
* @param {Request} request - The current request done to the origin.
* @param {Response} response - The HTTP response or string.
*/
async function onOriginResponse(context: { request: Request, response: Response }): Promise<Response> | Response | void {
const responseText = await context.response.text();
// Replace the URL with simple string replacement
const modifiedText = responseText.replace(SOURCE_URL, TARGET_URL);
// Create a new response with the modified text
return new Response(modifiedText, {
status: context.response.status,
statusText: context.response.statusText,
headers: context.response.headers
});
}
BunnySDK.net.http.servePullZone()
.onOriginResponse(onOriginResponse);마지막으로 “Connect Pull Zone” 버튼을 눌러 이 스크립트를 RSS 피드에 연결하세요.
완료되었습니다!
올바르게 설정했다면 이제 팟캐스트 피드를 제공하는 커스텀 URL이 생겼을 것입니다.
이제 직접 제어할 수 있는 URL을 갖게 되었습니다. 나중에 팟캐스트 플랫폼을 옮기게 되더라도 BunnyCDN Pull Zone의 “Origin” 필드만 업데이트하면 됩니다. 리다이렉트를 처리할 필요도 없고 기존 플랫폼이 종속을 시도할까 봐 걱정할 필요도 없습니다.
글을 무작위로 읽기


