나는 지금 몇 가지 큰 웹 기반 멀티 테넌트 제품을 가지고 있으며, 곧 테넌트별로 많은 사용자 정의가 있음을 알 수 있습니다.
여기 또는 거기에 추가 필드, 워크 플로 중간에 추가 페이지 또는 추가 논리가있을 수 있습니다.
이러한 사용자 정의 중 일부는 핵심 제품에 적용 할 수 있으며 훌륭합니다. 그들 중 일부는 매우 구체적이며 다른 사람의 방식으로 얻을 것입니다.
나는 이것을 관리하기위한 몇 가지 아이디어를 염두에두고 있지만 그중 어느 것도 제대로 확장되지 않는 것 같습니다. 확실한 해결책은 수많은 클라이언트 레벨 설정을 도입하여 클라이언트별로 다양한 '기능'을 활성화하는 것입니다. 물론 단점은 엄청난 복잡성과 혼란입니다. 정말 많은 수의 설정을 도입 할 수 있으며 시간이 지남에 따라 다양한 유형의 논리 (프레젠테이션, 비즈니스)가 제대로 작동하지 않을 수 있습니다. 그런 다음 클라이언트 특정 필드의 문제가 있는데, 이는 기존 테이블에 nullable 필드를 추가하는 것보다 더 깨끗한 것을 요구합니다.
그래서 사람들은 이것을 관리하기 위해 무엇을하고 있습니까? Force.com은 확장 성의 마스터 인 것 같습니다. 분명히 그들은 처음부터 확장 가능한 플랫폼을 만들었습니다. 웹 기반 UI로 거의 모든 것을 추가 할 수 있습니다. FogBugz는 비슷한 플러그인 모델을 만들었습니다. 강력한 플러그인 모델은 실제로 Force에서 영감을 얻은 것으로 생각됩니다. 나는 그들이 많은 시간과 돈을 썼다는 것을 알고있다. 만일 내가 실수하지 않는다면, 의도는 미래의 제품 개발을 위해 실제로 그것을 내부적으로 사용하는 것이었다.
내가 만들고 싶은 유혹을 받았지만 그렇게해서는 안 될 것 같은 소리. :)
플러그 형 아키텍처에 대한 막대한 투자가 유일한 방법입니까? 이러한 문제를 어떻게 관리하고 있으며 어떤 결과를보고 있습니까?
편집 : FogBugz는 상당히 견고한 플랫폼을 구축하고 화면을 구성하는 데 사용하여 문제를 처리 한 것처럼 보입니다. 이를 확장하기 위해 ISearchScreenGridColumn과 같은 인터페이스를 구현하는 클래스를 포함하는 DLL을 작성하면 모듈이됩니다. 나는 그들이 많은 개발자를 가지고 몇 달 동안 일한 것을 고려할 때 빌드하는 데 막대한 비용이들 것이라고 확신합니다. 또한 표면적은 아마도 내 응용 프로그램 크기의 5 % 일 것입니다.
지금 Force.com이이 문제를 처리하는 올바른 방법인지 궁금합니다. 그리고 저는 하드 코어 ASP.Net 녀석입니다.