피드로 돌아가기
Generating valid .ics calendar feeds at build time
Dev.toDev.to
Infrastructure

Serverless 환경에서 Build-time Emitter를 통한 Zero-infra 캘린더 피드 구현

Generating valid .ics calendar feeds at build time

Mark2026년 6월 14일6intermediate

Context

Cloudflare Pages 기반의 Static Site 구조로 인해 요청 시점에 데이터를 처리할 Backend API 및 ISR 환경 부재. 캘린더 구독 서비스 제공을 위해 서버 없이 .ics 피드를 생성하고 배포해야 하는 제약 상황 발생.

Technical Solution

  • Build-time Post-processor 도입을 통한 정적 .ics.json 파일 생성 구조 설계
  • Single Source of Truth 원칙에 기반하여 동일 JSON 데이터를 웹 페이지와 피드 파일에 동시 반영함으로써 데이터 불일치 제거
  • RFC 5545 규격 준수를 위해 CRLF 줄 바꿈, 75-octet 기준의 Byte-level Line Folding, Exclusive DTEND 날짜 처리 로직 구현
  • Deterministic UID 생성 방식을 채택하여 재빌드 시 구독자의 중복 이벤트 발생 방지
  • MIME Type 최적화를 위해 _headers 파일을 통한 text/calendar 컨텐츠 타입 명시 및 Cache-Control 설정
  • Google/Outlook 전용 Deep-link URL 생성 로직을 통해 별도 파일 없이 즉각적인 이벤트 추가 기능 구현

- 캘린더 피드 구현 시 DTEND의 배타적(Exclusive) 성격과 CRLF 개행 문자 준수 여부 확인 - 다국어 지원 시 단순 기계 번역이 아닌 지역별 관용어(Locale-specific terms)를 반영한 String 파일 관리 - 정적 사이트에서 동적 데이터 피드가 필요할 경우, 런타임 API 대신 빌드 단계의 Emitter 패턴 검토 - UTF-8 멀티바이트 문자가 포함된 텍스트 폴딩 시 Byte 단위 길이를 기준으로 절단 지점 계산

원문 읽기