Có bất kỳ lý do để không chấp nhận một phần mềm có thể phân phối như một máy ảo?


40

Đây là một câu hỏi về hậu cần, không phải là một câu hỏi kỹ thuật.

Công ty của tôi đã thuê ngoài một số công việc phần mềm nhúng. Cụ thể, chúng tôi đã trả tiền cho một nhà thầu để phát triển một hệ thống nhúng cho chúng tôi vì chúng tôi không có kiến ​​thức nội bộ đầy đủ để tự làm việc đó (chúng tôi chỉ có các nhà phát triển ứng dụng máy tính để bàn).

Vì vậy, các nhà thầu đã hoàn thành phần mềm và họ đã hỏi liệu họ có thể giao nó cho chúng tôi trong một máy ảo không. VM là một máy Windows 8 chứa IDE CodeWar Warrior được cấu hình sẵn với mã nguồn là một dự án CodeWar Warrior. Ý tưởng là điều này sẽ cho phép chúng tôi thực hiện thay đổi mã trong VM đã được cấu hình để phát triển thêm cho dự án này.

Có bất kỳ nhược điểm nào khi làm điều này trái ngược với việc họ hướng dẫn chúng tôi cách cấu hình các máy phát triển của riêng chúng tôi để thực hiện thay đổi mã cho dự án không? Vấn đề duy nhất tôi có thể thấy trước là VM chạy chậm và phải mất một thời gian dài để xây dựng lại dự án khi chúng tôi thực hiện thay đổi mã. Nhưng mặt khác, tôi thích ý tưởng có được một môi trường phát triển hệ thống nhúng được cấu hình sẵn để tôi không phải thêm một IDE khác trên máy phát triển ứng dụng máy tính để bàn của mình.

Tôi thực sự không thể nghĩ ra một lý do chính đáng tại sao không chấp nhận VM có thể phân phối được, nhưng tôi chỉ muốn điều hành nó bởi cộng đồng này trong trường hợp tôi thiếu thứ gì đó.


24
Cấp phép phần mềm Windows trên VM xuất hiện trong tâm trí.
Robert Harvey

6
@RobertHarvey Phiên bản đầy đủ của Windows bao gồm quyền cấp phép cho hai máy ảo. Và nếu bạn có giấy phép cho Windows Datacenter, bạn có thể chạy nhiều máy ảo như máy chủ đó có thể hỗ trợ kiểm tra trang web cấp phép ảo hóa để biết thêm thông tin.
Michael Brown

19
Đó là một cách để khắc phục "Hoạt động trên máy của tôi." vấn đề.
MichaelHouse

2
Tôi nghi ngờ mã bị lỗi, nhưng chỉ hoạt động trên một máy. Các nhà phát triển không biết họ đang làm gì và không thể tạo lại thiết lập khiến nó hoạt động, vì vậy họ chỉ tạo một ảnh đĩa và đưa nó vào VM.
MGOwen

Có bất kỳ giấy phép nào bạn có bao gồm các máy ảo được cung cấp cho bạn bởi một bên ngoài (có thể không có quyền phát hành máy ảo Windows) không?
Burhan Ali

Câu trả lời:


66

Vấn đề tôi thấy là kiến ​​thức về thiết lập và định cấu hình máy ảo không phải là nội bộ và nếu cấu hình không tầm thường thì bạn sẽ dựa vào công ty khác khi phần mềm cần được cấu hình cho các phiên bản khác nhau của HĐH / thư viện / phần cứng / bất cứ thứ gì. Chấp nhận VM là tốt để có được và chạy nhanh hơn, nhưng tôi nhấn mạnh vào việc tìm hiểu cách cấu hình hệ thống của riêng bạn để bảo trì trong tương lai.


9
+1, phần đáng sợ là vấn đề "hình ảnh vàng" mà bạn có thể có trong sáu năm.
Wyatt Barnett

