Problemy w dużych aplikacjach internetowych J2EE

Transkrypt

Problemy w dużych aplikacjach internetowych J2EE
Oczekuj najlepszych rozwiązań
Problemy w dużych aplikacjach internetowych J2EE
Jarosław Błąd, Dyrektor ds. Realizacji e-point SA
Streszczenie prelekcji wygłoszonej podczas konferencji Javarsovia 2008,
która odbyła się 31 maja 2008 roku na Uniwersytecie Warszawskim
W pierwszej części wykładu została przedstawiona charakterystyka dużych systemów oraz systematyka
problemów, które mogą w nich występować. W ramach omawiania systematyki problemów szczególna uwaga
została poświęcona następującym zagadnieniom:
- miejscu wystąpienia problemu (aplikacja, oprogramowanie aplikacyjne – w tym serwer aplikacji,
system operacyjny, protokoły sieciowe, sprzęt),
- rodzajowi problemu (stabilność systemu, wydajność, dostępność, bezpieczeństwo, administracja).
Jako podsumowanie pierwszej części wykładu została omówiona przestrzeń problemów, z którymi można się
zetknąć w trakcie eksploatacji dużych systemów internetowych wytworzonych w technologii J2EE.
Druga cześć wykładu została poświęcona na omówienie trzech konkretnych przykładów problemów, które
wystąpiły w rzeczywistości w systemach rozwijanych i utrzymywanych przez e-point SA. Dla każdego
z przykładów zostały przedstawione warunki początkowe pracy systemów, niekorzystne objawy jakie
pojawiły się po pewnym czasie ich eksploatacji oraz sposób analizy problemów wraz z diagnozą. Omówienie
każdego z problemów zakończone było przedstawieniem konkretnych rozwiązań, jak również pokazaniem
rozwiązań alternatywnych.
Jako pierwsze omawiane były problemy związane ze współbieżnością aplikacji, tj. związane
z wykonywaniem wielu różnych transakcji biznesowych jednocześnie w warunkach dużego obciążenia.
Przedstawiono potencjalne przyczyny zakleszczeń i praktyczne sposoby radzenia sobie z tego typu
problemami. Jako podsumowanie przykładu postawiono następującą tezę „Akademickie rozwiązywanie
problemu zakleszczeń nie sprawdza się w przypadku dużych systemów biznesowych”. Przedstawiono
następujące argumenty przemawiające za tą tezą:
- w dużym systemie nie ma możliwości prześledzenia zależności miedzy setkami czy tysiącami
różnych transakcji, z których każda obejmuje dostęp do kilku/kilkunastu zasobów,
- w dużym systemie liczba zasobów, do których się dostajemy rzadko kiedy jest mniejsza niż
kilkadziesiąt tysięcy – raczej zmierza to w stronę milionów,
- nie mamy pełnej kontroli nad blokowanymi zasobami – dotyczy to w głównej mierze bazy danych,
gdzie nie mamy pewności, które rekordy zostaną zablokowane, gdyż o tym decyduje planista
przygotowujący zapytanie do wykonania,
- czasami zdarza się również, ze z powodu wymagań biznesowych nie jest możliwa zmiana kolejności
dostępu do zasobów.
W drugiej kolejności omówiono problemy styku systemu z systemami zewnętrznymi, co jest najczęstszą
przyczyną problemów dużych systemach. Jako przykład przedstawiono integrację z bramkę SMS. Omówiono
podstawowe sposoby rozwiązywania tego typu problemów, tj. kolejkowanie komunikatów i wprowadzenie
timeout’ów. Jako podsumowanie tego typu problemów pokazano przyczyny szybkiego wysycania się wątków
serwera aplikacyjnego jak również zwrócono szczególną uwagę na problemy, które mogą wystąpić
w warstwie sieciowej.
Oczekuj najlepszych rozwiązań
Ostatni przykład został poświęcony na omówienie zagadnień związanych z ograniczeniami wydajnościowymi
spowodowanymi problemami związanymi z zarządzaniem pamięcią w maszynie wirtualnej Java.
Przedstawiono typowe objawy przeciążenia systemu, w którym działa aplikacja J2EE i sposoby
rozwiązywania tego typu problemów (optymalizacja aplikacji oraz rozbudowa warstwy sprzętowej
i systemowej). Przedstawiono szczegółowy model pamięci oraz pracy procesu odśmiecania pamięci (Garbage
Collector) dla serwera aplikacji J2EE i współczesnej aplikacji internetowej pracującej w obrębie takiego
serwera. Wskazano na, najbardziej istotne z punktu widzenia wydajności, parametry pracy procesu
odśmiecania pamięci.
Pozostała część wykładu została poświęcona na analizę możliwości uzyskania określonej dostępności
systemów, w szczególności zmierzenie się z mitem pięciu dziewiątek, czyli uzyskania dostępności systemu
na poziomie 99,999%. Przedstawiono kolejno wymagania techniczne i organizacyjne, których spełnienie
niezbędne jest do uzyskania kolejno dostępności: 90,00%, 99,00% oraz 99,90%. Postawiono tezę, że w
przy obecnych uwarunkowaniach związanych z infrastrukturą sieciową, złożonością komponentów
oprogramowania i sprzętu niemożliwe jest w długim terminie uzyskanie dostępności systemów
internetowych większej niż 99,90%. Ta część wykładu została zakończona omówieniem problemów
finansowych związanych z budową systemów o coraz większej dostępności zarówno na etapie ich
projektowania i implementacji oraz późniejszej ich eksploatacji. W toku wywodu związanego z finansowym
aspektem dostępności systemów wskazano, że decyzja o planowanej dostępności powinna być przede
wszystkim decyzją biznesową ważącą nakłady na zbudowanie i eksploatację systemu z potencjalnymi
zyskami z jego działania. Decyzja taka oczywiście nie może abstrahować od uwarunkowań
technologicznych.