협업 프로젝트(campus) - ④ Spring + AWS 아키텍처 플로우(1)

Big0·2022년 3월 6일
0
post-custom-banner

이번 6주간 프로젝트를 진행하면서 2주 가량 기본적인 설계작업과 4주 가량의 개발 작업을 진행해 campus라는 결과물이 나왔다. 아직 끝난 것은 아니다. 2차 구현이 남아있기 때문인데, 그 전에 현재까지 백엔드에서 설계한 아키텍처를 정리하고 되돌아보는 시간이 필요할 것 같아서 이 글을 포스팅한다. Campus 링크

이번 포스팅에서는 위 그림에서 로컬에서 작성한 코드가 git actions를 거쳐 EC2까지 가는 과정을 설명합니다.

1. IntelliJ -> GitHub

먼저 인텔리제이에서 작성한 자바 코드는 Git을 통해 GitHub로 Push한다

2. GitHub -> GitHub Actions

여기서 여러 브랜치 중에 master 브랜치로 푸시하게 되면 Git Actions는 EC2로 배포하기 위한 작업을 실행한다. 여기에 대한 설정은 main.yml 파일을 통해 관리되는데, 코드 예시는 다음과 같다. 각각의 step들이 Git Actions에서 실행될 Action을 나타낸다. ((ex) 자바 JDK 11 설치 = JDK 11 설치 여부))

 name: CI

on:
  push:
    branches:
      - master

jobs:
  backend:
    name: CI with Gradle
    runs-on: ubuntu-18.04

    steps:
      - name: 체크아웃 Github-Action
        uses: actions/checkout@v2

      - name: 자바 JDK 11 설치
        uses: actions/setup-java@v1
        with:
          java-version: 11

      - name: gradlew 권한 부여
        run: chmod +x ./gradlew

      - name: Gradle 빌드
        run: ./gradlew build
        shell: bash

      - name: Make zip file
        run: zip -r ./$GITHUB_SHA.zip .
        shell: bash

      - name: AWS 설정
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ap-northeast-2

      - name: Upload to S3
        run: aws s3 cp --region ap-northeast-2 ./$GITHUB_SHA.zip s3://camp-us/$GITHUB_SHA.zip

      - name: Code Deploy
        run: aws deploy create-deployment --application-name camp-deploy-app-new --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name dev --s3-location bucket=camp-us,bundleType=zip,key=$GITHUB_SHA.zip

3. GitHub Actions -> S3, Code Deploy

Github Action으로 빌드된 결과물을 S3에 올려놓을 것이다. 그러면 EC2 인스턴스에 있는 CodeDeploy가 S3에 저장된 빌드 결과물을 가져와 인스턴스에 배포를 한다. 그러므로 우리는 빌드된 결과물을 저장하는 공간으로 S3 서비스를 사용했다.

위 yaml파일을 보면 알 수 있듯이, 전체 코드를 zip파일로 압축 후에 S3로 업로드 하는 것을 확인할 수 있다.

여기서 사용되는 IAM은 사용자가 S3와 CodeDeploy에 대한 권한을 얻기 위해 접근한다. IAM 개인키 정보는 IAM 설정 이후 부여받은 키 파일을 GitHub Setting에 들어가 Secret에 들어가면 설정할 수 있다.

4. S3, Code Deploy -> EC2

결론적으로 생성된 zip파일을 EC2까지 S3와 CodeDeploy를 통해 옮길 수 있다.

post-custom-banner

0개의 댓글