AWS EC2와 Github Actions로 프론트엔드 CI/CD 구축하기 ( 3 )

이진혁·2023년 1월 31일
1
post-thumbnail

우리는 지금까지 인스턴스를 생성하고 가비아와 Route53를 이용해 도메인을 입혔으며 IAM을 생성해 인스턴스에 부여해 주었다.

이제 우리는 S3를 생성할 차례이다.

S3는 Simple Storage Service 의 약자로 Bucket이라는 이름을 사용하는데 이름에서도 알 수 있듯 파일을 저장할 수 있는 파일 서버 역할의 서비스이다.
어디서나 쉽게 데이터를 저장하고 불러올 수 있으며 파일 크기는 5TB까지 지원한다.

우리는 S3에 프로젝트 파일들을 저장해놓고 이걸 EC2라는 컴퓨터에서 실행시킬 것이다.

이때 S3에 있는 파일들을 EC2로 옮겨서 실행시키는 역할을 Code Deploy가 수행한다.

이를 위해 우리는 전 게시물에서 IAM 역할에서 EC2, S3, CodeDeploy에 대한 FullAccess 권한을 설정해 인스턴스에 부여해준 것이다!

S3 생성

S3를 검색해서 들어가 우측에 버킷 만들기 버튼을 클릭한다.

일반 구성

버킷 이름을 만들 때 주의할 점은 전세계에서 유일한 이름이어야 한다는 것이다.

쉽게 말해서 게임에서 자신만의 고유한 캐릭터 네임이라고 생각하면 될 것 같다.

리전은 필요한 곳으로 선택해주자.

객체 소유권

객체 소유권은 권장 사항인 ACL 비활성화를 선택해주자.

퍼블릭 액세스 설정

퍼블릭 액세스 차단 여부는 프로젝트 성격에 따라 다르다.

퍼블릭으로 오픈해놓으면 나를 제외한 모든 사람이 이 S3 버킷 자체에 접근할 수 있고 이는 악의적으로 대량의 다운로드를 유도하여 비용을 발생시키는 등의 문제가 생길 수 있다.

우리 S3에 저장된 파일 URL를 주소창에 입력하기만 하면 해당 파일에 접근이 가능하기 때문에 나는 모든 퍼블릭 액세스 차단을 체크해 주었다.

버킷 버전 관리 & 태그

버킷 버전 관리의 경우 따로 건드리지 않았고 태그만 추가해 주었다.

기본 암호화

기본값을 설정해주고 버킷 만들기를 눌러서 버킷을 생성하자.

위와 같은 화면이 뜬다면 성공적으로 버킷을 생성한 것이다.

버킷을 클릭해서 들어가보면 위와 같은 화면을 만날 수 있는데
화면에서 나와 있듯 파일을 업로드하고 저장할 수 있다.

우리의 프로젝트를 이 S3에 저장하고 관리 할 것이다.

Code Deploy 생성

우리는 앞서 만든 S3에 프로젝트 파일들을 저장해놓고 이걸 EC2라는 컴퓨터에서 실행시킬 것이다.

이때 S3에 있는 파일들을 EC2로 옮겨서 실행시키는 역할을 Code Deploy가 수행하게 된다.

AWS에서 Code Deploy를 찾아 들어간 다음 왼쪽 패널에서 배포 -> 시작하기를 클릭하면 위와 같은 화면이 나오는데 여기서 애플리케이션 생성을 누르자.

애플리케이션 생성

애플리케이션의 이름은 임의로 지어주고 컴퓨팅 플랫폼은 EC2/온프레미스를 선택했다.

이후 하단의 애플리케이션 생성 버튼을 눌러주자.

애플리케이션이 성공적으로 생성되었다.

이제 애플리케이션 이름을 클릭해 들어가보자.

배포 그룹 생성

이제 우리가 만든 어플리케이션에서 배포 그룹을 생성해야 한다.

배포 그룹에서 이 Code Deploy가 S3에서 가져온 파일을 배포할 대상을 정할 수 있다. 지금 우리로 치면 아까 생성한 EC2가 그 대상이다.

배포 그룹 생성 버튼을 통해 만들어보자.

배포 그룹 이름 & 서비스 역할

이름은 임의로 설정해주고 서비스 역할에서 우리가 전 게시물에서 만들었던 Code Deploy용 IAM을 선택한다.

배포 유형

배포 유형은 현재 위치로 설정해준다.

환경 구성

이제 우리의 EC2를 배포 그룹에 연결해야한다.

환경 구성은 Amazon EC2 인스턴스를 선택해주고 태그를 통해서 연결한다.

키를 Name으로 하고 값을 눌러서 메뉴를 보면 EC2 인스턴스 목록이 뜰 것이다.

여기서 우리의 인스턴스를 선택해주고 바로 하단에서 아래와 같이 1개의 일치하는 고유한 인스턴스가 나오는지 확인하자.

에이전트 구성

Code Deploy 에이전트를 정해진 빈도에 따라 업데이트하는 설정인데 기본값으로 설정해주고 넘어갔다.

배포 설정

배포 설정은 이 Code Deploy 어플리케이션이 배포를 하는 방식에 대한 설정인데 총 3개의 선택지가 있으며 필요에 따라 선택할 수 있다.

나는 AllAtOnce로 설정해주었다.

  • CodeDeployDefault.AllAtOnce : 한 번에 가급적 많은 수의 인스턴스에 배포
  • CodeDeployDefault.HalfAtATime : 최대 절반의 인스턴스 (분수는 반내림) 에 한번에 배포
  • CodeDeployDefault.OneAtATime : 한 번에 한 인스턴스에만 배포

로드 밸런서

로드밸런서는 배포 중인 각 인스턴스에서 트래픽을 차단하고 배포 성공 후 인스턴스에 대한 트래픽을 다시 허용하는 역할을 한다.

쉽게 말해 배포가 진행되는 동안 트래픽을 차단했다가 배포 후 트래픽을 허용하여 트래픽의 균형을 맞추는 작업이다.

지금은 필요하지 않으니 활성화를 해제하고 배포 그룹 생성 버튼을 눌러주자.

성공적으로 생성되었다.

profile
개발 === 99%의 노력과 1%의 기도

0개의 댓글