Mam teraz kilka dużych, opartych na sieci produktów dla wielu najemców, i wkrótce zobaczę, że będzie wiele dostosowań, które są specyficzne dla najemcy.
Dodatkowe pole tu czy tam, może dodatkowa strona lub dodatkowa logika w środku przepływu pracy - tego rodzaju rzeczy.
Niektóre z tych dostosowań można wprowadzić do podstawowego produktu i to świetnie. Niektóre z nich są bardzo specyficzne i mogłyby wchodzić w drogę innym.
Mam na myśli kilka pomysłów na zarządzanie tym, ale żaden z nich nie wydaje się dobrze skalować. Oczywistym rozwiązaniem jest wprowadzenie mnóstwa ustawień na poziomie klienta, umożliwiających włączenie różnych „funkcji” dla poszczególnych klientów. Minusem tego jest oczywiście ogromna złożoność i bałagan. Możesz wprowadzić naprawdę ogromną liczbę ustawień, az czasem różne rodzaje logiki (prezentacja, biznes) mogą wymknąć się spod kontroli. Następnie pojawia się problem pól specyficznych dla klienta, który prosi o coś czystszego niż dodanie do istniejących tabel kilku pól zerowalnych.
Co więc robią ludzie, aby sobie z tym poradzić? Force.com wydaje się być mistrzem rozszerzalności; oczywiście stworzyli platformę od podstaw, która jest super rozszerzalna. Możesz dodać do prawie wszystkiego za pomocą interfejsu internetowego. FogBugz zrobił coś podobnego, gdy stworzył solidny model wtyczki, który, jeśli się nad tym zastanowić, mógł być zainspirowany Mocą. Wiem, że poświęcili na to dużo czasu i pieniędzy i jeśli się nie mylę, zamierzałem wykorzystać je wewnętrznie do przyszłego rozwoju produktu.
Brzmi jak coś, co kusiło by mnie do zbudowania, ale prawdopodobnie nie powinno. :)
Czy jedyna droga to ogromna inwestycja w architekturę wtykową? Jak radzisz sobie z tymi problemami i jakie widzisz wyniki?
EDYCJA: Wygląda na to, że FogBugz poradził sobie z tym problemem, budując dość solidną platformę, a następnie wykorzystując ją do złożenia swoich ekranów. Aby go rozszerzyć, należy utworzyć bibliotekę DLL zawierającą klasy, które implementują interfejsy, takie jak ISearchScreenGridColumn, i która staje się modułem. Jestem pewien, że zbudowanie tego urządzenia było niezwykle drogie, biorąc pod uwagę, że mają dużą liczbę programistów i pracowali nad nim przez miesiące, a ich powierzchnia wynosi prawdopodobnie 5% wielkości mojej aplikacji.
W tej chwili poważnie zastanawiam się, czy Force.com jest właściwym sposobem na poradzenie sobie z tym problemem. Jestem twardym facetem ASP.Net, więc jest to dziwna pozycja, w której mogę się znaleźć.