460 likes | 678 Views
Prezentują:. Marek Wałach UX Designer. Marcin Ceran PHP Developer. Agenda. O nas Skala projektu iPresso Wykorzystywana technologia Case study 1: Przetwarzanie danych do analiz w tle Case study 2: Aktualizacja wielu baz jednocześnie Case study 3: Procesy działające w tle
E N D
Prezentują: Marek Wałach UX Designer Marcin Ceran PHP Developer
Agenda • O nas • Skala projektu iPresso • Wykorzystywana technologia • Casestudy 1: Przetwarzanie danych do analiz w tle • Casestudy 2: Aktualizacja wielu baz jednocześnie • Casestudy 3: Procesy działające w tle • Czas na pytania
encja.com S.A. Jesteśmy zespołem kilkudziesięciu pracowników i współpracowników skoncentrowanym na potrzebach ludzi biznesu i administracji.
Nasze rozwiązania …i wiele innych
iPresso Platforma dla nowoczesnych i skutecznych marketerów, która posiada w jednym miejscu profesjonalne narzędzia
iPresso Zarządzanie kontaktami Monitoring mediów e-PR
iPresso Marketing Automation Direct Marketing Integracje
Skala projektu iPresso Wielu klientów obsługiwanych w modelu SaaS
Skala projektu iPresso Ponad 500 000 kontaktów (użytkowników) obsługiwanych w ramach jednego klienta … i rośnie
Skala projektu iPresso Ponad 13 000 zadań dziennie wykonywanych dla jednego klienta … i rośnie
Przykładowe zadania systemu • Wysyłka mailingu do 500 000 kontaktów • Monitorowanie kilkunastu fraz w mediach • Synchronizacja z zewnętrznymi systemami klienta • Analizowanie bieżących działań
Prognozy • Wielu klientów obsługujących 1 – 5 milionów kontaktów • Wzrost ilości wykonywanych zadań dziennie
Konfiguracja maszyn w chwili startu 1 maszyna z kodem aplikacji, bazą oraz wykonująca akcje cronowe
Konfiguracja maszyn w chwili obecnej Wydzielone maszyny dla każdej z funkcji aplikacji
Konfiguracja maszyn w przyszłości Wydzielone maszyny dla każdej indywidualnej funkcji w celu lepszego skalowania i równoważenia obciążenia
Casestudy 1 Przetwarzanie danych do analiz w tle
Ilości danych i ich struktura w kontekście analiz • W systemie przechowywane są informacje na temat historii działań kontaktów. • Dla 400 000 aktywnych kontaktów w przeciągu kilku miesięcy powstaje tabela z ponad 6 000 000 rekordów
Ilości danych i ich struktura w kontekście analiz • Każdy rekord może być powiązany z innymi elementami systemu • Danych cały czas przybywa
Główne wyzwanie Przygotowanie raportu zawierającego analizę aktywności kontaktów w jak najkrótszym czasie na żądanie użytkownika
Przygotowanie analizy • Analiza wymaga sprawdzenia aktywności każdego kontaktu z osobna i połączenia ich w odpowiednie grupy. • Grupowanie polega na znalezieniu kontaktów, których sekwencja aktywności jest taka sama. • Data wystąpienia danej aktywności i ich kolejność może być różna dla każdego kontaktu.
Zastosowane rozwiązania • Przerzucenie procesu wyciągania i analizowania danych w tło • Rozbicie analizy danych na wiele procesów działających w tym samym czasie • Wykorzystanie współdzielonego serwera memcached dla procesów przygotowujących analizy
Zastosowane rozwiązania • Przetrzymywanie gotowych analiz w cache’u • Mechanizm informujący o postępie przygotowania analizy użytkownika
Dalszy rozwój • Wydzielenie osobnej maszyny dla analiz • Cykliczna wstępna obróbka danych umożliwiająca przyspieszenie procesu generowania analizy
Casestudy 2 Aktualizacja wielu baz jednocześnie
Struktura bazodanowa • 1 wspólna baza przetrzymująca informacje na temat klientów • Każdy klient ma swoją bazę danych w której przechowywane są jego dane • Struktura baz klientów jest identyczna
Pliki aktualizujące bazę • Wykorzystanie plików xml/sql wykonywanych dla każdej bazy • Podział pliku na tagi z zaznaczeniem jaki tag był ostatnio wykonywany
Napotkane problemy • Czas wykonywania skryptów aktualizacyjnych dla cały czas rosnącej liczby klientów • Zabezpieczenie przed niepowodzeniem operacji
Opis problemu • Bardzo długi czas aktualizacji baz danych jedna po drugiej • Brak dostępu do usług podczas aktualizacji • Obsługa potencjalnych błędów
Obciążenie sprzętowe Bardzo niskie obciążenie sprzętowe ze względu na to, że aktualizowana była jedna baza na raz
Zastosowane rozwiązania • Przerzucenie skryptów w tło • Rekurencyjne odpalanie się skryptów • Snapshoty w celu bezpieczeństwa
Efekty wprowadzonych rozwiązań • Czas wykonywania skryptów skrócił się o ponad 60 % • W pełni wykorzystanie mocy obliczeniowej podczas aktualizacji
Casestudy 3 Procesy działające w tle
Pierwsze rozwiązanie Początkowo zadania były inicjowane przez cron-a
Napotkany problem Duża liczba zadań oraz rosnąca liczba klientów wymagały jednoczesnego uruchamiania coraz to większej liczby skryptów. Skutkowało to dużym, skokowym zużyciem zasobów.
Zastosowane rozwiązanie Daemons
Zalety Daemonów • Obsługa nieukończonych zadań • Brak konieczności czekania całej minuty do wykonania następnego zadania
Zalety Daemonów • Zarządzanie wieloma zadaniami w jednym czasie • Obsługa intentów
Przykładowe kategorie zadań • System mailingowy • System SMS • Marketing automation
Przykładowe kategorie zadań • Komunikacja z portalami społecznościowymi • Synchronizacja z systemami zewnętrznymi • Procesy związane z analizą danych
Opis rozwiązania • Jeden proces do zarządzania zadaniami • Każdy daemon posiada swój grafik z definicjami zadań • Kolejkowanie zadań z wykorzystaniem IPC
Opis rozwiązania • Rejestracja zadań (aktywności daemonów) • Niezależna obsługa daemonów z wykorzystaniem narzędzia do ich monitoringu • Obsługa intentów
Rezultaty • Optymalizacja wykorzystania zużycia zasobów • Jednoczesna realizacja wielu zadań • Wywoływanie dowolnej akcji na żądanie