[Portfolio_Website:V.1] 통합 설계

simon_entj·2025년 1월 27일

Portfolio_Website:V.1

목록 보기
1/3
post-thumbnail

1. 프로젝트 개요

이 설계는 AWS S3를 기반으로 한 정적 웹사이트 호스팅, CloudFront를 이용한 콘텐츠 전송 네트워크(CDN) 설정, ACM 인증서 발급 및 Route 53을 통한 네트워크 연결을 포함한다. 또한, CI/CD Pipeline을 통해 코드 변경 시 자동화된 배포를 구현한다.

2. 시스템 아키텍쳐

2.1 아키텍처 개요

이번 프로젝트의 시스템 아키텍처는 AWS 서비스를 기반으로 정적 웹사이트를 안정적으로 배포하고 HTTPS를 통해 안전한 연결을 제공하도록 설계되었습니다. 주요 구성 요소는 S3, ACM, CloudFront, 그리고 Route 53이며, 각 구성 요소는 상호 연계되어 효율적인 데이터 전송과 인증을 지원합니다.

2.2 아키텍처 구성 요소

  1. Amazon S3 (Simple Storage Service)
    • 정적 웹사이트 호스팅을 위한 스토리지로 사용됩니다.
    • HTML, CSS, JavaScript 파일 등의 정적 콘텐츠를 저장합니다.
    • 퍼블릭 액세스 정책이 설정되었으며, CloudFront에서 S3의 객체를 원본으로 활용합니다.
  2. AWS Certificate Manager (ACM)
    • HTTPS를 위한 SSL 인증서를 발급 및 관리합니다.
    • CloudFront와 통합되어 HTTPS를 통해 안전한 데이터 전송을 제공합니다.
    • 도메인(cyan-inn.im) 및 하위 도메인(portfolio.cyan-inn.im, dashboard.cyan-inn.im)과 연동되었습니다.
  3. Amazon CloudFront
    • 콘텐츠 전송 네트워크(CDN)로 사용되며, S3 버킷의 정적 콘텐츠를 효율적으로 배포합니다.
    • 뷰어 프로토콜 정책: HTTP 요청을 HTTPS로 리다이렉션합니다.
    • OAC(Origin Access Control) 설정으로 S3와 안전하게 통합됩니다.
    • 캐싱 정책을 통해 빠른 데이터 전송 속도를 보장합니다.
  4. Route 53
    • 도메인 네임 시스템(DNS) 서비스로, 사용자 정의 도메인을 S3와 연결합니다.
    • 레코드 타입(CNAME)을 설정하여 CloudFront 배포와 연계되었습니다.
    • portfolio.cyan-inn.im, dashboard.cyan-inn.im, cyan-inn.im을 HTTPS로 연결합니다.

2.3 데이터 흐름

  1. 사용자가 브라우저에서 https://portfolio.cyan-inn.im과 같은 URL을 입력합니다.
  2. Route 53이 해당 도메인에 대한 DNS 요청을 처리하고, CloudFront 배포에 연결된 CNAME으로 라우팅합니다.
  3. CloudFront는 S3 버킷에서 정적 콘텐츠를 로드하여 사용자에게 제공합니다.
  4. ACM 인증서를 통해 HTTPS 연결이 암호화되어 안전한 데이터 전송을 보장합니다.

3. CI/CD Pipeline

3.1 Shell Script

CI/CD를 위한 Pipeline으로 Shell Script를 사용하여 Codecommit, S3, Cloudfront로의 작업 자동화

3.1.1 CodeCommit

  • AWS CodeCommit은 Git 기반의 소스 코드 저장소로 사용됩니다.
  • 모든 코드 변경 사항은 CodeCommit에 푸시(push)하여 기록 및 관리됩니다.

3.1.2 S3 (Amazon Simple Storage Service)

  • S3는 정적 웹사이트 호스팅을 위한 스토리지로 사용되며, 업데이트된 파일은 S3 버킷에 저장됩니다.

