Hai thuật ngữ rất khác nhau.
Chúng ta hãy bắt đầu với immutability
, có nghĩa đen là "không có đột biến" hoặc "không thay đổi". Theo nghĩa của DevOps, điều đó có nghĩa là một khi bạn đã tạo ra một vật phẩm, có thể là hình ảnh chứa hoặc hình ảnh VM hoặc có thể là một gói từ mã được biên dịch - bạn tuyên bố rằng bạn sẽ không bao giờ thay đổi nó. Thông thường nếu có bất kỳ thay đổi nào là bắt buộc, bạn tuyên bố rằng một phiên bản mới của "điều" sẽ được tạo ra thay thế.
Thuật ngữ này idempotence
có nghĩa là khi thay đổi được áp dụng nhiều lần, trạng thái bị đột biến (thay đổi) chỉ một lần . Đầu tiên, nó đã giả định rằng sẽ có những thay đổi được áp dụng, điều đó có nghĩa là bạn không thể có một cái gì đó bất biến và có những hành động bình thường được thực hiện cho nó (không có hành động nào được thực hiện theo hợp đồng).
Trong việc sử dụng các công cụ quản lý cấu hình, idempotence
được sử dụng trong một số trường hợp khi áp dụng cùng một thay đổi nhiều lần. Giống như thêm dòng nói localhost
vào /etc/hosts
tệp, bạn không thực sự cần nhiều dòng như vậy và nếu một dòng đã tồn tại, sẽ không an toàn khi không thử nối lại.
Cũng idempotent
là một thuật ngữ được sử dụng để mô tả các hành động cố gắng thay đổi mọi thứ, trong khi immutable
được sử dụng để mô tả các danh từ (đối tượng) được đặt chống lại các thay đổi được thực hiện cho chúng.
Tại sao một immutable
đối tượng hữu ích? Bởi vì khi bạn sao chép nó xung quanh, ví dụ từ môi trường dev sang qa để sản xuất. Bạn đã biết khá nhiều (nhưng không phải tất cả mọi thứ) liên quan đến cách nó sẽ hành xử. Trong nhiều trường hợp, các bộ phận đang hoạt động sẽ nhất quán và các bộ phận bị hỏng cũng sẽ phù hợp.
Tại sao idempotent
các hành động hữu ích? Bởi vì khi bạn muốn thay đổi trạng thái của một số đối tượng, trong nhiều trường hợp, chỉ hữu ích khi xác minh rằng thay đổi đã được áp dụng và áp dụng các thay đổi chỉ trong trường hợp bắt buộc. Ví dụ: khi một mục cấu hình trong tệp bị thiếu hoặc có giá trị sai, sẽ rất hữu ích khi thêm nó chỉ một lần hoặc thay đổi nó chỉ một lần trong khi áp dụng hành động nhiều lần. Trong nhiều trường hợp khác, như các tệp nhật ký , bạn không muốn có các hành động bình thường vì bạn thường muốn nối thêm một dòng khác mỗi khi một số sự kiện xảy ra.
the state is not changed.
mà thay vào đó, trạng thái vẫn là cách mà hệ thống quản lý cấu hình ra lệnh. Do đó, các hệ thống tạm thời và hệ thống bất biến là tương tự nhau