Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: 무중단 배포 Workflow 전략 수정 #565

Open
2 tasks done
Ho-Tea opened this issue Dec 7, 2024 · 2 comments
Open
2 tasks done

chore: 무중단 배포 Workflow 전략 수정 #565

Ho-Tea opened this issue Dec 7, 2024 · 2 comments
Assignees
Labels
backend We are backend>< ⛏️ chore 기타 변경사항 (위 사항 외 자잘한 수정) refactor 리팩토링 (변수 및 메서드 네이밍 변경)
Milestone

Comments

@Ho-Tea
Copy link
Contributor

Ho-Tea commented Dec 7, 2024

🤮 As Is

기존에 구성했던 Workflow에서 발생하는 아래의 2가지 문제를 해결하기 위해 Workflow 수정

  • 문제 예시 상황 1 : A-Prod 환경에서는 신버전으로 포트가 변경되었는데, 아직 B-Prod 환경에서는 구버전으로 포트포워딩이 이루어지고 있는 경우
  • 문제 예시 상황 2 : A-Prod 환경에서는 신버전으로 포트가 변경되었는데, B-Prod 환경에서는 신버전 배포가 실패하여 구버전을 바라보고 있는 경우

🤩 To Be

  • 모든 서버에 Green 배포를 수행한다.
  • 스크립트로 기존에 Nginx가 바라보고 있는 포트를 찾아서 Blue로 판단한다.
  • 존재하는 Green 컨테이너가 있다면, 중지시키고 새롭게 생성한다.
  • 새롭게 생성한 Green 컨테이너가 정상적으로 동작하는지 HealthCheck를 시도한다.
  • 모든 인스턴스 서버에서 Green컨테이너로부터 HealthCheck가 정상적으로 이루어진다면,
    • Nginx가 바라보고 있는 포트를 Green으로 변경하는 switch.sh를 실행시킨다.
  • 모든 인스턴스 서버에서 Green컨테이너로부터 HealthCheck가 정상적으로 이루어지지 않는다면,
    • 새롭게 띄워진 Green컨테이너를 종료시키는 rollback.sh를 실행시킨다.

우선은 운영환경에 적용하지 않고, 개발 환경에만 적용하면서 테스트를 진행

😇 이때까지 끝낼게요!

리팩터링 완료 예상 날짜를 작성해주세요. 신중하게 생각해요!

😵 참고 자료(선택)

🙇‍♀️이슈 확인했어요:)

팀원에게 이슈 확인을 부탁해요!

@Ho-Tea Ho-Tea added backend We are backend>< refactor 리팩토링 (변수 및 메서드 네이밍 변경) ⛏️ chore 기타 변경사항 (위 사항 외 자잘한 수정) labels Dec 7, 2024
@Ho-Tea Ho-Tea added this to the sprint-7 milestone Dec 7, 2024
@Ho-Tea Ho-Tea self-assigned this Dec 7, 2024
@BurningFalls
Copy link
Contributor

BurningFalls commented Dec 7, 2024

새로운 Green을 생성할때 굳이 기존의 Green을 중지시켜야할 이유가 있을까요? 새로운 Green의 정상 동작 확인 후 모든 서버의 Health Check가 성공했을때 그제서야 기존의 Green을 중지시키는 로직을 취한다면, Health check가 실패해서 롤백을 해야할때 기존의 Green 컨테이너를 다시 띄우는 로직이 없어도 될 것 같습니다.

@linirini
Copy link
Contributor

linirini commented Dec 7, 2024

@BurningFalls
기존의 것은 blue로 판단하고, 존재하는 green이 있다면 제거하겠다는 것은 새로 배포할 green태그를 가진 컨테이너가 만에하나 남아있다면 제거 후 배포를 시행하겠다는 것으로 보입니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend We are backend>< ⛏️ chore 기타 변경사항 (위 사항 외 자잘한 수정) refactor 리팩토링 (변수 및 메서드 네이밍 변경)
Projects
Status: No status
Development

No branches or pull requests

3 participants