Contents

Kto i dlaczego używa Apache Kafka

Michał Matłoka

20 Oct 2023.9 minutes read

Kto i dlaczego używa Apache Kafka webp image

Obecnie, gdzie informacje stanowią jedno z najcenniejszych dóbr, narzędzia służące do analizy oraz efektywnego zarządzania danymi pełnią istotną funkcję. Jednym z przodujących rozwiązań w tej dziedzinie jest Apache Kafka. W ciągu ostatnich kilku lat, Kafka mocno zyskała na znaczeniu, a adopcja tej technologii jest widoczna w firmach na całym świecie, także wśród największych, globalnie rozpoznawalnych marek. Według badania enlyft, już ponad 50 tysięcy firm korzysta z Apache Kafka, a wśród nich znajdują się takie giganty jak: Uber, Shopify i Spotify.

Co sprawia, że Apache Kafka jest konkurencyjnym wyborem i gdzie sprawdzi się najlepiej? Żeby odpowiedzieć na to pytanie, najpierw poznajmy Kafkę trochę bliżej od jej technicznej strony.

Czym dokładnie jest Apache Kafka?

Apache Kafka to platforma do strumieniowego przesyłu i przetwarzania danych, dostępna na licencji open source (Apache2). Narodziła się jako projekt inicjowany przez LinkedIn w 2011 roku, mający na celu efektywne zarządzanie danymi w czasie rzeczywistym. Po trzech latach od powstania projektu, twórcy Kafki założyli firmę Confluent, która wprowadziła na rynek Confluent Platform oraz Confluent Cloud. Te rozwiązania poszerzają funkcjonalności Kafki, umożliwiając jej efektywne wykorzystanie w systemach enterprise.

Kafka jest systemem rozproszonym: w typowej konfiguracji działają minimum 3 serwery w klastrze, obsługujące dowolną ilość klientów sieciowych. Dane przechowywane są redundantnie na wielu brokerach (brokerem nazywany jest serwer Kafki). Zapewnia to wysoką dostępność i odporność na awarie.

Większość popularnych języków programowania jak Python, Java czy Scala, posiada aktywnie rozwijane i utrzymywane biblioteki do bezproblemowej integracji kodu biznesowego z Kafką. Możemy zatem sprawnie dostosować platformę Apache Kafka do naszych potrzeb, specyfiki systemu informatycznego, rodzaju danych i ich wielkości.

Kafka umożliwia producentom publikowanie wiadomości w topikach (Kafka topics), podczas gdy wielu konsumentów subskrybuje topiki w celu uzyskania dostępu do danych i ich przetwarzania. System przetwarzania danych Kafki obejmuje brokerów, topiki i interfejsy API, dzięki czemu nadaje się do różnych zastosowań, takich jak analityka w czasie rzeczywistym, agregacja dzienników i architektury sterowane zdarzeniami.

Rozproszona architektura umożliwia Kafce obsługę ogromnych ilości danych przy dużej przepustowości i małych opóźnieniach, co czyni ją idealnym wyborem dla firm agregujących i przetwarzających rozbudowane zbiory danych. Zapewniając kompleksową obsługę złączy poprzez Kafka Connect, można ją bezproblemowo zintegrować z innymi systemami typu open source.

Do czego wykorzystuje się Kafkę?

Ze względu na swoją odporność na awarie i skalowalność Kafka jest często używana w przestrzeni dużych zbiorów danych, znacznie ułatwiając zarządzanie taką ilością informacji. Może stanowić alternatywę, gdy z jakiegoś powodu nie możesz użyć bazy danych czy podobnego, standardowego rozwiązania. Przyjrzyjmy się konkretnym przypadkom użycia, w których Apache Kafka będzie świetnym wyborem.

Przetwarzanie strumieni

Dzięki Kafka Streams możesz zbudować platformę streamingową, która przekształca wejściowe topiki Kafki w wyjściowe. Zapewnia to, że aplikacja jest rozproszona i odporna na błędy.

Śledzenie aktywności w witrynie

To pierwotny przypadek użycia Kafki zastosowany w LinkedIn, który zapoczątkował wynalezienie tej platformy. Firma nadal korzysta z Kafki do śledzenia danych dotyczących aktywności i wskaźników operacyjnych w czasie rzeczywistym.

