Apa itu artifactory?

54

Ada beberapa pertanyaan dan jawaban yang menyebutkan " artifactory ".

Saya tidak akan terkejut jika itu entah bagaimana terkait dengan .

Pertanyaan saya :

  • Apa yang sebenarnya merupakan "artifactory" (dalam konteks DevOps)?
  • Mengapa artefak digunakan?
Pierre.Vriens
sumber
Cukup beberapa jawaban menarik untuk apa yang saya pikir menjadi pertanyaan yang agak mendasar. Cukup lucu mereka semua mengingatkan saya tentang konsep serupa di lingkungan mainframe lama yang baik (di mana akar DevOps saya ... dan di mana begitu banyak konsep DevOps tampaknya berasal dari).
Pierre.Vriens

Jawaban:

67

Artifactory adalah produk oleh JFrog yang berfungsi sebagai manajer repositori biner . Yang mengatakan sangat sering orang akan menggunakan 'artifactory' sebagai sinonim dari repositori biner yang lebih umum, seperti banyak orang menggunakan Frigidaire atau lemari es untuk menunjukkan kulkas terlepas dari apakah itu merek Frigidaire atau tidak.

Repositori biner adalah ekstensi alami ke repositori kode sumber, karena ia akan menyimpan hasil dari proses build Anda, yang sering dilambangkan sebagai artefak. Sebagian besar kali seseorang tidak akan menggunakan repositori biner secara langsung tetapi melalui manajer paket yang datang dengan teknologi yang dipilih.

Dalam kebanyakan kasus, ini akan menyimpan komponen aplikasi individual yang nantinya dapat dirakit menjadi produk lengkap - sehingga memungkinkan bangunan dapat dipecah menjadi potongan yang lebih kecil, membuat penggunaan sumber daya yang lebih efisien, mengurangi waktu pembuatan, pelacakan yang lebih baik dari basis data biner debug dll.

Berikut adalah beberapa manajer paket paling populer yang dapat dikelola menggunakan repositori biner:

  • Jawa: guci, telinga, perang dll. Memiliki Maven dan MavenCentral resmi . Ada banyak manajer paket lain yang juga akan menggunakan format repositori binary maven ( ivy , gradle dll).
  • .Net: nuget untuk .NET komponen (DLL dan EXE) tetapi juga dapat digunakan sebagai mekanisme distribusi di bawah sistem Windows thorugh seperti Chocolatey . Versi Powershell yang lebih baru juga dapat memanfaatkan ini untuk mendistribusikan modul PowerShell meskipun galeri PowerShell yang satu dapat membangun distribusi lokal dengan repositori biner dan repositori dalam format nuget. Juga periksa OneGet jika manajemen distribusi Windows menarik bagi Anda.
  • Dalam JavaScript: kami memiliki npm yang merupakan salah satu yang paling populer, akan membutuhkan nodejs .
  • Dalam python: ada pip dan indeks paket resmi pypi , yang juga dapat membuat instance lokal melalui repositori biner yang akan mendukung format.

Daftar ini jauh dari lengkap, hanya memberi gambaran tentang apa yang ada di luar sana.

Repositori biner dapat memungkinkan untuk meng-host semua ini di bawah satu atap, membuat manajemen mereka jauh lebih mudah untuk tim. Perhatikan bahwa Anda tidak perlu tim yang sangat besar untuk mulai menuai manfaat dari manajemen paket biner. Investasi awal tidak terlalu besar dan manfaatnya langsung terasa. Terutama sekarang karena semakin banyak platform, kerangka kerja dan bahasa mengintegrasikan manajemen ketergantungan ini secara langsung di dalamnya. Namun, keuntungan terbesar mereka adalah menciptakan lingkungan yang menurut Anda alami dan nyaman oleh pemrogram Anda. Ini membantu Anda sebagai devops menciptakan rantai alat yang solid dan membantu mereka membuat pengalaman keseluruhan cocok secara alami dalam tumpukan pilihan mereka.

Seperti yang saya katakan sebelumnya ada banyak produk di luar sana yang dapat berfungsi sebagai manajer paket biner, beberapa lebih generik daripada yang lain dalam penggunaan target mereka, bervariasi juga secara luas dalam aksesibilitas dan harga mereka.

Pendapat pribadi saya adalah bahwa repositori biner adalah bagian penting dari pengaturan devops yang dirancang dengan baik seperti repositori kode sumber atau integrasi berkelanjutan.

Newtopian
sumber
Merci untuk jawaban yang menarik ini (juga). Untuk beberapa alasan, semua ini membuat saya berpikir seperti "hm, jadi ini seperti apa yang biasanya kita sebut, di lingkungan mainframe tua yang baik, hal-hal seperti memuat perpustakaan yang berisi executable (digunakan untuk menjalankan wilayah CICS / IMS / IDMS Anda) ..." .
Pierre.Vriens
1
Satu hal penting untuk ditambahkan adalah munculnya repositori publik seperti Maven Central dll modulecounts.com - ini sering THE sumber pasokan untuk proyek-proyek perangkat lunak yang menjadi semakin banyak perakitan srores untuk komponen-komponen ini ditambah lem kustom / kode frontend dan tentu saja bisnis khusus pelanggan logika.
Peter
1
tidak pernah mendengar tentang modulecounts.com, situsnya sudah mati sekarang, saya akan memeriksanya nanti.
Newtopian
1
Analogi menarik dari lemari es ke lemari es :)
Ravi Tiwari
8