3.1.3 CloudFront

  • S3 버킷의 콘텐츠를 캐싱하고 사용자에게 제공합니다.
  • 파일이 업데이트된 후 CloudFront의 캐시를 무효화하여 최신 콘텐츠를 반영합니다.

3.2 CloudFront

3.2.1 캐싱 정책 : Managed-CachingOptimized

CloudFront의 Managed-CachingOptimized는 AWS가 제공하는 사전 정의된 캐싱 정책 중 하나로, 캐시 적중률을 극대화하고 콘텐츠 전송을 최적화하도록 설계된 설정입니다. 이 설정은 S3와 같은 원본에서 콘텐츠를 효율적으로 제공하는 데 적합합니다.

3.2.2 캐시 무효화(Invalidation)

  • CLI를 사용한 캐시 무효화:
    • AWS CLI를 통해 캐시 무효화를 자동화할 수도 있습니다.
      aws cloudfront create-invalidation --distribution-id <배포-ID> --paths "/index.html"
    • <배포-ID>는 CloudFront 배포 ID입니다.
    • 다수의 파일을 무효화하려면 -paths에 여러 파일 경로를 추가.
  • 캐시 무효화의 동작 방식
    💡 Note:

    1. **일회성 캐시 제거**:

    - 무효화 작업은 CloudFront가 기존에 캐시한 콘텐츠를 삭제하는 한 번의 작업입니다.

    - 삭제된 콘텐츠에 대한 다음 요청은 원본(S3)으로 전달되어 최신 콘텐츠를 가져옵니다.

    2. **새로운 캐시 생성**:

    - 무효화된 콘텐츠에 대한 요청이 발생하면, S3에서 새 데이터를 가져와 CloudFront가 다시 캐싱합니다.

    - 캐시된 데이터는 설정된 TTL 값(예: 기본 TTL 86400초) 동안 유지됩니다.

    3. **영구적 변경은 아님**:

    - 캐시 무효화는 캐시가 완전히 초기화되는 것이 아니라, 지정된 파일 또는 경로에 대해 한 번만 수행됩니다.

    - 이후 요청은 기존의 CloudFront 캐싱 정책(Managed-CachingOptimized)에 따라 동작합니다.

4. 운영 관리

이 포트폴리오 프로젝트는 콘텐츠나 코드의 변경이 자주 발생하지 않는 특성을 고려하여, 간소화된 운영 및 관리 프로세스를 설계합니다.

4.1 운영 관리

4.1.1 변경 관리

  • 단일 문서를 생성하여 코드 업데이트, 배포 상태, 주요 변경 사항을 기록.
  • 기록 항목:
    • 변경 날짜
    • 변경된 주요 내용 (예: 새로운 기능 추가, 페이지 업데이트 등)
    • CodeCommit 커밋 버전 ID or 커밋 메세지
    • 변경 사항 반영 후 테스트 결과
    • 관련된 에러 및 해결 방법

4.1.2 에러 관리

  • 발생한 에러 별 단일 작업 문서를 '노션 프로젝트'에서 생성 및 보관

4.3 모니터링

4.3.1 종합적인 비용 최적화 전략

  1. 비용 추적 및 경고 설정
    • AWS Budgets:
      • S3와 CloudFront 서비스의 월간 예상 비용 초과 시 알림.
    • Cost Explorer:
      • 시간 경과에 따른 비용 추이를 분석하고 이상 사용을 파악.
  2. 자동화된 비용 분석
    • AWS Cost Anomaly Detection:
      • 비정상적으로 높은 비용이 발생할 경우 경고.
    • Lambda와 Cost Explorer API 활용:
      • 비용이 급증한 서비스와 리소스를 자동으로 보고.

4.3.2 접속 상태 모니터링

  • lambda 함수를 통한 접속 상태 모니터링
  • 점검 결과를 discord 채널로 전송
profile
cyan-inn.im

0개의 댓글