Zbieranie i monitorowanie metryk

Kafkę można łatwo połączyć z aplikacją monitorującą w czasie rzeczywistym, która odczytuje topiki Kafki.

Agregacja logów

Możesz publikować logi w topikach Kafki i w ten sposób przechowywać je w klastrze Kafki. Dzięki temu logi można łatwo agregować lub przetwarzać za pomocą Apache Kafka.

Analityka w czasie rzeczywistym

Kafkę można wykorzystać do analityki w czasie rzeczywistym, ponieważ jest w stanie przetwarzać dane, gdy tylko staną się dostępne. Może przesyłać dane od producentów do podmiotów zajmujących się przetwarzaniem danych konsumenta i dalej do przechowywania danych.

Mikroserwisy

Apache Kafka jest również użyteczna w kontekście mikroserwisów, gdzie pełni kluczową rolę jako centralny pośrednik, umożliwiający mikroserwisom komunikację między sobą. W tym modelu Kafka obsługuje strumieniowanie wiadomości w oparciu o mechanizm publikowania i subskrybowania. Dzięki takiemu podejściu, odbiorca ma możliwość asynchronicznie wybierać, które zdarzenia chce odebrać. W wyniku tego zastosowania, aplikacje oparte na tej technologii stają się bardziej niezawodne i elastyczne w porównaniu do architektur, które nie wykorzystują Kafki.

Co daje wykorzystanie Apache Kafka

teamwork
Kafka ma wiele mocnych stron. Po pierwsze, łatwo jest zrozumieć, jak działa. Po drugie, jest to niezawodne, odporne na awarie i dobrze skalujące się narzędzie. Zagłębmy się w szczegóły, aby zobaczyć, kto może na jej zaletach najbardziej skorzystać.

Tolerancja błędów i skalowanie poprzez grupowanie

Jeśli odporność na błędy ma kluczowe znaczenie dla Twojej aplikacji i wiesz, że w przyszłości może zaistnieć potrzeba jej skalowania, odpowiedzią będzie projekt klastrowy Kafki. Kafka jest w stanie automatycznie zrównoważyć obciążenie przetwarzania pomiędzy konsumentami. Zatem nawet jeśli obciążenie wiadomości drastycznie wzrośnie, jesteś bezpieczny, ponieważ możesz dodać więcej węzłów i konsumentów, pod warunkiem, że przewidziałeś to wcześniej i zdefiniowałeś wystarczającą liczbę partycji.

Część ekosystemu open source

Apache Kafka to platforma typu open source, zaprojektowana z myślą o stosunkowo łatwej łączności z innymi systemami tego rodzaju korzystającymi z Kafka Connect. Dzięki temu Twoja architektura może korzystać z całego ekosystemu gotowych złączy.

Elastyczność

Możesz używać Kafki do większości typów treści (o ile wiadomości nie są zbyt duże), ponieważ możesz łatwo dodawać do systemu różnych typów producentów i konsumentów. Dlatego nawet jeśli Twój biznes się rozrośnie lub zmieni, nie musisz przepisywać całej architektury na nowo.

Kontrolowany dostęp

Dzięki Kafce otrzymujesz wbudowaną strukturę uwierzytelniania. Ponieważ producenci i konsumenci są skonfigurowani do parametrów zapisu i odczytu z określonych kolejek, możesz zarządzać dostępem do danych za pomocą jednego scentralizowanego mechanizmu.

W jakich branżach warto używać Kafki

Ecommerce

Kafka ma znaczący wpływ na rozwój platform ecommerce, umożliwiając im śledzenie działań użytkowników, dostarczanie spersonalizowanych rekomendacji i optymalizację zarządzania zapasami. Przetwarzanie strumieni danych w czasie rzeczywistym z interakcji klientów, takich jak zakupy, zachowania przeglądania ofert i recenzje produktów, umożliwia platformom handlu elektronicznego uzyskanie cennego wglądu w preferencje i trendy klientów.

Wykorzystując Apache Kafka, platformy ecommerce mogą zapewnić swoim klientom bardziej wciągające i dostosowane doświadczenia zakupowe, a przez to, znacząco polepszyć konwersję i zwiększyć sprzedaż.

Fintech

