Logo TucarioThe Tucario Blog

Dług techniczny w Salesforce: jak narasta i jak go spłacić

Jak dług techniczny narasta w orgach Salesforce, jak go zinwentaryzować i zmierzyć darmowymi narzędziami z Setup oraz jak ułożyć spłatę według ryzyka i nakładu pracy.

Michał Bajdek

Współzałożyciel, Tucario

8 min czytania

Udostępnij artykuł

Kluczowe wnioski

  • Dług techniczny w Salesforce to konfiguracja i kod, które dziś działają, ale podnoszą koszt każdej przyszłej zmiany.
  • Dług narasta po cichu przez rotację adminów, budowanie pod deadline i przejęcia — i pozostaje niewidoczny, dopóki nie zmienisz czegoś w jego pobliżu.
  • Większość długu zmierzysz za darmo: raportem Optimizer, danymi o użyciu pól, zużyciem storage i wyszukaniem zapytań w pętlach.
  • Spłatę układaj według ryzyka i nakładu: najpierw pozycje wysokiego ryzyka i niskiego nakładu, duże przebudowy planuj i finansuj, drobne porządki grupuj, a stabilny dług niskiego ryzyka zostaw w spokoju.

Dług techniczny w Salesforce to skumulowany koszt dróg na skróty w Twoim orgu: porzucone flow, zaszyte na sztywno identyfikatory rekordów, jednorazowe pola, których nikt nie wypełnia, i Apex napisany pod jeden rekord zamiast pod wiele. Rzadko się zapowiada. Ujawnia się później — jako wolne wydania, krucha automatyzacja i zmiana na jednym obiekcie, która psuje coś trzy obiekty dalej.

Dostawcy narzędzi chętnie sprzedadzą Ci skaner metadanych, zanim zrozumiesz, na co patrzysz. Ta kolejność jest odwrócona. Ten playbook pokazuje, jak dług narasta, jak go zinwentaryzować, jak go zmierzyć bez kupowania czegokolwiek — i jak ułożyć spłatę tak, żeby naprawić rzeczy groźne przed irytującymi.

Lata nawarstwionej konfiguracji orga pokazane jako warstwy geologiczne z pęknięciem badanym przez architekta

Czym jest dług techniczny w Salesforce?

Dług techniczny w Salesforce to konfiguracja i kod, które dziś działają, ale podnoszą koszt każdej przyszłej zmiany. Konkretne przykłady: Flow pozostawiony aktywny po tym, jak jego proces został zastąpiony, typ raportu zbudowany na polu formuły przeliczanym przy każdym wierszu, trigger Apex odpytujący bazę w pętli i czterdzieści pól tekstowych tam, gdzie należała się picklista.

Długiem nie jest sam skrót. Czasem skrót to dobra decyzja pod presją terminu. Długiem są odsetki: dodatkowy czas, ryzyko i koordynacja, które każda późniejsza zmiana niesie dlatego, że do skrótu nikt nie wrócił. Org może działać na długu latami. Po prostu działa coraz wolniej i psuje się coraz częściej, w miarę jak rośnie.

Jak dług techniczny narasta po cichu

Dług budują trzy siły — i żadna z nich w swoim czasie nie wygląda na błąd.

Rotacja adminów. Ludzie przychodzą i odchodzą. Każdy admin nosi w głowie model orga, który odchodzi razem z nim. Pole nazwane Status_2__c miało sens dla osoby, która je utworzyła — i dla nikogo później. Nieudokumentowane automatyzacje piętrzą się, bo kolejny admin boi się kasować to, czego nie rozumie, więc buduje obok, zamiast na tym, co jest.

Budowanie pod deadline. Wdrożenie na koniec kwartału wychodzi z zaszytym na sztywno ID kolejki, bo nie było czasu zrobić tego konfigurowalnie. Plan zakładał poprawkę „po go-live“. Go-live minął, ruszył następny projekt, a ID wciąż tam siedzi — teraz wskazywane przez trzy flow. Dług zaciągnięty świadomie pod presją to nadal dług, jeśli nikt nie zaplanował spłaty.

Przejęcia i reorganizacje. Scalenie dwóch orgów albo dokręcenie nowej jednostki biznesowej do istniejącego podwaja typy rekordów, layouty i sharing rules z dnia na dzień. Dwa sposoby modelowania tego samego „Konta“ nagle współistnieją. Nikt nie zaplanował bałaganu. To suma dwóch rozsądnych historii, które się zderzyły.

Wspólny mianownik: dług jest niewidoczny, dopóki nie spróbujesz zmienić czegoś w jego pobliżu. Dlatego potrzebuje świadomej inwentaryzacji, a nie wyczucia.

Inwentarz długu technicznego Salesforce

Zanim cokolwiek naprawisz, nazwij to, co masz. Ta tabela to artefakt, który budujemy jako pierwszy na przeglądzie architektury: typ długu, jak objawia się w orgu i ruch, który go spłaca. Przejdź z nią przez swój org.

