AWS 클라이언트 배포

원도훈·2024년 12월 1일
1

AWS(Amazon Web Services)는 현대 개발 환경에서 필수적인 클라우드 플랫폼입니다. 서비스가 방대하다 보니 어디서부터 배워야 할지 고민될 때가 많죠. 특히 제한된 시간 안에 실무에서 곧바로 사용할 수 있는 기술을 배우는 것은 쉽지 않은 일입니다. 오늘은 AWS의 여러 서비스 중에서, 프론트엔드 개발자가 클라이언트를 배포하는 데 꼭 필요한 핵심 부분만 다뤄보려고 합니다. 이 글을 통해 S3와 CloudFront를 활용하여 빠르고 안정적인 배포를 어떻게 자동화할 수 있는지 설명해 드릴게요.

AWS S3와 CloudFront

AWS에는 200개가 넘는 서비스가 있지만, 우리가 실무에서 가장 중요하게 활용할 서비스는 바로 S3와 CloudFront입니다. 이 두 서비스는 클라이언트를 배포하고 전 세계적으로 빠르게 사용자에게 전달하는 데 최적화된 도구입니다.

  • S3(Simple Storage Service): 정적 파일을 저장하고, 웹 애플리케이션의 정적 콘텐츠를 호스팅하는 데 사용됩니다. 클라이언트 애플리케이션을 배포할 때 S3 버킷에 파일을 업로드하면 간단하게 웹에 공개할 수 있습니다.
  • CloudFront: 전 세계적으로 콘텐츠를 빠르고 안정적으로 전달하기 위한 CDN(Content Delivery Network) 서비스입니다. CloudFront를 통해 S3에 저장된 파일을 전 세계 사용자에게 빠르게 전송할 수 있습니다. 이로써 배포된 애플리케이션의 사용자 경험을 크게 향상시킬 수 있죠.

이 두 가지를 조합하면 단순하면서도 강력한 클라이언트 배포 시스템을 구성할 수 있습니다. 이제 이 배포 과정을 더욱 효율적으로 만들어줄 자동화 방법을 살펴볼까요?

배포 자동화: GitHub Actions 활용하기

배포 과정은 매번 수동으로 하기에는 번거롭고 실수가 발생할 여지도 많습니다. 이런 반복적인 작업을 자동화하기 위해 GitHub Actions를 사용할 수 있습니다. GitHub Actions를 통해 코드를 커밋할 때마다 S3에 자동으로 업로드되고, CloudFront를 통해 배포가 갱신되도록 구성할 수 있습니다.

  • 코드를 커밋하면 자동으로 배포: GitHub에 새로운 코드가 푸시되면, GitHub Actions가 자동으로 S3에 파일을 업로드하고 CloudFront를 무효화하여 최신 상태로 갱신합니다.
  • 효율성 극대화: 수동 배포를 줄이고, 변경 사항을 빠르게 반영할 수 있습니다. 이를 통해 실제 개발 및 배포 작업에서 효율성을 높일 수 있습니다.

GitHub Actions와 같은 CI/CD 도구를 사용하면 배포 자동화가 매우 쉬워지며, 코드 품질과 배포 속도를 동시에 높일 수 있습니다. 실무에서 이렇게 자동화된 배포를 통해 개발자들이 개발에만 집중할 수 있는 환경을 구축하는 것이 목표입니다.

실무에서 S3와 CloudFront로 클라이언트 배포하기

배포를 위해 다음과 같은 간단한 과정을 거칩니다:

  1. S3 버킷 생성 및 정적 웹 호스팅 설정

    • S3에 새로운 버킷을 생성하고, 정적 웹 사이트 호스팅을 활성화합니다. 이 버킷은 배포될 정적 파일(HTML, CSS, JavaScript 등)을 저장하는 저장소 역할을 합니다.
  2. CloudFront 배포 생성

    • CloudFront를 통해 S3 버킷에 있는 파일을 전 세계 사용자에게 빠르게 전달할 수 있습니다. CloudFront 배포를 생성하고, S3 버킷을 오리진으로 설정하면 됩니다.
  3. 배포 자동화

    • GitHub Actions로 자동 배포를 설정합니다. 코드를 커밋하면 자동으로 S3에 파일이 업로드되고, CloudFront가 갱신되도록 설정하여 최신 버전이 즉시 사용자에게 반영됩니다.

