Github Action, ECR, S3, CodeDeploy를 활용해 Blue/Green 방식의 무중단 배포를 해보려 합니다. 아래는 모든 과정이 끝난 후의 아키텍처입니다. 배포 시나리오 1. Github에 코드 push하면 Github Action 동작 2. ECR에 Docker image push 3. S3에 CodeDeploy script 업로드 4. CodeDeploy 실행해 EC2 배포 Github Action을 통해 2,3,4 과정이 실행됩니다. ECR에는 Spring Boot docker image를 push하고, S3에는 CodeDeploy에 필요한 스크립트를 압축해 업로드 합니다. CodeDeploy에서는 S3의 스크립트를 실행해 EC2 배포를 진행합니다. 스크립트에는 ECR로부터 do..
Elastic Load Balancer의 종류인 Application Load Balancer를 생성해 트래픽을 분산해보자. 첫번째로는, 대상 그룹을 생성 후 인스턴스 2개를 대상으로 지정해 트래픽을 분산해보려 한다. 두번째로는, Auto Scaling Group을 대상 그룹에 연결해 Auto Scaling에 의해 생성된 모든 인스턴스들에 트래픽을 분산해보려 한다. 최종 아키텍처는 아래와 같다. Load Balancer Hands-On 시작 템플릿 버전 수정 Auto Scaling Group 시작 템플릿 변경 Target Group 생성 Application Load Balancer 생성 Auto Scaling Group을 대상 그룹으로 설정 Load Balancer 트래픽 분산 테스트 1. 시작 템플릿..
저번 글에서 AWS Elastic Beanstalk, RDS 환경 세팅 및 인스턴스 연결을 해주었다. 이번 글에서는 Github Action yml 파일에 배포 스크립트를 추가하고, Github Action을 통한 AWS Elastic Beanstalk 배포 작업을 마무리해보자. 글은 다음과 같은 순서로 진행된다. docker-compose 파일 작성 IAM 인증키 발급받기 Github Action yml에 배포 스크립트 추가 1. docker-compose 파일 작성 Elastic beanstalk 배포를 위해 필요한 설정 파일인 docker-compose 파일을 작성해보자. docker-compose 파일을 이용해 Docker hub에 빌드되어 있는 이미지를 가져오고, 포트 맵핑, 환경변수 세팅 등을..
Docker + Github Action + Elastic beanstalk을 사용한 CI/CD를 구축하다 알 수 없는 오류가 발생해서 처음부터 차근차근해보고자 이 글을 쓰게 되었다. 그럼 Spring boot 프로젝트를 Elastic beanstalk에 수동 배포해보자. 1. Spring boot 프로젝트 생성 Spring boot 3.0.5 사용 Spring web 의존성만 추가해 프로젝트를 생성했다. implementation 'org.springframework.boot:spring-boot-starter-web' 2. Controller 작성 간단히 hello world를 반환하는 api를 작성했다. @RestController public class HelloController { @GetMa..
이번 글에서는 AWS Elastic Beanstalk과 RDS 환경을 세팅하고, 두 인스턴스를 연결해보자. 먼저 AWS Elastic BeanStalk, VPC, Security Group의 개념부터 알아보자. [ Elastic BeanStalk ] Elastic Beanstalk은 EC2 인스턴스, 데이터베이스, 로드밸런서 등 여러 서비스를 포함한 환경을 구성하며 소프트웨어를 업데이트할 때마다 자동으로 환경을 관리해준다. [ VPC ] Amazon Virtual Private Cloud(VPC)는 AWS 클라우드에서 논리적으로 격리된 공간을 제공하는 것이다. VPC를 통해 고객이 정의한 가상 네트워크에서 AWS 리소스를 시작할 수 있다. 아래와 같이 ElasticBeanstalk 인스턴스나 RDS 등을..
Github Action을 통해 Docker 환경을 Elastic Beanstalk에 배포해보자. 이번 글에서는 Github Action으로 CI 환경을 구축하고, Docker hub에 docker 이미지를 올리는 것까지 해보려 한다. 전체적인 구조는 아래와 같다. [ 아키텍처 ] [ CI/CD 과정 ] 1. Github 에 코드를 push 2. Github Action job 수행 2-1. Spring boot 코드 build 2-2. Dockerfile 빌드 2-3. Docker Hub에 이미지 push 2-3. AWS EB에 docker-compose 업로드 5. AWS EB는 docker-compose를 실행해 배포 [ 구현 과정 ] 1. Spring Boot 프로젝트 세팅 2. Dockerfil..