Przezwyciężanie wyzwań związanych z systemami legacy

Izabela, inżynier oprogramowania, i Damian, starszy inżynier oprogramowania
Izabela and Damian collaborating

Iza i Damian pracują jako inżynierowie oprogramowania w zespole Post Trade Equities Enricher w dziale Globalnej Bankowości i Rynków Kapitałowych. Iza, associate software engineer, dołączyła do firmy w ramach letniego programu stażowego i przeszła na pełen etat w 2020 roku. Mając doświadczenie jako full stack developer, koncentruje się na tworzeniu i udoskonalaniu narzędzi zwiększających możliwości platformy. Damian, obecnie na stanowisku vice president, dołączył do zespołu w 2021 roku i od tego czasu jest zaangażowany w tworzenie kluczowych komponentów backendu, które budują infrastrukturę nowej platformy.

Systemy legacy często stanowią wyzwanie w szybko rozwijającym się świecie technologii biznesowych. Nasz system przetwarzania transakcji kapitałowych, początkowo stworzony w celu wzbogacania i przetwarzania danych dotyczących zleceń i operacji, był niezawodny we wczesnych latach swojej działalności. Nie został jednak zaprojektowany na tyle elastycznie, aby nadążyć za wykładniczym wzrostem ilości przetwarzanych danych towarzyszącemu stałemu rozwojowi naszej działalności. Ponadto, biorąc pod uwagę coraz większą złożonością potrzeb biznesowych, system wymagał usprawnienia. Starsza technologia była nieelastyczna i miała trudności ze skalowaniem, co doprowadziło do powstawania zatorów i sprawiło, że konieczne było wypracowanie nowego podejścia w celu utrzymania odpowiedniej dynamiki wzrostu.

Identyfikując te wyzwania, podjęliśmy strategiczną decyzję o opracowaniu nowego frameworku. Czerpiąc inspirację z już istniejącego rozwiązania do rozproszonego przetwarzania strumieniowego, opracowanego początkowo dla rozwiązania konkretnego problemu, zdecydowaliśmy się je rozbudować i rozwinąć tę koncepcję. Celem było stworzenie systemu zdolnego do obsługi nietrywialnych tranformacji danych i dużych wolumenów transakcji, przy jednoczesnym zachowaniu uniwersalności i niezawodności. Decyzja ta była kluczowa, ponieważ pozwoliła nam zmierzyć się z podstawowymi wyzwaniami systemów legacy i przyjąć wobec nich bardziej przyszłościowe podejście.

Główna funkcja starszego systemu - tranformacja danych – była trudna w utrzymaniu i debugowaniu oraz zbudowana na przestarzałych technologiach. Nasz nowy, opracowany w Javie framework wykorzystuje podejście Model-to-Model. Ta zmiana sprawiła, że system jest dla programistów bardziej przejrzysty, zrozumiały i łatwiejszy w obsłudze. Ponadto framework jest wszechstronny, ponieważ definicje transformacji są oddzielone od środowiska uruchomieniowego, co pozwala na ich działanie na różnych platformach przetwarzania strumieniowego, takich jak Apache Flink i Apache Spark. Na potrzeby SRE zaimplementowano również zaawansowane mechanizmy reagowania na wyjątki i pozwalające na powtórne przetworzenie danych. W tym celu stworzyliśmy pakiet narzędzi: webowe interfejsy napisane przy pomocy Reacta i TypeScriptu oraz Spring Boot API, które służą do zarządzania wyjątkami, grafowej wizualizacji przepływu danych i scentralizowanego monitorowania rozproszonych strumieni danych.

Nowy framework zapewnił większą elastyczność i skalowalność, co miało kluczowe znaczenie dla dostosowania się do zmiennych wymagań biznesowych. Zapewnił on niskie opóźnienia, możliwości przetwarzania danych w czasie rzeczywistym z wysoką przepustowością, a przy tym dając systemowi odporność na nagły wzrost liczby transakcji. Niezawodność ta okazała się również nieoceniona w radzeniu sobie z wahaniami na rynku, gdzie szybkie przetwarzanie danych i usuwanie błędów ma kluczowe znaczenie. Nasz biznes skorzystał na zwiększonej szybkości i stabilności nowego systemu, który stał się fundamentem do wdrażania kolejnych usprawnień.

Dla naszego zespołu programistów projekt ten był czymś więcej niż tylko aktualizacją - oznaczał on znaczący rozwój i nowe możliwości. Praca nad tym projektem pozwoliła deweloperom zapoznać się z najnowocześniejszymi technologiami i stanowiła okazję do ciągłego poszerzania umiejętności. Nasze opinie były brane pod uwagę w procesie decyzyjnym, umożliwiając nam zgłaszanie pomysłów i ulepszeń, które wpłynęły na ostateczny kształt produktu. Firma jest zaangażowana w rozwój pracowników m.in. poprzez zapewnienie dostępu do platform edukacyjnych, takich jak O'Reilly i Pluralsight. Dzięki takim projektom i wsparciu praca programistów w Goldman Sachs jest dynamiczna i inspirująca - funkcjonujemy w środowisku, w którym nasze umiejętności rozwijają się równie szybko, jak tworzone przez nas technologie. Oczywiście zapierający dech w piersiach widok z biura też nie jest zły.