기술 사례 연구

포트폴리오 아키텍처

robinhuang.nz는 채용 담당자가 읽기 쉬운 CV이자 기계가 읽을 수 있는 공개 프로필로 설계된 다국어 Astro 포트폴리오입니다. 정적 생성, 명확한 프로젝트 상태 라벨, 공개 JSON, 문서화된 보안 경계를 우선합니다.

공개 사이트 경계

정적 Astro 사이트는 포트폴리오 페이지, 로컬라이즈된 라우트, 블로그 콘텐츠, 읽기 전용 JSON 엔드포인트를 게시합니다. 비공개 메시지, 관리자 기록, 분석 데이터, 비밀 값, 저장소 파일은 공개하지 않습니다.

  • Astro 정적 생성
  • 영어 원본 기준 콘텐츠
  • EN, zh-CN, zh-HK, KO 라우트
  • 루트 JSON 및 버전 API 라우트

기계 판독 포트폴리오

공개 JSON은 페이지와 동일한 원본 데이터에서 생성되므로 프로젝트 상태, 자격 상태, 프로토타입 주의 사항이 항상 일관됩니다.

  • /profile.json
  • /cv.json
  • /projects.json
  • /certificates.json
  • /.well-known/portfolio.json
  • /public/search-index.json

어시스턴트 안전 모델

포트폴리오 어시스턴트는 공개 사이트 콘텐츠와 출처 링크로 제한됩니다. 요청은 검증과 제한을 거치며 비공개 메시지, 비밀 값, 프롬프트, 토큰, 관리자 데이터를 요구하면 거절합니다.

  • 공개 출처 인덱스만 사용
  • 입력 길이 및 마크업 검사
  • CORS allowlist 지원
  • 시간 초과 시 근거 있는 로컬 답변으로 fallback

보안 헤더

CSP, HSTS, referrer policy, content-type 보호, frame 제한, permissions policy를 문서화해 관리합니다. 인라인 스크립트는 정적 JSON-LD와 테마 초기화 용도로 제한합니다.

  • default-src self
  • 엣지에서 frame-ancestors none
  • strict-origin-when-cross-origin referrer
  • Permissions-Policy로 센서 및 결제 API 차단

성능 예산

핵심 페이지는 무거운 클라이언트 렌더링을 피합니다. 게시 전 production build로 이미지, CSS, 정적 JSON, 페이지 라우트를 확인합니다.

  • 정적 HTML 우선
  • 공개 쓰기 라우트 없음
  • 짧은 캐시 JSON 및 revalidation
  • 빌드 시 API 및 보안 테스트

배포 흐름

  1. 1

    원본 데이터

    포트폴리오, CV, 프로젝트, 자격, 현지화 문구는 타입이 정의된 로컬 소스 파일에 있습니다.

  2. 2

    Astro 빌드

    빌드는 로컬라이즈된 HTML, 정적 JSON, sitemap, OpenAPI, JSON-LD 메타데이터를 생성합니다.

  3. 3

    정적 호스팅

    GitHub Actions가 정적 결과물을 S3와 CloudFront에 게시하고 응답 헤더는 엣지에서 제어합니다.

  4. 4

    외부 API

    연락 및 포트폴리오 어시스턴트 API는 서로 격리된 serverless 서비스로, 각각 자체 검증, CORS, rate limit, 비공개 저장 경계를 갖습니다.

Robin Huang · IT 시스템 및 애플리케이션 지원 | 소프트웨어 테스트 및 자동화