2014-12-02 3 views
0

샌드 박스 모드를 사용하는 사이트 (예 : 결제 사이트)의 경우 별도의 데이터베이스를 사용합니까, 아니면 동일한 사이트입니까?샌드 박스 환경 분리

프로덕션 및 샌드 박스 환경에 대한 두 개의 스키마를 검토하고 있습니다. 다음은 두 가지 옵션입니다.

옵션 1 :

  • 복제 데이터베이스, sandbox 모드에 따라 올바른 데이터베이스에 대한 요청을 라우팅.

옵션 2

  • 단일 데이터베이스의 주요 테이블 '은 is_sandbox 부울 있습니다.

각 방법의 장단점은 무엇입니까?

답변

1

대부분의 경우 두 개의 별도 데이터베이스를 유지해야합니다. 이 동일한 데이터베이스에 섞여 두 가지를 할 이유가 없다, 아주 좋은 많은 이유는 그들이 분리 유지 : 실체가있는 "영역"에있는

  • 유지 트랙 (생산 샌드 박스 대) 코드에 대한 추가 작업이므로 많은 장소에 코드를 포함해야 할 가능성이 큽니다.

  • 데이터베이스 스키마에도 논리가 필요합니다. UNIQUE 인덱스에는 모두 영역을 포함해야합니다.

  • 해당 코드를 잊어 버린 경우 잠재적 인 보안 취약점이 발생합니다. 악의적 인 사용자가 한 영역의 데이터를 다른 영역에 영향을 줄 수 있습니다. 응용 프로그램이 무엇인지에 따라, 이것은 성가신 곳에서부터 무서운 곳까지 다양 할 수 있습니다. 예를 들어 지불 애플리케이션 인 경우 잠재적 인 결과는 엄청납니다. 모래 상자에서 나온 돈을 "척"한 돈을 실제 돈으로 변환 할 수 있습니다.)

  • 코드가 모두 완벽하더라도 여전히 사용할 수 있습니다. 영역 사이에 필연적으로 누출 된 일부 정보. 예를 들어 응용 프로그램에서 순차 식별자 (예 : MySQL의 경우 AUTO_INCREMENT)를 사용하는 경우 샌드 박스에 표시된 값의 갭은 프로덕션에 사용 된 값과 일치합니다. 이 문제가 논쟁의 여지가 있는지 여부.

두 개의 개별 데이터베이스를 사용하면 이러한 모든 문제를 깔끔하게 해결할 수 있습니다. 또한 필요할 때 샌드 박스를 쉽게 지울 수 있음을 의미합니다.

예외 : 응용 프로그램 (스택 오버플로 또는 위키 백과와 같은 예) 거의 완전히 공개 웹 사이트, 또는 샌드 박스 (페이스 북과 같은)에 복제하기 어려운 사회적 측면을 포함하는 경우은보다 통합 된 샌드 박스를 만들 수 있습니다 더 의미.