Cara itu membantu saya memahami pada awalnya, perbedaan antara repositori kode sumber dan repositori biner adalah dengan berpikir seperti: * Github atau Bitbucket berguna untuk mempertahankan semua 'kode' * Jfrog Artifactory berguna untuk menjaga biner yang dibangun. Setidaknya sampai saya merasa nyaman dengan persyaratan ini!

Juga, pentingnya Artifactory dapat dipahami dalam kaitannya dengan filosofi DevOps untuk "Membangun sekali, sebarkan selalu". Ini berjalan jauh dalam Integrasi Berkelanjutan untuk membangun biner Anda sekali, memasukkannya ke dalam Artifactory dan kemudian memanggilnya dari sana untuk digunakan ke semua lingkungan yang berbeda. Dengan begitu, kami yakin bahwa kode yang berfungsi di Dev adalah yang didorong ke Prod dan akan bekerja di sana.

Karthik Venkatesan
sumber
penjelasan yang menarik, merci!
Pierre.Vriens
6

Artifactory adalah produk Binary Repository Manager dari Jfrog .

Anda benar - menjadi manajer repositori biner yang biasanya digunakan untuk mengelola penyimpanan dihasilkan dan digunakan dalam proses pengembangan perangkat lunak.

Dari halaman web utama Artifactory :

Sebagai Artifact Repository Manager universal pertama dan satu-satunya di pasaran, JFrog Artifactory sepenuhnya mendukung paket perangkat lunak yang dibuat oleh bahasa atau teknologi apa pun.

...

... Artifactory menyediakan solusi ujung-ke-ujung, otomatis, dan anti-peluru untuk melacak artefak dari pengembangan hingga produksi.

Penggunaan yang Anda sebutkan menunjukkan bahwa itu mungkin cukup populer untuk merek dagang generik di DevOps.

Dan Cornilescu
sumber
1
Merci Dan, Anda entah bagaimana mengonfirmasi bahwa Artifactory seperti kombinasi dari kata Artifac ts dengan Reposi tory . Pertanyaan tambahan yang saya ingin tanyakan adalah ini: bagaimana dengan artefak yang digunakan dalam produksi, tetapi yang bukan binari, seperti kode PHP, file CSS, skrip bash, dll?
Pierre.Vriens
1
Untuk kode aplikasi mereka memiliki sistem versi kode sumber seperti cvs, svn, git, lincah .. Dan untuk kode konfigurasi, manajemen konfigurasi dan sistem distribusi, seperti boneka, koki, ansible, salt ..
Peter
@ Pierre.Vriens Saya tidak terbiasa memikirkannya seperti ini, entah bagaimana "pabrik" selalu terlintas di benak saya :) Tapi saya benar-benar melihatnya sekarang. Terima kasih!
Dan Cornilescu
@ J.Apakah merci untuk penambahan itu, dan hanya untuk memperluas komentar Anda ... pada mainframe mereka memiliki alat-alat seperti "ChangeMan ZMF", "Endevor SCM", dll. Alat-alat ini digunakan untuk semua fungsi yang Anda sebutkan (versi, distribusi, dll, tetapi juga untuk alur kerja, keamanan, dll yang terkait dengan semua itu).
Pierre.Vriens
Jadi, jika kita hanya menemukan kembali msinframe apa yang salah dengan mereka ?!
Peter
4

Saya pikir hal-hal yang menyulitkan adalah hal yang dihargai semua orang untuk saat ini. Saya akan mencoba menjawab pertanyaan ini secara singkat.

Source Repository digunakan untuk menyimpan kode dan versinya, sementara artifactory digunakan untuk menyimpan program yang dapat dieksekusi yang merupakan output dari kode tersebut [binari - dll, jar, perang, telinga, msi, file exe dll]

Sekarang alasan mengapa Anda ingin menempatkan mereka secara terpisah dalam sebuah repo yang berbeda dari kode Anda bisa banyak - langsung dari akses yang aman, ancaman peretasan, kode berbahaya memeriksa masuk atau hanya memiliki jalan terpisah untuk klien yang hanya membutuhkan binari.

Teknologi SCM dapat membocorkan dirinya untuk menciptakan 2 jenis pengguna (satu dengan hak pengembang yang akan dapat mengakses kode sumber dan yang lainnya sebagai klien yang hanya akan dapat mengakses binari). Tapi itu tidak mengambil rute itu! Jadi sekarang kita punya artefak.

Tombak A1
sumber
2

Artefak

Adalah sesuatu yang diproduksi / dihasilkan / dibuat dari proses tertentu

Jar keluar dari membangun proyek Java.

Pertanyaan keluar dari pikiran Anda

Mobil keluar dari pabrik

Lagu baru

Repositori

Merupakan wadah tempat segala hal tetap ada

Github untuk proyek Java.

StackExchange untuk pertanyaan menakutkan Anda

DALAM TEORI, sebuah Artifact - ory akan menjadi repositori artefak di mana mereka bertahan dan dikelola sepanjang siklus hidup mereka.

Dalam konteks DevOps, Artifactory adalah produk yang mengelola artefak biner. Ini menyimpan dan mengelola berbagai jenis (Jar, Python dan paket npm, dll ...) yang Anda hasilkan dari build Anda dan digunakan kembali pada waktu kompilasi atau penyebaran.

gumol
sumber
penjelasan yang menarik, merci!
Pierre.Vriens
ca me fait plaisir!
Gumol