Minimalistyczne moduły/pluginy do aplikacji webowej

0

W ramach de-monolityzacji aplikacji webowej, oraz dawania różnej wartości dodanej dla różnych klientów, zrobiłbym mądrzej podział ma moduły / pluginy / whatever.
Do tego czasu znalazłem:

  • Servlet 3.0 możliwość web-fragments. Z wad, na ile wiem, mała możliwość "dziedziczenia" po wspólnym jądrze (spójny wygląd, menu oraz średnio rozbudowana infrastruktura)

  • https://github.com/pf4j/ To, to mi się zawsze podoba, przez obiektowy kod javy. Zaletą/wadą są oddzielne loadery (jeszcze nie mam zdania)

  • OSGI zostawmy w (wiecznym) spokoju, tak myślę

Pytanie brzmi: co doradzicie? Nie jest problemem wydajność (kilkanaście/dziesiąt sesji max) ani dynamika (operacje na w/w co kilka tygodni). Chodzić to będzie na Payara / TomEE

0

Czy przypadkiem problem modularyzacji nie jest ortogonalny do problemu pisania ficzerów pod konkretnych klientów? DevSkiller tak robił i się z tego wycofuje, jest to problematyczne w utrzymaniu i nawet mikroserwisy nie pomogą. Sam jestem ciekawy jak do tego mądrze podejść, żeby nie skończyć z masą ifów albo modułem per klient.

2

Po pierwsze co jest twoim problemem, że chcesz robić "demono-lityzację"?
Po drugie: co mają servlety do menu, i wyglądu itp? Masz renderowany HTML po stronie servera?

Z wybranych technologii to widać, że bardziej chcesz zrobić mechanizm pluginów niż modularyzację. To w zasadzie niezależne kwestie.
Z tego co rozumiem każdy klient będzie u Ciebie miał osobny server z osobnymi pluginami.
IMO tak naprawdę, żadnych technologii do tego nie potrzebujesz specjalnych frameworków. PF4j, OSGI dadzą Ci możliwośc hot reloadu pluginów. Za cenę komplikacji classloaderów.
W połączeniu z java ee (serwerami), które jest też powalone pod tym wzgledem to zapowiada się na prawdziwy koszmar.

0
jarekr000000 napisał(a):

Po pierwsze co jest twoim problemem, że chcesz robić "demono-lityzację"?

Chciało by się mieć niezależny rytm wydań, przynajmniej w obrębie "dużego numeru wersji" kernela
Śmieszne scenki, gdy klient X zobaczy (fragment) ficzer(u) dla klienta Y, gdzie się zapomniało if'a postawić. Tak to jest do tej pory

Po drugie: co mają servlety do menu, i wyglądu itp? Masz renderowany HTML po stronie servera?

Serwer side, Apache Wicket

Z wybranych technologii to widać, że bardziej chcesz zrobić mechanizm pluginów niż modularyzację. To w zasadzie niezależne kwestie.
Z tego co rozumiem każdy klient będzie u Ciebie miał osobny server z osobnymi pluginami.

Tak, to są ich maszyny w intranetach

IMO tak naprawdę, żadnych technologii do tego nie potrzebujesz specjalnych frameworków. PF4j, OSGI dadzą Ci możliwośc hot reloadu pluginów. Za cenę komplikacji classloaderów.
W połączeniu z java ee (serwerami), które jest też powalone pod tym wzgledem to zapowiada się na prawdziwy koszmar.

być może zostanę z jar-per-module ... na reload serwera mnie stać, dla hot-reloadu nie będę sob ie robił sznytów.
Jak oficjalnie zg ze standardami dodać folder "podobny" do WEB-INF/lib? W skryptach startowych TomEE, czy da się ładniej?
W PF4J drobiazg mnie ujął, parametr PluginPath

2

Moim zdaniem (ze względu na tego web / wicketa) tym co Ci zadziała będzie http://maven.apache.org/plugins/maven-war-plugin/overlays.html

Masz projekt bazowy (ewentualnie projekty bazowe), z klasami bazowymi, bazowymi templatami.
Dla konkretnych klientów masz implementacje klas intefrejsów i bardziej szczeólowe, specyficzne "templatki".

Ile tych klientów masz? Gdzieś tak do 4-5 da się tak jechać, potem coraz gorzej tym zarządza się.

Nie ma nic lepszego jak ogarnięcie po roku, że jeden z klientów ma kod oparty na zupełnie starej bazie i nie pamiętamy nawet już poszczególnych kroków migracyjnych :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1