Nielsen - VADE - Case Study
Firma Nielsen to światowy lider w dziedzinie badań, danych i analiz, kształtującym przyszłość mediów. Pod koniec 2018 zostaliśmy poproszeni o zajęcie się tematem długiego czasu przetwarzania wsadowych zadań analizy i weryfikacji danych. Problem dotyczył jednego z procesów biznesowych, w których dane wynikowe są regularnie przekazywane są do końcowego klienta.
Przed ich przekazaniem musi nastąpić końcowa weryfikacja, zarówno od strony technicznej jak i domenowej. Zespół Data Science w Nielsen posiada i rozwija wiele zaawansowanych mechanizmów do walidacji takich zbiorów. Walidacje te realizowane są przez dedykowane aplikacje. Przetwarzają bardzo duże pliki z danymi, a sama analiza wymaga sporej ilości pamięci i oraz mocy obliczeniowej. Dodatkowym wyzwaniem była konieczność wykonywania wielu walidacji w krótkim czasie na koniec każdego okresu raportowania.
Problem polegał na tym, że istniejące rozwiązanie nie było w stanie poradzić sobie z przeliczeniem wszystkich zestawów danych i trwało to za długo.
Podczas warsztatów z zespołem Nielsen, stworzyliśmy koncepcję rozwiązania umożliwiającego zagnieżdżenie istniejących aplikacji w tzw. workerach, które są następnie kolejkowane oraz uruchamiane na wielu kontrolowanych serwerach. Na koniec wyniki są odsyłane do procesu zarządzającego. Ilość środowisk wykonawczych oraz równocześnie wykonywanych workerów mogą być dostosowywane do potrzeb.
Nasi architekci wraz z klientem zaproponowali konkretny sposób implementacji, następnie przeszliśmy do fazy programowania. Doświadczony zespół programistów zrealizował silnik pod nazwą VADE. Można go określić mianem środowiska do kolejkowania i przetwarzania zadań wsadowych w prywatnej chmurze.
Przez kilka tygodni Nielsen testował rozwiązanie w jednym z krajów. Obecnie silnik jest wdrażany na kilkudziesięciu rynkach jako platforma globalna.
Ciekawym aspektem tego projektu była współpraca pomiędzy zespołem Data Scientists z Nielsen a naszymi architektami i inżynierami oprogramowania. Zaowocowało to dużą ilością pomysłów i sprawnym wypracowaniem rozwiązania. Projekt był realizowany iteracyjnie. W początkowych iteracjach pracowaliśmy głównie nad specyfikacją wymagań oraz prototypem, później zaś nad kolejnymi funkcjami. Dzięki takiemu podejściu, klient mógł na bieżąco weryfikować zgodność dostarczonych komponentów ze swoimi potrzebami i wykorzystywać aplikacje do kolejnych prób.
Wszystko to sprawiło, że w ciągu kilkunastu tygodni od zgłoszonego zapotrzebowania i problemu doszliśmy do działającego rozwiązania. Naszym zdaniem jest to dobry przykład na współpracę pomiędzy dużą organizacją i zewnętrznym software house w usprawnianiu procesów.