2

계속 배포하는 경우 서버를 점진적으로 업그레이드하는 경우가 있습니다. 예를 들어 20 개 중 2 개가 모든 것이 정상인 것으로 확인 될 때까지 새 코드를 사용합니다. 새 코드에 데이터베이스 스키마 마이그레이션이 필요한 경우 어떻게됩니까? 필드 폰은 현재 테이블 폰입니다. 20 대의 서버를 모두 업그레이드하지 않는 한 무언가가 망가질 것입니다.지속적인 배포 및 데이터베이스

답변

0

우리는 항상이 작업을 수행합니다. 우리가하는 일은 응용 프로그램에서 작업중인 데이터베이스의 "버전"을 확인한 다음 조건부로 작동하는 메서드를 만드는 것입니다. 기본적으로 응용 프로그램은 이전 시나리오와 새로운 시나리오 모두에서 올바르게 작동합니다.

+0

"이전"및 "새"서버 모두에 대해 하나의 데이터베이스 만 있습니다. 그래서 새로운 서버는 테이블 폰에 새로운 "전화"값을 삽입 할 수 있고, 변화가없는 오래된 서버는 일반 전화 필드에서 그것을 찾지 않고 찾을 것입니다. –

1

체크 아웃/계약을 확장 데이터베이스 패턴 : http://exortech.com/blog/2009/02/01/weekly-release-blog-11-zero-downtime-database-deployment/

은 일시적 일이 모두 이전 및 새 위치에 있도록 데이터를 복제합니다. 오래된 쿼리는 작동해야하며 새로운 쿼리도 작동해야합니다. 테스트 환경에서 자동화 된 테스트를 수행 할 수 있습니다. 모든 서버가 새 버전으로 이동하면 "계약"을 실행하여 "이전"스타일 데이터를 제거합니다.

+0

누가 데이터를 복제합니까? 이전 응용 프로그램 서버는 새 테이블에 대해 아무것도 모릅니다. –

+0

업데이트 스크립트. 따라서 데이터는 기존 애플리케이션 서버가 예상하는 위치에 남아 있으며 새로운 애플리케이션 서버가 기대하는 새로운 위치로 이동합니다. 사소한 접근 방식은 아니지만이 시나리오에서 도움이 될 수 있습니다. – EricMinick

+0

업데이트 스크립트가 한 번 실행됩니다. 그 후에 "오래된"앱 서버는 이전 위치에 새로운 데이터를 저장합니다. 누가 데이터를 복사 할 지 확신하지 못합니다. –

관련 문제