SO 커뮤니티 위키에서 데이터베이스 개체의 버전을 제어해야하는지 여부에 대한 논의가있었습니다. 그러나 데이터베이스 개체에 대한 빌드 자동화 프로세스를 만드는 모범 사례에 대한 논의를 많이 보지 못했습니다.
특히 개발자와 DBA는 데이터베이스 배포에 대한 자동화 접근 방식의 이점과 위험을 평가할 때 종종 다른 목표, 접근 방식 및 우려 사항을 가지고 있기 때문에 이것은 우리 팀에게 논쟁의 여지가있는 부분이었습니다.
실제 세계에서 어떤 관행이 효과적 이었는지에 대한 SO 커뮤니티의 아이디어를 듣고 싶습니다.
어떤 관행이 정말로 최선인지가 다소 주관적이라는 것을 알고 있지만 어떤 작업이 많은 사람들에게 도움이 될 수 있는지에 대한 좋은 대화가 있다고 생각합니다.
다음은이 주제의 관심 영역에 대한 몇 가지 티저 질문입니다. 이것들은 결정적인 목록이 아니라 사람들이 내가 찾고있는 것을 이해하는 데 도움이되는 출발점입니다.
- 테스트 및 프로덕션 환경 모두 소스 제어에서 구축해야합니까?
- 둘 다 자동화를 사용하여 구축해야합니까? 아니면 안정적이고 최종화 된 테스트 환경에서 개체를 복사하여 구축해야합니까?
- 배포 스크립트에서 테스트 환경과 프로덕션 환경 간의 잠재적 인 차이점을 어떻게 처리합니까?
- 배포 스크립트가 테스트 에서처럼 프로덕션에 대해 효과적으로 작동하는지 어떻게 테스트합니까?
- 어떤 유형의 객체를 버전 관리해야합니까?
- 코드 (프로 시저, 패키지, 트리거, Java 등) 만 있습니까?
- 인덱스?
- 제약?
- 테이블 정의?
- 테이블 변경 스크립트? (예 : ALTER 스크립트)
- 모두?
- 어떤 유형의 객체가 버전 제어되지 않아야합니까?
- 시퀀스?
- 보조금?
- 사용자 계정?
- SCM 저장소에서 데이터베이스 개체를 어떻게 구성해야합니까?
- 변환 스크립트 또는 ALTER 스크립트와 같은 일회성 작업을 어떻게 처리합니까?
- 데이터베이스에서 폐기되는 객체를 어떻게 처리합니까?
- 개체를 개발에서 테스트 수준으로 승격하는 책임자는 누구 입니까?
- 여러 개발자의 변경 사항을 어떻게 조정합니까?
- 여러 시스템에서 사용하는 데이터베이스 개체의 분기를 어떻게 처리합니까?
- 이 프로세스에 대해 어떤 예외가 합리적 일 수 있습니까?
- 보안 문제들?
- 익명화 문제가있는 데이터?
- 완전히 자동화 할 수없는 스크립트?
- 프로세스를 탄력적이고 실행 가능하게 만드는 방법은 무엇입니까?
- 개발자 오류?
- 예기치 않은 환경 문제에?
- 재해 복구를 위해?
- DB-SCM의 이점이 진정으로 비용을 정당화한다고 의사 결정권자들을 어떻게 설득합니까?
- 일화적인 증거?
- 산업 조사?
- 업계 모범 사례 권장 사항?
- 공인 된 당국에 항소합니까?
- 비용 편익 분석?
- 이 모델에서 누가 데이터베이스 개체를 "소유"해야합니까?
- 개발자?
- DBA?
- 데이터 분석가?
- 하나 이상?