Apa itu artefak (atau artefak)?

17

Pertanyaan tentang " Apa itu repositori artefak? " Berisi jawaban dengan penjelasan yang menarik tentang bagian repositori itu. Dan dari membaca seluruh jawaban, saya tidak yakin apa sebenarnya arti " artefak " dalam konteks DevOps.

Ada saran?

PS: Dari salah satu jawaban saya sepertinya mengerti bahwa mungkin artefak adalah apa yang saya ingin tahu (bingung?) Tentang ...

Pierre.Vriens
sumber
2
Teman-teman kami dari SE Inggris telah menulis pandangan tentang "artifact" vs. "artefact": english.stackexchange.com/questions/37903/…
7ochem

Jawaban:

19

Wikipedia memiliki jawaban yang sangat bagus untuk pertanyaan ini. Artifact , kadang-kadang juga disebut Obyek Turunan , adalah produk dari beberapa proses yang diterapkan ke Gudang Kode . Awalnya mereka disebut Build Artifacts , tetapi karena lebih banyak proses diterapkan selain build untuk membuatnya, kata pertama dihapus begitu saja.

Perbedaan utama adalah artefak dapat dibuat kembali dari repositori kode menggunakan proses yang sama, asalkan Anda telah melestarikan lingkungan di mana proses itu diterapkan. Karena proses ini dapat memakan waktu dan lingkungan dapat dilestarikan secara tidak sempurna untuk dapat membuat kembali artefak dengan cara yang persis sama, kami mulai menyimpannya dalam Gudang Artefak .

Menyimpannya secara terpisah dari Code Repository dalam Artifact Repository adalah keputusan desain yang akan dibuat oleh seorang insinyur DevOps. Beberapa perusahaan, yaitu Perforce , menyarankan untuk menggunakan Repositori Kode mereka sebagai Repositori Artifak juga. Ada persyaratan yang berbeda dalam hal akses , audit , ukuran objek , penandaan objek dan skalabilitas pada setiap repositori dan jadi tergantung pada situasi, seringkali lebih baik menggunakan dua produk yang berbeda. Misalnya Gitrepositori disalin secara keseluruhan ke setiap mesin pengembangan dan menyimpan artefak dalam repositori kode akan menambah ukurannya di luar semua alasan, meskipun akhir-akhir ini ada cara untuk mengurangi ini. Keputusan lain untuk dibuat adalah artefak mana yang akan disimpan. Beberapa perusahaan bahkan menyimpan artefak perantara sebagai file objek individual, untuk mempercepat pembangunan kembali, yang lain hanya menyimpan binari terakhir. Tidak semua artefak memiliki nilai yang sama. Artefak yang dihasilkan dari rilis build dapat memiliki persyaratan yang berbeda dari artefak yang dihasilkan dari build developer.

Kebanyakan artefak umum adalah hasil dari proses berikut: Konfigurasi , Preprocessing , Kompilasi , Menghubungkan , Automated Testing , Pengarsipan , Packaging , Media file penciptaan dan pengolahan , Data File Generation , Dokumentasi Parsing , Kode menganalisis , QA , dll

Jiri Klouda
sumber
Kalimat tentang ukuran git tidak sepenuhnya tepat, menggunakan git Jika Anda dapat mengurangi masalah ini. (hanya presisi kecil)
Tensibai
Menarik, itu bahkan semakin menguatkan pemikiran saya (tebak). 2 hal: tautan perforce Anda perlu diperbaiki dan pertanyaan tambahan: apakah Anda setuju bahwa "melacak data pengujian Anda" (input yang Anda gunakan, dan output yang Anda dapatkan) dapat dianggap sebagai artefak juga? Dan BTW, jawaban ini mengingatkan saya tentang "level verifikasi" yang digunakan di bidang "escrow perangkat lunak" (jika Anda terbiasa dengan itu). Saya mulai bertanya-tanya tentang topik escrow perangkat lunak yang harus dipertimbangkan pada topik untuk DevOps ... Mungkin @Tensibai mungkin ingin mengomentari itu juga?
Pierre.Vriens
1
@ Pierre.Vriens untuk data pengujian Anda, itu sulit hari ini, jika data pengujian Anda adalah DB, itu tidak sesuai dengan gagasan artefak. Untuk escrow, saya tidak tahu apa-apa, jika pertanyaan-pertanyaannya cukup fokus, itu kedengarannya baik bagi saya.
Tensibai
@ Pierre.Vriens Maksud saya ada begitu banyak hal yang cocok dengan nama 'data uji' (dari nomor sederhana hingga jutaan file melalui sampel catatan DB) yang terlalu luas tanpa konteks.
Tensibai
@ Pierre.Vriens (dan maaf Jiri untuk notifikasi) Saya tidak berpikir negosiasi kontrak dengan penyedia Anda pada topik, dan apa yang Anda uraikan hanyalah negosiasi hukum untuk apa yang saya kira.
Tensibai
7

Ada dua penggunaan kata "artefak" dan satu membuat kode sumber sebuah artefak sementara yang kedua membuatnya tidak menjadi artefak: ini memang bisa sangat membingungkan!

