2

프로덕션, 작업자 및 디버그와 같은 여러 환경 (모두 Amazon Elastic Beanstalk에서 실행)이있는 응용 프로그램이 있습니다. 각 환경에는 마스터와 다른 몇 가지 방법 (예 : 구성이 변경되고 일부 코드가 삭제됨)에 해당하는 git 브랜치가 있습니다.Amazon Elastic Beanstalk의 여러 환경에 동시에 배포

eb deploy을 사용하여 분기에서 새 버전의 응용 프로그램을 배포합니다. git zip을 사용하여 현재 자식 브랜치를 압축하고 정보를 Amazon으로 보냅니다. 그런 다음 실행중인 인스턴스에 배포합니다.

그러나 배포하는 데는 약간의 시간이 소요됩니다 (약 5 분 소요). 따라서 작업자와 생산을 배치하는 것 사이에는 다른 코드가 있습니다. 내 변경으로 인해 대기열 프로토콜이나 그와 비슷한 것이 변경 될 수 있기 때문에 어느 것이 나쁘다.

내가 원하는 것은 정보를 업로드하고 모든 환경에서 처리를 수행 할 수 있지만 코드를 실제로 대체하지 않고 그냥 준비하는 것입니다. 그리고 모든 환경에서 "완료 끝내기"와 같은 명령을 내린 후 코드 기반을 모든 환경에서 동시에 바꿉니다.

할 방법이 있습니까?

답변

2

"청녹색"배포를 수행해야하며이를 대신 수행해야합니다. 배포 모델에서 두 개 이상의 조각을 동기화해야하기 때문에 조각이 사용하는 프로토콜을 변경하면 해당 조각을 동시에 배포해야합니다. 디자인에 강하게 의존하는 자주 사용되는 프로토콜이 있으면 단일 서비스로 간주하십시오.

"배포 됨"은 시스템의 가장 바깥 쪽 레이어가 다른 시스템에서 노출되어 사용할 수 있음을 의미합니다. 이 경우 다른 시스템에 API를 노출하는 웹 서버 계층과 웹 계층에서 생성 된 메시지를 읽는 작업자 계층이있는 것 같습니다.

깨는 대기열 프로토콜을 변경하는 경우, 양쪽 변경 세트 (웹 서버 계층 및 대기열 계층)를 완전히 새로운 beanstalk 환경에 배치하고 서로 사용하도록 구성한 다음 노출 된 끝점에서 DNS 스왑을 수행해야합니다 , 이전 웹 서버 EB 환경에서 새로운 환경으로 마이그레이션합니다. 웹 서버 계층에서 DNS를 교환하고 환경이 예상대로 작동하는지 확인한 후 이전 웹 서버 및 대기열 계층을 파괴 할 수 있습니다.

프로토콜이 아닌 업데이트의 경우 하나의 환경 또는 다른 환경을 간단히 업데이트 할 수 있습니다.

복잡해 보입니다. 프로토콜을 자주 중단하는 경우 시스템에서 작업자와 웹 서버 계층의 버전을 예상 할만큼 충분히 분리되지 않으므로 이러한 복잡한 프로세스를 함께 수행해야합니다.

희망이 도움이됩니다.

관련 문제