Giải pháp cho việc phát triển & phân phối phần mềm

Ảo hóa cho phép một hay nhiều máy ảo (VM - virtual machine) chạy trên một nền phần cứng có sẵn. Một ví dụ dễ thấy nhất của ảo hóa là việc cài đặt một máy ảo chạy hệ điều hành (HĐH) Linux trên nền HĐH Windows. Lí do để ảo hóa thì có nhiều, nhưng có thể tóm tắt một số ý chính như sau:
(Hình 1: Mỗi máy ảo có phần cứng ảo như CPU, bộ nhớ, không gian đĩa cứng, card mạng và thiết bị ngoại vi để dựa trên đó mà cài đặt HĐH và các ứng dụng. Với mô hình này, một phần cứng có thể chia sẻ bởi nhiều máy ảo khác nhau để có thể tận dụng tối đa công suất làm việc. )

- Tiết kiệm tài nguyên: Nếu trước đây, mỗi máy chỉ có thể chạy một HĐH vào một thời điểm, dẫn đến đòi hỏi phải có các máy khác nhau chạy các hệ điều hành khác nhau. Với ảo hóa, một máy có thể chạy nhiều máy ảo, trong đó mỗi máy ảo chạy một hệ điều hành. Cách làm này có thể tận dụng tối đa tài nguyên như CPU và bộ nhớ. Rộng hơn là tiết kiệm tiền mua máy và điện để chạy nó. Hiện nay ảo hóa chính là nền tảng của điện toán đám mây (hay điện toán máy chủ ảo).

- Giúp hạn chế và cô lập lỗi: Nếu một máy chạy hai chương trình quan trọng, lỗi của một chương trình có thể ảnh hưởng đến chương trình còn lại (ví dụ làm treo máy). Nếu cho hai chương trình chạy trên 2 máy ảo khác nhau sẽ giảm sự ảnh hưởng của chương trình này lên chương trình kia. Một ví dụ khác, giả sử chúng ta muốn có môi trường để kiểm thử (test) chương trình mới mà không muốn ảnh hưởng đến môi trường hiện tại, cách tốt nhất là thử chương trình mới trên máy ảo để kiểm tra độ an toàn và tin cậy trước khi cài vào hệ thống hiện có.

- Hỗ trợ mô phỏng: Với ảo hóa, chúng ta có thể mô phỏng các môi trường làm việc khác nhau, ví dụ các phiên bản khác nhau của HĐH, các cấu hình phần cứng (ví dụ bộ nhớ bị hạn chế), để kiểm tra tính tương thích của ứng dụng.

Khái niệm về Virtual Appliance

Virtual appliance (VA) là sự tích hợp của hệ điều hành và các ứng dụng (đã được cài đặt và cấu hình sẵn trên HĐH đó) thành một đơn vị duy nhất nhằm phục vụ cho một mục đích chuyên biệt nào đó tạm dịch là máy ảo chuyên dụng. Kết quả của sự tích hợp thường là một hay nhiều tập tin được lưu theo định dạng sao cho có thể thực thi được trên các phần mềm hỗ trợ máy ảo (ví dụ VMWare Player).

Một ví dụ điển hình cho VA là MediaWiki virtual appliance. Thông thường, để chạy MediaWiki (phần mềm ứng dụng tương tự như Wikipedia), người dùng cần phải cài đặt và cấu hình các phần mềm như PHP, hệ quản trị cơ sở dữ liệu MySQL, máy chủ web Apache và MediaWiki trên một HĐH nào đó (ví dụ Linux). Việc cài đặt này tốn thời gian và đòi hỏi người dùng phải có kiến thức để cấu hình và tích hợp các phần mềm lại với nhau. Với MediaWiki VA, HĐH và các phần mềm trên đã được cài đặt, cấu hình và tích hợp sẵn thành một thực thể chung nhất bởi nhà cung cấp. Người dùng chỉ cần thực thi nó trên một máy ảo là có ngay ứng dụng MediaWiki mà không phải mất thời gian và công sức như cách làm thông thường trước đây.

