Doradztwo technologiczne i strategia

Modernizacja i skalowanie systemów

Systemy rzadko przestają działać z dnia na dzień. Zmienia się je coraz wolniej, utrzymuje coraz drożej, a każde wdrożenie jest coraz bardziej ryzykowne. Lekarstwem jest zaplanowana seria małych wymian, nie przepisanie całości.

Systemy rzadko padają. Sztywnieją

Systemy, które firmy chcą modernizować, zwykle działają. Zamówienia przechodzą, faktury wychodzą, klienci nie narzekają. Problemem jest to, co narosło wokół nich.

Zmiana, która kiedyś zajmowała dwa dni, zajmuje dwa tygodnie, bo skutek dotknięcia jednego fragmentu przestał być przewidywalny. Wdrożenia stały się wydarzeniem: planowane wieczorem, z udziałem kilku osób. Dwóch programistów rozumie krytyczny komponent i tylko oni się do niego zbliżają. Rachunek za infrastrukturę urósł szybciej niż użycie i nikt nie potrafi wskazać przyczyny. Żadne z tego nie jest awarią. Razem oznacza to, że biznes porusza się w tempie swojego najstarszego systemu.

Mierz, zanim przepiszesz

Najdroższy błąd w modernizacji to wybór celu na wyczucie.

Zespoły zwykle wskazują komponent, przy którym pracuje się najgorzej, a to rzadko ten sam, który faktycznie Cię ogranicza. Moduł, którego nikt nie lubi, potrafi być zupełnie wystarczający przy obecnym obciążeniu, podczas gdy prawdziwy sufit siedzi w puli połączeń do bazy albo w nocnym zadaniu, którego czas wykonania po cichu rośnie razem z danymi.

Dlatego pierwszym krokiem jest test obciążeniowy dociskający system, aż coś ustąpi, plus analiza zapytań i śledzenie żądań przy realnym ruchu. Wynikiem jest konkretne ograniczenie i konkretna liczba. To zmienia rozmowę z „system jest stary” na „obsługujemy mniej więcej taką współbieżność, a granica jest tutaj”. To już da się zaplanować i wpisać w budżet.

Tnij wzdłuż szwów, które już istnieją

Podział działa wtedy, gdy przecinasz tam, gdzie biznes już ma granicę.

Rozliczenia, powiadomienia, raportowanie, generowanie dokumentów, przetwarzanie plików: te obszary mają zwykle niewielki styk z resztą systemu, bo zawsze były w pewnym stopniu osobne w sposobie myślenia firmy. Wyjęcie jednego z nich to zamknięty kawałek pracy o sprawdzalnym efekcie. Cięcie w poprzek granicy, która nie istnieje (oddzielanie „części frontendowej” domeny od „części backendowej”), daje dwa komponenty, które muszą stale ze sobą rozmawiać, a wywołania funkcji zamieniają się w wywołania sieciowe, które mogą zawieść.

Pierwsze wydzielenie warto wybierać pod niskie ryzyko, a nie pod duże znaczenie. Jego zadaniem jest sprawdzić podejście, ustalić wzorce pracy i dać zespołowi pewność na czymś, co nie położy firmy, jeśli pójdzie źle.

Przygotowanie na wzrost to głównie usuwanie pojedynczych punktów

Praca nad skalowaniem brzmi bardziej egzotycznie, niż wygląda. W większości polega na znalezieniu miejsc, w których czegoś jest dokładnie jedno, i sprawieniu, żeby przestało tak być.

Jedna baza obsługująca odczyty i zapisy, gdy dominuje ruch odczytowy. Jeden proces przetwarzający kolejkę, która czasem gwałtownie rośnie. Jeden serwer trzymający wgrane pliki na lokalnym dysku, co jest zarazem powodem, dla którego nie da się go zduplikować. Jedno synchroniczne wywołanie zewnętrznego API wewnątrz żądania, na które czeka użytkownik.

Każdy z tych przypadków ma dobrze znane rozwiązanie i żaden nie wymaga przepisania systemu. Wymagają wiedzy, który z nich ograniczy Cię pierwszy. Dlatego pomiar wyprzedza plan.

Etapy, które zostawiają Cię w działającym stanie

Jedyne ograniczenie, którego trzymamy się bezwzględnie, brzmi: każdy etap kończy się systemem, który dałoby się wydać.

Brzmi to mało efektownie i właśnie to odróżnia modernizację, która się kończy, od tej, którą się anuluje. Długie programy bez takiego punktu pośrodku po cichu kumulują ryzyko i stają się niemożliwe do zatrzymania czy przekierowania. Gdy kontekst biznesowy się zmieni (a przy długim programie zmieni się na pewno), chcesz być w punkcie, w którym przerwanie jest opcją, a nie katastrofą.

To oznacza też, że korzyści pojawiają się stopniowo. Wdrażanie robi się łatwiejsze, zanim całość dobiegnie końca. Czasy odpowiedzi poprawiają się po pierwszej rundzie prac wydajnościowych, a nie na finiszu. To ma znaczenie, bo utrzymanie poparcia dla takiej pracy zależy od tego, czy ludzie widzą jej efekt przed ostatnim krokiem.

Jest jeszcze jeden powód, żeby trzymać się etapów: modernizacja prowadzona równolegle do rozwoju produktu zawsze konkuruje o tych samych ludzi. Praca podzielona na zamknięte kawałki daje się wstrzymać na kwartał, gdy pojawi się pilny temat biznesowy, i podjąć później bez zaczynania od nowa. Przebudowa prowadzona jako jeden wielki krok takiej możliwości nie daje. Albo trwa, albo przepada razem z włożonym w nią czasem.

