Tin tức và phân tích của tất cả các thiết bị di động

Triển khai Xanh lam/Xanh lá cây và Canary: Sự khác biệt chính

Giai đoạn triển khai phần mềm đóng một vai trò quan trọng trong quá trình phát triển phần mềm ngày nay, đặc biệt là trong môi trường đám mây.

Mặc dù vậy, đây cũng là một trong những giai đoạn giao hàng bị đánh giá thấp nhất. Các doanh nghiệp thường không đầu tư đủ thời gian và năng lượng để triển khai nhanh chóng, đáng tin cậy, tự động hoặc bất kỳ điều nào trong số đó.

Hầu hết thời gian tôi vẫn gặp phải một số dạng thủ tục triển khai thủ công. Trong những trường hợp tốt hơn, ít nhất là có một danh sách kiểm tra các bước được ghi chép đầy đủ. Tệ nhất chỉ là những kế hoạch ngẫu hứng được tạo ra một cách ngẫu hứng vào những phút cuối.

Quy trình triển khai tự động luôn là một mục tiêu xa vời và là phần giữ chỗ cho lộ trình ngắn hạn hoặc trung hạn, nhưng con đường thực tế để đạt được mục tiêu đó rất gập ghềnh và không thể đoán trước. Tuy nhiên, quy trình triển khai hoàn toàn tự động và đáng tin cậy chính là chìa khóa giúp tiết kiệm đáng kể thời gian. Sau đó, bạn có thể loại bỏ nỗ lực mà hầu hết nhóm phát triển thường dành để triển khai mỗi bản phát hành sản xuất.

Chiến lược triển khai Canary và Blue-Green tận dụng tất cả những lợi thế này và bổ sung thêm nhiều lợi ích khác, tính sẵn sàng cao cũng như quy trình cài đặt và khôi phục nhanh chóng. Cho phép nhóm phát hành thường xuyên hơn và không còn nhiều đêm mất ngủ. Chúng ta hãy xem chúng mang lại điều gì và chúng khác nhau như thế nào.

Triển khai xanh lam: tổng quan

Nguồn: cncf.io

Việc triển khai Blue-Green giúp giảm thời gian ngừng hoạt động và rủi ro liên quan đến việc phát hành phần mềm mới bằng cách tạo hai môi trường giống hệt nhau: hoạt động (xanh lam) và không hoạt động (xanh lục).

Môi trường hoạt động là nơi phiên bản hiện tại của phần mềm đang chạy và người dùng đang tạo ra lưu lượng sản xuất. Môi trường không hoạt động là nơi phiên bản mới của phần mềm được triển khai và thử nghiệm.

Sau khi thử nghiệm và chuẩn bị phiên bản mới, lưu lượng truy cập sẽ được chuyển từ môi trường hoạt động sang môi trường không hoạt động, biến nó thành môi trường hoạt động mới. Bạn có thể lặp lại quá trình này nếu cần thiết.

Cũng đọc: Giải thích việc triển khai xanh lam và vai trò của nó trong DevOps

Các tính năng và lợi ích chính

Dưới đây là những đặc điểm cụ thể của quá trình triển khai Blue-Green:

  • Hai môi trường giống hệt nhau giống hệt nhau về dữ liệu và quy trình. Môi trường màu xanh lam (hoạt động) là nơi người dùng sản xuất chạy các quy trình hàng ngày của họ. Môi trường màu xanh lá cây (không hoạt động) là nơi triển khai mới được cài đặt và luôn được đồng bộ hóa với môi trường màu xanh lam.
  • Chuyển đổi lưu lượng có thể được thực hiện từ môi trường hoạt động sang môi trường không hoạt động, biến nó thành môi trường hoạt động mới. Việc chuyển đổi diễn ra ngay lập tức. Tất cả việc triển khai đều đã là quá khứ. Không có cửa sổ thời gian chết. Người dùng không cần phải làm gì để chuyển sang môi trường mới.
  • Hậu quả là sự quay trở lại nhanh chóng trong trường hợp có vấn đề. Điều này đảm bảo thời gian ngừng hoạt động tối thiểu nếu có sự cố xảy ra với bản phát hành phần mềm mới và ứng dụng vẫn có tính khả dụng cao.
  • Kiểm tra tự động là một khía cạnh quan trọng của việc triển khai Blue-Green. Nó đảm bảo rằng phiên bản mới của phần mềm được kiểm tra kỹ lưỡng trước khi được triển khai trong môi trường hoạt động.
  • Việc triển khai này là một phần của quy trình phân phối liên tục, điều này cuối cùng có nghĩa là đưa phần mềm vào sản xuất nhanh hơn và thường xuyên hơn. Vì quá trình triển khai đã hoàn tất và bạn chỉ cần thực hiện chuyển đổi lưu lượng nên nó nhanh đến mức bạn có thể thực hiện việc đó hàng ngày. Giả sử bạn nhanh chóng thực hiện các hoạt động thử nghiệm của mình.

