Resumen

  • Los checksums de Artifactory, el Build-Info y los Release Bundles v2 inmutables pueden crear una identidad sólida para un candidato de lanzamiento. No prueban que cada dependencia, condición de compilación, prueba o aprobación haya sido capturada correctamente. La calidad del registro comienza en los sistemas de CI del cliente y termina en sus sistemas de despliegue.
  • Xray y Curation pueden reducir las revisiones repetidas de paquetes y la investigación de lanzamientos, pero sus decisiones dependen del alcance de indexación, la actualidad de los datos de vulnerabilidad, los metadatos de paquetes, el diseño de políticas y el manejo de excepciones. Las propias notas de versión de JFROG muestran por qué los clientes deben medir los resultados vacíos, los componentes no detectados, los bloqueos falsos y las decisiones obsoletas en lugar de tratar un panel limpio como prueba.
  • El caso comercial es más sólido cuando muchos equipos resuelven, escanean, promueven y distribuyen artefactos repetidamente entre sitios. Se debilita cuando la administración del repositorio, el almacenamiento y la transferencia, la migración, la revisión de políticas, la ingeniería de disponibilidad y el bloqueo cuestan más que las reconstrucciones e investigaciones que se evitan. Un denominador confiable es el costo por lanzamiento de producción correctamente identificado y recuperable, no los paquetes almacenados ni los escaneos ejecutados.

La unidad útil es un candidato de lanzamiento, no un recuento de paquetes

Un repositorio de software parece simple desde lejos. Una compilación produce un archivo; el archivo se carga; una implementación lo recupera. El trabajo difícil comienza cuando una organización se pregunta si el archivo en producción es exactamente el archivo que pasó sus pruebas, qué dependencias lo produjeron, qué información de seguridad estaba vigente cuando se aprobó, quién permitió una excepción y si la misma evidencia aún se puede inspeccionar después de un incidente.

Esas preguntas crean la verdadera oportunidad para JFROG. Artifactory es el centro de almacenamiento y gestión de paquetes. JFrog CLI y las integraciones de CI recopilan Build-Info. Xray analiza repositorios, compilaciones y bundles de lanzamiento seleccionados en busca de vulnerabilidades conocidas, licencias y violaciones de políticas. Curation puede gobernar un paquete de terceros antes o mientras ingresa a un repositorio remoto. Release Lifecycle Management agrupa archivos liberables en un Release Bundle v2; Evidence puede adjuntar afirmaciones firmadas; Distribution puede entregar un bundle a nodos Edge remotos. Cada producto cubre una parte diferente del recorrido. Ninguno debe tomarse como atajo para todo el recorrido.

La tarea central de automatización es ordinaria y repetitiva: resolver dependencias aprobadas, retener las salidas de compilación, recopilar suficientes metadatos para explicarlas, evaluar políticas, promover el candidato aceptado y entregar el mismo contenido a sus destinos previstos. Antes de que una plataforma haga ese trabajo, los desarrolladores e ingenieros de lanzamiento a menudo combinan registros públicos, cachés de CI, almacenes de archivos compartidos, registros de contenedores, scripts, escáneres de seguridad, aprobaciones de tickets y repositorios específicos de la nube. La investigación se convierte entonces en un ejercicio arqueológico. Un equipo puede saber que la versión 4.7.2 se implementó sin saber cuál de varias reconstrucciones la produjo o si una etiqueta de imagen todavía apunta al resumen que pasó la revisión.

JFROG puede eliminar gran parte de esa navegación y reconstrucción. Un checksum proporciona una identidad de contenido. Build-Info asocia las salidas con las entradas informadas y el contexto. Un bundle de lanzamiento congela un conjunto de archivos y metadatos. Una decisión de política puede bloquear el movimiento, mientras que la evidencia firmada puede registrar por qué ocurrió el movimiento. El valor, por lo tanto, no es la cantidad de formatos que Artifactory reconoce o la cantidad de paquetes que almacena. Es la reducción de lanzamientos ambiguos, descargas repetidas, recopilación manual de evidencia y búsquedas de emergencia.

Ese valor tiene un denominador exigente. Un millón de paquetes almacenados en caché no importan si la imagen incorrecta llega a producción. Diez mil escaneos no importan si la compilación de producción estaba fuera del alcance indexado. Una promoción exitosa no importa si un sistema de implementación sustituye una etiqueta mutable. El resultado útil es un lanzamiento de producción cuyos bytes, contexto de compilación, estado de políticas, aprobaciones y destinos se pueden reconstruir lo suficientemente rápido para soportar operaciones y auditoría.

JFROG INC no es todo el grupo JFROG

El límite de la empresa necesita cuidado porque la entidad encargada es JFROG INC, mientras que la empresa pública cotizada y propietaria de la marca JFROG es JFrog Ltd. ElFormulario 10-K de 2025 de JFrog Ltd.dice que se constituyó en Israel el 28 de abril de 2008, mantiene su domicilio social en Netanya y su principal lugar de negocios en EE. UU. en Sunnyvale, y utiliza JFrog, Inc. como su agente estadounidense para la notificación de procesos. La presentación presenta los productos, los ingresos y los recuentos de clientes de forma consolidada. No deben atribuirse únicamente a la entidad estadounidense.

JFROG identifica a Shlomi Ben Haim, Yoav Landman y Fred Simon como cofundadores. Supágina de gestiónnombra a Ben Haim como director ejecutivo y a Landman como director de tecnología, y describe a Landman como la persona detrás de Artifactory. El grupo corporativo es el operador de producto relevante; JFROG INC es el vínculo empresarial existente para esta cobertura. Artifactory, Xray, Curation, Distribution, Release Lifecycle Management y Evidence son productos de JFROG. No son el sistema de control de código fuente del cliente, el ejecutor de CI, el controlador de implementación, el registro público de paquetes ni el escáner de terceros.

Esa separación legal y de producto afecta la responsabilidad. JFROG puede almacenar una revisión de Git informada por una integración de CI, pero GitHub, GitLab u otro sistema de origen controla la confirmación subyacente y el historial de acceso. Artifactory puede actuar como proxy de npm, Maven Central, PyPI, Docker Hub y otros registros, pero no controla su disponibilidad inicial ni las prácticas de los editores. Xray proporciona el análisis de JFROG, mientras que los equipos de clientes también pueden usar otros escáneres cuyas identidades de componentes y veredictos difieran. Distribution puede colocar archivos en un nodo Edge, pero un controlador de Kubernetes, un actualizador de dispositivos o un script de lanzamiento puede realizar el cambio final en producción.

