SALESmanago Marketing Automation

Technologie i Infrastruktura w SALESmanago

 

SALESmanago to platforma do automatyzacji marketingu wykorzystująca technologię AI & Machine Learning, używana przez ponad 10 000 firm z 40 krajów, w tym Lacoste, Yves Rocher, Starbucks oraz wiele małych i dużych firm. W rankingu Financial Times Fast 1000 SALESmanago uplasowało się na 26 miejscu wśród najszybciej rozwijających się firm w Europie, będąc tym samym najszybciej rosnącą europejską platformą w branży martech.

Klienci SALESmanago tworzą kompletne profile behawioralne i transakcyjne ponad 500 milionów konsumentów oraz używają tych danych do personalizowania komunikacji marketingowej we wszystkich kanałach, takich jak e-mail marketing, dynamiczne treści na stronie internetowej, urządzenia przenośne, media społecznościowe, sieci reklamowe i sprzedaż bezpośrednia.

W SALESmanago przetwarzamy i przechowujemy ogromne ilości danych. Każdego dnia wysyłamy 50 mln e-maili, co oznacza, że jest ich niemal 600 w każdej sekundzie. Codziennie rejestrujemy 75 mln wizyt na stronach naszych klientów. Dane behawioralne zebrane w naszych bazach przekraczają już kilkaset terabajtów. Nasze bazy danych obsługują sporo powyżej 25 tys. transakcji na sekundę. Z naszych serwerów tylko w 2018 roku wysłaliśmy do Internetu 2 284 057 743 907 420 bajtów, czyli 2.1 PiB.

Obsłużenie tak dużych wolumenów danych, ich przetwarzanie w czasie rzeczywistym, a także przechowywanie wymaga wykorzystania bardzo zaawansowanych, stabilnych i ugruntowanych technologii. W SALESmanago sięgamy po rozwiązania open-source klasy enterprise, sprawdzone narzędzia dające duże możliwości skalowania. Dodatkowo za utrzymanie i rozwój systemu odpowiada wykwalifikowani specjaliści.

Wśród wielu technologii używanych w tak dużym projekcie warto wymienić te kluczowe.

Aplikacja

Całość aplikacji SALESmanago oparta jest o technologie wywodzące się i bazujące na języku Java. Java to współbieżny, oparty na klasach, obiektowy język programowania ogólnego zastosowania. Został stworzony przez grupę roboczą pod kierunkiem Jamesa Goslinga z firmy Sun Microsystems. Java jest językiem tworzenia programów źródłowych kompilowanych do kodu bajtowego, czyli postaci wykonywanej przez maszynę wirtualną. Język cechuje się silnym typowaniem. Jego podstawowe koncepcje zostały przejęte z języka Smalltalk (maszyna wirtualna, zarządzanie pamięcią) oraz z języka C++ (duża część składni i słów kluczowych).

Aplikacja SALESmanago bazuje na frameworku Spring. Spring Framework jest to platforma, której głównym celem jest uproszczenie procesu tworzenia oprogramowania klasy enterprise w technologii Java/J2EE. Spring jest złożony z wielu projektów, dedykowanych do tworzenia aplikacji w języku Java. Rdzeniem Springa jest kontener wstrzykiwania zależności, który zarządza komponentami i ich zależnościami. Umożliwia on automatyczne wykrywanie tych zależności bez większego udziału programisty. Historia Springa sięga roku 2002 kiedy to w Javie główną platformą do tworzenia aplikacji była J2EE 1.3 z mało lubianą technologią EJB 2.0 na czele. W 2003 pojawiła się jego pierwsza wersja. Wszystko zaczęło się od książki Expert One-on-One J2EE Design and Development napisanej przez Roda Johnsona – ojca chrzestnego Springa, który rozpoczął prace nad Springiem wraz z Juergenem Hoellerem i Yannem Caroffem.