8
Nếu nhà thầu cũng có thể cung cấp hướng dẫn thiết lập (cần được kiểm tra), tôi sẽ không gặp vấn đề gì với việc này.
Jamie

2
@Jamie: Nhưng nếu bạn kiểm tra hướng dẫn thiết lập, không còn cần VM nữa,
mattnz 18/03/13

10
Thuật ngữ này là quy trình "khởi động nguội", nghĩa là nếu bạn bắt đầu từ một máy lạnh - bạn phải làm gì để có được một hình ảnh đang chạy? Tôi cũng cảm thấy phiền vì thực tế là họ có thể đã thay đổi cấu hình, cài đặt phần mềm không được ghi lại hoặc thậm chí có thể có cả cửa sau. Tôi muốn biết mọi thứ trên máy đó.
ipaul

Tôi đồng ý với câu trả lời này quá. Sẽ không sao khi trình diễn về những gì đã được thực hiện, nhưng nếu tôi chuẩn bị chấp nhận sản phẩm này, tôi sẽ yêu cầu tập lệnh tài liệu / shell mô tả / thực hiện thiết lập môi trường.
Tsvetomir Dimitrov

36

Tôi không thấy sự hạn chế lớn với nó, nhưng tôi sẽ nói rằng việc chấp nhận VM với mã nguồn trên đó sẽ gây ra sự hoang tưởng giống như chấp nhận một lô hàng của máy có cài đặt phần mềm và môi trường dev, vì vậy hãy thực hiện chắc chắn không có gì xấu được cài đặt trên VM trước khi bạn khởi động nó trong một môi trường có quyền truy cập vào mạng nội bộ của bạn.

Nếu / khi bạn có VM và chạy, bạn sẽ có thể gấp mã nguồn vào kho lưu trữ mã thông thường, như bạn (có thể) đã thực hiện chỉ với một kho lưu trữ mã nguồn được phân phối.


11
Không phải +1 duy nhất tôi đã đưa ra câu trả lời cho câu hỏi này, mà là câu trả lời duy nhất đề cập đến việc đưa mã vào kiểm soát phiên bản nội bộ. Tôi hy vọng VM cũng bao gồm một kho lưu trữ, nhưng tôi sẽ không đặt cược vào nó và nó có thể chỉ có phiên bản mã được phát hành.
Mike Sherrill 'Nhớ lại mèo'

18

Tôi sẽ lo lắng rằng có một cái gì đó được cấu hình trong máy không có giấy tờ, khó tái tạo hoặc không được chấp nhận trong cấu hình tiêu chuẩn của bạn.

Ymmv, nhưng tôi không thực sự xem xét việc phát triển được thực hiện cho đến khi dự án có thể được chứng minh để xây dựng các máy dev tiêu chuẩn và được triển khai trên các máy chủ / máy khách hàng hóa.


1
+1 về việc đảm bảo VM chỉ là một tính năng tiện lợi. Nếu không, bạn có thể kết thúc với một cái gì đó chỉ xây dựng trên VM đó bởi vì nó dựa vào một số trình biên dịch hoặc phiên bản liên kết không có giấy tờ hoặc một cái gì đó kinh khủng không kém.
ptyx

10

Trong một vài dự án của tôi, tôi đã phải chiến đấu hết mình để có được phần mềm được phân phối theo cách này. Đó là một định dạng tuyệt vời.

Hãy chắc chắn rằng bạn:

  1. Lấy mã nguồn của mỗi bản phát hành bạn nhận được từ nhà thầu và hợp nhất nó vào hệ thống kiểm soát nguồn của riêng bạn
  2. Nhận tài liệu về thiết lập môi trường của VM và có thể sao chép nó trong nhà. Thêm tài liệu để kiểm soát nguồn của bạn là tốt

