Adakah alasan untuk tidak menerima pengiriman perangkat lunak sebagai mesin virtual?

40

Ini adalah pertanyaan tentang logistik, bukan pertanyaan teknis.

Perusahaan saya telah mengalihdayakan beberapa pekerjaan perangkat lunak tertanam. Secara khusus, kami telah membayar kontraktor untuk mengembangkan sistem tertanam bagi kami karena kami tidak memiliki pengetahuan internal yang memadai untuk melakukannya sendiri (kami hanya memiliki pengembang aplikasi desktop).

Jadi, kontraktor telah menyelesaikan perangkat lunak dan mereka bertanya apakah mereka dapat mengirimkannya kepada kami dalam mesin virtual. VM adalah mesin Windows 8 yang berisi IDE CodeWarrior yang telah dikonfigurasi sebelumnya dengan kode sumber sebagai proyek CodeWarrior. Idenya adalah bahwa ini akan memungkinkan kita untuk membuat perubahan kode dalam VM yang sudah dikonfigurasi untuk pengembangan lebih lanjut dari proyek ini.

Apakah ada kelemahan untuk melakukan ini sebagai lawan dari meminta mereka memandu kami melalui cara mengkonfigurasi mesin pengembangan kami sendiri untuk membuat perubahan kode pada proyek? Satu-satunya masalah yang saya dapat lihat adalah VM berjalan lambat dan butuh waktu lama untuk membangun kembali proyek ketika kita membuat perubahan kode. Tetapi di sisi lain, saya menyukai gagasan untuk mendapatkan lingkungan pengembangan sistem tertanam yang telah dikonfigurasi sebelumnya sehingga saya tidak perlu menambahkan lagi IDE pada mesin dev aplikasi desktop saya.

Saya tidak dapat benar-benar memikirkan alasan yang baik mengapa tidak menerima pengiriman VM, tetapi saya hanya ingin menjalankannya oleh komunitas ini jika ada sesuatu yang saya lewatkan.

CFL_Jeff
sumber
24
Lisensi perangkat lunak Windows pada VM muncul di pikiran.
Robert Harvey
6
@RobertHarvey Versi lengkap Windows mencakup hak lisensi untuk dua mesin virtual. Dan jika Anda memiliki lisensi untuk Windows Datacenter, Anda dapat menjalankan banyak VM karena server dapat mendukung untuk memeriksa situs web lisensi virtualisasi untuk informasi lebih lanjut.
Michael Brown
19
Itu salah satu cara untuk menyiasati "Bekerja pada mesin saya." masalah.
MichaelHouse
2
Saya curiga kode ini bermasalah, tetapi hanya bekerja pada satu mesin. Pengembang tidak tahu apa yang mereka lakukan, dan tidak bisa membuat ulang pengaturan yang membuatnya berfungsi, jadi mereka hanya membuat image disk dan memasukkannya ke dalam VM.
MGOwen
Apakah ada lisensi yang Anda miliki yang mencakup VM yang diberikan kepada Anda oleh pihak eksternal (mungkin tanpa hak untuk membagikan Windows VM)?
Burhan Ali

Jawaban:

66

Masalah yang saya lihat adalah bahwa pengetahuan tentang pengaturan dan konfigurasi mesin virtual tidak di rumah, dan jika konfigurasi non-sepele maka Anda akan bergantung pada perusahaan lain ketika perangkat lunak perlu dikonfigurasi untuk versi berbeda dari OS / perpustakaan / perangkat keras / apa pun. Menerima VM baik-baik saja untuk bangun dan berjalan lebih cepat, tetapi saya berkeras untuk mendapatkan panduan tentang cara mengkonfigurasi sistem Anda sendiri untuk pemeliharaan di masa depan.

FrustratedWithFormsDesigner
sumber
9
+1, bagian yang menakutkan adalah masalah "gambar emas" yang mungkin Anda miliki dalam enam tahun.
Wyatt Barnett
8
Jika kontraktor juga dapat memberikan panduan pengaturan (yang harus diuji), saya tidak akan memiliki masalah dengan ini.
Jamie
2
@ Jamie: Tetapi jika Anda menguji panduan pengaturan, tidak ada lagi kebutuhan untuk VM,
mattnz
10
Istilahnya adalah prosedur "mulai dingin", artinya jika Anda mulai dari mesin dingin - apa yang harus Anda lakukan untuk mendapatkan gambar yang sedang berjalan? Saya juga terganggu oleh kenyataan bahwa mereka mungkin telah membuat beberapa perubahan pada konfigurasi, menginstal perangkat lunak yang tidak didokumentasikan, atau bahkan mungkin telah memasukkan pintu belakang. Saya ingin tahu semua yang ada di mesin itu.
ipaul
Saya setuju dengan jawaban ini juga. Tidak apa-apa untuk demonstrasi tentang apa yang dilakukan, tetapi jika saya akan menerima produk ini, saya akan meminta dokumen / skrip shell yang menjelaskan / melakukan pengaturan lingkungan.
Tsvetomir Dimitrov
36

