Migración certificada por pruebas para bases de código SAS corporativas
Su parque SAS funciona. Miles de programas, macros, formatos y trabajos planificados se han ido afinando durante años, y buena parte de lo que hacen no está documentada en ningún sitio salvo en el propio código. Trasladar eso a cualquier plataforma nueva, por compatible que sea, conlleva un riesgo real: algo que antes era correcto ahora es sutilmente incorrecto, y nadie se da cuenta hasta que importa.
Jenner Professional Services elimina ese riesgo con una disciplina sencilla. Antes de cambiar nada, construimos un registro completo y ejecutable de lo que hace su sistema actual. Después usamos ese registro para demostrar, prueba a prueba, que el sistema migrado hace lo mismo.
El resultado es una migración que puede aprobar con pruebas en lugar de confianza, y una suite de regresión que conserva para siempre.
Somos expertos en SAS, como demuestra el haber creado una implementación completa de ese lenguaje y de ese sistema. Sin embargo, migrar a él es solo uno de los caminos que puede recorrer con nosotros.
Podemos usar nuestra implementación de código compatible con SAS, y nuestras prácticas guiadas por pruebas, para asegurar una migración exitosa a Python o R, a Snowflake o Databricks, o a otras soluciones, incluso a Siemens SLC.
Recomendamos migrar a Jenner porque es a la vez más rápido, menos complejo y de menor coste para las empresas que ya tienen una infraestructura SAS.
Jenner ejecuta el lenguaje SAS, casi todos los procedimientos, el sistema de macros, los gráficos y una amplia gama de conexiones de datos. Para la mayor parte del código, migrar consiste en apuntar Jenner a los mismos programas. Pero una base de código corporativa nunca es solo el lenguaje. Es también todo aquello que el lenguaje toca:
autoexec.sas, ficheros de configuración, opciones de sistema (ENCODING, LOCALE, YEARCUTOFF, VALIDVARNAME, FMTSEARCH, SASAUTOS), variables de entorno, SYSPARM, y el tamaño y la duración de la biblioteca WORK.
Contraseñas incrustadas en sentencias LIBNAME, cadenas codificadas con {SAS002}, credenciales en ficheros incluidos con %include, tickets Kerberos o SSO, y la cuestión de dónde debería residir todo eso en su lugar.
Motores SAS/ACCESS para Oracle, DB2, Teradata, SQL Server, Snowflake, Hive y otros; SQL de paso explícito e implícito; opciones de motor que afectan a los resultados (DBCOMMIT, READBUFF, INSERTBUFF, BULKLOAD); correspondencia de tipos para fechas, decimales y NULL; y el comportamiento que cambió sin ruido cuando el SQL se delegó a la base de datos en vez de ejecutarse localmente.
Rutas codificadas a fuego, letras de unidad de Windows frente a puntos de montaje de Linux, nombres de fichero sensibles a mayúsculas, recursos compartidos NFS y SMB, comandos FILENAME PIPE y X, SYSGET y permisos de fichero.
Catálogos de formatos, macros compiladas o almacenadas, índices, pistas de auditoría, vistas, bibliotecas SPDE, ficheros de transporte, conjuntos de datos cifrados o comprimidos, y conjuntos de datos de la época V6/V8 que necesitan regenerarse en lugar de copiarse.
Bloques RSUBMIT de SAS/CONNECT, Grid, SAS/SHARE, Stored Processes, autorización mediante el servidor de metadatos, proyectos de Enterprise Guide, trabajos generados por DI Studio y acciones CAS de Viya. Cada uno tiene un equivalente en la nueva plataforma, pero no uno idéntico.
LSF, Control-M, cron, dependencias entre trabajos, convenciones de códigos de retorno, analizadores de logs que buscan texto NOTE/WARNING/ERROR concreto, lógica SYSERR y SYSCC, y alertas FILENAME EMAIL.
Destinos ODS PDF, RTF, Excel y HTML, estilos PROC TEMPLATE, tagsets, tipografías, controladores de dispositivos gráficos, e informes que los consumidores posteriores analizan por posición.
Redondeo en coma flotante en los límites, colación de ordenación y orden de los empates, flujos de números aleatorios (RANUNI, RAND, STREAMINIT) que no son reproducibles entre implementaciones, y procedimientos iterativos cuya trayectoria de convergencia puede diferir dentro de la tolerancia.
Variables sin inicializar, remerging de PROC SQL, RETAIN implícito, avisos de truncamiento tratados como normales, y comportamientos no documentados que hoy dan por casualidad el resultado correcto.
Python mediante SASPy, R, clientes Java y .NET sobre IOM, JDBC hacia SAS/SHARE, Tableau y pandas leyendo directamente ficheros .sas7bdat, y llamadas REST a Viya.
Requisitos de validación en sectores regulados (GxP, 21 CFR Part 11, gestión del riesgo de modelos), seguridad a nivel de fila, tratamiento de datos personales, pistas de auditoría, y la ausencia de control de versiones en muchos parques SAS de larga vida.
Ninguno de estos puntos es inusual. Todos pueden localizarse por adelantado y todos son comprobables. De eso trata precisamente el proceso que sigue.
Inventariamos el parque antes de estimar el trabajo. Mediante el análisis automatizado de su árbol de fuentes, sus planificaciones y sus logs, producimos un grafo de dependencias de programas, macros, formatos, bibliotecas, ficheros externos y conexiones a bases de datos, e identificamos qué se ejecuta realmente, qué está muerto y quién es responsable de cada cosa. Se revisa cada categoría anterior y los hallazgos se puntúan según el esfuerzo de migración.
Un informe de inventario y riesgos con una propuesta a precio cerrado para las fases restantes. Si decide no continuar, el informe es suyo.
Esta es la fase que hace fiable todo lo demás, y se realiza íntegramente sobre su sistema SAS existente, antes de migrar nada.
Para cada programa dentro del alcance, usamos análisis asistido por IA para construir tests de caracterización: especificaciones ejecutables de lo que el código hace hoy. Cada test captura las entradas que consume un programa —conjuntos de datos, parámetros de macro, ficheros externos, extracciones de bases de datos, ajustes de entorno—, lo ejecuta en su instalación SAS actual y registra todo lo que produce: conjuntos de datos de salida, contenido del log, códigos de retorno, salida ODS, estado de las variables macro y efectos colaterales como ficheros escritos o correos enviados.
La IA es lo que hace esto viable a escala corporativa. Leer diez mil programas e inferir los casos límite que cada uno maneja no es trabajo para personas con una fecha de entrega. Generar los casos de prueba, los datos de apoyo y la lógica de comparación es exactamente el tipo de trabajo voluminoso y repetitivo en el que destacan los modelos actuales, y cada test generado se valida ejecutándolo contra el sistema que describe. Si un test no pasa en su SAS actual, no es un test de su sistema y se descarta.
Las reglas de comparación se fijan salida por salida. Los conjuntos de datos se comparan de forma exacta por defecto; las tolerancias numéricas se declaran explícitamente allí donde la coma flotante o los procedimientos iterativos hacen que la igualdad bit a bit carezca de sentido; las comparaciones de logs son estructurales y no textuales, de modo que una NOTE reformulada no hace fallar un trabajo mientras que un recuento de filas distinto sí. Las entradas no deterministas, como la fecha actual y las semillas aleatorias, se controlan para que el mismo test dé la misma respuesta cualquier día. Cuando no pueden usarse datos de producción para las pruebas, construimos datos de apoyo enmascarados o sintéticos que recorren las mismas rutas de código.
Una suite de tests bajo control de versiones con cobertura medida sobre programas, macros y procedimientos, y una línea base de resultados registrados de su sistema actual. Esta suite es suya. Está escrita para ejecutarse en Jenner, en SAS y en cualquier otro entorno que hable el lenguaje, y tiene valor con independencia de la migración: la mayoría de los parques SAS nunca ha tenido una.
Con la línea base establecida, la migración se convierte en un ejercicio de ingeniería con una definición clara de «terminado». Desplegamos Jenner en su entorno, resolvemos los puntos de entorno detectados en el Descubrimiento (rutas, bibliotecas, gestión de secretos, conexiones a bases de datos, integración con el planificador) y ejecutamos la suite completa.
Cada fallo se clasifica en una de cuatro categorías:
El código es correcto y quien se equivoca es Jenner. Jenner publica versiones nuevas cada semana; los defectos hallados en migraciones de clientes se priorizan, y el test que falla pasa a formar parte permanente de la propia suite de regresión de Jenner.
Una ruta, una credencial, una conexión o una opción que hay que configurar. Se corrige y se vuelve a ejecutar.
El código se apoya en un comportamiento de SAS no documentado. Le mostramos la línea concreta y el comportamiento concreto, y usted elige entre cambiar el código —con el test demostrando que el cambio es seguro— o que Jenner reproduzca la rareza.
El resultado difiere dentro de una tolerancia declarada, o un mensaje de log está redactado de otra forma. Documentado y aprobado, nunca aceptado en silencio.
La suite se ejecuta de forma continua a medida que se corrigen los problemas, así que el avance es una cifra y no una opinión, y las regresiones se detectan el mismo día en que se introducen.
Una base de código migrada con la suite completa en verde, o con cada diferencia restante resuelta por escrito.
La certificación es el expediente de pruebas que permite a su patrocinador, a sus auditores y a sus reguladores aceptar la migración.
Ejecutamos un periodo en paralelo en el que los trabajos de producción corren en ambos sistemas y las salidas se comparan automáticamente con las mismas reglas que la suite de tests. El expediente de certificación incluye el inventario, la suite de tests y su cobertura, la línea base, los resultados de la ejecución final, la resolución de cada diferencia y la trazabilidad de cada requisito o programa hasta los tests que lo cubren. Para clientes regulados, se estructura de forma que sostenga una validación IQ/OQ/PQ y una auditoría.
Un expediente de certificación firmado y una recomendación de continuar o no.
La conmutación se planifica en torno a sus ventanas de proceso por lotes y a la fecha de renovación de su licencia SAS, con una vía de retorno probada. Se reapuntan los planificadores, se confirman la monitorización y las alertas, y el entorno SAS se retira según su calendario.
La suite de tests sigue ejecutándose después de la conmutación. Como Jenner publica cada semana, recibe cada mejora con la misma prueba de que nada de lo que usted depende ha cambiado. Su equipo recibe formación para ampliar la suite a medida que crece la base de código.
Producción sobre Jenner, un plan de retirada de SAS y una suite de regresión que sigue trabajando para usted.
A precio cerrado y de corta duración. Produce la propuesta para las fases restantes, valorada según el tamaño y la complejidad medidos de su parque y no según una estimación de ellos.
Se entregan normalmente como un único proyecto de alcance cerrado, con aceptación por hitos ligada a los resultados de la suite.
Disponible como servicio anual, una vez entregada la suite de tests y formado su equipo para ampliarla.
$1,000 – $21,000
Por lo general se realizan en remoto, con una duración que va de una semana a un mes.
$52,000 – $405,000
Requieren algo de trabajo presencial y/o experiencia avanzada en el dominio, y suelen durar de dos a seis meses.
Todos los importes están expresados en dólares estadounidenses (USD).
No incluye las cuotas de licencia del software; ahora bien, estas son muy sencillas y competitivas. Ver la página de precios.
Contactar con servicios profesionalesEnvíenos una descripción de su entorno SAS —plataforma, número aproximado de programas, productos en uso, bases de datos y planificadores— y dimensionaremos un proyecto de Descubrimiento.