El registro financiero confirma que se trata de una plataforma de negocios sustancial en lugar de una utilidad de repositorio única. JFROG reportó ingresos en 2025 de 531,8 millones de dólares, un 24% más que los 428,5 millones de 2024. Las suscripciones SaaS contribuyeron con el 46% de los ingresos de 2025, y Enterprise Plus representó aproximadamente el 56%. Reportó 1.168 clientes de pago con ingresos recurrentes anuales de al menos 100.000 dólares y 74 con al menos 1 millón. Estas cifras muestran adopción y expansión empresarial. No revelan cuántos lanzamientos fueron reproducibles, cuántos bloqueos de políticas fueron correctos o cuánta revisión humana requirió cada cliente.

Los checksums preservan los bytes, pero la identidad de bytes es solo la primera afirmación

La identidad de contenido de Artifactory comienza con el almacenamiento basado en checksums. Ladocumentación de almacenamientode JFROG dice que Artifactory almacena un binario una vez y crea asignaciones de base de datos desde su checksum a ubicaciones de repositorio. Por lo tanto, las operaciones de copia, movimiento y eliminación se pueden representar en gran medida como cambios en las referencias de la base de datos en lugar de movimientos repetidos del archivo subyacente. Artifactory también calcula y almacenachecksums SHA-256en el momento del despliegue para consultas y verificación de integridad.

Esto es útil tanto para la economía como para la corrección. El contenido idéntico en varias rutas lógicas no necesita consumir varias copias completas en el almacén de archivos. Un despliegue basado en checksum puede evitar cargar contenido que ya está presente. Más importante aún, dos archivos con el mismo resumen fuerte se pueden tratar como los mismos bytes incluso si sus nombres o rutas de repositorio difieren. Un ingeniero de lanzamiento que investiga una imagen puede comparar el resumen en la compilación, la promoción y el destino en lugar de confiar en una etiqueta mutable.

Un resumen no responde de dónde provienen esos bytes. No dice que la revisión de origen fue revisada, el compilador era confiable, el gráfico de dependencias estaba completo o el resultado de la prueba pertenece a este sujeto. Si una compilación comprometida crea un binario malicioso, Artifactory puede preservar ese binario malicioso perfectamente. Si un operador carga el archivo incorrecto bajo la ruta de lanzamiento prevista, el checksum identifica con precisión el archivo incorrecto. La integridad no es procedencia, y la procedencia no es calidad.

La distinción se refleja en laespecificación de procedencia SLSA, que define la procedencia como información verificable sobre dónde, cuándo y cómo se produjo un artefacto. Un resumen de repositorio es un identificador de sujeto indispensable para dicha información, pero las afirmaciones en torno a ese sujeto aún necesitan un productor confiable, un proceso de compilación seguro y un verificador que compruebe la firma y la política.

Aquí es donde los clientes necesitan un invariante de identidad que abarque sistemas: el resumen informado por la salida de compilación debe coincidir con el artefacto almacenado en Artifactory; el sujeto en cada prueba o atestación de seguridad debe coincidir con ese resumen o un bundle inequívoco que lo contenga; el lanzamiento promovido debe contener el mismo resumen; y el registro de implementación debe mostrar que el destino lo recuperó. JFROG puede contener y conectar gran parte de esa evidencia. No puede obligar a una herramienta externa a informar el sujeto correcto o a un controlador de implementación a verificarlo.

Build-Info es poderoso precisamente porque no es una verdad automática

Ladocumentación de Build-Infode JFROG describe un registro JSON que contiene dependencias resueltas, artefactos producidos, variables de entorno e información de Git. JFrog CLI acumula información cuando los comandos usan el mismo nombre y número de compilación, luego publica el registro combinado en Artifactory. Los clientes pueden agregar dependencias de archivos, recopilar variables de entorno y contexto de Git, y previsualizar el registro antes de la publicación.

Esto puede convertir una investigación de lanzamiento de horas de búsqueda en una consulta. Un respondedor puede retroceder desde un artefacto hasta una compilación, inspeccionar las dependencias informadas y el contexto de origen, comparar versiones de compilación y preguntar qué lanzamientos contienen un componente recientemente vulnerable. Xray puede escanear la compilación como una unidad en lugar de escanear una salida aislada sin su contexto de dependencia. La promoción de compilación puede conservar metadatos que la copia de archivos ad hoc a menudo pierde.

La palabra limitante es "informado". Build-Info sabe lo que la integración observó y lo que el cliente eligió recopilar. Una dependencia descargada fuera del comando de compilación envuelto puede estar ausente. Un compilador o imagen base obtenida por un paso separado puede no estar representada. Una extensión cargada dinámicamente, un archivo generado, un servicio de red o un binario copiado manualmente pueden escapar del registro. La recopilación de Git es opcional. La recopilación de entorno es opcional y se filtra intencionalmente porque puede exponer secretos.

La compensación de seguridad es concreta. La documentación actual de JFrog CLI enumera exclusiones predeterminadas de variables de entorno que coinciden con nombres que contienen password, secret, key, token o auth. Eso reduce la fuga obvia de credenciales, pero los nombres son convenciones en lugar de garantías. Una variable llamadaDEPLOY_VALUEaún podría contener una credencial; una variable llamadaTOKENIZER_MODEpodría ser inofensiva y excluida. Una implementación madura debería recopilar una pequeña lista permitida de valores relevantes para la compilación, almacenar referencias secretas en lugar de valores y probar la vista previa en cada plantilla de compilación compartida.

Los nombres y números de compilación también necesitan gobernanza. Si los equipos reutilizan identificadores de manera inconsistente o publican registros parciales de varios trabajos, el historial resultante puede ser confuso incluso cuando cada documento JSON es válido. La plataforma no puede inferir que dos trabajos llamadosrelease/42pertenecían a diferentes commits de origen, o que un trabajo interrumpido dejó fragmentos locales obsoletos. El nombramiento, la limpieza del estado local, el comportamiento de reintento y el tiempo de publicación se convierten en parte del contrato de lanzamiento.

La prueba práctica no es si Build-Info existe. Es si un equipo puede seleccionar un resumen de producción aleatorio y recuperar, sin historia oral privilegiada, la revisión de origen, la identidad del constructor, las entradas directas y transitivas, la configuración relevante, las pruebas, el estado del escaneo, las excepciones y el destino de implementación. Muestrear esa tarea en lanzamientos ordinarios expone los metadatos faltantes de manera más efectiva que contar los registros de compilación publicados.