Saya tidak melihat kelemahan besar dengan itu, tapi saya akan mengatakan bahwa menerima VM dengan kode sumber di atasnya harus memerlukan paranoia yang sama seperti menerima pengiriman mesin dengan perangkat lunak dan lingkungan dev yang diinstal, jadi tolong buat Pastikan tidak ada hal buruk yang diinstal pada VM sebelum Anda memutarnya di lingkungan yang memiliki akses ke jaringan internal Anda.

Jika / ketika Anda menjalankan VM dan menjalankan, Anda harus dapat melipat kode sumber ke dalam repositori kode normal Anda, karena Anda (mungkin) akan selesai hanya dengan arsip kode sumber yang dikirimkan.

Vatine
sumber
11
Bukan hanya +1 yang saya berikan pada jawaban untuk pertanyaan ini, tetapi satu-satunya jawaban yang menyebutkan membawa kode ke kontrol versi in-house. Saya berharap VM menyertakan repositori juga, tetapi saya tidak akan bertaruh, dan mungkin hanya memiliki versi kode yang dirilis.
Mike Sherrill 'Cat Recall'
18

Saya akan khawatir bahwa ada sesuatu yang dikonfigurasikan dalam mesin yang tidak terdokumentasi, sulit direproduksi, atau tidak dapat diterima dalam konfigurasi standar Anda.

Ymmv, tapi saya tidak benar-benar mempertimbangkan pengembangan yang dilakukan sampai proyek dapat didemonstrasikan untuk membangun mesin dev standar dan digunakan pada server komoditas / klien.

Tagihan
sumber
1
+1 memastikan VM hanyalah fitur kenyamanan. Kalau tidak, Anda mungkin berakhir dengan sesuatu yang dibangun hanya di atas VM itu karena itu bergantung pada beberapa kompiler atau versi tautan yang tidak didokumentasikan, ditambal atau sesuatu yang sama mengerikannya.
ptyx
10

Dalam beberapa proyek saya, saya harus berjuang keras untuk mendapatkan perangkat lunak yang dikirim dengan cara ini. Ini format yang luar biasa.

Pastikan Anda:

  1. Dapatkan kode sumber dari setiap rilis yang Anda dapatkan dari kontraktor, dan gabungkan ke dalam sistem kontrol sumber Anda sendiri
  2. Dapatkan dokumentasi tentang pengaturan lingkungan VM, dan dapat mereproduksinya sendiri. Tambahkan dokumentasi ke kontrol sumber Anda juga

Keuntungan tambahan:

  1. Jika Anda mengarsipkan rilis dalam format VM (simpan .vhd atau sesuatu), akan lebih mudah untuk membuatnya naik dan berjalan beberapa tahun ke depan, bahkan jika tim asli terfragmentasi atau hilang.
  2. Jauh lebih mudah menjalankan versi yang berbeda secara berdampingan.
  3. Dengan beberapa integrasi VMWare (dimungkinkan juga dengan HyperV), Anda dapat mengintegrasikannya ke dalam CI build secara otomatis.
  4. Ini menghemat waktu pengembang (di awal), karena ada sedikit atau tidak ada pengaturan lingkungan.

Saya akan mengatakan pergi untuk itu.

Zachary Yates
sumber
Hmm. Poin bagus.
MGOwen
1
Waktu setup lingkungan murah dibandingkan dengan kinerja lambat dari waktu ke waktu. Kami memiliki VM seperti ini di rumah yang kami hasilkan rilis builds, tetapi untuk penggunaan sehari-hari, metode VM terlalu lamban dan Anda hanya bisa menggunakan satu layar (dalam banyak kasus). Ini lebih seperti kematian dengan 1000 luka vs pemenggalan bersih yang bagus.
boatcoder
@ Mark0978 Saya pikir # 4 adalah situasi YMMV, kami butuh tiga minggu untuk merekayasa balik pengaturan lingkungan dari dokumentasi, karena kami tidak lagi memiliki akses ke pengaturan server asli (IIS 6+ sekelompok perpustakaan pihak ketiga / penangan http) . Maksud saya adalah bahwa memiliki contoh kerja bermanfaat. Sebagian besar kritik yang saya dengar biasanya karena host VM tidak cukup baik. Haha- 'pemenggalan bersih yang bagus.'
Zachary Yates
1
Saya benar-benar menganggapnya sebagai penalti lingkungan pengembangan (yang mungkin bukan apa yang diminta), memperlambat pengembang sepanjang waktu hanya tidak sepadan. Semua server produksi kami berjalan pada VM di fasilitas hosting, tetapi mereka semua server non-grafis.
boatcoder
1
@ Mark0978 Saya suka cara pria itu menulis. Saya kira saya belum membuat poin saya dengan # 4 jelas. Saya tidak menganjurkan bekerja dengan VM yang lambat. Ketika Anda punya satu atau dua hari pekerjaan yang harus dilakukan, dan Anda butuh tiga minggu untuk mengatur lingkungan, cukup gunakan vm. Anda harus menyadari seluruh situasi.
Zachary Yates
6

