Write-Once 퍼블리싱 파이프라인 구축
Source: Dev.to
The problem
콘텐츠를 쓰는 것은 쉬운 일입니다.
올바른 메타데이터, 이미지, 태그, 정규 URL, 업데이트 등을 포함해 여러 플랫폼에 일관되게 퍼블리시하는 것이 보통 문제가 됩니다.
대부분의 워크플로우는 아직도 다음과 같습니다:
- 하나의 도구에서 콘텐츠 작성
- WordPress에 복사/붙여넣기
- 다른 플랫폼용으로 다시 포맷팅
- 어디에 무엇을 퍼블리시했는지 잊어버림
- 업데이트와 수정 사항을 추적하지 못함
나는 다른 무언가를 원했습니다:
한 번 작성. 여러 번 퍼블리시. 안전하게 업데이트. 모든 것을 자동화.
그 목표가 완전 자동화된, Git‑기반 퍼블리싱 파이프라인을 만들게 했습니다.
The core idea
이 시스템의 핵심 원칙은 간단합니다:
Markdown을 Git에 두는 것이 유일한 진실 원본이다.
그 외의 모든 것—퍼블리싱, 업데이트, 추적, 미디어 처리—은 여기서 파생됩니다.
파이프라인은 다음과 같이 설계되었습니다:
- 멱등성 (반복 실행해도 안전)
- CI 레벨에서 무상태
- 데이터베이스를 통한 상태 인식
- 새로운 플랫폼에 대한 확장성
- 컨테이너화 및 Kubernetes 준비
Current feature set
Content & metadata
- YAML 프론트매터가 포함된 Markdown
- 제목, 슬러그, 태그, 대표 이미지
- 플랫폼별 퍼블리시 스위치
- 선택적
force_update플래그
Publishing
- REST API를 통한 WordPress 퍼블리시 (자동 포스트 생성 및 업데이트)
- 초안 또는 퍼블리시 상태
- 자동 정규 URL 생성
Featured images
- WordPress REST API를 통한 미디어 업로드
- 기존 미디어 재사용 (멱등성)
- Markdown에 직접 이미지 선언
State tracking
- PostgreSQL 기반 상태 추적:
- 어떤 플랫폼에 포스트가 퍼블리시 되었는지
- 플랫폼별 포스트 ID
- 콘텐츠 해시
- 퍼블리시 타임스탬프
- 콘텐츠 변경 자동 감지
Safe updates
- 콘텐츠 해시 비교
- Markdown이 변경될 때 자동 포스트 업데이트
- 중복 퍼블리시 방지
- 수동 DB 편집 불필요
The workflow
- Markdown 파일을 작성하거나 편집
- Git에 커밋하고 푸시
- Jenkins 파이프라인 실행
퍼블리셔는:
- 프론트매터 파싱
- 콘텐츠 해시 계산
- PostgreSQL에서 플랫폼 상태 확인
- 필요 시 대표 이미지 업로드
- WordPress 포스트 생성 또는 업데이트
- 데이터베이스에 상태 업데이트
파이프라인은 안전하고 반복 가능하게 종료됩니다.
Flow diagram

Why this architecture works
Git is truth
모든 콘텐츠와 의도는 Git에 존재합니다. 숨겨진 상태나 UI‑전용 변경이 없습니다.
Database is state
데이터베이스는 일어난 일을 추적합니다, 해야 할 일을 추적하는 것이 아니라. 이 덕분에 업데이트와 수정이 안전합니다.
CI is stateless
Jenkins는 실행 사이에 아무것도 저장하지 않으므로 시스템을 포터블하고 컨테이너 친화적으로 만들 수 있습니다.
Platform abstraction
WordPress는 단지 하나의 퍼블리셔일 뿐입니다. Dev.to, Substack, Patreon 등 다른 대상 추가는 핵심 코드를 변경할 필요가 없습니다.
Where this is heading
파이프라인은 이미 백엔드 서비스처럼 동작합니다. 자연스러운 다음 단계:
- 더 많은 퍼블리싱 대상 추가 (Dev.to, Substack 등)
- 분석 및 참여 추적 도입
- 퍼블리셔를 컨테이너로 패키징
- Kubernetes 내부에서 실행
- 간단한 UI 추가
Publishing as a Service 로 제공: 하나의 레포, 하나의 워크플로, 하나의 진실 원본 — 수년간의 콘텐츠를 위해.
Final thoughts
“더 쉽게 퍼블리시하고 싶다”는 생각에서 시작해 완전 자동화된 퍼블리싱 플랫폼으로 발전했습니다:
- Git‑기반 콘텐츠 관리
- CI‑구동 실행
- 데이터베이스‑기반 상태 관리
- 멱등적이고 업데이트‑안전한 퍼블리싱
가장 좋은 점? 이제 콘텐츠를 쓰는 것이 유일한 수동 단계가 되었습니다. 나머지는 모두 자동화됩니다.