Lợi ích kèm theo:

  1. Nếu bạn lưu trữ các bản phát hành ở định dạng VM (lưu .vhd hoặc một cái gì đó), việc đưa chúng lên và chạy vài năm trở nên dễ dàng hơn, ngay cả khi nhóm ban đầu bị phân mảnh hoặc biến mất.
  2. Nó dễ dàng hơn nhiều để chạy các phiên bản khác nhau cạnh nhau.
  3. Với một số tích hợp VMWare (cũng có thể có với HyperV), bạn có thể tự động tích hợp chúng vào bản dựng CI.
  4. Nó tiết kiệm thời gian của nhà phát triển (lúc đầu), vì có rất ít thiết lập môi trường.

Tôi muốn nói đi cho nó.


Hừm. Điểm tốt.
MGOwen

1
Thời gian thiết lập môi trường là rẻ so với hiệu suất chậm theo thời gian. Chúng tôi có một máy ảo như thế này, chúng tôi tạo ra các bản phát hành, nhưng đối với việc sử dụng hàng ngày, phương thức VM quá chậm chạp và bạn chỉ có thể sử dụng một màn hình (trong hầu hết các trường hợp). Nó giống như cái chết hơn 1000 lần so với việc chặt đầu sạch sẽ.
thuyền viên

@ Mark0978 Tôi nghĩ rằng # 4 là một tình huống YMMV, chúng tôi đã mất ba tuần để thiết kế lại thiết lập môi trường từ tài liệu, bởi vì chúng tôi không còn có quyền truy cập vào thiết lập máy chủ ban đầu (IIS 6+ một loạt các thư viện / trình xử lý http của bên thứ 3) . Quan điểm của tôi là có một ví dụ làm việc là hữu ích. Hầu hết những lời chỉ trích tôi từng nghe thường là do máy chủ VM không đủ tốt. Haha- 'chặt đầu sạch sẽ.'
Zachary Yates

1
Tôi đã thực sự nghĩ về nó như một hình phạt môi trường phát triển (có thể không phải là những gì được yêu cầu), làm chậm nhà phát triển tất cả thời gian chỉ là không đáng. Tất cả các máy chủ sản xuất của chúng tôi chạy trên máy ảo trong một cơ sở lưu trữ, nhưng chúng đều là các máy chủ phi đồ họa.
thuyền viên

1
@ Mark0978 Tôi thích cách mà anh chàng đó viết. Tôi đoán tôi đã không làm rõ quan điểm của mình với # 4 rõ ràng. Tôi không ủng hộ việc sử dụng máy ảo chậm. Khi bạn có một hoặc hai ngày để làm việc và bạn mất ba tuần để thiết lập môi trường, chỉ cần sử dụng vm. Bạn phải nhận thức được toàn bộ tình huống.
Zachary Yates

6

Đó thực sự là loại điều đáng lẽ phải được giải quyết trong hợp đồng ban đầu. Họ có thể đã đi trên và hơn thế nữa. Tôi sẽ không nhận được hướng dẫn cấu hình mà không phải trả thêm tiền, vì nó đòi hỏi nhiều công việc hơn từ phía họ.

Tôi đã từng ở trong một tình huống tương tự như của bạn trước đây. Môi trường phát triển của chúng tôi là Windows / Cygwin và chúng tôi đã có một chuyến viếng thăm của nhà cung cấp trong một tuần để viết một số mã giao diện với chúng tôi. Họ chủ yếu sử dụng Linux, vì vậy chúng tôi đã thiết lập máy ảo cho Linux trong tuần họ ở đây. Nó hoạt động khá tốt khi họ ở đây và chúng tôi gặp khó khăn khi chuyển sang Cygwin sau khi họ rời đi.

Nghe có vẻ như tôi đang đánh giá thấp khả năng của chính mình. Thiết lập một IDE không khó lắm, thậm chí không có ví dụ hoạt động để so sánh nó với. Tôi sẽ quan tâm hơn về việc vi phạm các thỏa thuận cấp phép Windows và CodeWar Warrior. Nếu bạn được cấp phép hợp lệ, bạn sẽ có thể nhận được hỗ trợ từ Freescale cho bất kỳ vấn đề thiết lập nào.


