6

우리 팀은 지난 몇 년 동안 CMS를 점점 더 많이 사용하고 있습니다. 우리는 또한 점점 더 지속적으로 통합하고 있습니다. 이 두 가지를 조화시키는 것은 어렵다는 것이 입증되었습니다. 더 악화시키기 위해서 우리는 LAMP와 .NET 사이트를 만들어 스크립트가 이상적으로 양쪽 모두를 위해 작동하도록합니다.사용자 생성 콘텐츠를 사용한 자동화 된 데이터베이스 배포 (CMSes)

우리는 각 사이트 로컬, 통합, 스테이징 및 프로덕션에 대해 네 가지 환경을 갖추고 있습니다. 컨텐츠 입력 및 파일 업로드는 프로덕션 사이트에서 정기적으로 수행됩니다. 개발은 분명히 로컬에서 시작되어 그 방법을 작동시킵니다.

사용자 생성 콘텐츠를 덮어 쓰지 않고 개발 환경에서 프로덕션으로 데이터 및 스키마 업데이트를 자동으로 푸시하도록 빌드 서버에서 구현할 수있는 방법이나 기술에는 어떤 것이 있습니까? 반대로, 어떻게 사용자가 생성 한 데이터를 개발 환경에 자동으로 가져올 수 있습니까?

답변

1

걱정해야 할 데이터베이스에는 3 가지 종류의 것들이 있습니다.

1) DDL에서 정의 할 수있는 스키마. 2) 정적 또는 조회 데이터. DML로 정의 할 수 있습니다. 3) DML에서 정의 할 수있는 동적 (또는 사용자) 데이터.

일반적으로 (1)과 (2)의 변경 사항은 상호 의존적 인 코드를 사용하여 프로덕션 환경으로 이동해야합니다. (3) 절대로 올라가서는 안되지만, 그 당시에 프로덕션 환경과 동기화되어 있다면 개발 환경으로 복사 할 수 있습니다.

물론 훨씬 더 복잡합니다. (1)을 얻으려면 exsiting schema/DDL을 특정 alter 문으로 변환해야 할 수 있으며 데이터 유형이나 위치가 변경되는 경우 데이터 조작이 필요할 수도 있습니다. (2)를 얻으려면 복잡한 환경에서 어려워 질 수있는 코드 빌드와의 동기화가 필요합니다.

거기에는 많은 도구가 있으며 자동화가 필요한 경우 익숙한 사람의 조언이 필요할 것입니다.

모든 스키마 변경 사항이 SQL 빌드 스크립트에 반영되고 필요한 변환을 수행하는 데 필요한 모든 SQL이 포함 된 변경 SQL 스크립트에도 추가되는 매우 간단한 스키마를 사용합니다. 이것은 잘 작동하지만 시나리오는 매우 간단합니다 (1 인 1 서버). 따라서 비정형입니다.

그러나 성공의 열쇠는 변경이 이루어진 시점의 변경 작업을 정의하는 것입니다.개발 DB를 변경 한 다음 배포시 재조정을 수행하는 단순한 방법은 재앙입니다.

0

가) 우선 순위 시스템을 사용하는 것이 가장 좋습니다. 귀하의 콘텐츠가 "기본"이고 사용자 콘텐츠가이를 "무시"합니다. 그리고이 내용은 두 개의 다른 장소에 있습니다. 따라서 모든 종류의 병합 프로세스를 처리 할 필요가 없도록 물건을 업데이트하십시오. 데이터는 다른 디렉토리에 있거나 DB에서 다르게 표시 될 수 있습니다. 단점은 링크를 생성 할 때 실제 매핑을 수행하지 않는 한 데이터를 서버에 저장하는 기본 서버 기능을 사용할 수 없다는 것입니다.

즉, /site/images/icon.png를 가로 채고 /site/images/default/icon.png 또는 /site/images/client/icon.png를 제공하거나 페이지를 작성할 때 사용할 수 있습니다. 거기에서 검사를 수행하고 서버가 직접 서비스 할 수 있도록 적절한 URL을 보낼 수 있습니다.

두 번째로 클라이언트 데이터를 사용할 수있는시기는 클라이언트에게 a) 기꺼이하고 b) 공유 할 수 있는지에 대해 클라이언트와상의해야하는 법적 IP 문제입니다. 당신과 그들의 내용. 그 후 기술은 간단합니다.

+0

우리 사업의 성격과 고객과의 계약으로 인해 프로덕션 서버에서 컨텐츠를 가져 오는 데있어 법적 문제가 거의 발생하지 않습니다. 나는 기술에 익숙하지 않다. 정교하게 생각해? 나는 DB를 백업하고 그것을 복원하는 데 익숙해졌지만, 당신이 그렇게하고 진행중인 개발이 진행된다면 분명히 문제가있다. – Jeff

관련 문제