Punktem wyjściowym realizacji projektu odnowy Poczty była architektura, która powstawała etapami przez kolejne lata. Onet udostępnił pocztę użytkownikom już w roku 1996 jako jeden z pierwszych na polskim rynku. Kto jeszcze pamięta konta w domenie friko.onet.pl?  Początek obecnie wycofywanej architektury to czasy największej aktywności tej właśnie domeny.  Daje nam to obraz jak daleko w przeszłość sięgają korzenie obecnie modernizowanego systemu. Świadczy to o jego niezwykłej, jak na owe czasy, nowoczesności, która pozwalała przez długie lata na rozbudowę i modernizację zapewniającą ciągłość świadczonych usług.

Nie da się jednak ukryć, że przez te 8 lat użytkowania starej architektury warunki, zarówno zewnętrzne (konkurencja), jak i wewnętrzne (skokowy wzrost liczby użytkowników, liczby obsługiwanych maili) uległy diametralnej zmianie. W obliczu tych warunków stary system pocztowy, obliczony na dużo mniejszą skalę, musiał być z dnia na dzień rozbudowywany. Tempo zachodzących zmian wymagało podejmowania szybkich akcji w odpowiedzi na zaistniałe z dnia na dzień potrzeby. Brak holistycznego spojrzenia na rozbudowującą się architekturę i jednolitej strategii jej rozwoju owocowały uciekaniem się do szybkich rozwiązań. Operowanie na nieprzystosowanym do tego systemie, prowadziło do coraz większego jej skomplikowania. Z czasem przyjął on postać wysoce nieprzejrzystego i nieoperatywnego mechanizmu opornego na dalsze zmiany. Dopisywane poprawki i nowe funkcjonalności prowadziły do kolizyjnego krzyżowania się systemowych zależności. Wprowadzanie zmian w jednej części systemu pociągało za sobą ryzyko wystąpienia nieoczekiwanych awarii w zupełniej innym obszarze. Taki stan architektury narzucał pracę, której głównym celem stało się utrzymanie bieżącego poziomu dostępności i szybkości usług. Niemal niemożliwe było wprowadzanie rozwojowych zmian służących poszerzeniu zakresu funkcjonalności dla użytkownika. Mimo tych trudności OnetPoczta próbowała wychodzić naprzeciw rosnącym oczekiwaniom klientów, co jednak wiązało się z dużym nakładem czasu pracy, kosztów oraz ryzykiem niepowodzenia wdrożeń.

Cele projektu

Jedynym rozwiązaniem zaistniałej sytuacji było podjęcie decyzji o rozpoczęciu prac nad całkowicie nową architekturą pocztową. Celem tego śmiałego przedsięwzięcia było stworzenie systemu nie tylko nowego, ale też nowoczesnego i nowatorskiego. Chodziło nie tyle o nadrobienie strat, co o doprowadzenie do stanu umożliwiającego konkurowanie z najlepszymi światowymi dostawcami poczty. Nauczeni doświadczeniem, głównym założeniem nowej architektury pocztowej uczyniliśmy jej otwartość na zmiany i elastyczność wprowadzania nowych rozwiązań. Świadomi rosnących oczekiwań konsumentów główny nacisk położyliśmy na zwiększenie szybkości, dostępności i wydajności świadczonych usług, co pozwoliło nam uczynić: „Szybko i wszędzie” hasłem reklamowym kampanii promocyjnej. Nie mniej ważnym aspektem nowej architektury jest utrzymanie wysokich standardów bezpieczeństwa danych. Obok Sympatii, OnetPoczta należy do najbardziej newralgicznych serwisów firmy, ze względu na stały dostęp do sensytywnych danych użytkowników. Prace nad bezpieczeństwem służyły zapewnieniu klientom nie tylko szybkiego i łatwego dostępu do skrzynki, ale także zapewnieniu pewności co do całkowitej poufności przekazywanych i przechowywanych informacji. Tak wysoko postawiona poprzeczka wymagała realizacji wielu nowatorskich rozwiązań. Szybkość ma zapewnić z jednej strony rozwój systemu AntySPAMowego oraz kanału SMTP, z drugiej zaś optymalizacje kanałów odczytu – Webmaila, oraz tradycyjnego POPa. Dodatkowym czynnikiem stymulującym prędkość dostępu do listów jest udostępnienie IMAPa, którego działanie ma zapewnić także użytkownikom poszerzenie dostępu do skrzynki. To dzięki działaniu IMAPa użytkownik może skorzystać ze skrzynki mailowej w każdym miejscu i czasie sięgając po swą komórkę. Dzięki opcji udostępnionej na Webmailu konfiguracja poczty w komórce wymaga jedynie kilku kliknięć i odczytania automatycznej wiadomości SMSowej. Jako ciekawostkę warto zaznaczyć, że wersja beta IMAPa została udostępniona już na przełomie 2007/2008 roku, co nie umknęło uwadze naszym użytkownikom.