Typ długu Jak się objawia Ruch spłacający
Porzucone automatyzacje Aktywne Flow, Process Buildery lub Workflow Rules bez właściciela; zduplikowana logika odpalająca się na tym samym obiekcie Zmapuj każdą automatyzację per obiekt, wygaś martwe, skonsoliduj resztę do jednego Flow na obiekt na zdarzenie
Zaszyte identyfikatory ID rekordów, kolejek lub profili wpisane w Apex lub formuły Flow; pęka przy deployu do nowego orga Przenieś ID do Custom Metadata lub Custom Settings; odwołuj się po developer name, nigdy po 18-znakowym ID
Rozrost pól Dziesiątki niemal identycznych pól (Status, Status_2, Old_Status); niskie wypełnienie; niejasne źródło prawdy Zrób audyt użycia pól, wycofaj nieużywane, ustandaryzuj jedno pole z zarządzaną picklistą
Niezbulkifikowany Apex SOQL lub DML w pętlach; triggery wywalające się na ładowaniach powyżej 200 rekordów; powracające błędy limitów Zrefaktoruj do wzorców bulkowych, jeden trigger na obiekt, przetwarzanie na kolekcjach; najpierw dołóż pokrycie testami
Dług walidacji i danych Brakujące reguły walidacji, niespójne formaty, duplikaty blokujące raportowanie i grounding AI Wykrywaj i raportuj skanem wsadowym, potem naprawiaj u źródła; DQS pokazuje problemy bez automatycznego scalania rekordów
Dryf uprawnień Nakładające się profile i permission sety; dostępy nadawane ad hoc i nigdy nieodbierane Uporządkuj do modelu opartego na permission setach, udokumentuj kto co dostaje i dlaczego, usuń osierocone nadania
Złożoność współdzielenia Warstwy sharing rules, zbyt szerokie OWD łatane Apex sharing; przeliczenia, które się nie domykają Przeprojektuj model współdzielenia od wymagania dostępowego w górę, nie łataniem ostatniego wyjątku
Nieudokumentowane integracje Połączenia punkt-punkt po API, niezarządzane connected apps, brak obsługi błędów i retry Skataloguj każdą integrację przychodzącą i wychodzącą, dodaj monitoring, udokumentuj kontrakt każdej z nich

Celem tabeli nie jest naprawienie wszystkiego. Celem jest zobaczenie całej planszy, zanim ruszysz pierwszy pionek.

Jak zmierzyć dług techniczny, zanim kupisz narzędzie

Większość swojego długu zwymiarujesz tym, co Salesforce już Ci daje — za darmo, w jedno popołudnie.

Zacznij od raportu Optimizer w Setup. Flaguje nieużywane pola, pola zbliżające się do limitów, zaszyte URL-e i nieaktywne reguły walidacji. Potem otwórz Setup > Storage Usage i użycie pól, żeby znaleźć pola z wypełnieniem bliskim zera. Wyciągnij listę aktywnych automatyzacji per obiekt. Policz triggery na obiekt; więcej niż jeden to zapach wart zbadania. Przeszukaj Apex pod kątem słów SELECT oraz insert/update siedzących wewnątrz pętli for.

Dług w danych wymaga innej optyki. Kompletności pól, wskaźnika duplikatów i spójności formatów nie zobaczysz w skanerach metadanych. Tu właśnie zarabia na siebie skan wsadowy: DQS przechodzi przez Twoje obiekty, wykrywa i raportuje luki w sześciu wymiarach jakości danych — i nigdy niczego nie naprawia automatycznie ani nie scala. Dostajesz mapę; decyzja o remediacji zostaje u Ciebie i Twojego architekta.

Dopiero z takim punktem odniesienia płatne narzędzie do analizy metadanych zaczyna wnosić wartość. Kup narzędzie, żeby szybciej pracować nad problemem, który już zwymiarowałeś — nie żeby odkryć, czy go masz.

Jak ułożyć spłatę według ryzyka i nakładu

Nie każdy dług zasługuje na tę samą pilność. Rozłóż każdą pozycję z inwentarza na dwóch osiach: ryzyko, które niesie (czy zagraża integralności danych, bezpieczeństwu albo wydaniu?) i nakład potrzebny na spłatę. To daje cztery ruchy.

  1. Wysokie ryzyko, niski nakład: zrób teraz. Zaszyte ID, które wywali następny deploy, albo niezbulkifikowany trigger padający na ładowaniach danych. Małe zmiany, realne zagrożenie. To jest pierwszy sprint.
  2. Wysokie ryzyko, wysoki nakład: zaplanuj i sfinansuj. Przeprojektowanie modelu współdzielenia albo przebudowa integracji. To wymaga projektu, testów i okna zmian. Wpisz je do roadmapy z właścicielem i budżetem, nie na listę życzeń.
  3. Niskie ryzyko, niski nakład: grupuj. Wycofanie czterdziestu nieużywanych pól albo wygaszenie martwych flow. Zepnij to w kwartalny porządek, żeby nie konkurowało z pracą nad funkcjami.
  4. Niskie ryzyko, wysoki nakład: zostaw. Niezgrabny, ale stabilny layout, na który nikt nie narzeka. Udokumentuj i idź dalej. Spłacanie długu, który nic Cię nie kosztuje, samo jest marnotrawstwem.

