Search

#016 #배포

순서

1.
github 다운받기
2.
gradlew 실행권한 주기
3.
gradlew로 프로젝트를 jar파일로 변경하기
4.
자바설치 (JDK, JRE)
a.
JDK로 마인크래프트를 개발
b.
일반 사용자들이 마인 크래프트 게임을 하려면 JRE가 필요하다.
5.
java로 jar를 실행
모든 테스트와 API 문서 자동화가 완료된 상태에서 배포 자동화를 위해 다음 단계를 진행할 수 있습니다. 배포 프로세스를 차근차근 진행하기 위해 아래의 세부 단계를 따라가면 됩니다.

1. 배포 전 프로세스

1.
익셉션 정의:
프로젝트에서 발생할 수 있는 예외를 정의하고 핸들러를 설정합니다.
예외 처리기를 통해 로그를 남기고, 사용자에게 적절한 에러 메시지를 반환합니다.
2.
로그 남기기 및 영구 저장:
logback을 설정하여 로그를 파일에 저장합니다.
스케줄러를 통해 주기적으로 로그를 DB에 저장하거나, 외부 라이브러리인 Sentry를 사용하여 오류를 모니터링합니다.
3.
프로파일 설정 (MySQL):
application-prod.yml 파일에 MySQL 데이터베이스 설정을 추가합니다.
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${RDS_HOST}:3306/blogdb username: ${RDS_USERNAME} password: ${RDS_PASSWORD} jpa: hibernate: ddl-auto: update properties: hibernate: dialect: org.hibernate.dialect.MySQL8Dialect profiles: active: prod
YAML
복사
4.
테이블 명령어 정리:
MySQL에서 필요한 테이블 생성 명령어를 정리합니다.
5.
prod 모드로 로컬에 실행:
로컬 환경에서 prod 프로파일을 사용하여 애플리케이션을 실행하고 모든 기능이 제대로 작동하는지 확인합니다.
java -jar -Dspring.profiles.active=prod your-application.jar
Plain Text
복사
6.
배포 시작 직전에 프로파일 dev로 변경:
GitHub Actions에서 테스트를 실행할 때 dev 프로파일을 사용하도록 설정합니다.

2. 배포 프로세스

1.
환경 변수 세팅:
GitHub 리포지토리의 Settings > Secrets에서 RDS_HOST, RDS_USERNAME, RDS_PASSWORD 등의 환경 변수를 설정합니다.
2.
GitHub Action 생성:
.github/workflows/deploy.yml 파일을 생성하고 CI/CD 파이프라인을 설정합니다.
name: CI/CD Pipeline on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up JDK uses: actions/setup-java@v2 with: java-version: '11' - name: Build with Gradle run: ./gradlew build - name: Run tests run: ./gradlew test - name: Generate API documentation run: ./gradlew asciidoctor - name: Deploy to Elastic Beanstalk if: github.ref == 'refs/heads/main' env: RDS_HOST: ${{ secrets.RDS_HOST }} RDS_USERNAME: ${{ secrets.RDS_USERNAME }} RDS_PASSWORD: ${{ secrets.RDS_PASSWORD }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: ${{ secrets.AWS_REGION }} run: | zip -r deploy.zip * eb init -p java-11 my-app --region $AWS_REGION eb create my-env eb deploy
YAML
복사
3.
GitHub Action 테스트 설정:
GitHub Actions에서 실행되는 테스트가 성공하는지 확인합니다.
4.
CI 테스트 완료 (빌드):
GitHub Actions가 코드를 빌드하고 테스트를 성공적으로 완료하면, deploy.zip 파일을 생성합니다.
5.
시크릿키 설정 (IAM 필요):
AWS IAM에서 Elastic Beanstalk 및 RDS에 접근할 수 있는 권한을 가진 사용자를 생성하고, 액세스 키를 GitHub 시크릿에 추가합니다.
6.
엘라스틱빈스톡 생성:
AWS Elastic Beanstalk을 사용하여 애플리케이션 환경을 생성합니다.
7.
RDS 생성:
AWS RDS에서 MySQL 데이터베이스 인스턴스를 생성합니다.
8.
디비 생성, 테이블 생성:
생성한 RDS 인스턴스에 접속하여 데이터베이스와 테이블을 생성합니다.
9.
보안 그룹 연결:
EC2 인스턴스와 RDS 인스턴스가 통신할 수 있도록 보안 그룹을 설정합니다.

진행 순서 요약

1.
.github/workflows 디렉토리에 deploy.yml 파일 생성.
2.
GitHub 리포지토리에서 환경 변수 시크릿 설정.
3.
로컬에서 prod 프로파일로 애플리케이션 실행 및 테스트.
4.
GitHub Actions를 통해 빌드 및 배포 파이프라인 설정.
5.
AWS에서 Elastic Beanstalk 및 RDS 인스턴스 생성.
6.
배포 완료 후 서비스 확인.
이와 같은 단계를 따라 배포 프로세스를 자동화하고, CI/CD 파이프라인을 완성할 수 있습니다. 필요한 경우 각 단계에서 더 세부적인 설정을 추가할 수 있습니다.