Itu benar-benar hal yang seharusnya dikerjakan dalam kontrak semula. Mereka mungkin sudah melampaui dan melampaui. Saya tidak akan mengharapkan untuk mendapatkan instruksi konfigurasi tanpa membayar ekstra, karena itu membutuhkan lebih banyak pekerjaan di pihak mereka.

Saya pernah berada dalam situasi yang sama dengan Anda sebelumnya. Lingkungan pengembangan kami adalah Windows / Cygwin dan kami mengunjungi vendor selama seminggu untuk menemukan beberapa kode antarmuka dengan kami. Mereka terutama menggunakan Linux, jadi kami mengatur diri kami dengan mesin virtual Linux selama minggu mereka di sini. Itu bekerja dengan sangat baik ketika mereka ada di sini dan kami mengalami sedikit kesulitan untuk pindah ke Cygwin setelah mereka pergi.

Kedengarannya bagi saya seperti Anda meremehkan kemampuan Anda sendiri. Menyiapkan IDE tidaklah sulit, bahkan tanpa contoh yang baik untuk membandingkannya. Saya akan lebih khawatir tentang melanggar perjanjian lisensi Windows dan CodeWarrior. Jika Anda berlisensi dengan benar, Anda harus bisa mendapatkan dukungan dari Freescale untuk masalah pengaturan apa pun.

Karl Bielefeldt
sumber
4

Seperti FrustratedWithFormsDesigner berkata , Anda perlu tahu cara mengatur mesin untuk diri sendiri. Namun saya ingin menambahkan bahwa Anda berpotensi meminta mereka untuk menyediakan skrip yang mengkonfigurasi mesin untuk Anda, daripada seluruh VM. Jika skrip ditulis cukup baik, Anda akan memiliki dokumentasi terkini yang tepat tentang cara mengatur mesin (dengan membaca kode sumber), ditambah skrip akan melakukannya untuk Anda, menghemat waktu Anda setiap kali Anda membutuhkan mesin baru.

Alat yang sedang saya coba untuk membantu menstandarkan / mengotomatiskan pengaturan mesin Windows baru adalah Chocolatey .

Chocolatey NuGet adalah Manajer Paket Mesin, agak seperti apt-get, tetapi dibuat dengan mempertimbangkan Windows.

Anda dapat dengan mudah membuat paket Chocolatey sendiri dengan mudah, lalu membuat skrip PowerShell yang akan menginstal dan mengkonfigurasi hampir semuanya.

Phil
sumber
Seperti yang saya mengerti ada alat yang disebut Vagrant yang khusus dibuat untuk tugas ini.
M. Dudley
3

Lingkungan yang berjalan lambat seharusnya tidak menjadi masalah, cukup buang memori dan CPU padanya. Overhead VM modern untuk jenis desktop berfungsi seperti kebanyakan pengembangan SW sangat kecil, ia disimpan berkali-kali dengan tidak perlu melakukan pengaturan apa pun saat mengganti perangkat keras.

Hyde
sumber
3

Saya akan berpikir bahwa kontrak pengembangan akan menetapkan kiriman dan kewajiban kontraktor kepada Anda.

Paling tidak saya akan meminta jalan-jalan dan dokumentasi tentang bagaimana konfigurasi bekerja dan apa yang penting sampai Anda dapat membuat ulang proyek, membangun dan menggunakan sendiri.

Dalam hal menyiapkan sesuatu untuk dilakukan, saya pikir VM sangat bisa diterima.

Saya pasti akan mendorong untuk dokumentasi. Saya akan ragu tanpa itu karena kecuali Anda memiliki pemahaman tingkat tinggi tentang cara kerjanya Anda bisa lebih dari satu barel di masa depan, terutama jika Anda perlu mendukung aplikasi sendiri.