Działaj w tej kolejności, a każda wczesna wygrana zmniejsza promień rażenia trudniejszej pracy. Naprawienie niezbulkifikowanego triggera przed przebudową współdzielenia oznacza, że przebudowa idzie na kodzie, który nie przewraca się przy 201 rekordach.

Kiedy dług techniczny oznacza przegląd przed budową

Jest próg, za którym sprzątanie kawałek po kawałku przestaje wystarczać. Jeśli każde z trzech ostatnich wydań zepsuło coś niepowiązanego, jeśli nikt nie powie z przekonaniem, które automatyzacje odpalają się na obiekcie Opportunity, albo jeśli zaraz położysz na obecnym orgu Agentforce lub nową jednostkę biznesową — spłata łatka po łatce się nie utrzyma.

W tym momencie właściwym ruchem jest Architecture Review przed kolejną budową, nie po niej; jak taki przegląd wygląda w praktyce, opisuje nasz przewodnik po przeglądzie architektury Salesforce. Przegląd inwentaryzuje dług, szereguje go według ryzyka i oddaje plan spłaty spięty z Twoją roadmapą — porządki i nowa funkcjonalność są projektowane razem, zamiast ze sobą walczyć. A gdy dług jest na tyle poważny, że projekt już utknął, ten sam punkt startu dotyczy ratowania nieudanego wdrożenia Salesforce.

Każde zlecenie Tucario prowadzi architekt — Salesforce Certified Technical Architect, jeden z mniej niż 500 na świecie. Dla orgów, które potrzebują takiego nadzoru na stałe, a nie jednorazowo, to samo krzesło jest dostępne w modelu Strategic Advisory: architekt siedzi obok Twojego zespołu jako stały autorytet projektowy.

Kiedy nas nie potrzebujesz: jeśli Twój org jest mały, automatyzacje mieszczą się na jednej stronie, a admin dokumentuje zmiany — zewnętrzny przegląd nie jest Ci potrzebny. Uruchom Optimizera, przejdź przez tabelę inwentarza powyżej i pilnuj porządku we własnym domu. Architekta sprowadź wtedy, gdy koszt błędnego ruchu przewyższa koszt przeglądu.

Najczęściej zadawane pytania

Czym jest dług techniczny w Salesforce?

Dług techniczny w Salesforce to konfiguracja i kod, które działają dziś, ale podnoszą koszt każdej przyszłej zmiany. Typowe formy to porzucone flow, zaszyte na sztywno identyfikatory rekordów, jednorazowe pola, niezbulkifikowany Apex i nakładające się profile. Długiem są bieżące odsetki: dodatkowy czas i ryzyko, które niesie każda kolejna zmiana.

Jak zmierzyć dług techniczny w Salesforce?

Zacznij za darmo: raport Salesforce Optimizer, dane o użyciu pól i zużycie storage w Setup. Policz aktywne automatyzacje i triggery per obiekt, przeszukaj Apex pod kątem zapytań w pętlach. Dla długu w danych uruchom skan wsadowy kompletności, duplikatów i formatów — a płatne narzędzie kupuj dopiero po zwymiarowaniu problemu.

Czym różni się dług techniczny od długu funkcjonalnego?

Dług techniczny to koszt pod maską: nieefektywny kod, splątane automatyzacje, zaszyte wartości, które spowalniają przyszłą pracę. Dług funkcjonalny to brakująca lub błędna funkcjonalność: rzeczy, których użytkownicy potrzebują, a org ich nie dostarcza. Oba rosną w czasie, ale dług techniczny spowalnia dowożenie, a funkcjonalny ogranicza to, co dowożenie może osiągnąć.

Sprzątać dług techniczny czy przebudować org?

Przebudowuj tylko wtedy, gdy dług jest strukturalny — gdy prawdziwym problemem jest model danych, projekt współdzielenia albo warstwa integracji. Większość orgów spłaca dług przyrostowo, w kolejności ryzyka i nakładu. Przebudowa jest droga i ryzykowna; rezerwuj ją na przypadki, w których remediacja kosztuje więcej niż postawienie danej domeny od nowa.

Kiedy zamówić przegląd architektury z powodu długu technicznego?

Zamów przegląd architektury, gdy kolejne wydania psują niepowiązane ze sobą rzeczy, gdy nikt nie umie wskazać, które automatyzacje odpalają się na kluczowym obiekcie, albo zanim położysz na orgu Agentforce lub nową jednostkę biznesową. Przegląd inwentaryzuje i szereguje dług, a potem oddaje plan spłaty ułożony pod Twoją roadmapę.

Michał Bajdek

Współzałożyciel, Tucario

Współzałożyciel Tucario — firmy konsultingowo-produktowej Salesforce. Pracuje przy enterprise’owych wdrożeniach Salesforce — architektura, integracje i produkty AppExchange — i pisze o tym, co sprawdza się w środowiskach produkcyjnych.

Odkryj powiązane treści według tematu