Wybór zastosowanej technologii

Osiągnięcie tak wysokich standardów nie byłoby możliwe bez wykorzystania nowoczesnych rozwiązań. Ich adaptacja do swych potrzeb przy uwzględnieniu odpowiedniego uptime’u, stanowiła duże wyzwanie, ale to właśnie takie wyzwania są motorem napędowym ciągłego rozwoju. Pamiętając o tym zdecydowaliśmy się na wykorzystanie znanego z telekomów erlangowego systemu kolejkującego RabbitMQ. Dzięki niemu OnetPoczta jest w stanie zarówno podzielić swą logikę w niezależne moduły, jak i zapewnić im odpowiednie rozbalansowanie obsługi obciążenia i swego ruchu. Separacja zaś modułów umożliwia łatwiejszą rozbudowę i rozwój. Tam gdzie jest to tylko możliwe, cache’ujemy dane użytkownika stosując membase‚a – nakładkę na znany zapewne wszystkim zainteresowanym serwer memcached. W ten sposób zapewniamy systemowi większą wydajność nie dopuszczając do obciążenia najniższych warstw architektury. Do powiadomień na Webmailu o zmianach stanu skrzynki wykorzystaliśmy serwer APE. To dzięki niemu mogliśmy szybko zrealizować powiadomienia PUSH na wymaganą skalę. Sercem systemu są serwery aplikacyjne napisane w Pythonie, na rzecz którego odeszliśmy od wcześniej stosowanego Perla. O wyborze tym zdecydowała wysoka dynamika rozwóju tego języka umożliwiająca pozostawanie w stałym kontakcie z najnowszymi trendami w inżynierii oprogramowania. Mając świadomość szczególnego znaczenia wydajności dla systemu OnetPoczty, zdecydowaliśmy się na wykorzystanie także języka C znanego ze swej szybkości działania. Kluczowe dla wydajności elementy aplikacji pythonowych zostały zawarte w bibliotekach eksportowanych następnie do Pythona. Biblioteki te są jednocześnie używane w aplikacjach napisanych w czystym C, gdzie szybkość działania jest ważniejsza od kosztu wprowadzenia nowych funkcjonalności. Dla wyższych warstw udostępniamy spójne API poprzez jeden serwer aplikacyjny, dzięki czemu implementacja nowej wersji Webmaila nie stanowi problemu. W rezultacie zmian zaistniałych w backendzie, OnetPoczta została poszerzona o tak rozbudowane funkcjonalności jak Kontakty i Kalendarz.

Skala projektu

Poruszone powyżej jedynie w ogólnym zarysie niektóre kwestie, uzmysławiają jak rozbudowanym i długofalowym procesem był projekt zmiany architektury pocztowej. U jego podstawy leżą wielogodzinne konsultacje i dyskusje prowadzone zarówno w gronie developerów i administratorów, jak i specjalistów od produktu. Wielka skala prac, przy zachowaniu wysokiej elastyczności podejścia, wymagała zmiany sposobu organizacji czasu pracy. Pomocny okazał się SCRUMowy system działania opierający na dwutygodniowych Sprintach, co umożliwiło podzielenie długofalowych założeń projektowych na skończone jednostki czasu, w których to oddawane były kolejne funkcjonalności. Dzięki temu możliwa była stała kontrola postępu prac, czasu ich realizacji i przeznaczonego budżetu. Zastosowane rozwiązania umożliwiły płynną i bezkolizyjną dla użytkownika migrację kont pomiędzy starą, a nową architekturą. Efektem naszych prac jest wydajny system obsługujący codziennie ~15milionów przychodzących maili (nie licząc SPAMu), z którego korzysta przez Webmaila codziennie przynajmniej 1.5 miliona użytkowników (nie wliczając w to osób korzystających z tradycyjnych klientów poczty typu Outlook , Thunderbird).

 

Jarosław Kołodziejczyk
Kierownik Działu IT