Un repositorio remoto es una caché después de la primera solicitud exitosa

Los repositorios remotos de Artifactory proporcionan un segundo tipo de valor: colocan un endpoint controlado entre los desarrolladores y los registros públicos. Un repositorio virtual puede combinar fuentes locales y remotas detrás de una URL de cliente. Las dependencias almacenadas en caché permanecen disponibles cuando un registro ascendente no está disponible temporalmente, y las descargas repetidas se pueden servir localmente. La configuración central también brinda a los equipos de seguridad y plataforma un lugar para definir fuentes permitidas y observar la demanda de paquetes.

Ladocumentación del repositorio remotoes explícita en que un repositorio remoto es un proxy, no un espejo prepoblado. Los artefactos se obtienen y se almacenan en caché bajo demanda. Antes de la primera solicitud exitosa, Artifactory todavía depende del registro ascendente y de la ruta de red hacia él. Una dependencia que nunca se ha almacenado en caché puede, por lo tanto, fallar exactamente en el momento en que una compilación limpia la necesita.

La configuración de la caché crea otras compensaciones ordinarias. Artifactory almacena en caché las respuestas de recursos faltantes durante un período configurable, documentado con un valor predeterminado de 1.800 segundos. Eso protege a un ascendente de fallos repetidos, pero puede continuar devolviendo un fallo después de que haya aparecido un paquete. Los metadatos tienen su propio período de actualización. Cuando el tiempo de espera de actualización de metadatos caduca, el comportamiento documentado puede devolver los metadatos anteriores. La eliminación de cachés de metadatos puede reparar inconsistencias, pero JFROG advierte que puede ralentizar las solicitudes posteriores y puede recurrir a metadatos obsoletos si el registro central no está disponible.

Estos son controles de disponibilidad sensatos, no defectos. Hacen que el modelo de estado sea más complicado que "el repositorio tiene el paquete". Una ruta de paquete puede ser visible en el ascendente pero no estar almacenada en caché; un binario puede estar almacenado en caché mientras que los metadatos de la versión están obsoletos; un fallo puede estar almacenado en caché negativamente; la limpieza puede haber eliminado un binario no utilizado; la transmisión directa del repositorio al cliente puede estar configurada sin almacenamiento local. Por lo tanto, una política de reproducibilidad debe distinguir las dependencias fijadas por resumen y ya retenidas de las dependencias que simplemente se resuelven por nombre y versión en el momento de una compilación.

El flujo de lanzamiento más seguro convierte las entradas resueltas externamente en entradas retenidas e identificadas antes de que se apruebe el candidato a lanzamiento. Una caché caliente mejora las probabilidades de que una reconstrucción posterior resuelva los mismos bytes, pero una reconstrucción sigue siendo un nuevo evento con un nuevo constructor y metadatos posiblemente modificados. Preservar la salida original es más fuerte que asumir que siempre se puede recrear.

Curation puede prevenir el trabajo, pero también crea una cola de excepciones

Curation adelanta una decisión. En lugar de esperar a que Xray escanee un artefacto después de que ingrese a un repositorio, Curation puede evaluar un paquete público solicitado contra la política y bloquearlo. JFROG documenta condiciones para paquetes maliciosos conocidos, vulnerabilidades, licencias, antigüedad del paquete y señales operativas. Las políticas se pueden limitar a repositorios o grupos de acceso, probar en modo de prueba y emparejar con procesos de exención.

Esto puede eliminar la revisión manual repetida. Si cientos de desarrolladores solicitan la misma versión prohibida, una decisión de política puede evitar cientos de descargas. Un equipo de seguridad puede codificar un juicio duradero en lugar de redescubrirlo en cada proyecto. Los eventos de auditoría pueden mostrar solicitudes bloqueadas, aprobadas, en modo de prueba y aprobadas, y ladocumentación de auditoríaactual establece que los datos de auditoría del producto se conservan durante 30 días y se puede acceder a ellos a través de la interfaz, las API y los webhooks.

El denominador no son los paquetes bloqueados. Son los paquetes dañinos correctamente bloqueados más los paquetes aceptables permitidos sin demoras inaceptables. Una regla de antigüedad agresiva puede detener una corrección recién lanzada. Un umbral CVSS puede bloquear una dependencia cuya función vulnerable es inalcanzable. Una regla de licencia puede codificar una política legal que no se ajusta a un contexto de distribución. Un paquete ausente del catálogo puede requerir una decisión bajo demanda. Cada falso bloqueo traslada el trabajo a los desarrolladores y propietarios de políticas; cada falso permiso deja riesgo en el flujo de lanzamiento.

La propiadocumentación de Curation bajo demandade JFROG describe límites importantes. Los repositorios existentes deben indexarse antes de habilitar la función, o los artefactos previamente presentes pueden permanecer pendientes indefinidamente. Una primera inspección puede llevar tiempo, y un tiempo de espera puede bloquear la primera solicitud hasta un reintento. Algunas señales no están disponibles para paquetes bajo demanda. Estas condiciones significan que un control de fallo cerrado puede crear fallos de compilación que son operativamente correctos desde la perspectiva del gate, pero que aún requieren diagnóstico y recuperación.

Las exenciones evitan que la política se convierta en un callejón sin salida. JFROG admite no permitir solicitudes de exención, requerir aprobación manual o aprobar automáticamente casos seleccionados de "bloqueo suave". Un solicitante proporciona una razón; los propietarios designados pueden aprobar o rechazar; las duraciones pueden expirar. Esa es una gobernanza útil, pero crea un servicio cuyo tiempo de cola pertenece a la economía del lanzamiento. Un equipo que bloquea 2.000 solicitudes y aprueba 1.800 después de la revisión no ha automatizado 2.000 decisiones. Ha creado 1.800 interrupciones y una carga de trabajo de revisión.

Por lo tanto, los datos del modo de prueba deben preceder a la aplicación. Para cada regla, un cliente debe medir los paquetes únicos afectados, los equipos solicitantes, las alternativas propuestas, la tasa de aprobación, el tiempo medio y máximo de exención, las reconstrucciones causadas por bloqueos, las solicitudes repetidas después de una explicación y los paquetes maliciosos o vulnerables confirmados que se evitaron. El resultado puede justificar un bloqueo amplio de paquetes maliciosos y una regla más estrecha basada en aprobación para la madurez operativa o la ambigüedad de licencia.