이렇게 하면 실무에서 매우 중요한 반복 배포 작업이 자동화되고, 안정적인 배포 환경을 갖출 수 있습니다. GitHub Actions의 워크플로우 파일을 작성하여 이런 과정을 간단하게 구성할 수 있습니다.

name: Deploy To S3 And Invalidate CloudFront

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: GitHub Repository 가져오기
        uses: actions/checkout@v3

      - name: 의존성 설치
        run: npm install

      - name: 빌드하기
        run: npm run build

      - name: AWS 인증 설정
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-region: ap-northeast-2
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

      - name: S3 기존 파일들 전체 삭제
        run: |
          aws s3 rm --recursive s3://your-bucket-name

      - name: 빌드된 파일 S3에 업로드
        run: |
          aws s3 sync ./build s3://your-bucket-name

      - name: CloudFront 무효화
        run: |
          aws cloudfront create-invalidation --distribution-id YOUR_DISTRIBUTION_ID --paths "/*"

위와 같이 설정하면 코드가 푸시될 때마다 자동으로 빌드, 업로드, 그리고 배포가 갱신됩니다. 이를 통해 개발자는 배포 작업에 신경 쓰지 않고 코드 작성에만 집중할 수 있습니다.

효율적인 학습을 위한 팁

AWS는 배워야 할 것이 매우 많은 방대한 서비스입니다. 그렇기 때문에, 모든 서비스를 한 번에 배우려고 하면 오히려 혼란스러워질 수 있습니다. 다음과 같은 팁을 통해 학습을 효과적으로 진행할 수 있습니다.

  • 필요한 부분부터 집중적으로 학습: 처음부터 모든 AWS 서비스를 공부하는 것보다는, 당장 프로젝트에 필요한 부분만 학습하고 활용하는 것이 좋습니다. 예를 들어, 이번에는 S3와 CloudFront로 클라이언트 배포를 중심으로 학습해 보세요.
  • 반복적인 실습: S3에 파일을 업로드하고, CloudFront로 배포하는 과정을 여러 번 따라 해 보세요. 이 과정을 반복하면서 실수가 줄고, 작업이 체계화됩니다.
  • 자동화에 익숙해지기: GitHub Actions를 통해 배포 과정을 자동화하면서, CI/CD의 기본 개념을 자연스럽게 익힐 수 있습니다. 자동화된 배포는 실수 가능성을 줄이고 개발 효율성을 높이는 핵심입니다.

결론

AWS는 현대 개발에서 매우 중요한 플랫폼이지만, 모든 것을 배우기에는 너무 방대합니다. 따라서 실무에 즉시 활용할 수 있는 부분에 집중하여 학습하는 것이 중요합니다. S3와 CloudFront를 사용한 클라이언트 배포GitHub Actions를 통한 배포 자동화는 실무에서 매우 유용한 기술이며, 이를 통해 클라이언트 배포의 효율성을 크게 높일 수 있습니다.

AWS 학습은 한 번에 끝내는 것이 아니라 필요할 때마다 확장해 나가는 방식으로 진행하는 것이 효과적입니다. 처음에는 간단하게 클라이언트 배포를 시작해 보고, 차차 서버리스 컴퓨팅이나 데이터베이스 관리 등으로 확장해 나가보세요. 이렇게 점진적으로 학습하며 AWS를 익혀 나가는 것이 성공적인 AWS 학습의 열쇠입니다.


참고 자료:

profile
개발

0개의 댓글