Để chạy được VA trên phần cứng máy tính sẵn có, bạn cần phải có:
  • Phần mềm hỗ trợ thực thi máy ảo. WMWare Player và VMWare Server là các phần mềm như vậy.
  • VA phục vụ cho nhu cầu của bạn. Ví dụ nếu bạn muốn dùng MediaWiki, bạn có thể tải VA này về tại: http://wiki.rpath.com/wiki/Appliance:MediaWiki_Appliance. Một số địa chỉ mà bạn có thể tìm kiếm các VA:
  • Cài đặt và chạy VA: Thông thường các VA được cung cấp dưới dạng một tập tin nén, ví dụ dạng .rar hay .zip. Sau khi giải nén, bạn sẽ tìm thấy tập tin ảnh máy ảo (ví dụ nếu dùng VMWare thì tập tin này có phần mở rộng là vmx) và nạp nó vào phần mềm hỗ trợ thực thi máy ảo. Sẽ có một số thao tác đơn giản khác phải tuân theo trước khi có thể sử dụng, ví dụ chấp nhận các điều khoản liên quan đến bản quyền, thay đổi mật khẩu người quản trị...
Sự khác nhau giữa VA và VM
 
Một máy ảo có thể xem như một máy tính thông thường, trong đó các tài nguyên như CPU, bộ nhớ RAM, đĩa cứng và card mạng là ảo. Để có thể chạy được ứng dụng, người dùng cần phải cài đặt và cấu hình hệ điều hành và các ứng dụng trên đó. VA khác máy ảo một chút ở chỗ, hệ điều hành và các ứng dụng đã được cài đặt và cấu hình sẵn.

Lợi ích của VA

Đối với các nhà phát triển phần mềm: Một trong những vấn đề tốn nhiều công sức và tiền bạc của các nhà phát triển phần mềm đó là phải kiểm thử tính tương thích của phần mềm với các thiết bị phần cứng khác nhau (ví dụ máy hỗ trợ bộ vi xử lí 32 bit hoặc 64 bit), các phiên bản khác nhau của các hệ điều hành (ví dụ Linux và Windows, hay Windows XP và Windows Vista), các phần mềm hệ thống hỗ trợ ứng dụng (ví dụ web server IIS hay Apache). Do không kiểm soát được môi trường của người dùng cuối, nên mỗi khi có sự thay đổi, ví dụ như cập nhật các miếng vá hệ thống, sẽ làm nảy sinh các lỗi không lường trước được. Điều này dẫn đến chi phí hỗ trợ và bảo trì rất lớn. Bằng cách dùng VA, nhà phát triển phần mềm chỉ định sẵn hệ điều hành, phần mềm hệ thống và phần mềm ứng dụng liên quan, cấu hình và đóng gói sẵn dưới dạng hộp đen trước khi chuyển đến người dùng cuối, nhờ vậy giảm chi phí phát triển, kiểm thử và bảo trì phần mềm. Một ví dụ điển hình đó là trước đây thay vì phải phát triển hai phiên bản phần mềm chạy trên cả hai hệ điều hành Linux và Windows, thì nay chỉ cần phát triển trên một hệ điều hành, ví dụ là Linux; sau đó tích hợp Linux vào VA. Lúc đó, người dùng Windows chỉ cần chạy VA này dưới dạng máy ảo.

Hình 2 - Sự khác nhau giữa VM và VA. Để có thể chạy được ứng dụng trên VM, bạn phải tự cài đặt HĐH và các ứng dụng liên quan. Với VA, HĐH và các ứng dụng đã được cài đặt và tích hợp sẵn.

Đối với người dùng cuối: Bằng cách sử dụng VA, người dùng sẽ tiết kiệm thời gian cài đặt và cấu hình các phần mềm, giảm thiểu các rủi ro có thể có liên quan đến vấn đề tương thích mỗi khi có các bản cập nhật mới liên quan đến hệ thống. Ngoài ra, với việc chạy mỗi ứng dụng chuyên biệt dưới dạng một VA, tính độc lập và an toàn của hệ thống được nâng cao.

