• english
  • polski
  • Prelegent: Waldemar Kot

    Temat prezentacji: Programowanie aplikacji zdarzeniowych z Oracle CEP (Complex Event Processing)

    Język: polski

    Waldemar Kot jest pasjonatem technologii middleware i Java. Pracuje jako inżynier systemowy w Oracle Polska, do którego trafił w wyniku akwizycji BEA Systems. Zajmuje się doradzaniem Klientom w Europie Środkowej i Wschodniej w wyborze technologii middleware dla realizowanych przez nich projektów z zakresu budowy i integracji aplikacji oraz budowy rozwiązań klasy SOA, EDA i BPM. Specjalizuje się w technologiach middleware związanych z Java, J2EE/JEE oraz Spring, a także technologiach telekomunikacyjnych związanych z IMS (IP Multimedia Subsystem), takich jak SIP, SIP Servlet, czy telecom web services. Stara się także aktywnie uczestniczyć w rozwoju społeczności Java w Polsce. Jest dumnym członkiem Warszawa Java User Group.

    Abstrakt Complex Event Processing (CEP) to dziedzina przetwarzania, zajmująca się przetwarzaniem zdarzeń w czasie rzeczywistym. Przez “przetwarzanie zdarzeń” rozumie się tutaj bardziej złożone operacje, takie jak np. wyszukiwanie wzorców w strumieniach zdarzeń, korelacje zdarzeń, wyszukiwanie trendów i zależności przyczynowo-skutkowych pomiędzy zdarzeniami, filtrowanie i agregowanie zdarzeń, czy obliczanie złożonych statystycznych miar dla określonych grup zdarzeń (np. okien czasowych czy ilościowych). W odróżnieniu od prostszych metod przetwarzania zdarzeń, które przetwarzają poszczególne zdarzenia niezależnie od siebie (”pojedynczo”), CEP skupia się na przetwarzaniu wielu zdarzeń na raz (np. określone zdarzenia z ostatnich 5 sekund). Aplikacje korzystające z CEP monitorują zatem określone źródła zdarzeń, a gdy pojawi się zdefiniowana korelacja, wykonywana jest określona akcja. CEP jest częścią szerszej Architektury Sterowanej Zdarzeniami (EDA - Event Driven Architecture) - systemy EDA wykonują operacje w wyniku pojawienia się określonego zdarzenia (a w przypadku CEP - korelacji wielu zdarzeń). Odróżnia to je od powszechnie stosowanych dzisiaj systemów (np. webowych) działających wg paradygmatu “request-response”. W EDA mamy raczej do czynienia z podejściem “listen-response”.

    Do czego w praktyce stosuje się CEP ? Jest wiele przykładów (w końcu w CEP chodzi o przetwarzanie zdarzeń w czasie rzeczywistym, co jest dosyć powszechnie spotykaną potrzebą). Na przykład, często spotykane w dziedzinie finansów systemy klasy algorithmic trading, czyli systemy obserwujące sygnały płynące z rynku (walutowego, akcyjnego lub innych) i podejmujące decyzje rynkowe (np. kupno/sprzedaż). Systemy real-time pricing - obliczające cenę produktu lub usługi w oparciu o bardzo zmienne w czasie kryteria. Systemy monitorowania (np. wczesnego ostrzegania) informujące o awarii i jej przewidywanych konsekwencjach. Wreszcie systemy klasy fraud detection - wykrywające nadużycia czy próby włamań.

    Co odróżnia systemy CEP od systemów bazodanowych klasy OLTP/OLAP ? Otóż w CEP analiza przychodzących zdarzeń odbywa się w czasie rzeczywistym, w momencie pojawienia się zdarzenia. Zapytania (korelacje) CEP wykonują się w sposób ciągły (continous query). W OLTP/OLAP analiza odbywa się ex-post i zwykle mamy “luksus” wcześniejszego zapisania i stosownego przygotowania (przetworzenia) danych. Zresztą w literaturze o CEP dosyć często stosuje się porównanie CEP do “odwróconej” bazy danych. W normalnej bazie danych, mamy do czynienia z sytuacją, w której na relatywnie statycznym zbiorze danych wykonywane są zmienne zapytania. W CEP, czyli “odwróconej” bazie danych, relatywnie statyczne zapytania wykonywane są na szybkozmiennym zbiorze danych.

    W trakcie mojej prezentacji chciałbym na przykładzie technologii Oracle CEP przedstawić czym jest CEP, model budowy tego rodzaju aplikacji i technologię zdarzeniowego serwera aplikacyjnego. Zademonstruję prostą aplikację Java, która będzie korzystać z Event Query Language (EQL) - języka opisu korelacji między zdarzeniami. Nie ma się czego obawiać - EQL jest bardzo podobny do SQL, to taki SQL z rozszerzeniami w stronę złożonego przetwarzania strumieni zdarzeń. Na tym zresztą polega innowacja, którą Oracle (a wcześniej BEA, gdyż Oracle CEP, to nowa nazwa technologii WebLogic Event Server) chcą wprowadzić do świata Java: wzbogacić warsztat deweloperów znających Java i SQL o mechanizmy związane z przetwarzaniem strumieni zdarzeń w czasie rzeczywistym, ale przy tym zrobić to w taki sposób, aby maksymalnie wykorzystać posiadaną już wiedzę. Oracle CEP jest lekkim kontenerem do budowy aplikacji deterministic Java, z wbudowanym silnikiem zapytań CEP. Produkt korzysta z OSGi i Spring-DM - zarówno wewnętrznie, jak i udostępnia ten model budowy aplikacji dla dewelopera. Oracle CEP jest serwerem aplikacyjnym (kontenerem) dla aplikacji zdarzeniowych, a zatem ma za zadanie:

    1. ułatwić życie deweloperowi, poprzez udostępnienie prostego, opartego o podejście POJO i Dependency Injection (Spring) modelu budowy aplikacji zdarzeniowych. Deweloper ma także do dyspozycji szereg gotowych komponentów, pozwalających w większym stopniu skupić się na logice biznesowej (i “nie wyważać otwartych drzwi”). Przy tym, Oracle CEP jest serwerem aplikacyjnym Java, które został specjalnie przystosowany do typowej specyfiki aplikacji zdarzeniowych - masowego, deterministycznego przetwarzania zdarzeń w czasie rzeczywistym (nawet milionów zdarzeń w ciągu sekundy)
    2. ułatwić zarządzanie aplikacjami zdarzeniowymi w produkcyjnym środowisku - m.in. poprzez udostępnienie mechanizmów diagnozowania stanu systemu, czy mechanizmów klastrowania, pozwalających zwiększyć poziom dostępności (HA) i poprawić skalowalność rozwiązania.

    Prezentacja będzie miała bardzo warsztatowy, praktyczny charakter, czyli to co deweloperzy Java lubią najbardziej. Zapraszam.

    Proidea