Phân phối liên tục

Phân phối liên tục (tiếng Anh: Continuous delivery - viết tắt: CD) là một cách tiếp cận của kỹ thuật phần mềm, trong đó các đội sẽ sản xuất phần mềm trong chu kỳ ngắn, đảm bảo rằng các phần mềm có thể được phát hành một cách tin cậy bất cứ lúc nào. Nó nhằm mục đích build, kiểm thử, và phát hành phần mềm nhanh hơn và thường xuyên hơn. Cách tiếp cận này giúp giảm chi phí, thời gian và nguy cơ khi thay đổi bằng cách gia tăng cập nhật các ứng dụng trong sản phảm. Một quá trình triển khai đơn giản và lặp lại là điều quan trọng cho Phân phối liên tục (CD).

Mối quan hệ với DevOps

CD và DevOps tương tự nhau như ở mặt ý nghĩa của chúng, và thường bị hòa trộn vào nhau, nhưng chúng là hai khái niệm khác nhau. DevOps có phạm vi rộng hơn và xoay quanh thay đổi văn hóa, đặc biệt là sự hợp tác của các đội khác nhau khi tham gia vào làm phần mềm (nhà phát triển, nhà điều hành, QA,...) cũng như việc tự động hóa quá trình phân phối phần mềm. CD mặt khác, là một cách tiếp cận để tự động hóa khía cạnh phân phối, và tập trung vào việc mang các quá trình lại với nhau để thực hiện chúng nhanh hơn và thường xuyên hơn. Như vậy, DevOps có thể là một sản phẩm của CD, và CD đi trực tiếp vào DevOps.

Mối quan hệ với Triển khai liên tục (Continuous deployment)

Phân phối liên tục đôi khi bị nhầm lẫn với Triển khai liên tục. Triển khai liên tục có nghĩa là mọi thay đổi được triển khai tự động lên sản phẩm. Phân phối liên tục có nghĩa là đội làm việc đảm bảo rằng mọi thay đổi có thể được triển khai lên sản phẩm, nhưng cũng có thể không cần phải triển khai, thường do lý do kinh doanh. Để làm được Triển khai liên tục người ta phải làm được cả Phân phối liên tục.

Nguyên tắc

Phân phối liên tục xử lý các khái niệm phổ biến của đường ống triển khai (deployment pipeline) như là một Poka-Yoke tinh giản: một bộ kiểm chứng thực mà qua đó một phần mềm phải vượt qua trước để có thể phát hành. Mã nguồn được tổng hợp nếu cần thiết, và sau đó đóng gói bởi một máy build mỗi lần thay đổi được commit vào nguồn kiểm soát kho lưu trữ, sau đó kiểm thử bởi một số của các kỹ thuật khác nhau (có thể, bao gồm cả kiểm thử thủ công) trước khi nó được đánh dấu đủ tiêu chuẩn phát hành.

Công cụ và loại công cụ

Phân phối liên tục giúp tự động quá trình từ mã nguồn tới sản phẩm. Có rất nhiều công cụ giúp thực hiện tất cả hay một phần trong quá trình này. Những công cụ này là một phần của đường ống triển khai, trong đó bao gồm Phân phối liên tục. Các loại công cụ thực thi các phần khác nhau của quá trình bao gồm: Tích hợp liên tục, tự động phát hành ứng dụng, tự động build, quản lý vòng đời ứng dụng.

Kiến trúc của Phân phối liên tục

Để thực hành CD một cách hiệu quả, phần mềm phải đáp ứng một tập hợp các Yêu cầu đặc biệt có tính kiến trúc (Architecturally Significant Requirements - ASRs) như Triển khai được, Sửa được, và Kiểm thử được. Những ASRs yêu cầu sự ưu tiên hàng đầu và không được xem nhẹ.

Thực hiện và sử dụng

Các sách về CD của Jez Humble và David Farley khá phổ biến. Các công ty ngày nay thực hiện các nguyên tắc và mô hình mẫu của CD. Sự khác biệt trong lĩnh vực, ví dụ như dược và web, vẫn còn quan trọng và ảnh hưởng đến việc thực hiện và sử dụng CD. Các công ty nổi tiếng có cách tiếp cận này bao gồm Yahoo.com Amazon.com, Facebook, Google, Paddy Power và Wells Fargo.