본문 바로가기
2. 기본 인프라 IaaS

OCI 오브젝트 스토리지에 CloudFlare CDN 서비스로 커스텀 도메인 연결하기 (오브젝트 스토리지 URL 변경)

by MY잭슨 2022. 10. 8.
Q : OCI 오브젝트 스토리지 사용 중이고 URL을 커스텀 도메인으로 변경하고 싶은데 가능한가요?

 

 

사전 정보

1. OCI 오브젝트 스토리지는 아래 URL 형식으로 고정되어 있어서 URL 변경이 불가능합니다. 

https://objectstorage.{region}.oraclecloud.com/n/{object-storage-namespace}/b/{bucket}/o/{filename}

https://objectstorage.ap-seoul-1.oraclecloud.com/n/xxxxxxxxxxx/b/bucket-CDN-BR/o/IMG1-16MB.png

 

2. OCI CDN 서비스는 로드맵에 있고 아직 서비스 준비 중입니다.

 

3. 현재는 북미, 캐나다 리전들과 Frankfurt, Marseille, and Singapore 리전들만 CloudFlare와 Bandwidth Alliance 파트너쉽이 되어 있어 CloudFlare CDN을 통해 OCI 오브젝트 스토리지에서 데이터를 읽을 경우 OCI 네트워크 아웃바운드(egress) 비용이 발생하는데 Bandwidth Alliance 파트너쉽 맺어진 리전들에 한해서 CloudFlare로 향하는 경우 무료로 제공합니다. (egress from OCI object storage to CloudFlare) 즉, CloudFlare의 비용 체계만 따르면 됩니다. (OCI 스토리지 비용은 지불 필요)

Oracle Cloud Infrastructure already offers low networking prices that enable organizations to move significant quantities of data for less. Inbound data transfer is free and outbound is free up to the first 10TB for each regional zone or product SKU. Together with Cloudflare, Oracle will offer mutual customers zero egress for data sourced from Oracle Cloud Infrastructure (OCI) Object Storage starting with regions in North America.

 

사전 준비

1) 오브젝트 스토리지 생성

CDN의 효과도 테스트해 볼 예정이어서 물리적으로 거리가 가장 먼 브라질 상파울루 리전에 오브젝트 스토리지 생성했습니다.

 

2) CloudFlare 계정과 도메인

이번 테스트를 위해 CloudFlare 무료 계정을 생성하였고 빠른 셋업을 위해서 CloudFlare 유료 도메인을 구입하였습니다. 다른 구입처 도메인은 추가적인 이관/등록 작업이 필요합니다. 

 

CloudFlare 구성
  • 웹사이트를 구성합니다.

 

  • 구입한 도메인을 입력한 후 Add Site 

  • 무료 플랜이 있어서 선택

 

  • DNS Record를 확인하고 등록
Type Name Content Proxy Status
CNAME ohmykorea.net objectstorage.sa-saopaulo-1.oraclecloud.com Proxied
CNAME www objectstorage.sa-saopaulo-1.oraclecloud.com Proxied

서울리전 테스트 때 캡쳐한 이미지로 sa-saopaulo-1 리전으로 등록

 

  • Name Server를 적용

 

  • Page Rule 생성

 

  • Worker 서비스 생성

 

  • HTTP router

 

originUrl 은 샘플이므로 상황에 맞는 값으로 치환해야 합니다.

addEventListener('fetch', event => {
  handleRequest(event);
})

/**
 * Respond to the request
 * @param {Request} request
 */
async function handleRequest(event) {
  var url = new URL(event.request.url);
  if(url.pathname.endsWith('/')) {
    var path = url.pathname + 'index.html';
  } else {
    var path = url.pathname;
  }
  var originUrl = 'https://objectstorage.{region}.oraclecloud.com/n/{namespace}/b/{bucket}/o' + path + url.search;
  event.respondWith(fetch(originUrl));
}

 

  • Workers Routes에서 Add route

 

설정은 다 마쳤고 URL Rewrite가 잘 작동하는지 CDN 서비스가 잘 작동하는지 확인합니다.

브라질 상파울루 리전에 두 개의 이미지 파일을 올렸습니다. 

각 로드테스트 시 매번 브라우저 캐시 삭제를 통해서 브라우저에 저장되지 않고 직접 읽어올 수 있도록 했습니다.

결과는,
커스텀 도메인으로 오브젝트 스토리지의 데이터를 잘 읽어올 수가 있었고

오브젝트 스토리지 직접 연결과 비교해 CDN이 적용되어 HIT 된 경우는 현저하게 속도가 줄어든 것을 볼 수 있습니다.
파일명 목적 결과 URL
IMG-1-16MB-Direct.png  오브젝트 스토리지 직접 연결 URL 5.70s ~ 6.14s https://objectstorage.sa-saopaulo-1.oraclecloud.com/n/xxxxxxxxxxx/b/bucket-CDN-BR/o/IMG1-16MB-Direct.png
IMG-1-16MB-CDN.png CloudFlare 설정된 URL 1.66s ~ 5.60s https://ohmykorea.net/IMG1-16MB-CDN.png

 

 

 

 

참고

http://blog.osdev.org/oci/2020/10/15/oci-objectstorage-website.html

https://www.oracle.com/news/announcement/oracle-joins-cloudflare-bandwidth-alliance-2021-11-10/

 

 

댓글