4

Như FrustratedWithFormsDesigner đã nói , bạn cần biết cách thiết lập máy cho chính mình. Tuy nhiên tôi muốn nói thêm rằng bạn có khả năng có thể yêu cầu họ cung cấp một tập lệnh cấu hình máy cho bạn, thay vì toàn bộ VM. Nếu tập lệnh được viết đủ tốt, bạn sẽ có tài liệu cập nhật chính xác về cách thiết lập máy (bằng cách đọc mã nguồn), cộng với tập lệnh sẽ làm điều đó cho bạn, giúp bạn tiết kiệm thời gian mỗi khi bạn cần Máy mới.

Một công cụ tôi đang thử nghiệm để giúp chuẩn hóa / tự động hóa việc thiết lập một máy Windows mới là Chocolatey .

Chocolatey NuGet là Trình quản lý gói máy, hơi giống apt-get, nhưng được tích hợp sẵn Windows.

Bạn có khả năng có thể xây dựng các gói Chocolatey của riêng mình khá dễ dàng, sau đó tạo tập lệnh PowerShell sẽ cài đặt và định cấu hình thực tế mọi thứ.


Theo tôi hiểu thì có một công cụ gọi là Vagrant được chế tạo riêng cho nhiệm vụ này.
M. Dudley

3

Môi trường chạy chậm không phải là một vấn đề, chỉ cần ném bộ nhớ và CPU vào nó. Chi phí hoạt động của VM hiện đại cho loại máy tính để bàn giống như hầu hết sự phát triển SW là rất nhỏ, nó được lưu lại nhiều lần bằng cách không cần thực hiện bất kỳ thiết lập nào khi thay đổi phần cứng.


3

Tôi đã có thể nghĩ rằng hợp đồng phát triển sẽ quy định các sản phẩm và nghĩa vụ của nhà thầu đối với bạn.

Tối thiểu tôi sẽ yêu cầu xem qua và tài liệu về cách cấu hình hoạt động và điều quan trọng đến mức bạn có thể tạo lại dự án, tự xây dựng và triển khai nó.

Về việc có một cái gì đó sẵn sàng để đi, tôi nghĩ VM hoàn toàn chấp nhận được.

Tôi chắc chắn sẽ được thúc đẩy cho tài liệu mặc dù. Tôi sẽ do dự nếu không có nó bởi vì trừ khi bạn có hiểu biết cao về cách thức hoạt động của nó, bạn có thể vượt qua một thùng trong tương lai, đặc biệt nếu bạn cần tự hỗ trợ ứng dụng.


Thật không may, tôi đã không ở công ty này khi hợp đồng được thực hiện. Tôi không có quyền truy cập vì tôi không phải là thành viên của ban quản lý, vì vậy tôi không chắc nó quy định gì.
CFL_Jeff

2

Ngay cả đối với các hệ thống nhúng được phát triển nội bộ, điều quan trọng là phải có một tài liệu mô tả cách thiết lập môi trường xây dựng. Bạn cũng cần lưu trữ tất cả các tệp nhị phân / cài đặt tệp của các công cụ và thư viện cần thiết để thiết lập môi trường xây dựng.


1

Tôi sẽ không chấp nhận VM dưới dạng mã có thể phân phối được vì nó khiến việc cập nhật trở nên khó khăn. Bạn phải có VM đó như một hình ảnh vàng để thực hiện công việc phát triển. Điều đó làm cho nó khó hơn để làm mod. Một nhà phát triển phải định dạng lại hoặc có được một máy mới, họ phải cài đặt VM và kéo VM.