W branży usług finansowych Apache Kafka odgrywa kluczową rolę w przetwarzaniu danych finansowych w czasie rzeczywistym. Zapewnia skalowalną i niezawodną platformę umożliwiając natychmiastowe i oparte na danych podejmowanie decyzji i lepsze wykrywanie oszustw. Instytucje finansowe mogą używać Kafki do szybkiego przetwarzania strumieni danych, takich jak ceny akcji i transakcje. Firmy takie jak Nationwide, ING Bank, CapitalOne i RobinHood to tylko kilka przykładów organizacji, które wykorzystały Kafkę do swoich potrzeb w zakresie usług finansowych.

Rozproszona architektura i konstrukcja odporna na awarie zapewniają, że dane są przetwarzane i dostarczane w sposób terminowy i niezawodny, umożliwiając instytucjom finansowym przyjmowanie i analizowanie dużych ilości danych z różnych źródeł, takich jak źródła danych rynkowych, zapisy transakcji i interakcje z klientami.

Insurtech

W branży ubezpieczeniowej Apache Kafka jest wykorzystywana do monitorowania w czasie rzeczywistym, modelowania predykcyjnego i oceny ryzyka. Firmy takie jak Generali, Centene, Humana i AllegroGraph wykorzystują platformę Kafka do przesyłania strumieniowego wydarzeń, wyceny ubezpieczeń oraz przetwarzania i analiz strumieni. Stosując Apache Kafka, firmy ubezpieczeniowe mogą uzyskać cenny wgląd w zachowania klientów, trendy rynkowe i potencjalne ryzyko, co prowadzi do bardziej świadomego podejmowania decyzji, obniżonych kosztów operacyjnych, a z punktu widzenia użytkownika, lepszej obsługi.

Skalowalne, odporne na błędy i możliwości przetwarzania danych w czasie rzeczywistym platformy Kafka sprawiają, że jest to idealny wybór dla aplikacji insurtech, które wymagają natychmiastowej analizy danych i działania. Kafka umożliwia firmom ubezpieczeniowym przetwarzanie, przechowywanie, interpretowanie i działanie na danych, ułatwiając w ten sposób podejmowanie decyzji w oparciu o te pozyskane dane, optymalizując efektywność operacyjną, a ostatecznie ulepszając produkty i usługi dla szerokiej grupy konsumentów.

Kto i dlaczego używa Apache Kafka - przykłady znanych marek

Activision

Znasz serię gier komputerowych Call of Duty? Activision to właśnie firma, która ją stworzyła. W jednej z ich prezentacji pokazano, jakie problemy mieli z Kafką i jak je przezwyciężyli.

Streszczenie

Activision ma ponad 1000 topików w swoim klastrze Kafka i obsługuje od 10 tys. do 100 tys. wiadomości na sekundę. Wysyłane są różne informacje, w tym statystyki rozgrywki, takie jak zdarzenia strzeleckie i miejsce śmierci. Nazwanie topików było wyzwaniem, ale doszli do wniosku, że nazwa nie powinna określać, kto produkuje lub wykorzystuje dane, ale raczej powinna wskazywać typ danych. Activision wykorzystuje różne formaty danych i posiada własny rejestr schematów napisany w Pythonie i oparty na Cassandrze. Używają kopert wydarzeń (event envelopes) skonstruowanych za pomocą Protobufa.

Zobacz więcej w tym wideo i prezentacji.

Tinder

Tinder, znana aplikacja randkowa, wykorzystuje Kafkę do wielu celów biznesowych. Różne procesy opierają się na strumieniach Kafki, a wśród nich można znaleźć:

  • planowanie powiadomień dla użytkowników wprowadzających się na rynek (np. o przesłanie zdjęcia profilowego),
  • analityka,
  • moderowanie treści,
  • rekomendacje,
  • aktywacja użytkownika,
  • proces aktualizacji strefy czasowej użytkownika,
  • powiadomienia,
  • i inne.

Tinder wysyła ponad 86B zdarzeń dziennie, co daje około 40TB danych/dzień (informacje z 2018 roku). Kafka pozwoliła im zaoszczędzić ponad 90% w porównaniu do AWS SQS/Kinesis. Więcej informacji można znaleźć w ich prezentacji z Kafka Summit 2018.

Obejrzyj wideo na ten temat na stronie Confluent i prezentację.