Xray convierte el inventario en decisiones, no en certeza

La relación técnica útil de Xray con Artifactory es que puede analizar artefactos en el contexto de repositorios, compilaciones y bundles de lanzamiento en lugar de recibir solo una lista de componentes separada. Puede actualizar los hallazgos cuando cambia la inteligencia de vulnerabilidad, aplicar Watches y políticas, generar violaciones y bloquear acciones seleccionadas de compilación, promoción o distribución. También puede crear evidencia SBOM y de vulnerabilidad para Release Bundle v2.

La cobertura se configura. Laguía de indexaciónde JFROG dice que Xray no indexa automáticamente todos los recursos; se deben seleccionar repositorios, compilaciones y bundles de lanzamiento. Los Watches conectan la política con el alcance. El contenido existente puede requerir una aplicación explícita de un Watch, y algunos alcances de todos los recursos no pueden usar la misma operación manual. La configuración de retención puede eliminar datos de escaneo, con valores predeterminados documentados que difieren para repositorios y compilaciones indexados. Por lo tanto, un panel de seguridad puede estar limpio porque nada viola la política, porque el contenido relevante no fue indexado, porque el contenido existente no ha sido evaluado o porque los resultados retenidos han expirado.

La actualidad de la inteligencia es otra capa. JFROG documenta la sincronización horaria con su base de datos de seguridad global para implementaciones de Xray en línea y un proceso manual de transferencia de paquetes para entornos aislados. Una instalación sin conexión a Internet puede estar actualizada solo hasta su última importación exitosa. Incluso una base de datos en línea no puede contener una vulnerabilidad antes de que se descubra, normalize y publique. "No se conoce ninguna violación" es un resultado de base de datos con límite de tiempo, no una declaración de que un componente es seguro.

La identificación de componentes y la aplicabilidad añaden incertidumbre. Los nombres de paquetes, las versiones, los backports del sistema operativo, las capas de contenedores y los metadatos del lenguaje pueden ser ambiguos. Un escaneo amplio de composición de software puede asociar correctamente un componente con un CVE mientras exagera si el código vulnerable es accesible. El análisis contextual intenta reducir ese resultado, pero su propia extracción y coincidencia pueden fallar. Por lo tanto, las reglas de ignorar son necesarias para falsos positivos, riesgos mitigados y excepciones aceptadas. También crean una segunda superficie de política que debe tener un alcance, caducidad y revisión.

La investigación independiente respalda la precaución sobre la entrada en lugar de una conclusión sobre la precisión no revelada de JFROG. Unestudio diferencial a gran escala de cuatro generadores SBOMencontró resultados inconsistentes y omisiones de dependencias. Unestudio de 2024 sobre la evaluación de vulnerabilidades basada en SBOM de Pythoninformó que las elecciones del generador cambiaron materialmente la precisión, el recall y los falsos positivos. Ninguno de los estudios es un punto de referencia de Xray. Ambos muestran por qué la salida de un escáner está limitada por el inventario y los identificadores que recibe.

Lasnotas de versión de Xrayde JFROG proporcionan evidencia específica del producto de que estos límites se convierten en defectos reales. Las correcciones recientes describen listas de violaciones vacías causadas por una condición de carrera en las actualizaciones de estado de escaneo, aplicabilidad transitiva omitida, capas de Docker omitidas representadas como enlaces simbólicos, compilaciones o bundles con barras en sus nombres que no producen violaciones de políticas, informes parciales o vacíos, CVD falsos aplicables y hallazgos de secretos falsos, y repositorios o compilaciones atascadas en estados pendientes. Las notas de versión prueban que los problemas identificados se solucionaron en las versiones indicadas. No revelan la incidencia entre los clientes ni establecen la ausencia de fallos similares en otros lugares.

Esto hace que la explicabilidad sea operativa en lugar de decorativa. Un bloqueo de promoción debe identificar el componente exacto, la fuente de evidencia, la política, el alcance, la gravedad y la corrección disponible. Un lanzamiento permitido debe mostrar que el escaneo se completó, no simplemente que no apareció ningún objeto de violación. Un veredicto cambiado debe preservar su estado y razón anteriores. Los equipos de seguridad deben muestrear tanto positivos como negativos, comparar artefactos seleccionados de alto riesgo con otro método y rastrear los fallos del escáner como excepciones de lanzamiento de primera clase.

Un bundle inmutable congela al candidato, incluidas sus omisiones

Release Bundle v2 es la expresión más clara del valor de JFROG. Ladocumentación técnicadice que una versión de bundle es inmutable: después de la creación, los archivos no se pueden agregar, cambiar ni eliminar, y los cambios posteriores en las propiedades del artefacto de origen no se reflejan. El bundle se almacena en un repositorio de solo lectura, su especificación se firma en un sobre DSSE y contiene una instantánea de los artefactos incluidos. La eliminación de un artefacto de origen no elimina esa instantánea.

Esto es materialmente mejor que promover mediante la reconstrucción. Un lanzamiento se puede definir una vez y mover a través de etapas sin pedirle a un sistema de CI que lo recree. Un bundle puede incluir varios paquetes y archivos, preservando un lanzamiento de múltiples componentes como un solo candidato. Las definiciones de imágenes de Docker se pueden resolver para incluir sus capas. La línea de tiempo del lanzamiento puede registrar la creación, promoción y distribución.

La inmutabilidad también congela los errores. Si la definición del bundle omite un archivo externo que el despliegue obtiene más tarde, el lanzamiento no es autónomo. Si incluye la compilación incorrecta, esa compilación incorrecta permanece fielmente preservada. Si una atestación de prueba nombra otro resumen, adjuntarlo cerca del bundle no lo hace aplicable. Si se inyecta una configuración mutable en el despliegue, el bundle no identifica el estado de tiempo de ejecución resultante.

El propio historial de lanzamientos de JFROG ilustra la evolución de la completitud. Una nota de versión de Artifactory autogestionado de 2025 dice que Release Bundle v2 anteriormente no incluía información sobre dependencias remotas para la generación de SBOM; las versiones posteriores agregaron esa información, aunque señalaron que las dependencias en sí mismas aún no se incluían en el bundle. La compatibilidad de versiones también importa: JFROG documenta las versiones mínimas de Artifactory y Xray para el escaneo de Release Bundle v2, y algunas capacidades de evidencia y distribución requieren ediciones particulares o motores de distribución más nuevos.

La promoción es una transición de estado, no un oráculo de calidad. JFROG puede copiar o mover los artefactos de un bundle a repositorios asociados con una etapa objetivo y adjuntar evidencia de promoción firmada que registre cuándo, dónde y quién. Xray puede bloquear una promoción o distribución solo cuando las versiones relevantes están disponibles, Xray está habilitado y disponible, el bundle está indexado y un Watch lo conecta a una política de bloqueo. La documentación también describe una configuración opcional que permite la promoción o distribución sin escaneo cuando Xray no está disponible. Esa elección puede ser necesaria para la continuidad, pero debe ser visible en el registro de lanzamiento.

El control más fuerte del cliente es hacer que el resumen del bundle, el estado de política completado y las atestaciones requeridas sean requisitos previos para el despliegue, luego verificar el resumen recuperado en el destino. Sin esa última verificación, la plataforma puede probar lo que envió mientras el sistema de producción ejecuta otra cosa.

La evidencia firmada prueba la integridad y el firmante, no que la afirmación sea correcta

JFrog Evidence utiliza el modelo de atestación in-toto y sobres DSSE. Ladocumentación de inicio rápidorequiere un predicado JSON con un sujeto y un par de claves para la firma y la verificación opcional. La evidencia se puede asociar con artefactos, paquetes, compilaciones, bundles de lanzamiento o versiones de aplicación. Artifactory y Xray también pueden generar evidencia interna, como registros de promoción, SBOM e informes de vulnerabilidad.

La firma criptográfica responde preguntas valiosas. ¿Ha cambiado esta evidencia desde que se firmó? ¿Confía el verificador en la clave que la firmó? ¿Coincide el resumen del sujeto con el artefacto bajo revisión? No responde si un conjunto de pruebas fue exhaustivo, si un humano aprobó la excepción correcta, si la base de datos de un escáner estaba completa o si el firmante tenía derecho a hacer la afirmación.

Por lo tanto, la gobernanza de claves pertenece al diseño del lanzamiento. Las claves deben representar servicios o roles con autoridad clara, residir fuera de los espacios de trabajo de compilación ordinarios, rotar bajo un proceso documentado y tener una respuesta de revocación. La verificación debe fallar claramente cuando la clave es desconocida o el sujeto difiere. Una sola clave de firma ampliamente compartida puede facilitar la producción de evidencia al tiempo que debilita la autoría. Un predicado falso perfectamente firmado sigue siendo falso.

La evidencia también necesita un modelo de actualidad. Un resultado de prueba puede ser válido para un resumen indefinidamente como un hecho histórico, pero su relevancia puede cambiar cuando un servicio externo requerido cambia o se divulga una nueva vulnerabilidad. Un resultado de Xray es una instantánea de la inteligencia y la configuración en un momento dado. Una aprobación de licencia puede depender de un modelo de distribución que luego cambie. Los clientes deben separar la evidencia histórica inmutable de la elegibilidad actual y registrar la versión de la política que interpretó la evidencia.

Esta distinción es la razón por la cual la plataforma no debe juzgarse por cuántos objetos de evidencia aparecen en un gráfico. Debe juzgarse por si las afirmaciones requeridas están presentes para los sujetos correctos, firmadas por productores autorizados, lo suficientemente actuales para la decisión y comprensibles cuando se impugne una decisión.

Distribution reduce la copia repetida mientras extiende la superficie de fallo

JFrog Distribution está diseñado para mover bundles de lanzamiento a nodos Artifactory Edge. La API actual admite reglas de distribución, asignaciones de rutas, creación opcional de repositorios y un modo de prueba. Para la entrega de software geográficamente dispersa, esto puede reemplazar una colección de scripts y reducir las transferencias repetidas desde un sitio central. Un nodo Edge puede colocar contenido aprobado más cerca de una fábrica, sucursal, red de clientes o flota de dispositivos.

Distribution no hace que un sitio remoto sea instantáneo o independiente por sí mismo. Un bundle se puede poner en cola, transferir, finalizar y luego eliminar en un destino. La interrupción de la red, el fallo de credenciales, los problemas de clave de firma, las colisiones de rutas, la presión de almacenamiento o un nodo Edge no disponible pueden dejar los destinos en diferentes versiones. Una línea de tiempo central mejora la visibilidad, pero las operaciones aún necesitan una regla para la distribución parcial: detener todo el despliegue, reintentar en un sitio, continuar con un subconjunto o restaurar un bundle anterior.

La replicación tiene configuraciones igualmente consecuentes. Laguía de replicación de repositoriosde JFROG advierte que la sincronización de eliminaciones puede eliminar artefactos de destino que ya no existen en el origen, incluida la purga de un destino cuando el origen está vacío. La sincronización de propiedades y estadísticas de descarga son opciones separadas. JFROG recomienda que coincidan las versiones de Artifactory entre pares de replicación. Estas configuraciones son trabajo de administración, no plomería incidental.

Los repositorios federados añaden replicación bidireccional entre sitios y un mecanismo de auto-reparación. Eso puede mejorar la disponibilidad local y la coherencia para equipos globales. También hace que el manejo de conflictos, las particiones de red, el retraso y la capacidad sean parte de la responsabilidad del equipo de plataforma. "Replicado" necesita un objetivo de punto de recuperación medido y un estado de destino verificado, no una suposición basada en la topología.

Para cada lanzamiento, el denominador útil son los destinos confirmados con el resumen previsto dentro de la ventana requerida. El rendimiento de transferencia promedio puede ocultar un sitio crítico que nunca convergió. Una prueba de distribución debe interrumpir la transferencia, agotar el almacenamiento de destino, revocar una credencial, retrasar una región y repetir una solicitud idempotente. El cliente necesita ver si el estado es preciso, si los reintentos duplican el trabajo y si la recuperación preserva la misma identidad de lanzamiento.

La centralización elimina la arqueología y crea una dependencia del plano de control

Una plataforma de repositorio se vuelve valiosa a medida que más desarrolladores y lanzamientos dependen de ella. La misma concentración eleva el costo del fallo. Si cada compilación limpia se resuelve a través de Artifactory, una interrupción de Artifactory puede detener cada compilación limpia. Si cada lanzamiento espera en Xray, un retraso en el escáner puede detener la promoción. Si Curation falla cerrado, un problema de inteligencia o política puede detener la recuperación de dependencias. Si falla abierto, la continuidad mejora mientras la gobernanza se debilita.

JFROG ofrece implementación SaaS y autogestionada, y el riesgo se mueve en lugar de desaparecer. En SaaS, JFROG opera el servicio pero depende sustancialmente de la infraestructura de nube pública. Su presentación de 2025 dice que los proveedores de nube pública seleccionados por el cliente alojan sustancialmente toda la infraestructura relacionada con los productos en la nube y reconoce la exposición a sus interrupciones. En implementaciones autogestionadas, el cliente controla la infraestructura, el tiempo de versión, la base de datos, el almacén de archivos, la copia de seguridad y la recuperación ante desastres. La alta disponibilidad puede eliminar un fallo de un solo nodo de aplicación, dejando modos de fallo compartidos de base de datos, almacenamiento de objetos, red, identidad o configuración.

Elhistorial de estado públicode JFROG proporciona evidencia concreta pero limitada. El 21 de mayo de 2026, la compañía registró un incidente crítico que afectó a un número limitado de clientes de AWS US East y enumeró Artifactory, Xray, Curation, Distribution y otros servicios entre los componentes afectados; el registro duró unos 31 minutos. El 10 de junio, un problema de almacenamiento de objetos de GCP afectó las cargas y descargas de Artifactory en regiones de EE. UU. durante unos 48 minutos. En octubre de 2025, un incidente de AWS afectó a Artifactory en varias regiones durante poco más de tres horas. Estos registros de proveedores no proporcionan recuentos de transacciones afectadas, fallos de lanzamiento de clientes o tiempo de actividad contractual, y no deben convertirse en una tasa de disponibilidad.

Muestran por qué la disponibilidad del repositorio pertenece a la economía del lanzamiento. Una caché ahorra trabajo cuando es accesible. Un bundle inmutable es útil cuando se puede recuperar. Un gate de política es útil cuando devuelve una decisión oportuna y explicable. Los equipos necesitan verificaciones sintéticas de lectura y escritura, monitoreo de la antigüedad de la cola, salud de la base de datos y el almacén de archivos, ejercicios de restauración, procedimientos sin conexión probados y una elección declarada entre detener y omitir cada control.

La omisión es especialmente sensible. Permitir que las compilaciones lleguen directamente a los registros públicos durante una interrupción puede restaurar la velocidad al tiempo que crea dependencias no registradas. Permitir que un lanzamiento continúe sin un escaneo completado puede cumplir con una ventana de emergencia al tiempo que rompe la cadena de evidencia normal. El sistema debe hacer explícitos los caminos excepcionales y conciliarlos más tarde; de lo contrario, la plataforma es autorizada solo cuando es conveniente.

El ahorro de mano de obra es real cuando los metadatos y las excepciones se mantienen disciplinados

La plataforma puede reducir varios tipos de trabajo ordinario. Los desarrolladores dejan de configurar muchos registros públicos individualmente. Los sistemas de compilación evitan descargar repetidamente dependencias almacenadas en caché. Los ingenieros de lanzamiento dejan de copiar archivos entre carpetas de madurez a mano. Los equipos de seguridad pueden evaluar un componente indexado en muchas compilaciones. Los auditores pueden recuperar registros firmados sin ensamblar capturas de pantalla y tickets. Los respondedores de incidentes pueden buscar compilaciones y destinos afectados.

Aparece nuevo trabajo en torno a esos ahorros. Los ingenieros de plataforma diseñan repositorios, endpoints virtuales, retención, limpieza, replicación y disponibilidad. Los propietarios de CI mantienen las integraciones actualizadas y verifican Build-Info. Los ingenieros de seguridad ajustan las políticas de Xray y Curation, revisan las reglas de ignorar y las exenciones, monitorean la sincronización de la base de datos e investigan los fallos de escaneo. Los equipos de identidad administran cuentas de servicio, grupos de acceso y tokens. Los ingenieros de lanzamiento definen la composición del bundle y las etapas de promoción. Los equipos de cumplimiento definen qué evidencia es suficiente. Los equipos de operaciones ejercitan la restauración y la recuperación de la distribución.

El equilibrio depende de la escala y la regularidad. Un equipo pequeño que lanza una aplicación desde un ecosistema puede estar mejor atendido por un registro en la nube integrado con su plataforma de origen y CI existente. Una gran empresa con docenas de formatos de paquetes, retención regulada y muchos destinos puede amortizar un equipo de plataforma central en miles de lanzamientos. El producto crea apalancamiento cuando una regla o integración se reutiliza; crea sobrecarga cuando cada proyecto necesita una excepción especial.

Las historias públicas de clientes ilustran la escala posible pero no un resultado universal. Unacuenta bancaria global alojada por JFROGdescribe una separación de compilación, verificación y lanzamiento, más de 100 terabytes de datos retenidos y un movimiento de 80 terabytes de material más antiguo a almacenamiento en frío para restaurar el rendimiento activo de Xray. La cuenta es valiosa porque revela la consecuencia de mantenimiento del éxito: años de retención y crecimiento de contenedores hicieron que el gráfico activo fuera lo suficientemente pesado como para requerir archivado. No publica tiempos de investigación controlados antes y después ni registros de costos independientes.

Otrahistoria anónima de un cliente de tecnología financieraatribuye grandes mejoras en el tiempo de implementación y la confiabilidad a Artifactory, Xray y Distribution. Debido a que el cliente no tiene nombre y la metodología, el período de observación y el denominador no están disponibles, esos números deben tratarse como testimonios seleccionados por el proveedor. Muestran un patrón de producción plausible, no un punto de referencia transferible.

El relato de JFROG sobre su propiamigración a la nube de 700 terabyteses más útil como lección de implementación que como prueba de rendimiento. La compañía dice que redujo a la mitad los datos S3 almacenados antes o durante la migración y enfatiza decidir qué no mover. Esa es una advertencia contra confundir los binarios acumulados con valor duradero. La retención, la retención legal, la reproducibilidad y la demanda activa necesitan políticas separadas.

El costo por lanzamiento recuperable es la prueba comercial

Losprecios públicos de SaaSde JFROG hacen que solo el nivel de entrada sea completamente visible. La página enumera Pro desde $150 por mes y Enterprise X desde $950 por mes, con precios promocionales visibles en el momento de la investigación, mientras que Enterprise Plus es personalizado. El almacenamiento y la transferencia de datos cuentan para el consumo mensual, y las tarifas de excedente disminuyen por volumen. Los paquetes de seguridad se empaquetan en torno a los desarrolladores contribuyentes, mientras que el soporte avanzado y una opción de disponibilidad en la región del 99,99% cuestan más. Los precios empresariales autogestionados y muchos términos de grandes contratos requieren una cotización.

La factura es solo una parte del costo. Un comprador debe incluir la migración, la operación en paralelo, los cambios de CI, el diseño de repositorios y permisos, la transferencia de red, el crecimiento del almacenamiento, la infraestructura de alta disponibilidad, la operación de la base de datos, la copia de seguridad y la restauración, las actualizaciones, la administración de políticas, el manejo de exenciones, la gestión de claves de evidencia, la capacitación, el soporte y la salida eventual. SaaS transfiere parte de la operación de infraestructura a JFROG pero retiene el consumo y el trabajo de integración. La autogestión ofrece control pero hace que la disponibilidad y el trabajo de actualización sean responsabilidad del cliente.

El escaneo puede aumentar el consumo de formas no obvias. Una nota de soporte de JFROG publicada en junio de 2026 dice que las descargas internas de artefactos de Xray cuentan intencionalmente para la cuota de transferencia de datos de SaaS y pueden aumentar materialmente el uso medido. Eso no hace que el cargo sea incorrecto, pero significa que una función de seguridad puede cambiar el denominador de almacenamiento y transferencia. Los compradores deben modelar escaneos repetidos, replicación, distribución multirregional, capas de contenedores, rotación de caché y almacenamiento de registros de auditoría con su propio tráfico.

El lado de los beneficios debe contar las descargas externas evitadas, las reconstrucciones evitadas, las búsquedas de impacto de vulnerabilidad más rápidas, menos promociones manuales, la reducción de la ambigüedad de lanzamiento, la investigación de incidentes más corta, menos paquetes no aprobados y una preparación de auditoría más baja. No debe contar cada acción automatizada como mano de obra ahorrada. Un bloqueo de política seguido de una exención y reconstrucción puede consumir más trabajo que una revisión manual previa. Un escaneo que produce 500 hallazgos no procesables crea clasificación en lugar de ahorros.

Una unidad defendible es el costo total anual de plataforma y operación dividido por los lanzamientos de producción correctamente completados y recuperables, con medidas separadas para investigaciones y solicitudes de dependencia bloqueadas. El numerador incluye el tiempo humano. El denominador excluye los lanzamientos que eludieron la evidencia requerida, utilizaron una reconstrucción no identificada, llegaron solo a algunos destinos o no pudieron reconstruirse durante una auditoría de muestra.

La pregunta comercial se vuelve entonces empírica: ¿disminuyeron los lanzamientos fallidos, las reconstrucciones de emergencia y las horas de investigación lo suficiente como para compensar la administración y el bloqueo? JFROG no publica las distribuciones entre clientes necesarias para responder eso. Cada cliente debe establecer su propia línea de base antes de la migración y retener un grupo de comparación o un lanzamiento por fases cuando sea posible.

Las alternativas son más baratas cuando el problema es más limitado

JFROG compite con varios sustitutos diferentes porque los clientes pueden desagregar el problema. GitHub Packages, el registro de paquetes de GitLab, AWS CodeArtifact y Elastic Container Registry, Google Artifact Registry, Azure Artifacts y Azure Container Registry pueden ser económicos cuando el desarrollo y el despliegue ya residen en un solo proveedor. Sonatype, Cloudsmith y otros proveedores de repositorios abordan una gestión de paquetes más amplia. Snyk, Black Duck, Checkmarx, Aqua y los escáneres de código abierto abordan partes del análisis de seguridad. Las herramientas Sigstore, in-toto y SLSA pueden admitir la procedencia y la firma sin elegir un solo conjunto de repositorios.

Un diseño interno puede combinar un almacén de objetos, registros específicos de paquetes, una base de datos de metadatos y herramientas de código abierto como Harbor, Nexus Repository Community, Trivy, Grype, Syft, ORAS, Cosign y motores de políticas. El costo de licencia puede ser menor; el costo de integración y soporte puede no serlo. El equipo se vuelve responsable de la identidad entre herramientas, la entrega de eventos, los cambios de esquema, las actualizaciones, la coherencia de políticas y la retención de evidencia.

No hacer nada también es una alternativa. Algunos artefactos son de baja consecuencia, fáciles de reconstruir y raramente investigados. Preservar cada salida intermedia para siempre puede costar más que la incertidumbre que elimina. Una estrategia proporcionada podría retener rigurosamente los lanzamientos de producción y sus entradas, al tiempo que permite que las instantáneas de desarrollo desechables caduquen.

La ventaja de JFROG es la amplitud en torno al binario: muchos formatos de paquetes, almacenamiento en caché remoto, Build-Info, metadatos de repositorio, Xray, bundles de lanzamiento, evidencia y distribución pueden compartir un modelo de sujeto. La desventaja es que adoptar ese modelo profundamente hace que la salida sea más difícil. Las URL de repositorio se extienden a través de las configuraciones de compilación; los permisos y proyectos dan forma a la organización; Build-Info y la evidencia se acumulan; las políticas y exenciones de Xray codifican decisiones; la topología de Edge crece; los requisitos de auditoría y retención hacen que los datos históricos sean costosos de mover.

La propia documentación de migración de JFROG muestra que copiar artefactos es solo la mitad del problema. Un movimiento completo también implica la configuración del repositorio, los datos de acceso, la información de compilación, la configuración de Xray, los tokens, las pruebas de CI y el cutover. Las herramientas de exportación reducen el trabajo de transferencia, pero otra plataforma puede no entender los metadatos específicos de JFROG o el historial de políticas. Una migración puede preservar los bytes mientras se pierden las relaciones que justificaron la centralización.

La planificación de salida debe comenzar antes de la compra. Los clientes deben mantener formatos estándar SBOM y de atestación, exportar evidencia y decisiones de políticas, mantener a los consumidores de implementación capaces de verificar resúmenes y firmas ordinarias, inventariar los endpoints del repositorio y medir cuánto tiempo tarda un proyecto representativo en moverse. El bloqueo es aceptable cuando el trabajo evitado es mayor y la ruta de salida es conocida. Es peligroso cuando los metadatos acumulados se vuelven demasiado importantes para abandonar y demasiado opacos para exportar.

