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.