Pinterest

Pinteresta odwiedza co miesiąc ponad 200 milionów użytkowników. Istnieje ponad 100 miliardów pinów, a co miesiąc przeszukiwanych jest ponad 2 miliardy pomysłów. Kafka jest wykorzystywana w wielu procesach. Każde kliknięcie, ponowne przypięcie lub powiększenie zdjęcia skutkuje komunikatami Kafki. Kafka Streams wykorzystywane są do indeksowania treści, rekomendacji, wykrywania spamu, ale co najważniejsze, także do kalkulacji budżetów reklamowych w czasie rzeczywistym.

Obejrzyj wideo na ten temat na stronie Confluent.

Uber

Uber wymaga dużej ilości przetwarzania w czasie rzeczywistym. Obsługują ponad bilion (info z 2017 r.) wiadomości dziennie na dziesiątki tysięcy tematów! Ta ilość skutkuje objętością danych liczoną w petabajtach. Wiele procesów jest modelowanych przy użyciu Kafka Streams, nawet tak ważnych jak dopasowywanie klientów i kierowców, wraz z obliczeniami ETA czy audytem.

Z technicznego punktu widzenia Uber wykorzystuje swój serwer proxy REST, który jest rozwidleniem serwera Confluent. Poprawiono wydajność i niezawodność. Kafka jest używana jako główne narzędzie w co najmniej jeden sposób, więc żadne dane nie są tracone. Aby osiągnąć lepszą przepustowość, wykorzystywane są funkcje przetwarzania wsadowego. Dane dzielone są na regionalne Klastry Kafki, które są później replikowane za pomocą własnego narzędzia zwanego uReplicator.

Zobacz prezentację na ten temat oraz wideo:

LinkedIn

Jak już wiesz, Apache Kafka zawdzięcza swoje powstanie właśnie platformie LinkedIn. Obecnie LinkedIn obsługuje 7 bilionów wiadomości dziennie, podzielonych na 100 000 tematów, 7M partycji, przechowywanych przez ponad 4000 brokerów. Wykorzystują serwer proxy REST dla klientów innych niż Java oraz Rejestr Schematów do zarządzania schematami. LinkedIn ma własne łatki i wydania Kafki, dzięki czemu mogą uzyskać pewne funkcje wcześniej niż zostaną zaakceptowane w oficjalnych pakietach.

Najnowsze informacje o LinkedIn i sposobie wykorzystania platformy Kafka można znaleźć w poście na blogu Jak LinkedIn dostosowuje Apache Kafka do 7 bilionów wiadomości dziennie”. z października 2019 r.

Czy Netflix nadal korzysta z platformy Kafka?

Netflix wykorzystuje wieloklastrowe klastry Kafka wraz z Apache Flink do przetwarzania strumieniowego. Obsługują biliony wiadomości dziennie. Co ciekawe, Netflix zdecydował się na użycie dwóch replik na partycję, umożliwiając konfigurację topiku Unclean Leader Election. Poprawia to dostępność, ale może spowodować utratę danych. Jest to jeden z powodów, dla których Netflix stworzył własne narzędzie do śledzenia Inca, które może wykryć utracone dane. Oferuje powiązane wskaźniki i sprawdza, czy elementy infrastruktury zapewniają wymagane gwarancje przetwarzania (np. co najmniej raz).

Aby dowiedzieć się więcej o tym narzędziu, zajrzyj do tego wpisu na blogu Netflix.

Podsumowanie

Jak widać Kafka jest wykorzystywana przez firmy o różnym profilu, najczęściej w procesach biznesowych obejmujących duże ilości danych. Jest w stanie skalować się niemal liniowo, obsługując miliardy lub biliony wiadomości. Dość często można zaobserwować, że Kafka Streams lub rejestr schematów są używane razem z Kafką. Jeśli chcesz wiedzieć więcej o tym, kto korzysta z platformy Kafka, zapoznaj się z sekcją Powered by w dokumentacji platformy Kafka.

Chcesz wiedzieć, jak odczuć korzyści płynące z Apache Kafka w swojej firmie? Pobierz nasz eBook “Start with Apache Kafka” , w którym znajdziesz najważniejsze informacje dotyczące wdrażania produkcyjnej Kafki.

kafka ebook

Blog Comments powered by Disqus.