Infra/AWS

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 5. GitHub Action CI/CD Pipeline 구축

GitAction을 활용한 자동 배포 설정 가이드 지금까지 매번 수동으로 해줘야했던 작업들을 GitAction을 통해서 자동으로 배포하는 과정을 작성해보겠습니다.이번 글에서는 AWS ECS에 배포하는 과정을 GitHub Actions를 통해 자동화하는 방법을 설명하겠습니다. 1. YAML 파일 생성.github/workflows 디렉토리 아래에 YAML 파일을 생성합니다. 예를 들어 deploy.yaml이라는 이름으로 파일을 생성합니다.2. CI - 지속적 통합 (Continuous Integration)CI는 빌드와 테스트를 진행합니다. 아래 예제에서는 주석을 자세히 달아두었습니다.AWS에서 ECR 에 푸쉬할 정책을 생성합니다.jar 파일을 도커로 이미지로 만들어 ECR에 푸시하는 과정입니다.name:..

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 4. ECS Service 배포, HTTP Redirect

ECS 생성태스크 정의로 서비스 생성이제 대망의 ECS 서비스를 생성할 차례네요. 전에 설정한 태스크 정의대로 서버를 생성합시다.EC2를 사용하여 시간만큼 결제하는 것이 아닌, 사용한 만큼만 낼 것이므로 서버리스 FARGATE를 사용할 것입니다. 그렇기 때문에 용량 공급자는 그대로 FARGATE를 사용하면 됩니다. 참고로 FARGATE_SPOT는 FARGATE와 거의 유사하지만 할인을 70~80% 해주는 것입니다. 하지만 사용자들이 AWS FARGATE 서버에 요청을 많이 할 경우 서버를 빌려가므로 서버가 다운될 수 있으므로 선택하지 않습니다.배포 구성아래와 같이 서비스 이름을 적어주고, 같은 복제본의 태스크 수를 정해줍니다. 기본은 1로 되어있는데, 무중단 CI/CD를 하기 위해선 최소 2개가 필요해요..

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 3. 로드밸런서와 리스너, 대상그룹

AWS의 근본은 EC2오늘 생성할 로드밸런서, 리스너, 대상그룹은 모두 EC2에 있는 서비스입니다. 저번 글에서 Domain을 구입하여 서브 도메인 설정을 하고, 인증서를 구매하여 HTTPS 배포를 위한 준비를 마쳤습니다.이번 글에서는 로드밸런서와 리스너, 대상그룹을 생성하여 대용량 트래픽에 맞게 분산시켜 배포해볼게요. 로드밸런서, 보안그룹, 대상그룹을 생성해야합니다.가장 먼저 해야할 것은 대상그룹을 생성하는 일입니다.대상그룹 생성 후 로드밸런서 연결, 로드밸런서와 서비스 연결 순입니다.대상그룹 생성태스크들 또한 private IP로 이루어져 있습니다. 이들과 대상그룹을 매핑해줘야하므로 HTTP로 설정하고, 프로토콜 버전은 가장 호환성이 좋은 HTTP1로 생성할게요.상태검사 프로토콜. HTTP? HTT..

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 2. Route 53 & ACM 🔥😡🔥

이전 글에서 ECR 생성 및 ECR에 푸시할 수 있는 권한, ECR에 이미지를 푸시하는 방법을 다루었습니다.이번 글에서는 HTTPS를 사용하기 위한 인증서 발급하는 과정과 서브 도메인 등록을 설명할게요.내용이 좀 많은데, 차근차근 따라와주세요. Route 53.. 삽질을 참 많이하게 만든 친구입니다.여기서는 도메인을 이미 구입했다고 가정하겠습니다.저는 docker-ecs.net 이라는 도메인을 갖고 있어 이를 사용할게요. Route 53에서 호스팅 영역 생성호스팅 영역 생성 먼저, Route 53에 들어가서 DNS 관리의 호스팅 영역을 생성합니다. 호스팅 영역이란 주 도메인 및 서브 도메인을 관리하는 데이터베이스라고 생각하면 편해요. Route 53에 접속 후 호스팅 영역을 선택하고 호스트 영역 생성 버..

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 1. ECS 기본 개념, ECR, Task 정의, IAM, CLI

ECSECS.. 처음에 혼자 구축하다보면 절망하는 순간을 많이 만나게됩니다.저도 실제로 2번 새로 구축해봤는데, 매번 할 때마다 순서, 방법 등 다 까먹게 되더라구요.그래서 프로젝트에 했던 배포 계정 말고, 완전 새로운 계정으로 다시 해봤습니다.저도 나중에 ECS 를 구축할 상황이 올 수도 있고 ECS를 처음 배포하시는 분들도 있을텐데 제 글들이 도움이 됐으면 좋겠습니다~~!!혹시나 궁금한 점 있으시면 댓글이나 toychip7@gmail.com으로 메일 주세요!ECS 기본 개념Amazon ECS(Elastic Container Service)는 컨테이너 관리 서비스를 제공하여 애플리케이션을 쉽게 배포하고 확장할 수 있도록 합니다. ECS의 주요 구성 요소인 Cluster, Service, Task의 차이..

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 0. ECS 배포하게 된 배경

기존 배포 방식기존 배포 방식과 CodeDeploy의 한계처음에는 단일 EC2 인스턴스에 수동으로 애플리케이션을 배포했습니다. 매번 터미널을 통해 파일을 옮기고 명령어를 실행하는 반복적인 작업은 시간이 많이 소요되고, 작은 실수로도 서비스 장애가 발생할 수 있는 위험한 방법이었습니다.이후 AWS CodeDeploy를 도입하여 자동화를 시도했지만, 서버 장애 시 수동으로 재시작해야 했고, 배포 과정에서 예기치 않은 오류들이 빈번히 발생했습니다.CodeDeploy가 서버 상태를 제대로 감지하지 못해 배포 실패가 발생하면 수동으로 재설정해야 했습니다.이로 인해 배포 과정은 여전히 불안정하고 스트레스가 많았습니다.Docker와 ECS로의 전환이 문제를 해결하기 위해 Docker와 AWS ECS(Elastic C..

토이 개발 스토리
'Infra/AWS' 카테고리의 글 목록