HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
🌳
[팀 05] Forest
/
📓
백엔드 엔지니어링 위키
/
🚚
배포 시나리오
🚚

배포 시나리오

💡
2022.7.28 기준
기본 실행 전략브랜치 보호CICD애플리케이션 비밀 정보🔐 Github Secret배포용 application.yml 활용 시나리오
 

기본 실행 전략

 

브랜치 보호

  • main 브랜치로 PR 했을 때, CI/CD 작업을 수행하는 GIthub Action workflow를 통과해야 merge할 수 있습니다.

CI

  • Github Action에서 할당받은 가상 머신을 활용합니다.
  • 테스트용 mysql을 가상 머신에 설치합니다.
  • 소스 코드를 테스트한 뒤 jar로 build 합니다.
 

CD

  • CI가 성공적으로 끝났을 때 실행됩니다.
  • CI에서 빌드된 jar 파일을 docker image로 build합니다.
  • build된 이미지를 dockerhub에 push 합니다.
  • ssh를 통해 EC2에 접속한 뒤 아래 작업을 수행합니다.
      1. 실행중인 서버 컨테이너 종료 및 삭제
      1. dockerhub에서 새로운 이미지 pull
      1. 이미지 실행
 

애플리케이션 비밀 정보

🔐 Github Secret

 
현재 github secret으로 괸리하고 있습니다. 페이지
  • AWS KMS 보다 나은 점
      1. AWS KMS는 데브코스 지원이 끊길 수 있음
      1. 유지보수 일원화(github secret와 KMS를 둘 다 관리하기는 번거롭다)
       
 
github action에서 사용합니다.
  • 스크립트에서 ${{ secrets.비밀 이름 }} 으로 접근할 수 있습니다.
 
저장된 secret은 다시 확인이 불가능합니다.
  • 필요할 경우 담당자에게 물어보세요
  • 수정 / 삭제는 가능합니다.
SECRET
설명
DOCKERHUB_SECRET
서버 애플리케이션 이미지 저장소 계정 Access Token
DOCKERHUB_USERNAME
서버 애플리케이션 이미지 저장소 계정 이름
RDBMS_PASSWORD
AWS RDS 비밀번호
RDBMS_URL
AWS RDS 엔드포인트
RDBMS_USERNAME
AWS RDS 사용자명
SERVER_SSH_HOST
AWS EC2 호스트 주소
SERVER_SSH_KEY
AWS EC2 SSH 비공개 키
SERVER_SSH_KEY_NAME
AWS EC2 SSH 비공개 키 파일 이름
SERVER_SSH_USER
AWS EC2 SSH 접속 목적지 : 사용자명@호스트
PINPOINT_HOST
PINPOINT collector 서버 호스트 IP
AWS_ACCESS_KEY
s3 버킷 CRUD 권한을 가진 AWS 엑세스 키
AWS_S3_BUCKET
s3 버킷 이름 및 경로
AWS_S3_REGION
s3 버킷 지역
AWS_SECRET_KEY
s3 버킷 CRUD 권한을 가진 AWS 시크릿 키

배포용 application.yml 활용 시나리오

  1. docker container 실행 명령에서 환경 변수 지정
      • 셸 스크립트 변수들은 github secret에서 가져옵니다.
      # server_script sudo docker run -p 80:80 -d \ --env RDBMS_URL="$RDBMS_URL" \ --env RDBMS_USERNAME="$RDBMS_USERNAME" \ --env RDBMS_PASSWORD="$RDBMS_PASSWORD" \ $image_name
  1. Spring에서 application.yml을 읽어올 때 container에 설정된 환경 변수를 통해 비밀 정보를 읽어옵니다.
    1. # application-prod.yml url: "jdbc:mysql://${RDBMS_URL}:3306/rg" username: ${RDBMS_USERNAME} password: ${RDBMS_PASSWORD}