"Artefak" sebagai hal yang konkret, vs hal yang ideal - Makna ini adalah makna umum dari kata "objek yang dibuat oleh manusia, biasanya salah satu dari kepentingan budaya atau sejarah" dan bukan jargon teknis. Berikut adalah contoh dalam konteks teknis: Ketika Anda men-debug suatu perangkat lunak, Anda mempelajari sesuatu tentang perangkat lunak tersebut. Seringkali merupakan investasi yang berharga untuk mengubah pembelajaran ini menjadi artefak perangkat lunak, seperti tes regresi. Kalau tidak, pembelajaran ini akan dilupakan dan upaya yang dilakukan untuk mendapatkannya akan sia-sia. Dalam arti ini, kode sumber dianggap sebagai artefak.

"Artefak" sebagai sesuatu yang dihasilkan oleh resep - Makna ini menggunakan gambar populer sang alkemis menggunakan beberapa resep esoteris untuk menghasilkan perangkat ajaib, yang sering disebut artefak. Ini adalah jargon teknis yang digunakan untuk membedakan antara kode sumber, yang sesuai dengan resep dalam metafora alkemis, dan apa pun yang berasal dari kode sumber itu, yang sesuai dengan artefak dalam metafora alkemis. Sebagai contoh, saya hanya mengotomatiskan produksi artefak untuk program plop-fizz saya, sekarang tarball sumber, file tanda tangan, paket DEB dan RPM semua dapat dipakai hanya dalam satu perintah! Arti ini tidak mengenali kode sumber sebagai artefak, karena istilah ini digunakan untuk menunjukkan apa yang dihasilkan dari kode sumber ini.

Michael Le Barbier Grünewald
sumber
3

Saya kira jawabannya mungkin berbeda dari satu tempat ke tempat lain. Di mana saya bekerja saat artefak adalah sesuatu yang dikonsumsi oleh beberapa entitas lain, kecuali untuk kode sumber yang digunakan untuk pengembangan - ini masuk ke kontrol sumber.

Ini termasuk binari produk atau produk lain yang dibutuhkan, perpustakaan, file objek, artefak uji seperti file media atau data uji.

Kode sumber tidak dianggap sebagai artefak. Kecuali jika cocok dengan definisi "dikonsumsi oleh" - dalam kasus kami termasuk perpustakaan pihak ketiga, kode skrip yang digunakan untuk pengujian atau tujuan lain (tetapi bukan versi pengembangan itu sendiri).

Rsf
sumber
Hm, menarik, Anda mengkonfirmasikan apa yang saya tebak. Apakah Anda setuju bahwa tidak masalah platform atau OS apa yang sedang kita bicarakan. Sebagai contoh, bahkan untuk mainframe satu "mungkin" menggunakan terminologi ini juga ... Jika demikian, dapatkah Anda juga memasukkan sesuatu tentang itu dalam jawaban Anda?
Pierre.Vriens
Bahkan kode aktual dari kontrol versi dapat / harus dianggap artefak jika dikonsumsi. Misalnya halaman HTML berbasis template yang akan digunakan apa adanya di situs web. Mereka adalah artefak penyebaran, yang mungkin perlu disalin secara eksplisit bersama-sama dengan artefak buatan lainnya di beberapa lokasi sementara untuk penyebaran yang sebenarnya, misalnya. Tetapi mungkin tidak masuk akal untuk menyimpannya dalam repositori artefak karena mereka selalu dapat diperoleh dari repositori kode sumber.
Dan Cornilescu
@Pierre Mengonfirmasi bahwa OS mana yang ortogonal menjadi artefak, saya tidak yakin mengapa harus dimasukkan dalam jawaban karena banyak hal lain yang tidak relevan juga.
Rsf
0

Catatan sisi pada sisi budaya. Sementara di DevOps kami menganggap konsep "artifact repository" sebagai situasi tertentu, tampaknya tidak ada banyak kaitan dengan proses organisasi.

Masalah budaya: jika suatu organisasi menggunakan ITIL, orang yang disertifikasi akan mengatakan "kita perlu memiliki perpustakaan media yang pasti, repositori untuk menempatkan item konfigurasi perangkat lunak yang telah kami hasilkan". Jadi orang yang peduli tentang proses TI yang terstruktur dengan baik tidak tahu alat (bukan-manajemen) yang mendukung dan sedang digunakan. Begitu juga sebaliknya, jika Anda membutuhkan pembenaran untuk bahasa Nexus atau Artifactory, Anda mungkin kesulitan menjelaskannya tergantung pada organisasi.

Bacaan lebih lanjut: https://en.wikipedia.org/wiki/Definitive_Media_Library

Peter
sumber
1
Hai. Selamat datang di situs ini. Silakan tambahkan info lebih lanjut untuk jawabannya. Dalam kondisi saat ini, hanya tautan, dan akan ditandai :)
Dawny33
jika DevOps juga tentang budaya, saya pikir tautan ke ITIL penting karena kadang-kadang mengatur organisasi TI di tingkat organisasi yang lebih tinggi. Menambahkan lebih banyak penjelasan untuk memperjelas simetri ketidaktahuan ini.
Peter
1
Saya tidak berpikir itu benar-benar menjawab pertanyaan tentang apa itu artefak, tapi setidaknya itu terlihat seperti upaya jujur ​​untuk menjawab sekarang.
Tensibai
Saya setuju dengan @Tensibai (sekarang), dan menghapus komentar saya sebelumnya (tidak lagi mencurigakan). Dan meskipun segala sesuatu dalam jawaban ini masuk akal, saya masih belum mengerti bagaimana "Catatan" ini menjawab pertanyaan saya, yang juga saya coba rangkum dalam judul pertanyaan saya, yaitu " Apa itu artefak (atau artefak) )? " Saya menyambut upaya baru, oke?
Pierre.Vriens