Mam do czynienia z systemem, który uruchamia aplikację Java na klienta we własnej JVM. Mamy około pół tuzina serwerów dedykowanych, które teraz mają prawie 100 JVM i zestawy niestandardowych skryptów do zarządzania tymi maszynami JVM. Ta konfiguracja naprawdę pokazuje swój wiek w tym momencie: zarządzanie, że wiele maszyn JVM staje się koszmarem monitorowania/zarządzania i ciągle mamy do czynienia z problemami z wielkością sterty. Chcielibyśmy przejść do bardziej nowoczesnego podejścia i po prostu uruchomić pakiet aplikacji na jednym serwerze aplikacji na fizyczną maszynę. Jednak oddzielenie aplikacji od siebie ma wyraźne zalety w zakresie izolacji (np. Błędy braku pamięci dotyczą tylko jednego klienta). Każdy stos oprogramowania klienta ma wymagania dotyczące pamięci, które różnią się znacznie.Wiele maszyn JVM kontra serwer pojedynczej aplikacji
Moje pytanie: czy istnieje sposób, aby mieć najlepsze cechy obu światów i uruchamiać wiele aplikacji w jednej maszynie JVM (serwer aplikacji) i nadal utrzymywać pewien poziom izolacji? A może to tylko współczesny fakt, że w dzisiejszych czasach potrzebujesz zarządzać wymaganiami pamięciowymi dla zestawu aplikacji? Czy są tu inne rozwiązania oprócz serwera aplikacji lub kontenera Java EE (np. Wildfly lub Spring), którego tu brakuje? Wygląda na to, że ten system jest zaporą z innej ery!
Nowoczesne podejście coraz częściej wykorzystuje wirtualne maszyny JVM dla aplikacji na wirtualnych hostach. Aby uzyskać pożądaną skalę, zdecydowanie sugeruję, aby w Cloud Foundry pominąć większość zarządzania, o którym mówisz. – chrylis
Podobnie jak w komentarzu Chrylis, nowoczesne podejście NIE polega na używaniu serwerów aplikacji. Wielorakość jest również martwa, ponieważ dlaczego masz kłopot z tym, kiedy możesz używać maszyn wirtualnych lub kontenerów takich jak Docker, aby dać ci prawdziwą separację? – SteveD
Myślę, że koncentrujesz się na niewłaściwym problemie: dlaczego ciągle masz problemy z wielkością sterty? Czy Twoje aplikacje przepełniają pamięć? Czy masz nieograniczoną konsumpcję pamięci? Czy twoja aplikacja nie przystosowuje się do stałego korzystania z pamięci dla danego obciążenia? – SteveD