본문 바로가기

미국유학/CS686 DevOps

Final Project 흐름

✅ 2) 기말 과제 전체 흐름 설계 

📦 a. Nightly Build (infra-repo/nightly-build.yml)

  • 매일 (또는 수동 버튼 클릭으로) 실행
  • 각 app repo (frontend, backend-signup, backend-post)의 main 최신 코드 기준
  • 빌드 + Docker 이미지 만들고 ECR에 푸시
  • 테스트용 temp EC2 인스턴스에 배포해서 Smoke Test 수행
  • 통과 시 → ECR:frontend-temp, ECR:backend-signup-temp 등 이미지 유지

🧪 b. QA 배포 (infra-repo/deploy-to-qa.yml)

  • Nightly Build 성공시 자동 트리거
  • 위에서 만든 temp 이미지 → QA EC2에 정식 배포
  • docker run 해서 프론트+백엔드 2개 서비스 연결
  • https://qa.myapp.com 같은 QA 환경에 접근 가능

🚀 c. Semantic Release (release.yml in each app-repo)

  • 개발자가 main 브랜치에 semantic commit 메시지로 머지
  • GitHub Actions에서 release.yml 실행
    • .releaserc.json, prepare-release.sh, semantic-release 로 Maven 빌드
    • RC 태그 (v1.2.0, rc5 등) 붙음
    • infra repo의 promotion workflow 트리거 (예: promote-rc 이벤트)
  • 이때 → UAT (또는 이후 Prod)로 자동 승격될 수 있음

🔁 전체 순서 다시 요약하면:

css
CopyEdit
[개발자 commit → main 머지][nightly-build 수동 실행][temp EC2에서 smoke test][deploy-to-qa 수동 실행][QA EC2에 실제 배포 + 테스트][semantic-release 자동 실행][UAT로 Promote (infra repo가 trigger됨)]

 

 

 

 

 

 

>>> 우선,, 토요일 현재, 

MSA랑 Nightly Build, 그리고 deploy-to-qa 까지 했음. | 나머지는 이제 UAT랑 Production 하면됨. 

-우선 MSA로 쪼갰음. 백엔드 2개로 api 기준 쪼개고 프론트엔드. 이렇게 3개의 Microservice (fe에 nginx.conf셋팅)

-각각 도커 만들어 주고. 각각의 레포에 올렸음. 푸시하면 ECR에 도커 이미지 저장되게끔 했음.

-nightly build 는 인프라 레포에 있고 도커 이미지 pull 해 와서 temp로 생성한 EC2에 배포하고 스모크 테스트

-성공하면 deploy-to-qa.yml을 트리거. 

-deploy-to-qa.yml의 경우 성공시 태깅까지 해주고 그다음에 이제 뒤에 UAT랑 Production 트리거 해야겠지.