Migracja potwierdzona testami dla korporacyjnych baz kodu SAS
Twoje środowisko SAS działa. Tysiące programów, makr, formatów i zaplanowanych zadań szlifowano latami, a spora część tego, co robią, nie jest udokumentowana nigdzie poza samym kodem. Przeniesienie tego na dowolną nową platformę, choćby najbardziej zgodną, niesie jedno realne ryzyko: coś, co dotąd było poprawne, staje się subtelnie błędne, a nikt tego nie zauważa, dopóki nie zacznie to mieć znaczenia.
Jenner Professional Services usuwa to ryzyko dzięki prostej dyscyplinie. Zanim cokolwiek zmienimy, budujemy kompletny, wykonywalny zapis tego, co robi Twój obecny system. Następnie używamy tego zapisu, aby test po teście udowodnić, że zmigrowany system robi to samo.
Efektem jest migracja, którą możesz zatwierdzić na podstawie dowodów, a nie zaufania, oraz zestaw testów regresji, który zostaje u Ciebie na zawsze.
Jesteśmy ekspertami od SAS, czego dowodzi stworzenie przez nas pełnej implementacji tego języka i systemu. Migracja właśnie do niego jest jednak tylko jedną z dróg, którą możesz z nami pójść.
Możemy wykorzystać naszą implementację kodu zgodnego z SAS oraz nasze praktyki oparte na testach, aby zapewnić udaną migrację do Pythona lub R, do Snowflake lub Databricks, albo do innych rozwiązań — również do Siemens SLC.
Rekomendujemy migrację na Jenner, ponieważ dla firm z istniejącą infrastrukturą SAS jest ona zarazem szybsza, mniej złożona i tańsza.
Jenner wykonuje język SAS, niemal wszystkie procedury, mechanizm makr, grafikę i szeroki wachlarz połączeń z danymi. Dla większości kodu migracja sprowadza się do skierowania Jennera na te same programy. Ale korporacyjna baza kodu nigdy nie jest wyłącznie językiem. Jest też wszystkim, czego język dotyka:
autoexec.sas, pliki konfiguracyjne, opcje systemowe (ENCODING, LOCALE, YEARCUTOFF, VALIDVARNAME, FMTSEARCH, SASAUTOS), zmienne środowiskowe, SYSPARM oraz rozmiar i czas życia biblioteki WORK.
Hasła wpisane wprost w instrukcje LIBNAME, ciągi zakodowane przez {SAS002}, poświadczenia w plikach dołączanych przez %include, bilety Kerberos lub SSO oraz pytanie, gdzie to wszystko powinno się zamiast tego znajdować.
Silniki SAS/ACCESS dla Oracle, DB2, Teradata, SQL Server, Snowflake, Hive i innych; jawny i niejawny pass-through SQL; opcje silnika wpływające na wyniki (DBCOMMIT, READBUFF, INSERTBUFF, BULKLOAD); mapowanie typów dla dat, liczb dziesiętnych i NULL; oraz zachowania, które zmieniły się po cichu, gdy SQL zaczął być wypychany do bazy zamiast wykonywany lokalnie.
Ścieżki wpisane na sztywno, litery dysków Windows kontra montowania w Linuksie, nazwy plików rozróżniające wielkość liter, udziały NFS i SMB, polecenia FILENAME PIPE i X, SYSGET oraz uprawnienia do plików.
Katalogi formatów, skompilowane lub zapisane makra, indeksy, ślady audytu, widoki, biblioteki SPDE, pliki transportowe, zaszyfrowane lub skompresowane zbiory danych oraz zbiory z czasów V6/V8, które trzeba wygenerować od nowa, a nie skopiować.
Bloki RSUBMIT w SAS/CONNECT, Grid, SAS/SHARE, Stored Processes, autoryzacja przez serwer metadanych, projekty Enterprise Guide, zadania wygenerowane w DI Studio i akcje CAS w Viya. Każde ma odpowiednik na nowej platformie, ale nie identyczny.
LSF, Control-M, cron, zależności między zadaniami, konwencje kodów powrotu, skrypty czytające logi w poszukiwaniu konkretnego tekstu NOTE/WARNING/ERROR, logika SYSERR i SYSCC oraz powiadomienia FILENAME EMAIL.
Cele ODS w postaci PDF, RTF, Excela i HTML, style PROC TEMPLATE, tagsety, czcionki, sterowniki urządzeń graficznych oraz raporty, które odbiorcy niżej w łańcuchu parsują według pozycji.
Zaokrąglanie zmiennoprzecinkowe na granicach, kolacja sortowania i kolejność przy remisach, strumienie liczb losowych (RANUNI, RAND, STREAMINIT) nieodtwarzalne między implementacjami oraz procedury iteracyjne, których ścieżka zbieżności może się różnić w granicach tolerancji.
Niezainicjowane zmienne, remerging w PROC SQL, niejawny RETAIN, ostrzeżenia o obcięciu traktowane jako normalne oraz nieudokumentowane zachowania, które dziś przypadkiem dają właściwą odpowiedź.
Python przez SASPy, R, klienci Java i .NET przez IOM, JDBC do SAS/SHARE, Tableau i pandas czytające pliki .sas7bdat bezpośrednio oraz wywołania REST do Viya.
Wymogi walidacyjne w branżach regulowanych (GxP, 21 CFR Part 11, zarządzanie ryzykiem modeli), bezpieczeństwo na poziomie wierszy, przetwarzanie danych osobowych, ślady audytu oraz brak kontroli wersji w wielu długo działających środowiskach SAS.
Żadna z tych rzeczy nie jest niezwykła. Wszystkie da się znaleźć z wyprzedzeniem i wszystkie da się przetestować. Właśnie po to jest poniższy proces.
Inwentaryzujemy środowisko, zanim oszacujemy pracę. Dzięki zautomatyzowanej analizie drzewa źródeł, harmonogramów i logów tworzymy graf zależności między programami, makrami, formatami, bibliotekami, plikami zewnętrznymi i połączeniami z bazami, a także ustalamy, co faktycznie się wykonuje, co jest martwe i co do kogo należy. Sprawdzamy każdą z powyższych kategorii, a ustalenia punktujemy według pracochłonności migracji.
Raport inwentaryzacyjny i ryzyka wraz z ofertą o stałej cenie na pozostałe fazy. Jeśli zdecydujesz się nie kontynuować, raport zostaje u Ciebie.
To faza, która czyni resztę wiarygodną, i odbywa się w całości na Twoim istniejącym systemie SAS, zanim cokolwiek zostanie zmigrowane.
Dla każdego programu w zakresie budujemy, z pomocą analizy wspieranej przez AI, testy charakteryzujące: wykonywalne specyfikacje tego, co kod robi dzisiaj. Każdy test przechwytuje dane wejściowe, które program pobiera — zbiory danych, parametry makr, pliki zewnętrzne, wyciągi z baz, ustawienia środowiska — uruchamia go na Twojej obecnej instalacji SAS i zapisuje wszystko, co produkuje: zbiory wynikowe, treść logu, kody powrotu, wyjście ODS, stan zmiennych makro oraz efekty uboczne, takie jak zapisane pliki czy wysłane wiadomości.
To właśnie AI czyni to wykonalnym w skali korporacyjnej. Przeczytanie dziesięciu tysięcy programów i wywnioskowanie przypadków brzegowych, które każdy z nich obsługuje, nie jest pracą dla ludzi z terminem. Generowanie przypadków testowych, danych testowych i logiki porównania to dokładnie ten rodzaj obszernej, wzorcowej pracy, w której dzisiejsze modele są mocne, a każdy wygenerowany test jest walidowany przez uruchomienie go na systemie, który opisuje. Jeśli test nie przechodzi na Twoim obecnym SAS, nie jest testem Twojego systemu i zostaje odrzucony.
Reguły porównania ustalamy dla każdego wyniku osobno. Zbiory danych domyślnie porównujemy dokładnie; tolerancje liczbowe deklarujemy wprost tam, gdzie liczby zmiennoprzecinkowe lub procedury iteracyjne czynią równość bit po bicie bezsensowną; porównania logów są strukturalne, a nie tekstowe, więc przeredagowana NOTE nie wywraca zadania, natomiast zmieniona liczba wierszy tak. Wejścia niedeterministyczne, takie jak bieżąca data i ziarna losowe, są kontrolowane, aby ten sam test dawał tę samą odpowiedź każdego dnia. Tam, gdzie nie można użyć danych produkcyjnych do testów, budujemy zamaskowane lub syntetyczne dane testowe przechodzące tymi samymi ścieżkami kodu.
Wersjonowany zestaw testów z mierzonym pokryciem programów, makr i procedur oraz zapis odniesienia wyników z Twojego obecnego systemu. Ten zestaw należy do Ciebie. Jest napisany tak, aby działał na Jennerze, na SAS i na wszystkim innym, co mówi tym językiem, i ma wartość niezależnie od migracji: większość środowisk SAS nigdy takiego nie miała.
Gdy zapis odniesienia jest gotowy, migracja staje się zadaniem inżynierskim z jasną definicją ukończenia. Stawiamy Jennera w Twoim środowisku, porządkujemy elementy środowiskowe znalezione w fazie Discovery (ścieżki, biblioteki, zarządzanie sekretami, połączenia z bazami, integrację z harmonogramem) i uruchamiamy pełny zestaw.
Każde niepowodzenie trafia do jednej z czterech kategorii:
Kod jest poprawny, a myli się Jenner. Jenner wydaje nowe kompilacje co tydzień; usterki znalezione podczas migracji klientów mają priorytet, a niezaliczony test na stałe trafia do własnego zestawu regresji Jennera.
Ścieżka, poświadczenie, połączenie lub opcja, którą trzeba ustawić. Poprawiamy i uruchamiamy ponownie.
Kod opiera się na nieudokumentowanym zachowaniu SAS. Pokazujemy konkretną linię i konkretne zachowanie, a Ty wybierasz: zmienić kod — test dowodzi wtedy, że zmiana jest bezpieczna — albo sprawić, by Jenner odwzorował tę osobliwość.
Wynik różni się w ramach zadeklarowanej tolerancji albo komunikat w logu jest inaczej sformułowany. Dokumentujemy i zatwierdzamy, nigdy nie przyjmujemy tego po cichu.
Zestaw działa w sposób ciągły w trakcie naprawiania problemów, więc postęp jest liczbą, a nie opinią, a regresje wychwytywane są tego samego dnia, w którym powstają.
Zmigrowana baza kodu, w której pełny zestaw przechodzi, albo w której każda pozostała różnica została rozstrzygnięta na piśmie.
Certyfikacja to pakiet dowodowy, dzięki któremu Twój sponsor, audytorzy i regulatorzy mogą zaakceptować migrację.
Prowadzimy okres pracy równoległej, w którym zadania produkcyjne wykonują się na obu systemach, a wyniki są porównywane automatycznie według tych samych reguł co w zestawie testów. Pakiet certyfikacyjny obejmuje inwentaryzację, zestaw testów i jego pokrycie, zapis odniesienia, wyniki końcowego przebiegu, rozstrzygnięcie każdej różnicy oraz identyfikowalność od każdego wymagania czy programu do testów, które go pokrywają. Dla klientów regulowanych układamy go tak, aby wspierał walidację IQ/OQ/PQ i audyt.
Podpisany pakiet certyfikacyjny i rekomendacja co do dalszych kroków.
Przełączenie planujemy wokół Twoich okien wsadowych i daty odnowienia licencji SAS, ze sprawdzoną ścieżką wycofania. Harmonogramy przekierowujemy, monitorowanie i alerty potwierdzamy, a środowisko SAS wygaszamy zgodnie z Twoim kalendarzem.
Zestaw testów działa dalej po przełączeniu. Ponieważ Jenner wydaje co tydzień, każde usprawnienie otrzymujesz z tym samym dowodem, że nic, na czym polegasz, się nie zmieniło. Twój zespół szkolimy w rozbudowie zestawu wraz z rozrostem kodu.
Produkcja na Jennerze, plan wygaszenia SAS i zestaw testów regresji, który dalej pracuje dla Ciebie.
Stała cena i krótki czas trwania. Powstaje z niej oferta na pozostałe fazy, wyceniona według zmierzonej wielkości i złożoności Twojego środowiska, a nie według ich oszacowania.
Zwykle dostarczane jako jedna współpraca o stałym zakresie, z odbiorami przy kamieniach milowych powiązanymi z wynikami zestawu testów.
Dostępne jako usługa roczna, po przekazaniu zestawu testów i przeszkoleniu Twojego zespołu w jego rozbudowie.
$1,000 – $21,000
Zwykle da się je przeprowadzić zdalnie, a trwają od tygodnia do miesiąca.
$52,000 – $405,000
Wymagają części prac na miejscu i/lub pogłębionej wiedzy dziedzinowej, a trwają zazwyczaj od dwóch do sześciu miesięcy.
Wszystkie kwoty podano w dolarach amerykańskich (USD).
Nie obejmuje to opłat licencyjnych za oprogramowanie; te są jednak bardzo przejrzyste i konkurencyjne. Zobacz stronę z cennikiem.
Skontaktuj się z usługami profesjonalnymiPrześlij nam opis swojego środowiska SAS — platformę, przybliżoną liczbę programów, używane produkty, bazy danych i harmonogramy — a określimy zakres fazy Discovery.