[무중단 배포] Nginx + CodeDeploy + Github Actions
카테고리 없음2023. 8. 3. 11:48[무중단 배포] Nginx + CodeDeploy + Github Actions

Intro 지금까지 CICD를 활용해 자동화된 통합과 배포에 대해 공부했다. 자동화에는 성공했지만 여전히 배포 과정에서 서버가 다운된다는 문제가 남아있기 때문에 서버 중단없이 배포하는 방법이 필요하다. 무중단 배포 방식에는 AWS Blue-Green, 도커를 이용한 무중단 배포 등 여러 가지가 있다. 그 중에서 NginX를 활용한 방법이 가장 비용이 적고 쉽기 때문에 NginX를 사용할 것이다. Nginx 무중단 배포 과정 Nginx는 프록시 서버이기 때문에 여러 개의 서버를 실행하고 Nginx가 서버들로 요청을 전달한다. 이때 서버가 업데이트 된다면 먼저 하나의 서버를 먼저 업데이트한다. 이때 다른 서버가 실행 중이므로 클라이언트들을 여전히 구버전의 서비스를 이용할 수 있다. 서버 업데이트가 끝나면 업..

[CICD] Github action, S3, CodeDeploy를 활용한 CICD 구축
카테고리 없음2023. 8. 1. 18:40[CICD] Github action, S3, CodeDeploy를 활용한 CICD 구축

Continuous Integration IAM 사용자 추가 + 보안 자격 증명에서 엑세스 키 발급 후 csv 파일 저장 WorkFlow 작성 name: freelec-springboot2-webservice on: push: branches: - main # (1) 브랜치 지정 workflow_dispatch: # (2) 수동 실행 env: S3_BUCKET_NAME: "freelec-deploy" PROJECT_NAME: "freelec-springboot2-webservice" jobs: build: runs-on: ubuntu-latest # (3) steps: - name: Checkout uses: actions/checkout@v2 # (4) - name: Set up JDK 11 uses:..

카테고리 없음2023. 7. 31. 20:39[EC2] 배포 및 간단한 쉘 스크립트 작성

배포 먼저 EC2에 접속한 다음 github에 업로드한 프로젝트를 clone한다. git clone 저장소 주소 받은 프로젝트 Build Test ./gradlew build 만약 permission 에러가 발생하면 아래 명령으로 권한을 추가해준다. chmod +x ./gradlew 이후 git pull 명령을 실행해서 pull이 잘 되는지도 확인한다. 쉘 스크립트 git 폴더가 아닌 다른 폴더에 스크립트 파일을 생성한다. vim ~/app/git/deploy.sh 내용 작성 #!/bin/bash REPOSITORY=/home/ec2-user/app/step1 PROJECT_NAME=freelec-springboot2-webservice PROJECT_FILENAME=SpringPractice-0.0.1..

카테고리 없음2023. 7. 31. 12:42[EC2] Linux 인스턴스 생성

인스턴스 생성 및 보안그룹, 탄력적 IP 설정은 생략.. pem 키를 ~/.ssh로 복사 cp pem키를 내려받은 위치 ~/.ssh pem 키 권한 부여 chmod 600 ~/.ssh/pem키 이름 config 파일에 아래 내용 작성 vim ~/.ssh/config #주석 Host 본인이 원하는 서비스명 HostName ec2의 탄력적 IP User ec2-user IdentityFile ~/.ssh/pem키 이름 config 파일 권한 부여 chmod 700 ~/.ssh/config ec2 ssh 접속 ssh 서비스명 자바 설치 sudo yum install -y 본인이 원하는 자바 버전을 입력(java + tab을 누르면 리스트가 나옴) 아래 명령을 통해 자바 버전을 설정한다 (리스트에 나온 선택 번..

image