Sam
sumber
Sayangnya, saya tidak berada di perusahaan ini ketika kontrak dibuat. Saya tidak memiliki akses ke sana karena saya bukan anggota manajemen, jadi saya tidak yakin apa yang ditetapkan.
CFL_Jeff
2

Bahkan untuk sistem embedded yang dikembangkan secara internal, penting untuk memiliki dokumen yang menjelaskan cara mengatur lingkungan build. Anda juga perlu mengarsipkan semua binari / menginstal file alat, dan pustaka yang diperlukan untuk mengatur lingkungan build.

Keith Nicholas
sumber
1

Saya tidak akan menerima VM sebagai pengiriman kode karena itu membuat sulit untuk membuat pembaruan. Anda harus memiliki VM itu sebagai gambar emas untuk melakukan pekerjaan pengembangan. Itu membuatnya lebih sulit untuk membuat mod. Pengembang harus memformat ulang, atau mendapatkan mesin baru, mereka harus menginstal VM dan menarik VM.

Saat Anda mengedit, Anda harus melakukan "salinan emas" baru dari VM. Mengapa Anda ingin mengelola file biner besar seperti itu di kontrol sumber? Tidak mungkin untuk berbeda, dan dalam pengalaman saya mencoba untuk sumber mengontrol salinan emas dari apa pun biner tidak berakhir dengan baik. Kecuali Anda dapat mempertahankan kontrol ketat terhadap siapa yang mengedit salinan emas, Anda akan berakhir dengan hal-hal di sana yang tidak berdokumen dan tidak ada yang tahu.

Jika seorang pengembang ingin memberikan perangkat lunak kepada saya dalam bentuk itu, saya akan menemukan pengembang yang berbeda. Ini memberitahu saya bahwa mereka tidak cukup profesional untuk menghapus ketergantungan mereka, atau setidaknya mendokumentasikannya.

Saya akan memiliki mereka juga:

  1. Buat file teks yang diperiksa ke kontrol sumber dengan kode. Ini mencantumkan semua dependensi yang Anda perlukan untuk menjalankan dan menjalankan proyek, yang bukan bagian dari repo kontrol sumber (misalnya, CodeWarrior, alat baris perintah apa pun, atau aplikasi eksternal lain yang Anda andalkan).

  2. Script untuk menginstal dependensi. Karena Anda menggunakan Windows, seharusnya tidak terlalu sulit untuk membuat skrip Chocolatey untuk mengotomatiskan pengaturan lingkungan dev. Setiap dependensi yang Anda miliki yang belum menjadi paket cokelat, dapat Anda buat. Misalnya, Anda dapat menginstal alat komersial berat seperti Visual Studio dan SQL Server via Chocolatey. Paket-paket tersebut menginstal versi uji coba, yang berfitur lengkap, dan dapat dibuka dengan memasukkan kunci lisensi. Jadi mungkin hal yang sama dapat dilakukan dengan CodeWarrior, dan semua dependensi lain yang Anda miliki untuk lingkungan dev Anda.

Mungkin pengembang Anda benar-benar cukup baik sehingga Anda masih ingin bekerja dengannya, tetapi tidak pandai dalam hal otomasi ini. Tidak masalah juga, jika itu masalahnya, saya akan melakukan sendiri bagian otomasi, bekerja dengannya untuk mengidentifikasi dependensi dan membuat skrip berfungsi, atau saya akan membuat pengembang lain yang mahir dalam otomasi untuk melakukannya . Itu harus dilakukan pada awal proyek. Salinan barebone yang bersih dari Win8 VM masih akan berguna karena Anda dapat menggunakannya untuk menguji skrip cokelat Anda.

Giscard Biamby
sumber
0

Saya tidak berpikir ada masalah dengan ini, saya telah melihat sistem manajemen konten yang diinstal sebagai VM, dan dari apa yang Anda katakan kontraktor telah memberi Anda kemampuan untuk mempertahankan dan memperluas aplikasi sendiri.

Namun, seperti poster lain perhatikan ada dua hal yang akan saya lakukan. Pertama, pastikan bahwa ketika menginstal VM, letakkan di mesin yang terpisah dari jaringan Anda. Anda tidak akan mengunduh EXE yang tidak dikenal dari internet dan menginstalnya di mesin Anda.

Kedua, jika mungkin simpan salinan yang terisolasi ini sebagai referensi untuk mengatur versi in-house. Saya katakan jika mungkin karena saya tidak tahu tekanan bisnis yang Anda alami. Pada akhirnya, itu akan menjadi departemen / programmer IT perusahaan Anda yang akan bertanggung jawab untuk aplikasi ini. Jadi, semakin Anda tahu tentang hal itu, semakin baik.

Daniel Hollinrake
sumber