Triển khai Canary: tổng quan

Nguồn: cncf.io

Quá trình triển khai của Canary bao gồm việc triển khai dần dần các tính năng hoặc bản cập nhật mới cho một nhóm nhỏ người dùng trước khi triển khai chúng cho toàn bộ cơ sở người dùng.

Cách tiếp cận này liên quan đến việc tạo một phiên bản mới của phần mềm và triển khai nó cho một nhóm nhỏ trong khi vẫn giữ phiên bản cũ hoạt động cho những người dùng còn lại. Nhóm phát triển đang theo dõi chặt chẽ phiên bản mới để đảm bảo nó ổn định và hoạt động như mong đợi.

Nếu mọi việc suôn sẻ, phiên bản mới sẽ được triển khai cho nhiều người dùng hơn cho đến khi nó tiếp cận được toàn bộ cơ sở người dùng. Bằng cách này, nhóm dự án giảm thiểu rủi ro phát sinh lỗi hoặc các vấn đề khác có thể ảnh hưởng đến tất cả người dùng cùng một lúc.

Mục tiêu là giảm rủi ro khi giới thiệu các tính năng mới cho lượng lớn người dùng. Vì thế việc chuyển sang phiên bản mới suôn sẻ hơn rất nhiều.

Cũng đọc: Giải thích về việc triển khai Canary và vai trò của nó trong DevOps

Các tính năng và lợi ích chính

Dưới đây là các tính năng cụ thể của quá trình triển khai Canary:

  • Trước tiên hãy triển khai phiên bản mới cho một nhóm nhỏ người dùng, sau đó dần dần triển khai phiên bản này cho nhiều người dùng hơn. Bạn giảm thiểu rủi ro phát sinh lỗi hoặc các vấn đề khác có thể ảnh hưởng đến tất cả người dùng cùng một lúc.
  • Hãy theo dõi phiên bản mới một cách cẩn thận để đảm bảo nó ổn định và hoạt động như mong đợi. Các nhà phát triển có thể nhận được phản hồi về phiên bản mới nhanh hơn, cho phép họ thực hiện những điều chỉnh cần thiết trước khi triển khai cho toàn bộ cơ sở người dùng.
  • Nếu có bất kỳ vấn đề nào phát sinh, hãy hoàn nguyên quá trình triển khai của bạn về phiên bản trước đó một cách nhanh chóng và dễ dàng. Điều này giúp tăng cường sự tin cậy của nhà phát triển và các bên liên quan trong quá trình triển khai vì nó làm giảm nguy cơ phát sinh các vấn đề có thể ảnh hưởng đến trải nghiệm người dùng.
  • Tự động hóa quá trình triển khai càng nhiều càng tốt để giảm nguy cơ lỗi của con người.

Tóm tắt: Triển khai Xanh lam/Xanh lá cây và Canary

Tính năng Triển khai Xanh lam & Xanh lục Đồng bộ hóa dữ liệu triển khai Canary Đồng bộ hóa dữ liệu liên tục giữa môi trường xanh lam và xanh lục. Một nhóm nhỏ người dùng hoặc máy chủ nhận được phiên bản mới; phần còn lại tiếp tục với phiên bản hiện tại Quá trình kích hoạt Chuyển từ môi trường hoạt động sang không hoạt động khi phiên bản mới sẵn sàng Phát hành dần dần cho một nhóm người dùng xác định đang tích cực thử nghiệm các phiên bản mới Môi trường người dùng sản xuất Không có thời gian ngừng hoạt động sản xuất; chuyển đổi liền mạch giữa các môi trường hoạt động. Một số người dùng sản xuất đang tích cực thử nghiệm phiên bản mới; các vấn đề tiềm ẩn đối với nhóm này. Tính sẵn sàng cao so với tốc độ phản hồi Ưu tiên tính sẵn sàng cao. Ưu tiên Phản hồi nhanh hơn và triển khai có kiểm soát. Giảm thiểu rủi ro Giảm thiểu khả năng xảy ra sự cố bằng cách triển khai cho một nhóm nhỏ người dùng. Thử nghiệm chủ yếu trong môi trường nhàn rỗi; người thử nghiệm có thể không nắm bắt được tất cả các vấn đề thực sự.Phương pháp tiếp cận thử nghiệmThử nghiệm chủ yếu trong môi trường không hoạt động; người thử nghiệm có thể không nắm bắt được tất cả các vấn đề thực sự. Người dùng sản xuất đóng vai trò là người thử nghiệm, phát hiện sớm các vấn đề thực sự. Các trường hợp sử dụng Netflix đáng chú ý, Amazon, Etsy, LinkedIn và IBM sử dụng Blue-Green. Netflix và Google sử dụng Canary cùng với quá trình thử nghiệm và triển khai tự động.

