¿Qué es un artefacto?


54

Hay bastantes preguntas y respuestas que mencionan " artefacto ".

No me sorprendería si de alguna manera está relacionado con .

Mis preguntas :

  • ¿Qué es realmente un "artefacto" (en el contexto de DevOps)?
  • ¿Por qué se utilizan artefactos?

Unas cuantas respuestas interesantes a lo que considero una pregunta bastante básica. Es bastante divertido que todos me recuerden un concepto similar en los viejos y buenos entornos de mainframe (donde están mis raíces DevOps ... y de donde parecen originarse tantos conceptos DevOps).
Pierre.Vriens

Respuestas:


67

Artifactory es un producto de JFrog que sirve como administrador de repositorios binarios . Dicho esto, muy a menudo se usará un 'artefacto' como sinónimo del repositorio binario más general, al igual que muchas personas usan Frigidaire o refrigerador para denotar el refrigerador, independientemente de si es una marca Frigidaire o no.

El repositorio binario es una extensión natural del repositorio de código fuente, ya que almacenará el resultado de su proceso de compilación, a menudo denotado como artefactos. La mayoría de las veces uno no usaría el repositorio binario directamente sino a través de un administrador de paquetes que viene con la tecnología elegida.

En la mayoría de los casos, estos almacenarán componentes de aplicaciones individuales que luego se pueden ensamblar en un producto completo, lo que permite dividir una compilación en fragmentos más pequeños, hacer un uso más eficiente de los recursos, reducir los tiempos de compilación, un mejor seguimiento de las bases de datos de depuración binarias, etc.

Estos son algunos de los gestores de paquetes más populares que se pueden gestionar utilizando un repositorio binario:

  • Java: jar, ear, war, etc. tiene Maven y el MavenCentral oficial . Hay muchos otros gestores de paquetes que también utilizarán el formato de repositorio binario maven ( hiedra , gradle , etc.).
  • .Net: nuget para componentes .NET (DLL y EXE), pero también se puede usar como mecanismo de distribución en sistemas Windows como Chocolatey . Las versiones más recientes de Powershell también pueden aprovechar esto para distribuir módulos de PowerShell a través de la galería de PowerShell de la cual se podría construir una distribución local con un repositorio binario y un repositorio en formato nuget. También verifique OneGet si la administración de distribución de Windows le interesa.
  • En JavaScript: tenemos npm, que es uno de los más populares, requerirá nodejs .
  • En python: hay pip y el paquete oficial index pypi , que también se puede crear una instancia local a través del repositorio binario que admitirá el formato.

Esta lista está lejos de ser completa, solo da una idea de lo que hay ahí fuera.

El repositorio binario puede permitir alojar todo esto bajo un mismo techo, haciendo que su administración sea mucho más simple para los equipos. Tenga en cuenta que no necesita un equipo muy grande para comenzar a cosechar los beneficios de la administración de paquetes binarios. La inversión inicial no es muy grande y los beneficios se sienten de inmediato. Especialmente ahora que cada vez más plataformas, marcos e idiomas están integrando esta gestión de dependencia directamente en ellos. Sin embargo, su mayor ventaja que encontré fue crear un entorno que sus programadores encontrarán natural y cómodo, haciéndolo esencial. Como devops, les ayuda a crear una cadena de herramientas sólida y les ayuda a que la experiencia general se ajuste naturalmente a su pila de opciones.

Como dije anteriormente, existen muchos productos que pueden servir como administradores de paquetes binarios, algunos más genéricos que otros en su uso objetivo, que también varían ampliamente en su accesibilidad y precios.

Mi opinión personal es que los repositorios binarios son una parte tan vital de una configuración devops bien diseñada como el repositorio de código fuente o la integración continua.


Merci por esta interesante respuesta (también). Por alguna razón, todo esto me hace pensar como "hm, así que esto es lo que normalmente llamamos, en buenos entornos de mainframe, cosas como cargar bibliotecas que contienen archivos ejecutables (utilizados para ejecutar sus regiones CICS / IMS / IDMS) ..." .
Pierre.Vriens

1
Una cosa importante a añadir es el aumento de los repositorios públicos como Maven central etc modulecounts.com - estos son a menudo la fuente de alimentación para los proyectos de software que se hacen más y más el montaje srores para estos componentes, además de la costumbre de cola de código / frontend y por supuesto negocio específico del cliente lógica.
Peter

1
nunca he oído hablar de modulecounts.com, el sitio está caído ahora, lo comprobaré más tarde.
Newtopian

1
Interesante analogía de refrigerador a refrigerador :)
Ravi Tiwari

8

La forma en que me ayudó a comprender inicialmente, la diferencia entre el repositorio de código fuente y el repositorio binario fue pensarlo así: * Github o Bitbucket es útil para mantener todo el 'código' * Jfrog Artifactory es útil para mantener el 'binario' construido Al menos hasta que me sentí cómodo con estos términos!

Además, la importancia de Artifactory se puede entender en relación con la filosofía de DevOps de "Construir una vez, Implementar siempre". En Integración continua, es muy útil construir su binario una vez, ponerlo en Artifactory y luego llamarlo desde allí para implementarlo en todos los diferentes entornos. De esa manera, estamos seguros de que el código que funciona en Dev es el que se ha introducido en Prod y funcionará allí.


explicación interesante, merci!
Pierre.Vriens

6

Artifactory es un producto Binary Repository Manager de Jfrog .

Tiene razón: al ser un administrador de repositorio binario, generalmente se usa para administrar el almacenamiento de generados y utilizados en el proceso de desarrollo de software.

Desde la página web principal de Artifactory :

Como el primer y único Administrador de repositorio de artefactos universal en el mercado, JFrog Artifactory es totalmente compatible con los paquetes de software creados por cualquier idioma o tecnología.

...

... Artifactory proporciona una solución integral, automatizada y a prueba de balas para rastrear artefactos desde el desarrollo hasta la producción.

Los usos que mencionó sugieren que puede ser lo suficientemente popular para una marca genérica en DevOps.


1
Merci Dan, estás de alguna manera lo que confirma que un Artifactory es como una combinación de las palabras Artifac TS con Reposi toria . La pregunta adicional sobre la que me pregunto es esta: ¿qué pasa con los artefactos que se usan en la producción, pero que no son binarios, como el código PHP, los archivos CSS, los scripts de bash, etc.?
Pierre.Vriens

1
Para el código de la aplicación tienen sistemas de versiones de código fuente como cvs, svn, git, mercurial ... Y para el código de configuración, gestión de configuración y sistemas de distribución, como puppet, chef, ansible, salt ...
Peter

@ Pierre.Vriens No solía pensarlo de esta manera, de alguna manera, "fábrica" ​​siempre me vino a la mente primero :) Pero ahora lo veo totalmente. ¡Gracias!
Dan Cornilescu

@ J.Doe merci para esa adición, y solo para extender aún más su comentario ... en mainframes tienen herramientas como "ChangeMan ZMF", "Endevor SCM", etc. Estas herramientas se utilizan para todas las funciones que mencionó (versiones, distribución, etc., pero también para flujo de trabajo, seguridad, etc. relacionado con todo eso).
Pierre.Vriens

Entonces, si solo reinventamos msinframes, ¿qué podría estar mal con ellos?
Peter

4

Creo que complicar las cosas es lo que todos aprecian hoy en día. Trataré de responder esta pregunta en breve.

Source Repository se usa para almacenar código y sus versiones, mientras que artifactory se usa para almacenar los programas ejecutables que son salidas de ese código [archivos binarios: dll, jar, war, ear, msi, archivos exe, etc.]

Ahora, la razón por la que desearía colocarlos por separado en un repositorio que es diferente de su código podría ser múltiple: desde el acceso seguro, la amenaza de piratería, el ingreso de códigos maliciosos o simplemente tener una vía separada para los clientes que solo necesitan el binarios

La tecnología de SCM podría haberse divulgado en la creación de 2 tipos de usuarios (uno con privilegios de desarrollador que podrán acceder al código fuente y otro como un cliente que solo podrá acceder a los archivos binarios). ¡Pero no tomó esa ruta! Entonces ahora tenemos artefactos.


2

Un artefacto

Es algo que se produce / genera / elabora a partir de un proceso específico

Sacar de una compilación de proyecto Java.

Pregunta fuera de tu mente

Coche fuera de una fábrica

Nueva canción

Un repositorio

Es un receptáculo donde las cosas persisten.

Github para un proyecto Java.

StackExchange para sus preguntas desalentadoras

En teoría, un artefacto - ORY sería un repositorio de artefactos en los que se conservan y gestionan a lo largo de su ciclo de vida.

En el contexto de DevOps, Artifactory es un producto que gestiona artefactos binarios. Almacena y gestiona diferentes tipos (paquetes Jar, Python y npm, etc.) que produce a partir de sus compilaciones y reutiliza en el momento de la compilación o implementación.


explicación interesante, merci!
Pierre.Vriens

ca me fait plaisir!
gumol
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.