La prueba de producción es una cadena de fallos ordinarios

Una evaluación persuasiva debe usar lanzamientos repetidos y poco notables en lugar de una demostración preparada. Comience con varios ecosistemas y tipos de compilación que reflejen el trabajo real: un servicio Java con dependencias Maven transitivas, un paquete Python, una aplicación npm, un contenedor de múltiples arquitecturas, un gráfico Helm y un binario genérico firmado. Incluya imágenes base compartidas, dependencias privadas y un servicio externo o entrada generada que sea fácil de omitir.

Para cada lanzamiento, registre la revisión de origen, el constructor, todas las entradas esperadas, los resúmenes de salida, Build-Info, la finalización del escaneo, los hallazgos, las excepciones, la evidencia, el contenido del bundle, las promociones, los destinos de distribución y el resumen implementado final. Debe existir un inventario esperado independiente antes de que se examinen los registros de JFROG. De lo contrario, la prueba simplemente verifica si la plataforma está de acuerdo consigo misma.

Repita suficientes tareas ordinarias para revelar tasas en lugar de anécdotas. Las medidas útiles incluyen registros completos de Build-Info divididos por lanzamientos; dependencias correctamente identificadas divididas por dependencias esperadas; decisiones de escaneo devueltas dentro de la ventana de lanzamiento; falsos bloqueos confirmados y hallazgos de prueba conocidos omitidos; minutos de revisión humana; espera de exención; reintentos de promoción; destinos convergidos; distribuciones interrumpidas recuperadas; e investigaciones completadas sin preguntar al constructor original.

La inyección de fallos debe ser modesta y autorizada: omitir una integración de compilación, caducar un token, hacer que un paquete ascendente no esté disponible antes de su primer llenado de caché, servir metadatos obsoletos en un repositorio de prueba, retrasar la sincronización de la base de datos de vulnerabilidades, crear una excepción de política, interrumpir la distribución a un nodo Edge que no sea de producción, agotar un volumen de almacenamiento de prueba y restaurar desde la copia de seguridad. El objetivo no es atacar el servicio. Es ver si los fallos rutinarios son visibles, limitados y recuperables.

La comparación debe incluir el proceso actual, una alternativa nativa de registro más limitada y JFROG con controles progresivamente más estrictos. Mida el tiempo completo del personal y el costo de infraestructura, no solo la duración del lanzamiento. Un camino feliz más rápido con un camino de excepción mucho más lento puede ser un mal resultado si las excepciones son comunes. Por el contrario, un lanzamiento modestamente más lento puede valer la pena si la investigación de incidentes y la reversión se vuelven materialmente más confiables.

Ninguna evidencia pública proporciona estos denominadores para JFROG en su conjunto. La documentación establece que los mecanismos existen. Las notas de versión establecen que ocurren fallos relevantes y cambian entre versiones. Los registros de estado establecen interrupciones de servicio divulgadas. Las historias de clientes establecen implementaciones seleccionadas. Ninguna establece una tasa de éxito de extremo a extremo en lanzamientos ordinarios de clientes.

El juicio depende de si el registro sobrevive al desacuerdo

JFROG tiene un caso técnico creíble para convertirse en el centro de control de binarios y lanzamientos de una gran organización de software. El almacenamiento basado en checksums otorga a los artefactos identidades de contenido estables. Build-Info puede unir las salidas a las entradas informadas. Los repositorios remotos reducen la dependencia ascendente repetida después del llenado de caché. Xray y Curation convierten la inteligencia y las políticas compartidas en decisiones reutilizables. Release Bundle v2 preserva un candidato sin reconstruirlo. La evidencia y la distribución pueden extender esa identidad a través de la aprobación y la entrega.

El caso es más sólido como sistema de registro, no como sistema de omnisciencia. La plataforma no puede registrar una entrada que nunca pasa por un paso instrumentado. No puede conocer una vulnerabilidad antes que sus fuentes. No puede decidir la tolerancia al riesgo de un cliente. No puede hacer que una afirmación firmada sea verdadera. No puede garantizar que un sistema de implementación consuma el resumen entregado. Esos límites no niegan el producto; definen el trabajo necesario para usarlo de manera responsable.

El riesgo operativo es la centralidad. Los fallos de repositorio, escaneo y políticas pueden afectar a muchos equipos a la vez. El riesgo financiero es que el consumo, la retención, los complementos de seguridad, la administración y la migración crezcan con la adopción. El riesgo organizativo es que la mano de obra se mueva del manejo individual de lanzamientos a una función especializada de plataforma y gobernanza cuya cola puede convertirse en un cuello de botella.

El juicio actual es, por lo tanto, condicional. Es probable que JFROG cree un valor neto para las organizaciones con muchos lanzamientos repetidos, ecosistemas de paquetes heterogéneos, investigaciones costosas, necesidades de evidencia regulada y varios sitios de distribución, siempre que financien la integración y la confiabilidad como trabajo de producto. Una herramienta más limitada puede ser mejor para equipos más pequeños o concentrados en un proveedor. La evidencia decisiva no es un recuento de paquetes, un logotipo de cliente o un escaneo limpio. Es una reducción sostenida de lanzamientos ambiguos, reconstrucciones, tiempo de investigación y admisión de paquetes dañinos, medida frente a todos los nuevos costos de revisión, interrupción y cambio.

Varios hallazgos cambiarían ese juicio. Las mediciones publicadas, reproducibles de forma independiente, de la completitud de Build-Info, la precisión y el recall de Xray, los falsos bloqueos de políticas, la latencia de escaneo y la recuperación en ecosistemas representativos aumentarían la confianza. La evidencia del cliente que muestre menos horas totales de personal y costos de fallos durante un período de observación revelado fortalecería el caso comercial. La evidencia de resultados vacíos inexplicables frecuentes, metadatos irrecuperables, paradas prolongadas de lanzamientos o migraciones que no pueden preservar la política y la procedencia lo debilitaría.

La prueba de aceptación más reveladora es simple de enunciar y difícil de pasar: elija un despliegue de producción aleatorio seis meses después, desafíe su decisión de seguridad, retire al ingeniero original de la sala y pida a la plataforma y sus sistemas conectados que demuestren exactamente qué se ejecutó, cómo se construyó, por qué se permitió, a dónde fue y cómo reemplazarlo de manera segura. Ese es el trabajo que JFROG está vendiendo. Todo lo demás es inventario.