Triển khai Xanh lam/Xanh lục so với Canary: Tính năng

Ứng dụng

Việc triển khai Blue-Green có nghĩa là hai môi trường (xanh lam và xanh lục). Nhưng đồng thời, hai môi trường này liên tục được đồng bộ hóa về mặt dữ liệu. Điều này làm tăng nhu cầu về quá trình đồng bộ hóa dữ liệu liên tục giữa hai môi trường.

Khi phiên bản mới được kiểm tra và coi là đã sẵn sàng, lưu lượng truy cập sẽ được chuyển từ môi trường hoạt động sang môi trường không hoạt động, biến nó thành môi trường hoạt động mới.

Bạn không lãng phí thời gian triển khai mã mới và không có thời gian ngừng hoạt động trong quá trình sản xuất. Tất cả người dùng sản xuất vẫn đang làm việc trong môi trường hiện đang hoạt động và thậm chí không nhận thấy sự thay đổi.

Nguồn: aws.amazon.com

Triển khai Canary liên quan đến việc triển khai phiên bản phần mềm mới cho một nhóm nhỏ người dùng trong khi hầu hết người dùng hoặc máy chủ vẫn đang sử dụng phiên bản hiện tại. Đây là sự triển khai dần dần, không phải là một sự thay đổi hoàn toàn. Trong trường hợp này, người thử nghiệm là người dùng sản xuất trực tiếp, mặc dù họ chỉ là một tập hợp con cụ thể trong số họ. Nhóm này đang tích cực thử nghiệm phiên bản mới với quy trình sản xuất và khi nó ổn định cuối cùng, phiên bản mới sẽ được tung ra cho những người dùng còn lại.

Bạn nên lựa chọn triển khai Blue-Green nếu tính sẵn sàng cao là ưu tiên hàng đầu. Bạn có thể thích triển khai Canary hơn nếu bạn muốn phản hồi nhanh hơn và triển khai được kiểm soát nhiều hơn (mặc dù chậm hơn).

Giảm thiểu sự khác biệt rủi ro

Việc triển khai Blue-Green giúp giảm nguy cơ lỗi phát hành bằng cách nhanh chóng chuyển sang phiên bản ổn định trước đó. Cho mọi người dùng và ngay lập tức. Tất nhiên, vẫn có nguy cơ các tính năng mới sẽ bị trì hoãn đối với người dùng trong trường hợp khôi phục, nhưng ít nhất không có người dùng nào bị khóa do một số vấn đề nghiêm trọng với phiên bản mới.

Chiến lược giảm thiểu rủi ro khi triển khai ở Quần đảo Canary là giảm dần khả năng xảy ra sự cố. Khi các tính năng mới được phát hành cho một nhóm nhỏ người dùng sản xuất, họ đã sử dụng phiên bản phần mềm này một thời gian trước khi phát hành phiên bản này cho tất cả người dùng. Khả năng những người áp dụng sớm này sẽ sớm gặp phải những vấn đề như vậy là rất cao.

Cách tiếp cận khác nhau để thử nghiệm

Việc triển khai Blue-Green chỉ khiến các quy trình thử nghiệm diễn ra trong môi trường không hoạt động. Tại đây các nhà phát triển, người thử nghiệm và các bên liên quan khác nhau có thể thử nghiệm bất cứ điều gì họ muốn. Bạn luôn có thể mong đợi hành vi tương tự như thể các thử nghiệm được chạy trực tiếp trong môi trường sản xuất trực tiếp (vì dữ liệu và cấu hình luôn được đồng bộ hóa giữa hai môi trường).

