Zdjęcie programisty pracującego przy komputerze

Poprawa produktywności systemu poprzez refaktoryzację

Wyzwania

W systemach informatycznych wraz ze wzrostem ilości funkcjonalności często wzrasta trudność w dodawaniu nowych. System staje się trudny w rozwoju, a koszta związane z utrzymaniem systemu zaczynają przekraczać koszty wprowadzania nowych funkcjonalności. Tego typu sytuacje najczęściej są bardzo złym znakiem ostrzegającym przed problemami.

System klienta już na początku wykazywał znamiona erozji – coraz częściej zaczęło dochodzić do przekroczenia limitów platformy. Było to spowodowane nieprawidłowym wykonaniem funkcjonalności i prowadziło do uszkodzenia danych. Celem projektu było osiągnięcie szeroko idącej skalowalności, która umożliwiłaby stabilną pracę przy jednoczesnym obciążeniu na poziomie kilku tysięcy użytkowników i napływie do kilkudziesięciu do kilkuset tysięcy rekordów dziennie. Oczywiście wszystko to przy zachowaniu nieprzerwanej pracy systemu oraz wysokiego poziomu rozszerzalności.

Rozwiązania

Wysokie wymagania wymuszały szeroki zakres zmian w architekturze systemu. Jednym ze sposobów podnoszenia produktywności jest wprowadzanie do zakresu projektu fazy refaktoryzacji – iteracyjnej modyfikacji kodu, która nie powoduje zmian funkcjonalnych. Celem procesu refaktoryzacji jest poprawienie atrybutów jakościowych systemu, takich jak łatwość utrzymania, rozszerzalność, wydajność, skalowalność, obserwowalność, poprawa produktywności oraz elastyczność.

W ramach projektu przygotowano plan priorytezujacy te zadania, które wymagały najmniejszej ilości pracy, dając jednocześnie najlepsze rezultaty. W każdym sprincie wprowadzono od 10 do 30% zadań technicznych w taki sposób, aby nie kolidowały z implementacją nowych wymagań biznesowych.

W celu spełnienia potrzeb firmy zdecydowano się na zbudowanie modułu ułatwiającego optymalizowanie wykonywania funkcjonalności oraz redukującego ilość operacji bazodanowych. Wprowadzono moduł naśladujący działanie Messaging Queues oparty o Salesforce Platform Events, a także wprowadzono mechanizmy logowania błędów oraz śledzenia ilości i szybkości wywołań asynchronicznych, stanu kolejek systemowych, limitów platformy i stanu głównych procesów automatycznych w systemie.

Efekty

Proces refaktoryzacji z biegiem czasu bardzo ułatwił utrzymanie i rozwój systemu, a także w znaczący sposób wyeliminował błędy i utrudnił powstawanie nowych. Realizacja projektu pozwoliła na:

  • zwiększenie szybkości i wydajności – ułatwiono optymalizowanie funkcjonalności, zredukowano ilość cyklicznych zależności w logice, przeniesiono większość funkcjonalności do kodu
  • poprawę skalowalności – umożliwiono kolejkowanie zadań oraz ich przetwarzanie w przypadku wystąpienia błędów, zastosowano mechanizm wywołań, pozwalający na dobór odpowiedniej strategii w zależności od kontekstu wywołania,
  • lepszą obserwowalność – wprowadzono mechanizmy logowania błędów oraz śledzenia ilości i szybkości wywołań, limitów platformy i stanu głównych procesów w systemie; generowane raporty pokazują co aktualnie dzieje się w systemie od strony technicznej,
  • zwiększenie rozszerzalności i elastyczności – większość kodu została rozbita na mniejsze klasy, przy jednoczesnej dbałości o utrzymanie odpowiednich zależności; każda funkcjonalność może zostać dezaktywowana z poziomu administratora,
  • ułatwienie utrzymania – zbudowano dobrze przetestowane i stabilne narzędzie, na którym oparto logikę biznesową.
Zastosowane technologie i narzędzia

Salesforce, Sales Cloud, Service Cloud, Community Cloud, Marketing Cloud, AWS, Apex, Lightning Web Components

Logo Education First
Klient:

Education First

Education First jest ogólnoświatowym liderem z branży edukacyjnej, który od ponad 50 lat oferuje przełomowe możliwości w zakresie nauki języków obcych dla osób w każdym wieku, różnych narodowości i środowisk. Firma posiada ponad 600 biur w ponad 60 krajach na wszystkich kontynentach.