Prezentują: Marek Wałach UX Designer Marcin Ceran PHP Developer
Agenda 1.O nas 2.Skala projektu iPresso 3.Wykorzystywana technologia 4.Case study 1: Przetwarzanie danych do analiz w tle 5.Case study 2: Aktualizacja wielu baz jednocześnie 6.Case study 3: Procesy działające w tle 7.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 e-PRMonitoring mediów
iPresso Marketing Automation IntegracjeDirect Marketing
Skala projektu iPresso Wielu klientów obsługiwanych w modelu SaaS
Skala projektu iPresso Ponad kontaktów (użytkowników) obsługiwanych w ramach jednego klienta … i rośnie
Skala projektu iPresso Ponad zadań dziennie wykonywanych dla jednego klienta … i rośnie
Przykładowe zadania systemu Wysyłka mailingu do 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
Wykorzystywana technologia
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
Case study 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 aktywnych kontaktów w przeciągu kilku miesięcy powstaje tabela z ponad 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 cacheu 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
Case study 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
Case study 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
Czas na pytania