Vì vậy, những người thử nghiệm của bạn chạy một chương trình thử nghiệm và vẫn có khả năng là họ sẽ không nắm bắt được tất cả các vấn đề mà người dùng sản xuất thực sự sẽ gặp phải. Tuy nhiên, đây không phải là vấn đề vì việc chuyển đổi giữa môi trường không hoạt động và hoạt động luôn diễn ra nhanh chóng. Sau đó, bạn có thể để nhà phát triển khắc phục sự cố và thực hiện lại thay đổi.

Nguồn: ibm.com

Việc triển khai Canary cho phép bạn sử dụng người dùng sản xuất làm người thử nghiệm. Những người dùng này có xu hướng tìm thấy nhiều vấn đề hơn trong thời gian ngắn hơn. Họ chỉ đơn giản là thực hiện các quy trình kinh doanh hàng ngày một cách toàn diện.

Không chỉ bởi vì họ đã xây dựng các kịch bản và trường hợp thử nghiệm như vậy, mà bởi vì dù sao thì họ cũng phải làm điều đó. Bạn có nguy cơ các thành viên trong nhóm gặp vấn đề nghiêm trọng trong một thời gian. Tuy nhiên, hầu hết người dùng không bị ảnh hưởng và nhóm phát triển có thể tập trung vào các vấn đề nghiêm trọng nhất trong thế giới thực ngay lập tức.

Kinh nghiệm và trường hợp sử dụng

Dưới đây là một số trường hợp sử dụng đã biết trong đó việc triển khai như vậy đã hoạt động thành công:

  • Netflix đang sử dụng Blue-Green để tung ra các phiên bản mới của dịch vụ phát trực tuyến của mình.
  • Amazon và Etsy sử dụng Blue-Green để triển khai các phiên bản mới của nền tảng thương mại điện tử của họ.
  • LinkedIn sử dụng triển khai Blue-Green để triển khai các phiên bản mới của nền tảng xã hội của mình.
  • IBM sử dụng Blue-Green để triển khai các phiên bản mới của nền tảng đám mây của mình.
  • Netflix cũng sử dụng Canary Deployment để thực hiện các thay đổi đối với dịch vụ phát trực tuyến của mình. Công ty sử dụng kết hợp thử nghiệm tự động, cờ tính năng và thử nghiệm A/B để triển khai các thay đổi một cách chậm rãi.
  • Google sử dụng Canary Deployment để thực hiện các thay đổi đối với dịch vụ đám mây của mình. Tương tự, công ty đang tận dụng thử nghiệm tự động, phân chia lưu lượng truy cập và cho phép giám sát để triển khai dần các thay đổi cho một nhóm nhỏ người dùng trước khi triển khai chúng cho tất cả người dùng.

Tự động hóa là chìa khóa và quy trình DevOps chắc chắn là tương lai của hoạt động triển khai. Đây là những quy trình hoàn toàn tự động bao gồm các bước như:

  • Tạo hoặc cập nhật môi trường mục tiêu về dịch vụ, dữ liệu, người dùng hoặc quyền.
  • Tự động triển khai mã nguồn full/delta trực tiếp từ kho lưu trữ mã.
  • Cập nhật lược đồ cơ sở dữ liệu và làm mới dữ liệu.
  • Thực hiện kiểm thử tự động trực tiếp trong các hoạt động triển khai.
  • Quá trình khôi phục tự động nếu bất kỳ trường hợp thử nghiệm quan trọng nào không thành công.
  • Loại bỏ tất cả các bước can thiệp thủ công về 0.

Sau khi có các quy trình triển khai như vậy, bạn có thể cắm các quy trình Canary hoặc Blue-Green hoặc bất kỳ quy trình nào khác mà bạn muốn. Đây chỉ là hai trong số những ví dụ đã hoạt động. Nhưng đây chỉ là khuôn khổ triết học để giải quyết hầu hết các vấn đề liên quan đến hoạt động thực hiện. Thậm chí không khó để chuyển đổi giữa chúng theo thời gian hoặc sử dụng kết hợp cả hai.

những từ cuối

Việc tuân thủ các quy trình triển khai thủ công là điều không thể tránh khỏi đối với các quy trình phát triển chưa trưởng thành và thậm chí cả các nhóm. Ngoài ra, nó có thể tiết lộ mức độ thiếu linh hoạt và nguyên khối của một công ty trong việc cung cấp phần mềm. Trong cả hai trường hợp, việc sửa chữa hiện trạng đòi hỏi rất nhiều công sức. Vì vậy, hãy cố gắng thực hiện các chiến lược triển khai được đề cập ở trên cho dự án của bạn.

Sau đó hãy xem cách triển khai ứng dụng trên Kubernetes.