단계별 헤드리스 롤아웃을 위한 CDN API

단계별 헤드리스 롤아웃은 Storefront Reference Architecture(SFRA) 및 컴포저블 스토어프런트와 같은 여러 스토어프론트 기술을 사용하여 단일 쇼핑 경험을 제공하는 기술입니다.

임베디드 CDN(eCDN) 영역은 SFRA 및 Managed Runtime에 동시에 트래픽을 라우팅할 수 있으므로, 컴포저블 스토어프론트의 점진적인 롤아웃을 지원합니다.

이 가이드에서는 Commerce API CDN 영역을 사용하여 트래픽을 Managed Runtime으로 라우팅하는 방법을 설명합니다.

  1. Admin API에 대한 권한을 부여하는 방법을 숙지합니다.
  2. 범위가 sfcc.cdn-zones.rw인 Account Manager API 클라이언트가 있어야 합니다.
  3. Managed Runtime에서 사용할 eCDN 영역 ID를 알고 있어야 합니다. 이 정보를 얻으려면 CDN Zones API의 getZonesInfo 엔드포인트를 사용합니다.
  4. updateSecuritySettings를 사용하여 영역에서 alwaysUseHttps를 활성화합니다. Managed Runtime은 HTTPS를 통한 트래픽만 지원합니다.
  5. 해당 영역을 포함하도록 SLAS API 클라이언트의 redirect_uri를 설정합니다.
  6. Managed Runtime 환경에 액세스할 수 있는 IP 세트가 제한되어 있는 경우 eCDN에서 사용하는 CloudFlare IP를 허용되는 IP 세트에 추가합니다.

createMrtRules 엔드포인트를 사용하면 트래픽을 Managed Runtime 환경으로 라우팅하는 규칙을 생성할 수 있습니다.

요청 본문에서 제공된 데이터를 살펴보도록 하겠습니다.

mrtHostname 값은 트래픽 라우팅을 위한 Managed Runtime 환경의 도메인입니다. 이 도메인은 mobify-storefront.com 도메인에서 호스팅되는 Managed Runtime 환경을 참조해야 합니다. 제공된 값이 기존 규칙에 사용되고 있는 경우 요청이 실패합니다.

Managed Runtime은 지원되는 유일한 라우팅 대상입니다.

expressions의 값은 Cloudflare 규칙 표현식의 배열로, 어떤 요청이 Managed Runtime으로 라우팅되는지를 제어합니다. 대부분의 구현에서는 라우팅 표현식을 하나만 사용하면 충분합니다.

제공된 표현식 외에 다음과 같은 기본 라우팅 규칙이 사용됩니다.

라우팅 변경 사항은 즉시 적용되며, 표현식과 일치하는 URL로 이동하면 Managed Runtime에서 가져온 컨텐츠가 반환됩니다.

표현식은 다음 기준에 따라 검증됩니다.

  • http.host는 정확히 한 번 발생해야 하며, eq 연산자 뒤에 와야 합니다. 값이 영역과 일치해야 합니다.
  • 다음 필드가 지원됩니다.
    • http.host
    • http.request.uri.path
    • http.request.uri
    • http.cookie
  • 표현식의 최대 길이는 3,072자입니다.
  • 최대 100개의 표현식을 영역과 연결할 수 있습니다.

단계별 롤아웃을 계속할수록 더 많은 요청을 Managed Runtime으로 라우팅할 수 있습니다.

라우팅 표현식을 수정하려면 getMrtRule을 사용하여 업데이트할 표현식과 관련한 규칙 세트 및 규칙의 ID를 가져옵니다.

다음으로 updateMrtRule을 사용하여 표현식을 업데이트합니다.

라우팅을 비활성화하려면 getMrtRule을 사용하여 규칙 세트 ID를 가져옵니다.

그런 다음 deleteMrtRuleset을 사용하여 해당 규칙 세트에 대한 Managed Runtime 라우팅을 제거합니다.

단계별 롤아웃을 완료하거나 새 사이트를 개설하는 경우, 단일 표현식을 사용하여 영역의 모든 트래픽을 Managed Runtime으로 라우팅하도록 선택할 수 있습니다.

eCDN을 사용할 수 없는 환경에서는 composable-hybrid-dev-server를 사용하여 eCDN 라우팅을 시뮬레이션합니다.

코드에 액세스하려면 Salesforce Commerce Cloud GitHub에 대한 액세스 권한이 필요합니다.