Dlaczego Twojej firmie potrzebne jest strumieniowe przetwarzanie danych?
W ostatnich latach coraz większa liczba organizacji zaczyna odczuwać potrzebę szybkiego reagowania na przepływające dane informatyczne. Strumieniowe przetwarzanie danych w systemie może realizować to wymaganie.
Z tego artykułu dowiesz się:
- jakie jest biznesowe zastosowanie strumieniowego przetwarzania danych.
- czym jest strumieniowe przetwarzanie danych i jak działa.
- co oferują dostępne na rynku systemy.
Dlaczego Twojej firmie potrzebne jest strumieniowe przetwarzanie danych?
Praktycznie każda organizacja dąży do tego, aby jej decyzje biznesowe były podejmowane na podstawie wiarygodnych i aktualnych danych. Osoby decyzyjne stają więc przed dylematem – w jaki sposób szybko uzyskać informacje o zajściu istotnego zdarzenia, tak żeby móc na nie odpowiednio zareagować? Czy konieczne jest mozolne przeglądanie różnych źródeł danych? A może da się zbudować mechanizm, który powiadomi zainteresowanych o wystąpieniu danego zdarzenia? A może system sam będzie w stanie zidentyfikować sytuacje awaryjną i na nią zareagować?
Rozwiązaniem powyższych problemów może być wdrożenie systemu strumieniowego przetwarzania danych. Żeby dobrze zrozumieć praktyczne możliwości tego typu systemów poniżej przedstawiono ich popularne zastosowania:
Analiza sprzedaży w sklepie internetowym – załóżmy, że sklep internetowy wymienia komunikaty o zamówieniach i cenach z systemem CRM i stanach magazynowych z systemem magazynowym (np. poprzez http i REST API). Każdy z tych typów komunikatów tworzy strumień (strumień zamówień, strumień cen, strumień stanów). Analizując te strumienie ze sobą w sposób skorelowany, system strumieniowego przetwarzania danych może wysyłać alerty o znaczących zdarzeniach (np. mail do osoby odpowiedzialnej). Takim znaczącymi zdarzeniami mogą być np. wyraźny spadek sprzedaży w zakładanym czasie, zwiększona sprzedaż powodująca zbyt szybkie kurczenie się zapasów w magazynie, itd.
Przewidywanie awarii – korelacja danych z wielu różnych czujników w urządzeniu (np. istotny wzrost temperatury połączony ze skokami napięcia wskazuje, że jest wysokie prawdopodobieństwo wystąpienia awarii).
Identyfikacja oszustw finansowych – analiza transakcji w czasie rzeczywistym mająca na celu identyfikację potencjalnych defraudacji.
Zarządzanie flotą – możliwość przekierowania/zmiany trasy samochodu w przypadku wystąpienia korków lub zmiany adresu dostawy (w czasie rzeczywistym na podstawie lokalizacji GPS i danych z innych systemów).
Analityka w sporcie – analiza dynamiki zawodników w trakcie meczu piłki nożnej i dostarczenie informacji do trenera, że dany zawodnik jest zmęczony i potrzebuje zmiany.
Optymalizacja reklam – korelacja zachowania użytkownika na stronie internetowej (kliknięcia) i danych z mediów społecznościowych, umożliwiająca dostosowanie wyświetlanych reklam w czasie rzeczywistym.
Czym jest strumieniowe przetwarzanie danych?
Aby wyjaśnić na czym polega strumieniowe przetwarzanie danych zacząć należy od zdefiniowania strumienia danych. Jest to zbiór lub sekwencja danych (komunikatów) opisujących wystąpienie jakiegoś zdarzenia. Przykładowo – jeśli zdarzeniem jest otrzymanie zamówienia w sklepie internetowym, to sekwencja komunikatów o poszczególnych zamówieniach utworzy strumień danych (zwanym też strumieniem komunikatów).
Zdarzenia w takim strumieniu danych mogą dotyczyć dowolnego obszaru funkcjonowania przedsiębiorstwa. Zdarzeniem może być np.: wypłata z bankomatów, pomiar temperatury w czujniku w urządzeniu, dostawa towaru, informacja o pozycji samochodu (GPS), awaria urządzenia, itd. Oczywistym oczekiwaniem w organizacji jest chęć korelacji takich strumieni, ich analizy i – w razie konieczności – wykonania pewnych akcji.
Tradycyjne podejście do analizy i reagowanie na dane, pojawiające się w organizacji, najczęściej polega na zapisaniu ich w pewnym zasobie (baza danych, system plików, itp.) i wykonywaniu analiz/zapytań na większym, utrwalonym zbiorze danych.
Czasami takie podejście może być jednak niewystarczające (np. ze względu nas czas reakcji). Strumieniowe przetwarzanie danych polega na procesowaniu danych „w locie”, natychmiast w przypadku wystąpienia pewnego zdarzenia (lub korelacji pewnych zdarzeń).
W sieci funkcjonuje wiele różnych terminów określających systemy, które realizują takie podejście. Mogą być one nazywane m.in. SP (Stream Processing), CEP (Complex Event Processing), ESP (Event stream processing), BAM (Business activity monitoring). Część z tych skrótów oznacza ten sam produkt, a między niektórymi występuję pewne różnice. Istnieją również rozróżnienia określające stopień dojrzałości tego typu rozwiązań – np. stanowe (ang. stateful) lub złożone (ang. complex) przetwarzanie danych strumieniowych. W tym artykule skoncentrujemy się możliwościach dojrzałych rozwiązań tej klasy.
Co oferują dostawcy?
Na rynku istnieje wiele rozwiązań do strumieniowego przetwarzania danych. Z jednej strony są to rozwiązania komercyjne, pochodzące najczęściej od tak uznanych dostawców jak IBM, Cisco, Oracle, czy Microsoft. Z drugiej strony, jest kilka ciekawych rozwiązań, dostępnych na licencji open-source, które często nie ustępują swoim płatnym odpowiednikom. Można tutaj wymienić takie produkty jak Apache Flink, Spark Streaming, Apache Samza, Apache Storm, WSO2 Analytics. Na podstawie tego ostatniego produktu chciałbym przedstawić od strony technicznej przykładowe możliwości systemów strumieniowego przetwarzania danych.
WSO2 Analytics, jak sama nazwa wskazuje, jest produktem dostawcy rozwiązań integracyjnych WSO2. Istotną cechą tego dostawcy jest udostępnianie wszystkich swoich produktów w pełnych wersjach na licencji open-source (płatne jest jedynie wsparcie producenta). Poniżej znajdziesz charakterystykę wybranych funkcjonalności WSO2 Analytics w zakresie strumieniowego przetwarzania danych:
- Analiza wszelkiego typu korelacji między różnymi strumieniami zdarzeń z wykorzystaniem bazującego na SQL języka zapytań (Siddhi), posiadającego wszystkie cechy specyficzne dla przetwarzania strumieni (filtry, okna czasowe/ilościowe, łączenie strumieni, wzorce, sekwencje, rozszerzenia).
- Możliwość persystencji otrzymywanych zdarzeń (np. w bazie danych) i wykorzystanie ich w ramach wykonywanych zapytań.
- Wysoka wydajność przetwarzania sięgająca (w najprostszych przypadkach) 900 000 komunikatów na sekundę ze średnim opóźnieniem 0.9 milisekundy (na 2 maszynach 8 vCPU i 16GB RAM).
- Możliwość definiowania różnych odbiorców (ang. receiver) i wydawców (ang. publisher), takich jak np. HTTP, TCP, Kafka, Email, JMS, RabbitMQ, MQTT.
- Możliwość uruchomienia systemu w różnych trybach w środowisku wysokiej dostępności (ang. high availability, HA).
- Wbudowane specjalistyczne rozwiązania analityczne, takie jak maszynowe mechanizmy autonomicznego uczenia się (ang. machine learning).
- Udostępnione dodatkowe elementy takie jak:
– dashboard – umożliwiający prezentację zmieniających się w czasie rzeczywistym danych w formie różnego rodzaju wykresów i statystyk,
– monitoring – umożliwiający monitorowanie wszystkich procesów wchodzących w skład rozwiązania,
– business rules – umożliwiający konfigurację zapytań i reguł wyzwalających poszczególne akcje przez użytkowników biznesowych nieposiadających wiedzy technicznej. - Jedno spójne rozwiązanie umożliwiające bezpieczny dostęp do wszystkich swoich składowych (development, dashboard, monitoring, reguły biznesowe), poprzez graficzny interfejs udostępniony przez przeglądarkę www.
Jeżeli widzisz potencjał w strumieniowym przetwarzaniu danych i chcesz zaprojektować jego wdrożenie dla swojego biznesu, skonsultuj się z ekspertem, który pomoże Ci przejść z sukcesem ścieżkę projektową. Konsultacja specjalisty może okazać się kluczowa, ponieważ nawet rozwiązania open-source wymagają umiejętności i doświadczenia niezbędnego do produkcyjnego uruchomienia i utrzymywania ich.
Jeśli chcesz dowiedzieć się więcej o zarządzaniu API zapraszamy do zapoznania się z ofertą integracji systmowych.