Khi bạn chỉnh sửa, bạn phải cam kết một "bản sao vàng" mới của VM. Tại sao bạn muốn quản lý một tệp nhị phân lớn như thế trong kiểm soát nguồn? Không thể khác được, và theo kinh nghiệm của tôi, cố gắng kiểm soát nguồn bản sao vàng của bất kỳ thứ gì nhị phân không kết thúc tốt. Trừ khi bạn có thể duy trì sự kiểm soát chặt chẽ đối với người chỉnh sửa bản sao vàng, bạn sẽ kết thúc với những thứ trong đó không có giấy tờ và không ai biết về nó.

Nếu nhà phát triển muốn phân phối phần mềm cho tôi theo hình thức đó, tôi sẽ tìm một nhà phát triển khác. Điều này cho tôi biết họ không đủ chuyên nghiệp để loại bỏ các phụ thuộc của họ, hoặc ít nhất là ghi lại chúng.

Tôi cũng có chúng:

  1. Tạo một tệp văn bản được kiểm tra vào kiểm soát nguồn với mã. Nó liệt kê tất cả các phụ thuộc mà bạn cần để khởi động dự án, không phải là một phần của repo kiểm soát nguồn (ví dụ, CodeWar Warrior, bất kỳ công cụ dòng lệnh nào hoặc các ứng dụng bên ngoài khác mà bạn phụ thuộc).

  2. Một kịch bản để cài đặt các phụ thuộc. Vì bạn đang ở trên Windows, nên không quá khó để tạo tập lệnh Chocolatey để tự động hóa việc thiết lập môi trường dev. Bất kỳ sự phụ thuộc nào bạn có mà không phải là các gói sô cô la, bạn có thể thực hiện. Ví dụ: bạn có thể cài đặt các công cụ thương mại nặng như Visual Studio và SQL Server thông qua Chocolatey. Các gói đó cài đặt các phiên bản dùng thử, có đầy đủ tính năng và có thể được mở khóa bằng cách nhập khóa cấp phép. Vì vậy, điều tương tự có thể được thực hiện với CodeWar Warrior và bất kỳ phụ thuộc nào khác mà bạn có cho môi trường dev của mình.

Có thể nhà phát triển của bạn thực sự đủ tốt để bạn vẫn muốn làm việc với anh ấy / cô ấy, nhưng không giỏi trong công cụ tự động hóa này. Điều đó cũng tốt, nếu đó là trường hợp, tôi sẽ tự mình thực hiện phần tự động hóa, làm việc với anh ấy / cô ấy để xác định các phụ thuộc và làm cho kịch bản hoạt động, hoặc tôi sẽ nhờ một nhà phát triển khác giỏi tự động hóa thực hiện nó . Nó nên được thực hiện khi bắt đầu dự án. Một bản sao sạch, barebones của Win8 VM vẫn sẽ hữu ích vì bạn có thể sử dụng nó để kiểm tra tập lệnh sô cô la của mình.


0

Tôi không nghĩ có vấn đề gì với điều này, tôi đã thấy các hệ thống quản lý nội dung cài đặt dưới dạng VM và từ những gì bạn nói các nhà thầu đã cho bạn khả năng tự duy trì và mở rộng ứng dụng.

Tuy nhiên, như các áp phích khác đã lưu ý rằng có hai điều tôi sẽ làm. Trước tiên, hãy đảm bảo rằng khi cài đặt VM, hãy đặt nó trên một máy tách biệt với mạng của bạn. Bạn sẽ không tải xuống một EXE không xác định từ internet và cài đặt nó trên máy của bạn.

Thứ hai, nếu có thể, hãy giữ bản sao bị cô lập này làm tài liệu tham khảo để cài đặt phiên bản nội bộ. Tôi nói nếu có thể bởi vì tôi không biết những áp lực kinh doanh mà bạn phải chịu. Cuối cùng, bộ phận / lập trình viên CNTT của công ty bạn sẽ chịu trách nhiệm cho ứng dụng này. Vì vậy, bạn càng biết nhiều về nó thì càng tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.