Hibernate ORM – SALESmanago wykorzystuje framework do Mapowania obiektowo-relacyjnego. Dodatkowo zwiększa on wydajność operacji na bazie danych dzięki buforowaniu i minimalizacji liczby przesyłanych zapytań. Głównym inicjatorem oraz liderem projektu jest Gavin King.

MySQL to wolnodostępny system zarządzania relacyjnymi bazami danych. MySQL rozwijany jest przez firmę Oracle. Wcześniej przez większość czasu jego tworzeniem zajmowała się szwedzka firma MySQL AB. MySQL AB została kupiona 16 stycznia 2008 roku przez Sun Microsystems, a ten 27 stycznia 2010 roku przez Oracle. MySQL był pisany raczej z myślą o szybkości niż kompatybilności ze standardem SQL – przez dłuższy czas MySQL nie obsługiwał nawet transakcji, co było zresztą głównym argumentem przeciwników tego projektu. MySQL obsługuje większą część obecnego standardu ANSI/ISO SQL (tj. SQL:2003). Wprowadza również swoje rozszerzenia i nowe elementy języka.

PostgreSQL często nazywany także Postgres to, obok MySQL i Firebird, jeden z trzech najpopularniejszych otwartych systemów zarządzania relacyjnymi bazami danych. Początkowo opracowywany na Uniwersytecie Kalifornijskim w Berkeley i opublikowany pod nazwą Ingres. W miarę rozwoju i zwiększania funkcjonalności, baza danych otrzymała nazwy Postgres95 i ostatecznie PostgreSQL, aby upamiętnić pierwowzór oraz zaznaczyć zgodność ze standardem SQL. Aktualnie baza implementuje większość standardu SQL:2011.

Obok stabilnych i ugruntowanych technologii nie boimy się sięgać po nowoczesne narzędzia, dające duże możliwości przetwarzania ogromnych wolumenów danych. W naszych projektach używamy technologii błyskawicznie zyskujących na popularności.

Apache Kafka – broker wiadomości dostępny jako otwarte oprogramowanie. Projekt jest napisany w Scali, a rozwija go Apache Software Foundation. Cel przedsięwzięcia to umożliwienie obsługi danych czasu rzeczywistego pochodzących z wielu węzłów. Ujednolicona obsługa strumieni wejściowych ma zapewniać dużą przepustowość i redukcję opóźnień. Projekt powstał pod silnym wpływem dzienników transakcji. Apache Kafka początkowo zaprojektowano w LinkedIn, a następnie udostępniono jako open source na początku 2011 roku. Projekt opuścił Apache Incubator 23 października 2012 roku. W listopadzie 2014 roku kilku inżynierów, którzy pracowali nad Kafką w LinkedIn, założyło nowe, silnie związane z Kafką przedsiębiorstwo o nazwie Confluent.

Apache Flink jest platformą do przetwarzania strumieniowego o otwartym kodzie źródłowym, która zapewnia ogromne możliwości przetwarzania w czasie rzeczywistym strumieni danych w sposób odporny na uszkodzenia w skali milionów zdarzeń na sekundę. Kluczowe jest to, że robi to wszystko przy użyciu minimalnych zasobów przy opóźnieniach o długości jednej milisekundy.

Wśród innych ciekawych technologii jakich używamy warto wymienić język Python wraz z bibliotekami do uczenia maszynowego jak NumPy, czy przetwarzania obrazów jak OpenCV produkcyjnie uruchamianymi w klastrze Apache Spark.

Środowisko produkcyjne

Wszystkie nasze usługi pracują w środowiskach Linux. Linux jest jednym z przykładów wolnego i otwartego oprogramowania (FLOSS): jego kod źródłowy może być dowolnie wykorzystywany, modyfikowany i rozpowszechniany. Pierwsza wersja jądra Linux została udostępniona publicznie 17 września 1991. Jednym z popularnych zastosowań Linuksa są środowiska serwerowe, dla których komercyjne wsparcie oferują również duże firmy komputerowe jak IBM, Oracle, Dell, Microsoft, Hewlett-Packard, Red Hat i Novell. Linux działa na szerokiej gamie sprzętu komputerowego, wliczając komputery biurkowe, superkomputery i systemy wbudowane, takie jak telefony komórkowe, routery oraz telewizory.