Đối với các nhà quản trị hệ thống: Trong các tổ chức lớn nơi mà máy móc và phần mềm đa dạng, việc triển khai phần mềm mới sẽ rất phức tạp do phải kiểm thử tính tương thích với hệ thống hiện có. Với việc dùng VA, mọi thứ sẽ trở nên đơn giản rất nhiều.

Hình 3 - Mô hình dùng VA. Nhà cung cấp phần mềm tạo ra VA tích hợp sẵn HĐH và phần mềm trước khi chuyển đến người dùng. Người dùng cài đặt và chạy VA trên hệ thống phần cứng của mình. VA đã được cấu hình để có thể cập nhật các bản vá mới một cách nhanh chóng và tiện lợi. 

Xây dựng VA

Bạn cần phải có các phần mềm hỗ trợ xây dựng VA. VMWare Studio của VMWare hay rBuiderOnline của rPath là hai trong số các phần mềm hỗ trợ khá thông dụng hiện nay. Bạn sẽ cần phải chọn trước hệ điều hành và các phần mềm hệ thống cũng như các thư viện liên quan nào cần được tích hợp vào VA của bạn. Sau đó chọn dạng kết xuất của VA. Các dạng kết xuất có thể tham khảo tại http://wiki.rpath.com/wiki/rBuilder_Online:Build_Types. Ví dụ, nếu bạn muốn VA chạy được trên các phần mềm hỗ trợ máy ảo của VMWare thì chọn cách kết xuất theo định dạng .vmx.

Một kịch bản sử dụng VA

Ở các trường đại học, các phòng máy thực hành của sinh viên thường có vài chục đến vài trăm máy, phục vụ cho nhiều nhu cầu thực hành khác nhau của sinh viên như lập trình ứng dụng với Visual Studio trên Windows, lập trình mạng trên Linux. Cách làm thông thường nhất là cài đặt các phần mềm cần thiết cho toàn bộ nhu cầu có thể có lên một máy, sao đó dùng các phần mềm như Norton Ghost để tạo các ảnh (disk image) và sao chép sang các máy còn lại. Cách làm này có hạn chế là mỗi khi có phần mềm hay bản cập nhật mới là phải sao chép lại từ đầu. Hơn nữa, cách làm này sẽ hạn chế sinh viên khi muốn thử nghiệm các môi trường hay ứng dụng mới vì có thể sẽ gây các ảnh hưởng không lường trước được với hệ thống hiện có cần ổn định để phục vụ cho các sinh viên khác. Với việc dùng VA, các vấn đề này hầu như sẽ được giải quyết. Quản trị hệ thống sẽ tạo VA dành cho các sinh viên lập trình ứng dụng, trong đó tích hợp HĐH Windows cùng các ứng dụng Visual Studio trên đó; và tạo ra VA khác dành cho sinh viên lập trình mạng, trong đó tích hợp hệ điều hành Linux và các ứng dụng liên quan. Mỗi khi có nhu cầu mới, quản trị hệ thống chỉ cần tạo ra một VA mới là có thể triển khai ngay đến toàn bộ hệ thống mà không ảnh hưởng đến hệ thống hiện tại. Sinh viên có thể tự do thử nghiệm các môi trường và ứng dụng mới một cách dễ dàng bằng cách chạy VA liên quan. Với mô hình này, trên phần cứng máy tính hiện có chỉ cài đặt tối thiểu hệ điều hành và phần mềm hỗ trợ máy ảo là đủ. Mỗi nhu cầu riêng biệt sẽ được phục vụ bởi một VA tương ứng.

Tham khảo:
[1] http://download3.vmware.com/media/vam/vam_demo.html
[2] http://www.vmware.com/files/pdf/vam_gettingstarted.pdf
[3] http://wiki.rpath.com/wiki/rBuilder_Online:Build_Types 

Theo Lê Đình Duy (theo PC World VN)