Moasis to projekt, który miałem przyjemność stworzyć od początku do końca sam, a do tego odniósł bardzo duży sukces komercyjny, zarabiając około 1 000 000$ w ciągu roku i około 20 000 000$ w ciągu 5 lat.

Moasis to system do aukcji reklam wyświetlanych na komórkach, działa zgodnie z koncepcją Real Time Bidding. Oznacza to, że komórka „chcąca” wyświetlić nową reklamę (co kilkadziesiąt sekund banery reklamowe w większości aplikacji są zmieniane) zbiera informacje o właścicielu komórki i rozsyła ofertę do wielu firm, które mogą być zainteresowane wyświetleniem swoich reklam. Każda z tych firm proponuje zapłatę niewielkiej ilości pieniędzy (zazwyczaj są to ułamki centów) za pokazanie swojego banera reklamowego. Ta firma, która poda najwyższą kwotę, wygrywa aukcję i to jej reklama jest wyświetlana. Cały proces decyzyjny trwa zazwyczaj koło 200 ms.

Moasis posiada zaawansowane funkcje dopasowywania reklamy do klienta na podstawie wielu kryteriów, w tym:

  • Lokalizacja
  • Rozmiar banera
  • Godzina wyświetlenia
  • Rozkład wydatków w czasie
  • Firma, od której przyszła aukcja
  • Model komórki
  • Zainteresowania właściciela komórki
  • Tematyka aplikacji pokazującej baner

Funkcjonalnością, z której najbardziej dumni są właściciele systemu, jest opatentowany system geolokalizacji, który umożliwia wyjątkowo precyzyjne wyznaczanie obszarów geograficznych objętych reklamą (użytkownik jest lokalizowany na mapie na podstawie GPS lub IP).

Wizualizacja systemu opatentowanego systemu lokalizacji na mapie.

Moasis zbiera także olbrzymią ilość informacji statystycznych, umożliwiając później analizę informacji o użytkownikach oglądających reklamy i optymalizację kryteriów użytkowników, aby firmy mogły wydawać pieniądze tylko na tych użytkowników, w przypadku których reklama odnosi skutek.

Garść informacji marketingowych o funkcjonalnościach ze strony Moasis.

Prawdziwym wyzwaniem dla systemów RTB jest ich szybkość. O stronie internetowej mówi się, że jest bardzo popularna, jeśli obsługuje milion odsłon w ciągu doby. Mój system musiał taką liczbę żądań HTTP obsłużyć w 20 sekund i być skalowalny na możliwą większą liczbę w przyszłości. Inny problem to ograniczenia czasowe obsługi pojedynczej aukcji. Pojedyncze żądanie HTTP musi być obsłużone w czasie maksymalnie kilkudziesięciu milisekund, gdyż zaledwie tyle czasu zostaje do końca aukcji, gdy odliczy się czas transportu ramki HTTP przez sieć.

Problem ogromnego obciążenia udało mi się rozwiązać wykorzystując balansowanie obciążenia (ang. load balancing), dzieląc przychodzący ruch na kilkanaście serwerów, bardzo silnie optymalizując kod i eliminując wszystkie czasochłonne operacje z aplikacji (w tym odczyt i zapis do bazy, zapis logów, wyszukiwanie kampanii spełniających zadane kryteria itp.). Czas obsługi pojedynczego żądania udało się zminimalizować przede wszystkich dzięki rozbudowanemu cache-owaniu danych, a także dzięki kilkuwątkowej architekturze aplikacji wykorzystującej wszystkie rdzenie procesora. Ostatecznie czas średni został zminimalizowany do zaledwie 1 ms.

Dużym problemem podczas tworzenia systemów jest zawodność poszczególnych elementów oraz ograniczenie w komunikacji wielu serwerów między sobą. W czasie mojej pracy kilkukrotnie zdarzyło się, że nastąpiła awaria bazy danych, zapełniły się dyski na którymś z serwerów lub po prostu do aplikacji został wprowadzony błąd. W serwisach obracających dużymi pieniędzmi takie błędy są niebywale kosztowne, gdyż aplikacja niedziałająca to aplikacja niezarabiająca pieniędzy. Dodatkowo traci się także zaufanie klientów. Jeden weekend, podczas którego system nie działa, to strata porównywalna z kosztem dobrego samochodu. Dlatego jedną z kluczowych funkcjonalności był rozbudowany system monitoringu. W moim ówczesnym biurze zamontowaliśmy duży telewizor ukazujących na kilku wykresach aktywność aplikacji. Gdy pojawiały się niespodziewane zaburzenia, to był dla nas znak, by zaglądnąć głębiej i sprawdzić, co się dzieje.

Moasis, a właściwie jego zewnętrzną powłokę dla użytkowników (wnętrze napisane przeze mnie nie jest bezpośrednio widoczne) można zobaczyć pod poniższym adresem:

http://moasis.com/