Apache to otwarty serwer HTTP dostępny dla wielu systemów operacyjnych. Apache jest najszerzej stosowanym serwerem HTTP w Internecie. W sierpniu 2015 jego udział wśród serwerów wynosił ponad 37%. Apache zapewnia wielowątkowość, skalowalność i bezpieczeństwo. Serwer Apache wywodzi się z kodu serwera HTTP napisanego przez Roba McCoola, pracownika NCSA.

Apache Tomcat to kontener aplikacji webowych (ang. „web container”) rozwijany w ramach projektu Apache. Jako kontener aplikacji jest serwerem, który umożliwia uruchamianie aplikacji internetowych w technologiach Java Servlets i Java Server Pages (JSP). Jest to jeden z bardziej popularnych kontenerów Web.

SALESmanago wysyła kilkadziesiąt milionów e-maili dziennie. Nie byłoby to możliwe bez serwera poczty. Postfix to przeznaczony na systemy uniksopodobne serwer poczty elektronicznej (MTA), odpowiedzialny za przekazywanie i dostarczanie poczty elektronicznej. Prace nad nim rozpoczął Wietse Venema w laboratoriach IBM Research, a obecnie udostępniany jest na zasadach wolnego oprogramowania na licencji IBM Public License.

Narzędzia

W dziale IT narzędzia wybierają ich użytkownicy. Stawiamy na komfort i jakość pracy. Nie dziwi więc wybór takich rozwiązań jak IntelliJ czy GIT.

IntelliJ IDEA – komercyjne zintegrowane środowisko programistyczne (IDE) dla Javy firmy JetBrains. Według jednej z największych ankiet przeprowadzanych w świecie programistów Javy przez ZeroTurnaround IntelliJ IDEA uznane jest za najpopularniejsze środowisko wyprzedzając Eclipse. Twórcy nazywają IntelliJ IDEA jako the most intelligent Java IDE i trzeba przyznać, że coś w tym jest. Automatyczne podpowiedzi, które oferuje to środowisko naprawdę potrafią zaskoczyć w bardzo pozytywnym stopniu. IntelliJ mocno stawia na produktywność i pracę bez użycia myszy.

Git – rozproszony system kontroli wersji. Stworzył go Linus Torvalds jako narzędzie wspomagające rozwój jądra Linux. Git stanowi wolne oprogramowanie i został opublikowany na licencji GNU GPL w wersji 2. Prace nad Gitem rozpoczęły się po tym, jak BitKeeper, używany wtedy do rozwoju Linuksa, przestał być darmowy dla projektów o otwartym kodzie źródłowym. Torvalds szukał rozproszonego systemu kontroli wersji, który mógłby być użyty zamiast BitKeepera.

Grafana to rozwiązanie do analizowania i wizualizacji danych. Dzięki licznej bazie źródeł, z których Grafana może pobierać dane (np. Influxdb, Elasticsearch, AWS Cloudwatch czy opisywany w tym artykule Zabbix) może służyć jako scentralizowane narzędzie do przedstawiania różnych metryk.

Elasticsearch jest silnikiem wyszukiwania pełnotekstowego, sam Elasticsearch jest bazą danych, która do wyszukiwania wykorzystuje Apache Lucene. Ta kombinacja daje nam dostęp do potężnego narzędzia umożliwiającego przeszukiwanie, grupowanie i filtrowanie ogromnych zbiorów danych niemal w czasie rzeczywistym.

Oczywiście to nie wszystkie narzędzia i technologie jakie używamy. System SALESmanago Marketing Automation bazuje na najnowocześniejszych rozwiązaniach technologicznych na świecie, aby zagwarantować najwyższą wydajność i niezawodność pracy systemu.