Migrace doložená testy pro podnikové kódové základny SAS
Váš SAS funguje. Tisíce programů, maker, formátů a naplánovaných úloh se léta ladily a velká část toho, co dělají, není zdokumentována nikde jinde než v samotném kódu. Přesun na jakoukoli novou platformu, jakkoli kompatibilní, s sebou nese jedno skutečné riziko: něco, co dřív bylo správně, je teď nenápadně špatně, a nikdo si toho nevšimne, dokud na tom nezáleží.
Jenner Professional Services toto riziko odstraňuje jednoduchou disciplínou. Než cokoli změníme, vytvoříme úplný, spustitelný záznam toho, co váš současný systém dělá. Tento záznam pak použijeme k tomu, abychom test po testu dokázali, že migrovaný systém dělá totéž.
Výsledkem je migrace, kterou můžete schválit na základě důkazů místo důvěry, a regresní sada, která vám zůstane navždy.
Jsme odborníci na SAS, což dokládá i to, že jsme vytvořili úplnou implementaci tohoto jazyka a systému. Migrace na něj je však jen jednou z cest, kterou s námi můžete jít.
Naši implementaci kódu kompatibilního se SAS a naše postupy řízené testy dokážeme využít i k úspěšné migraci na Python nebo R, na Snowflake nebo Databricks či na jiná řešení — třeba i na Siemens SLC.
Migraci na Jenner doporučujeme proto, že je pro firmy s existující infrastrukturou SAS zároveň rychlejší, méně složitá a levnější.
Jenner provozuje jazyk SAS, téměř všechny procedury, makrojazyk, grafiku a širokou škálu datových připojení. U většiny kódu je migrace otázkou nasměrování Jenneru na tytéž programy. Podniková kódová základna však nikdy není jen jazyk. Je to také všechno, čeho se jazyk dotýká:
autoexec.sas, konfigurační soubory, systémové volby (ENCODING, LOCALE, YEARCUTOFF, VALIDVARNAME, FMTSEARCH, SASAUTOS), proměnné prostředí, SYSPARM a velikost i životnost knihovny WORK.
Hesla zapsaná přímo v příkazech LIBNAME, řetězce zakódované pomocí {SAS002}, přihlašovací údaje v souborech vkládaných přes %include, lístky Kerberos nebo SSO a otázka, kde by to všechno mělo být místo toho.
Enginy SAS/ACCESS pro Oracle, DB2, Teradata, SQL Server, Snowflake, Hive a další; explicitní i implicitní pass-through SQL; volby enginu ovlivňující výsledky (DBCOMMIT, READBUFF, INSERTBUFF, BULKLOAD); mapování typů pro data, desetinná čísla a NULL; a chování, které se tiše změnilo, když se SQL přesunulo do databáze místo lokálního provádění.
Napevno zapsané cesty, písmena disků ve Windows oproti připojeným svazkům v Linuxu, názvy souborů rozlišující velikost písmen, sdílení NFS a SMB, příkazy FILENAME PIPE a X, SYSGET a oprávnění k souborům.
Katalogy formátů, přeložená nebo uložená makra, indexy, auditní stopy, pohledy, knihovny SPDE, transportní soubory, šifrované nebo komprimované datové sady a datové sady z éry V6/V8, které je třeba znovu vytvořit, nikoli zkopírovat.
Bloky RSUBMIT v SAS/CONNECT, Grid, SAS/SHARE, Stored Processes, autorizace přes metadatový server, projekty Enterprise Guide, úlohy vygenerované v DI Studiu a akce CAS ve Viya. Ke každému existuje na nové platformě protějšek, nikoli však shodný.
LSF, Control-M, cron, závislosti mezi úlohami, konvence návratových kódů, čtečky logů hledající konkrétní text NOTE/WARNING/ERROR, logika SYSERR a SYSCC a upozornění přes FILENAME EMAIL.
Cíle ODS pro PDF, RTF, Excel a HTML, styly PROC TEMPLATE, tagsety, písma, ovladače grafických zařízení a sestavy, které navazující konzumenti parsují podle pozice.
Zaokrouhlování v plovoucí řádové čárce na hranicích, kolace řazení a pořadí při shodě, proudy náhodných čísel (RANUNI, RAND, STREAMINIT), které nejsou reprodukovatelné napříč implementacemi, a iterativní procedury, jejichž cesta ke konvergenci se může v rámci tolerance lišit.
Neinicializované proměnné, remerging v PROC SQL, implicitní RETAIN, varování o zkrácení považovaná za normální a nezdokumentované chování, které dnes shodou okolností dává správnou odpověď.
Python přes SASPy, R, klienti v Javě a .NET přes IOM, JDBC na SAS/SHARE, Tableau a pandas čtoucí soubory .sas7bdat přímo a REST volání do Viya.
Požadavky na validaci v regulovaných odvětvích (GxP, 21 CFR Part 11, řízení modelového rizika), zabezpečení na úrovni řádků, nakládání s osobními údaji, auditní stopy a absence správy verzí v mnoha dlouhodobě provozovaných prostředích SAS.
Nic z toho není neobvyklé. Všechno se dá najít předem a všechno se dá otestovat. Právě o tom je následující postup.
Než odhadneme práci, provedeme inventuru. Automatizovanou analýzou vašeho stromu zdrojů, plánů a logů vytvoříme graf závislostí mezi programy, makry, formáty, knihovnami, externími soubory a databázovými připojeními a určíme, co se skutečně spouští, co je mrtvé a co komu patří. Prověří se každá výše uvedená kategorie a nálezy se obodují podle náročnosti migrace.
Inventurní a riziková zpráva s nabídkou za pevnou cenu pro zbývající fáze. Pokud se rozhodnete nepokračovat, zpráva zůstává vám.
Tato fáze činí vše ostatní spolehlivým a probíhá výhradně na vašem stávajícím systému SAS, ještě než se cokoli migruje.
Pro každý program v rozsahu sestavíme pomocí analýzy s podporou AI charakterizační testy: spustitelné specifikace toho, co kód dnes dělá. Každý test zachytí vstupy, které program spotřebovává — datové sady, parametry maker, externí soubory, výběry z databází, nastavení prostředí —, spustí jej na vaší současné instalaci SAS a zaznamená vše, co vyprodukuje: výstupní datové sady, obsah logu, návratové kódy, výstup ODS, stav makroproměnných a vedlejší účinky, jako jsou zapsané soubory nebo odeslané e-maily.
Právě AI to činí proveditelným v podnikovém měřítku. Přečíst deset tisíc programů a odvodit hraniční případy, které každý z nich ošetřuje, není práce pro lidi s termínem. Generování testovacích případů, testovacích dat a porovnávací logiky je přesně ten objemný, vzorcovitý druh práce, v němž jsou dnešní modely silné, a každý vygenerovaný test se ověřuje spuštěním proti systému, který popisuje. Pokud test na vašem současném SAS neprojde, není to test vašeho systému a vyřadí se.
Pravidla porovnání se stanovují pro každý výstup zvlášť. Datové sady se ve výchozím stavu porovnávají přesně; číselné tolerance se výslovně deklarují tam, kde plovoucí řádová čárka nebo iterativní procedury činí bitovou shodu nesmyslnou; porovnání logů je strukturální, nikoli textové, takže přeformulovaná NOTE úlohu neshodí, zatímco změněný počet řádků ano. Nedeterministické vstupy, jako je aktuální datum a náhodná semínka, se řídí tak, aby tentýž test dával kterýkoli den stejnou odpověď. Tam, kde nelze k testování použít produkční data, vytvoříme maskovaná nebo syntetická testovací data procházející stejnými větvemi kódu.
Verzovaná testovací sada s naměřeným pokrytím napříč programy, makry a procedurami a výchozí záznam výsledků z vašeho současného systému. Tato sada je vaše. Je psaná tak, aby běžela na Jenneru, na SAS i na čemkoli dalším, co tento jazyk ovládá, a má hodnotu nezávisle na migraci: většina prostředí SAS ji nikdy neměla.
S hotovým výchozím záznamem se migrace stává inženýrskou prací s jasnou definicí hotového. Postavíme Jenner ve vašem prostředí, napravíme položky prostředí nalezené ve fázi Discovery (cesty, knihovny, správa tajemství, databázová připojení, napojení na plánovač) a spustíme celou sadu.
Každé selhání se zařadí do jedné ze čtyř kategorií:
Kód je správný a chybu má Jenner. Jenner vydává nové sestavení každý týden; vady nalezené při migracích zákazníků mají přednost a selhávající test se natrvalo stane součástí vlastní regresní sady Jenneru.
Cesta, přihlašovací údaj, připojení nebo volba, kterou je třeba nastavit. Opraví se a spustí znovu.
Kód spoléhá na nezdokumentované chování SAS. Ukážeme vám konkrétní řádek a konkrétní chování a vy si vyberete mezi úpravou kódu — kdy test dokazuje, že je změna bezpečná — a tím, že se Jenner této zvláštnosti přizpůsobí.
Výsledek se liší v rámci deklarované tolerance, nebo je zpráva v logu formulována jinak. Zdokumentuje se a schválí, nikdy se nepřijme mlčky.
Sada běží průběžně, jak se problémy odstraňují, takže postup je číslo, ne názor, a regrese se zachytí tentýž den, kdy vzniknou.
Migrovaná kódová základna, na níž celá sada prochází, nebo v níž je každý zbývající rozdíl písemně vypořádán.
Certifikace je soubor důkazů, který umožní vašemu sponzorovi, vašim auditorům a vašim regulátorům migraci přijmout.
Provedeme paralelní období, kdy produkční úlohy běží na obou systémech a výstupy se automaticky porovnávají podle stejných pravidel jako testovací sada. Certifikační balíček obsahuje inventuru, testovací sadu a její pokrytí, výchozí záznam, výsledky posledního běhu, vypořádání každého rozdílu a dohledatelnost od každého požadavku či programu k testům, které jej pokrývají. Pro regulované zákazníky je strukturován tak, aby unesl validaci IQ/OQ/PQ a audit.
Podepsaný certifikační balíček a doporučení, zda pokračovat.
Přepnutí se plánuje kolem vašich dávkových oken a data obnovy vaší licence SAS, s vyzkoušenou cestou zpět. Plánovače se přesměrují, monitoring a výstrahy se potvrdí a prostředí SAS se vyřadí podle vašeho harmonogramu.
Testovací sada běží i po přepnutí. Protože Jenner vydává týdně, dostáváte každé vylepšení se stejným důkazem, že se nic, na čem závisíte, nezměnilo. Váš tým vyškolíme, aby sadu rozšiřoval spolu s růstem kódu.
Produkce na Jenneru, plán vyřazení SAS a regresní sada, která pro vás pracuje dál.
Za pevnou cenu a krátká. Vytváří nabídku pro zbývající fáze, oceněnou podle naměřené velikosti a složitosti vašeho prostředí, nikoli podle jejich odhadu.
Obvykle dodávané jako jediná zakázka s pevným rozsahem, s akceptací po milnících navázanou na výsledky sady.
K dispozici jako roční služba poté, co je testovací sada předána a váš tým vyškolen v jejím rozšiřování.
$1,000 – $21,000
Zpravidla je lze provést na dálku a trvají od jednoho týdne do jednoho měsíce.
$52,000 – $405,000
Vyžadují část práce na místě a/nebo pokročilou znalost oboru a obvykle trvají dva až šest měsíců.
Všechny částky jsou v amerických dolarech (USD).
Nezahrnuje licenční poplatky za software; ty jsou ovšem velmi přehledné a konkurenceschopné. Přejít na stránku s cenami.
Kontaktovat profesionální službyPošlete nám popis svého prostředí SAS — platformu, přibližný počet programů, používané produkty, databáze a plánovače — a navrhneme rozsah fáze Discovery.