본문으로 건너뛰기
← Projects
Platform case study운영 중

ddongmy-os

포트폴리오와 개발 기록을 홈서버에서 직접 운영하는 현재 사이트입니다.

Challenge

해결하려던 문제

콘텐츠를 빠르게 발행하면서도 이미지 처리 비용을 사용자 요청에서 분리하고, 홈서버의 배포 상태와 장애 원인을 안전하게 관찰할 수 있어야 했습니다.

Next.js 애플리케이션과 Notion CMS를 연결하고, 이미지 가공은 Webhook 시점으로 옮겼습니다. 배포는 commit SHA 기반 GitOps로 통일하고 Kubernetes 조회 권한은 내부 exporter로 격리했습니다.

Scope

직접 다룬 영역

  • 01포트폴리오와 Development Log 화면
  • 02Notion Webhook과 R2 이미지 파이프라인
  • 03GitHub Actions · Argo CD 기반 배포
  • 04K3s 상태 조회와 운영 대시보드

Decisions

주요 기술적 선택

  1. 01

    이미지 가공을 쓰기 시점으로 이동

    Notion cover를 Webhook에서 WebP로 변환해 R2에 저장하고, 방문자는 Cloudflare CDN에서 완성된 이미지를 직접 받도록 구성했습니다.

  2. 02

    배포 상태를 commit SHA로 연결

    GitHub Actions가 이미지를 만들고 manifest의 SHA를 갱신하면 Argo CD가 원하는 상태를 K3s에 반영하도록 흐름을 통일했습니다.

  3. 03

    Kubernetes 권한을 앱에서 분리

    web-app의 ServiceAccount token을 비활성화하고, 최소 조회 권한만 가진 내부 status-exporter가 공개 가능한 상태만 전달합니다.

Technology

사용 기술

  • Next.js
  • TypeScript
  • K3s
  • Argo CD
  • Cloudflare R2