Dlaczego Twój SaaS lub portal gubi klientów? 5 architektonicznych błędów, których nie wyłapie zwykły deweloper
Łukasz Grzybowski
Założyciel Aspika · QA / SDET · strony i produkty webowe
SaaS 'działa' na demo, a pada przy ruchu. Pięć błędów architektury, które wyłapie QA i bezpieczeństwo, a nie sam programista.
Aplikacje webowe i SaaS · Kontakt
Produkt "działa" na prezentacji. Dziesięciu użytkowników klika spokojnie. Po kampanii, po onboardingach B2B albo po dniu wyprzedaży system zwalnia, gubi zamówienia albo milczy, aż klient napisze na support.
Po 15 latach przy projektach gamingowych, B2B i systemach wysokiej dostępności widzę ten sam wzorzec: funkcje rosną szybciej niż jakość architektury. Zwykły deweloper zamyka ticket. QA i bezpieczeństwo pytają, co się stanie przy ruchu, przy błędzie API i przy utracie sesji.
Poniżej pięć błędów, które najczęściej gubią klientów SaaS-ów, portali operacyjnych i większych sklepów.
1. Brak testów obciążeniowych
Scenariusz wygląda niewinnie: środowisko developerskie, kilka kont testowych, "wszystko zielone".
Przy 500 równoległych sesjach wychodzi prawda: kolejki, timeouty, zablokowane transakcje, rate limit u dostawcy płatności. Użytkownik widzi spinner. Część odświeża stronę. Część płaci dwa razy. Część odchodzi.
Bez testów obciążeniowych nie wiesz, czy bottleneck to baza, cache, worker czy zewnętrzne API. Dowiadujesz się od churnu, nie od metryk.
2. Złe zarządzanie bazą i brak indeksów
Panel operacyjny "czasami muli". Raporty generują się minutami. Filtry po statusie zamówienia blokują inne zapytania.
To rzadko jest "wolny serwer". Częściej brak indeksów na kolumnach, po których filtrujecie codziennie, N+1 przy listach, albo jeden ciężki JOIN w ścieżce, którą operator otwiera sto razy dziennie.
Deweloper widzi, że zapytanie zwraca dane. Architekt i QA mierzą czas odpowiedzi pod realistycznym wolumenem i sprawdzają plan wykonania. Różnica między "działa" a "da się na tym pracować" leży właśnie tu.
3. Ciche błędy w integracjach API
Płatność, CRM, magazyn, kurier. Integracja "prawie zawsze" działa. Gdy pada, nie zawsze wywala 500.
Typowy cichy scenariusz: webhook przyszedł, status w UI wygląda OK, ale rekord w CRM nie powstał. Albo odpowiedź 200 z body, którego parser nie rozumie. Albo retry, które tworzy duplikat zamówienia.
Klient widzi niespójność: zapłacił, a zamówienia nie ma. Support nie ma logu korelacji. Zespół gasi pożar ręcznie.
Tu nie wystarczy "zintegrowaliśmy endpoint". Potrzebujesz kontraktów, idempotencji, alertów na niespodziewane statusy i testów ścieżek awarii, nie tylko happy path.
4. Brak monitoringu i logowania
Awaria zaczyna się od maila klienta. Albo od posta na socialu. System nie krzyczy. Dashboard jest pusty, bo go nie ma.
Bez metryk (błądowość, latency, kolejki), bez logów z request id i bez alertów na progi, każda noc to loteria. Przy wysokiej dostępności to niedopuszczalne. Przy SaaS B2B to prosta droga do utraty zaufania.
Monitoring nie jest dodatkiem po premierze. To część architektury: co mierzysz, kto dostaje alert i jak szybko wiesz, że integracja przestała synchrocić.
5. Dług technologiczny z "naprawimy później"
Hotfix na produkcji. Feature flag "na chwilę". Aktualizacja zależności odłożona. Review bezpieczeństwa pominięte, bo sprint się pali.
Po roku macie kod, którego nikt nie chce ruszać, luki w auth i sesjach oraz regresje przy każdej zmianie. Deweloper dokłada kolejną łatę. Koszt zmian rośnie. Czas do naprawy krytycznego błędu też.
Dług technologiczny to nie estetyka kodu. To ryzyko biznesowe: wolniejsze wdrożenia, więcej incydentów i coraz droższe utrzymanie. QA i bezpieczeństwo wyłapują to wcześniej, bo patrzą na regresję, uprawnienia i powierzchnię ataku, a nie tylko na nowy ekran.
Co z tym zrobić, zanim odejdzie kolejny klient
Nie musisz przepisywać produktu. Zacznij od warstwy, która realnie gubi pieniądze:
- ścieżki krytyczne pod obciążeniem,
- wolne zapytania w panelu,
- integracje z cichymi błędami,
- alerty zamiast "klient zgłosił",
- lista długu z wpływem na bezpieczeństwo i stabilność.
W Aspika robimy to jako audyt architektury i QA przy produktach webowych i SaaS: konkretne priorytety, bez korpo-raportu na 40 stron.
Jeśli Twój system "działa na demo", a boisz się kolejnej kampanii albo sezonu, napisz. Opiszemy, co sprawdzić w pierwszej kolejności.
Najczęstsze pytania
- Czy wystarczy dobry programista, żeby SaaS był stabilny?
- Sam development buduje funkcje. Stabilność pod ruchem, poprawność integracji i wykrywanie awarii to osobna warstwa: QA, architektura i bezpieczeństwo. Bez niej produkt 'działa' tylko w szczęśliwym scenariuszu.
- Kiedy warto zrobić audyt architektury istniejącego systemu?
- Gdy panele są wolne, awarie zgłaszają klienci zamiast monitoringu, albo integracje (płatności, CRM, magazyn) gubią dane bez jawnego błędu. To sygnał, że koszt naprawy rośnie szybciej niż rozwój produktu.
- Czym różni się test obciążeniowy od testu funkcjonalnego?
- Test funkcjonalny sprawdza, czy ścieżka działa przy jednym użytkowniku. Test obciążeniowy sprawdza, czy system utrzymuje czas odpowiedzi i spójność danych przy setkach równoległych sesji. Oba są potrzebne.
- Jak Aspika podchodzi do takich problemów?
- Zaczynamy od audytu architektury i QA: ścieżki krytyczne, baza, integracje, logi i bezpieczeństwo. Potem priorytety i plan napraw, bez przepisywania wszystkiego od zera.
Powiązane artykuły
Aspika
Aspika to studio Łukasza Grzybowskiego. Strony i produkty webowe z inżynierskim podejściem do jakości.
O studio →