Co dostajesz

Zmierzony sufit obecnego systemu

Test obciążeniowy, który pokazuje, gdzie system faktycznie przestaje sobie radzić i który komponent poddaje się pierwszy. Modernizacja bez tej liczby to zgadywanie, którą część naprawiać.

Plan podziału ze wskazanymi szwami

Gdzie system da się realnie rozdzielić, w jakiej kolejności i który moduł idzie pierwszy. Pierwsze wydzielenie wybieramy pod niskie ryzyko i czytelną granicę, a nie pod znaczenie modułu.

Pierwszy moduł wydzielony za stabilnym interfejsem

Jeden element wyjęty i działający niezależnie, ze starą ścieżką pozostawioną jako zabezpieczenie. To sprawdza podejście na czymś realnym, zanim zaangażujesz resztę budżetu.

Punktowe prace wydajnościowe

Indeksy, zapytania w pętli, cache tam, gdzie dane znoszą lekkie opóźnienie, i długie operacje przeniesione do kolejki. Zwykle najtańsza dostępna poprawa i ta, która kupuje czas na wszystko inne.

Kolejność migracji do chmury

Co warto przenieść, w jakiej kolejności, a co powinno zostać. Przeniesienie komponentu do chmury bez zmian bywa droższe w utrzymaniu niż wcześniej i mówimy, kiedy tak właśnie jest.

Usprawnienie wdrożeń i wycofywania zmian

Zautomatyzowane wdrożenia z przećwiczoną drogą powrotną. Modernizacja zwiększa tempo zmian, więc możliwość bezpiecznego cofnięcia wydania musi powstać wcześniej, nie później.

Jak pracujemy

  1. 01

    Najpierw pomiar, potem zmiana

    Testy obciążeniowe, analiza zapytań i śledzenie żądań przy realnym ruchu, żeby ustalić, co jest naprawdę wolne i gdzie leży granica. Zespoły często się w tym mylą, a przepisanie niewłaściwego komponentu to kosztowny sposób, żeby się o tym przekonać.

  2. 02

    Szukamy szwu

    Szukamy granicy, która już istnieje w biznesie, a nie takiej, którą trzeba wymyślić: rozliczenia, powiadomienia, raportowanie, przetwarzanie plików. Cięcie wzdłuż naturalnej linii jest nieporównanie tańsze niż w poprzek.

  3. 03

    Wydzielamy za interfejsem

    Wybrany moduł wychodzi na zewnątrz, a stara ścieżka kodu zostaje na miejscu. Ruch można kierować stopniowo, porównywać ze starym zachowaniem i cofnąć jednym krokiem, jeśli wyniki się różnią.

  4. 04

    Uruchamiamy równolegle, porównujemy, przełączamy

    Wszystko, co ma konsekwencje finansowe lub dotyczy danych, uruchamiamy równolegle ze starą wersją i porównujemy wyniki przed przełączeniem. To wyłapuje przypadki brzegowe istniejące tylko w Twoich realnych danych.

  5. 05

    Powtarzamy w zaplanowanych etapach

    Każdy etap kończy się systemem, który działa i który da się wydać. Dzięki temu ograniczeniu program modernizacji nie zamienia się w przepisanie całości pod inną nazwą.

Narzędzia i technologie

Tam, gdzie istnieje dobre narzędzie open source, wybieramy je zamiast zamkniętego. Bez uzależnienia od jednego dostawcy i z kosztami, które da się przewidzieć.

  • Docker
  • Kubernetes
  • OpenTofu
  • Terraform
  • PostgreSQL
  • Redis
  • RabbitMQ
  • k6
  • Grafana
  • OpenTelemetry
  • GitHub Actions
  • AWS

Najczęściej zadawane pytania

Pozostałe usługi w tej kategorii

Przeczytaj opinie firm, które nam zaufały

Zawsze są kilka kroków do przodu.

Mikołaj

CEO & Founder, GBS®

Zobacz na Clutch
GBS® logo

Dostarczone znacznie wcześniej niż termin.

Yasniel

CEO, IMEGA Sp z o.o.

Zobacz na Clutch

Indywidualne podejście ZanReal jest imponujące.

Adam

Executive, w-studio.pl

Zobacz na Clutch

Wiedza i intuicja biznesowa czynią ich wartościowym partnerem.

Magda

Designer, DIGITALUNI

Zobacz na Clutch

Szybkie rozwiązania, które obniżyły koszty o 99%.

Andrei Kapytau

Team Lead, busel.uk

Zobacz na Clutch

+20% dostarczalności dla naszych kampanii e-mail.

Joan Calabria

Sales Director, 36NORTH

Zobacz na Clutch
36NORTH logo

System coraz mocniej opiera się zmianom?

Napisz do nas

Opowiedz, gdzie boli najbardziej (wdrożenia, wydajność czy koszty utrzymania), a zaproponujemy, od jakiego pomiaru zacząć i jak mógłby wyglądać plan etapowej modernizacji.

Zanek

Nie nadążasz za zmianami w świecie AI?

Pozwól, że weźmiemy to na siebie. Co tydzień destylujemy najważniejsze wydarzenia ze świata AI w skupiony, 5-minutowy przegląd — żebyś był na bieżąco bez szumu.

Dowiedz się więcej
Tygodnik AIonline
Wyselekcjonowane wiadomości AI do porannej kawy. Co tydzień.
Wyślij mi swój email, żeby się zapisać.