Thursday, November 21, 2024

Thuật ngữ Mutable và Immutable

-

Hệ thống Mutable là gì?

Trong quản trị hệ thống, Mutable và Immutable thường được sử dụng để mô tả cách quản lý và triển khai hệ thống.

Hệ thống Mutable (hay còn gọi là Mutable Infrastructure) được định nghĩa là hệ thống có thể thay đổi trạng thái hoặc cấu hình của mình sau khi được triển khai. Khi muốn thay đổi cấu hình của hệ thống, người quản trị sẽ thực hiện các thay đổi trực tiếp trên hệ thống đó. Ví dụ: sửa đổi cấu hình mạng, thêm hoặc xóa ứng dụng, cài đặt phần mềm mới,… Hệ thống Mutable thường được sử dụng trên các hệ thống có quy mô nhỏ hoặc đơn giản, không yêu cầu tính linh hoạt cao trong triển khai và quản lý.

Ví dụ cho Mutable.

Có một máy ảo (Virtual Machine – VM1) đang chạy ứng dụng web (Web V1) trên một máy chủ ảo. Ứng dụng web này được triển khai bằng phần mềm máy chủ web Apache phiên bản 1 (Apache V1).

Khi có phiên bản mới của ứng dụng web (Web V2), ta muốn triển khai phiên bản mới này trên VM1. Để triển khai tự động, ta sử dụng công cụ triển khai tự động như Ansible.

Khi triển khai, nếu không có lỗi nào xảy ra, ứng dụng web Web V2 sẽ được triển khai trên VM1 bằng phần mềm máy chủ web Nginx phiên bản 2 (Nginx V2). Tuy nhiên, nếu VM1 đang chạy Nginx phiên bản 1.5 hoặc 1.6, thì sẽ xảy ra lỗi và việc triển khai Web V2 sẽ không thành công.

Vì vậy, để đảm bảo thành công khi triển khai, cần kiểm tra và đảm bảo rằng VM1 đang chạy phiên bản phần mềm máy chủ web Nginx đủ mới để hỗ trợ phiên bản ứng dụng web mới. Nếu không đủ mới, ta phải cập nhật Nginx trước khi triển khai phiên bản mới của ứng dụng web.

Hệ thống Immutable là gì?

Hệ thống Immutable (hay còn gọi là Immutable Infrastructure) được định nghĩa là hệ thống không thể thay đổi trạng thái hoặc cấu hình của mình sau khi được triển khai. Khi muốn thay đổi cấu hình hoặc cập nhật phần mềm của hệ thống, người quản trị sẽ tạo ra một phiên bản mới của hệ thống với cấu hình hoặc phần mềm mới. Ví dụ: triển khai một AMI (Amazon Machine Image) mới trên AWS, triển khai một container mới với phiên bản mới của ứng dụng,… Hệ thống Immutable thường được sử dụng trên các hệ thống có quy mô lớn, phức tạp, yêu cầu tính linh hoạt cao trong triển khai và quản lý.

Ví dụ cho Immutable.

Nếu sử dụng kiến trúc Immutable, thay vì cập nhật phiên bản trên một Virtual Machine đang chạy Web V1 trên Apache V1, chúng ta sẽ tạo ra một VM hoàn toàn mới với phiên bản mới Web V2 chạy trên Nginx V2. Điều này đảm bảo rằng VM cũ và mới đều hoàn toàn độc lập với nhau, không có sự phụ thuộc nào giữa hai phiên bản Web và hai loại máy chủ webserver khác nhau.

Việc tạo ra VM mới cũng giúp đảm bảo rằng nếu có bất kỳ lỗi nào trong quá trình triển khai thì VM cũ sẽ không bị ảnh hưởng. Ngoài ra, cũng giúp đảm bảo rằng VM mới được tạo ra từ một hình ảnh cố định (immutable image) được xây dựng sẵn, vì vậy đảm bảo tính đồng nhất trong việc triển khai.

Mô hình Mutable và Immutable hiện nay.

Hiện nay, hầu hết các hệ thống đang chuyển sang sử dụng mô hình Immutable bởi vì nó có nhiều ưu điểm như độ tin cậy cao, dễ dàng quản lý và triển khai, khả năng mở rộng tốt và an toàn hơn. Mô hình Mutable vẫn được sử dụng trong một số trường hợp đặc biệt như các hệ thống legacy hoặc các ứng dụng có tính tương tác cao. Tuy nhiên, việc sử dụng mô hình Mutable hay Immutable phụ thuộc vào yêu cầu và đặc tính của từng hệ thống cụ thể.

Ưu và nhược điểm của Mutable và Immutable.

Mô hình Mutable và Immutable đều có những ưu và nhược điểm riêng.

Ưu điểm của Mutable:

  • Dễ quản lý và cấu hình: do hệ thống có thể được thay đổi, sửa chữa, cấu hình tùy ý nên quản lý và bảo trì hệ thống dễ dàng hơn.
  • Phù hợp với các ứng dụng có thể được cập nhật thường xuyên hoặc đang trong quá trình phát triển.
  • Chi phí thấp hơn: khi chạy một hệ thống Mutable, do phần cứng có thể được sử dụng cho nhiều mục đích khác nhau, do đó, chi phí phần cứng cần cho mỗi mục đích sẽ giảm xuống.

Nhược điểm của Mutable:

  • Không đảm bảo tính nhất quán: do hệ thống có thể bị thay đổi và cấu hình tùy ý nên tính nhất quán của hệ thống có thể bị ảnh hưởng.
  • Không an toàn: khi hệ thống bị tấn công hoặc lỗi xảy ra, các thay đổi có thể gây ra tổn hại hoặc mất mát dữ liệu.
  • Khó quản lý khi quy mô lớn: khi hệ thống có quy mô lớn và phức tạp, quản lý và bảo trì hệ thống trở nên khó khăn hơn.

Ưu điểm của Immutable:

  • Tính nhất quán: do hệ thống không thể bị thay đổi nên tính nhất quán được đảm bảo.
  • An toàn hơn: do hệ thống không thể bị thay đổi nên an toàn dữ liệu được đảm bảo.
  • Dễ quản lý khi quy mô lớn: khi hệ thống có quy mô lớn và phức tạp, quản lý và bảo trì hệ thống dễ dàng hơn.

Nhược điểm của Immutable:

  • Khó quản lý và bảo trì: vì hệ thống không thể thay đổi, nên quản lý và bảo trì hệ thống trở nên khó khăn hơn.
  • Chi phí cao hơn: vì mỗi thay đổi trong hệ thống đều cần phải triển khai lại toàn bộ hệ thống, do đó, chi phí triển khai và cập nhật hệ thống có thể tăng lên.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories