2016-09-17 1 views
0

저는 django에서 SaaS 애플리케이션의 백엔드를 작성하고 있습니다. 아키텍처에 대한 지침이 필요합니다. 그러면 제품에는 두 가지 제품이 제공됩니다. 즉, 모든 사용자가 동일한 데이터베이스를 공유하는 일반적인 제품과 전용 데이터베이스를 사용하는 프리미엄 제품입니다. 이것을 장고로 번역하려는 방법은 다음과 같습니다.django의 SaaS 제품에 대한 백엔드 아키텍처

  • django 프로젝트 내에서 일반용으로 하나의 응용 프로그램이 있습니다.
  • 모든 프리미엄 고객에게 별도의 앱이 제공됩니다.
  • 각 앱의 모델은 동일합니다.
  • 모든 앱은 별도의 데이터베이스와 통신합니다. 달성 된 내용은 다음과 같습니다. stackoverflow postdjango documentation
  • 모든 API에 대한보기는 응용 프로그램이 아닌 프로젝트의 views.py에 작성하고 응용 프로그램의 모델과 통신 할 토큰의 기초를 결정합니다. 나는이 아키텍처 지금 볼

문제점 : 모든보기에서

  • , 나는 프리미엄 고객의 수가 증가 번 조건문을 많이 작성해야합니다.
  • 새로운 프리미엄 클라이언트를 사용하려면 상당한 코드 변경이 필요합니다.
  • 모든 다른 apps의 models.py에 코드 중복. 그러나 프리미엄 클라이언트가 등록 할 때마다 새로운 데이터베이스에 테이블을 작성하는 구문을 작성하는 것과 거의 비슷합니다. 코멘트?

전체 아키텍처에 대해 알려주십시오. 이런 방식으로 가기 전에 많은 기사와 스택 오버 플로우 게시물을 살펴 보았지만 완전히 장고에 특유한 것은 없었습니다. 그래서 100 % 확신하지 못했습니다. 미리 감사드립니다.

답변

0

무료 및 프리미엄 제품의 기능이 완전히 동일하면 코드 중복이 필요하지 않습니다. 물론 프리미엄 오퍼링에 추가 기능을 추가 할 수 있기 때문에 이것은 큰 IF입니다.

기능이 완전히 동일하면 새로운 프리미엄 데이터베이스를 settings.py에 추가하고 미들웨어를 사용하여 모델이 통신해야하는 데이터베이스 (using 속성 사용)를 결정하고, 공유 데이터베이스의 경우 해당 행의 소유자가 누구인지 기록하는 모든 테이블에 owner 열을 추가하여 쿼리 세트를 적절하게 필터링 할 수 있습니다.

관련 문제