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

Giải thích về cách triển khai Canary và vai trò của nó trong DevOps

Triển khai Canary là một kỹ thuật triển khai và phát triển phần mềm nhằm phát hành 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ỏ người dùng 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 của việc triển khai Canary 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. Bằng cách dần dần triển khai các thay đổi cho người dùng, nhà phát triển có thể theo dõi hiệu suất và độ ổn định của phiên bản mới. Họ thực hiện mọi điều chỉnh cần thiết trước khi triển khai cho toàn bộ cơ sở 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.

Nguyên tắc và lợi ích chính

nguồn: martinfowler.com

Các nguyên tắc triển khai chính của Canary bao gồm:

  • 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.
  • 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.
  • 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.
  • 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.
  • Lợi ích của việc triển khai Canary trong DevOps bao gồm:

  • Những thay đổi gia tăng sẽ 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.
  • 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.
  • Bằng cách theo dõi hiệu suất và tính ổn định của phiên bản mới, các nhà phát triển có thể đảm bảo rằng phiên bản này đáp ứng các tiêu chuẩn chất lượng cần thiết trước khi triển khai cho toàn bộ cơ sở người dùng.
  • Triển khai Canary 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ó 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.
  • Triển khai Canary dựa trên khái niệm và thuật ngữ

    nguồn: cncf.io

    Chúng ta hãy đi qua một vòng đời quy trình điển hình.

    Tất cả bắt đầu với Canary, hay “những người áp dụng sớm” phiên bản mới của hệ thống. Nhóm Baseline hoạt động song song. Tất cả những người dùng không phải Canary khác đều thuộc về nơi này.

    Khi người dùng Canary tiếp tục sử dụng phiên bản mới, việc triển khai của Canary sẽ thu hút ngày càng nhiều người dùng hơn. Đây là một sự thay đổi của chuyển động. Nhóm Canary phát triển trong khi nhóm Baseline thu hẹp lại, do đó hệ thống đang dần được triển khai.

    Trong quá trình thực hiện, quy trình giám sát sẽ ghi lại tất cả các hoạt động và kết quả sử dụng, đồng thời tạo ra các số liệu mà nhà phát triển cần làm phản hồi. Sau đó, các nhà phát triển sẽ phản ứng và sửa chữa những gì cần thiết. Hoặc họ khôi phục về mức cơ bản nếu hiện tại họ không thể khắc phục sự cố.

    Tự động hóa mọi hoạt động giám sát và triển khai. Điều này mang lại cho các nhà phát triển sự tập trung độc quyền vào việc giải quyết vấn đề.

    Có lẽ nhóm Canary sẽ thấy rằng một số tính năng của phiên bản mới còn tệ, còn những tính năng khác thì tuyệt vời. Do đó, nhà phát triển sẽ gắn cờ các tính năng đang gặp sự cố để loại chúng khỏi quá trình triển khai.

    Các nhà phát triển đang theo dõi cả hai nhóm cùng lúc – Canary và Baseline. Người dùng tạo kết quả thử nghiệm A/B. Điều này nhằm giữ cho hệ thống cũ và hệ thống mới ở cùng điều kiện. Ngoài ra, các cuộc kiểm tra tự động phiên bản mới của hệ thống cũng được thực hiện liên tục để đảm bảo quá trình kiểm tra sức khỏe của nhóm Canary diễn ra ổn định.

    Nó khác với các chiến lược triển khai truyền thống như thế nào

    Khi bạn hiểu quy trình vòng đời ở mức cao, sự khác biệt giữa quy trình này và quy trình triển khai truyền thống là khá rõ ràng.

    • Bạn triển khai dần dần và có khả năng kiểm soát tốt hơn, thay vì triển khai mọi thứ cùng một lúc cho mọi người và chờ đợi sự cố ảnh hưởng đến toàn bộ quá trình sản xuất.
    • Bạn hạn chế nguy cơ xảy ra lỗi phiên bản mới chỉ trong nhóm Canary, thay vì khiến cả thế giới gặp vấn đề cùng một lúc.
    • Bạn giám sát phiên bản mới trước khi người dùng nhận được, thay vì giám sát sau đó và đầu tư lượng thời gian và nguồn lực đáng kể vào giai đoạn siêu bảo trì của quy trình phát hành.
    • Bạn có thể quyết định cách ngừng hoạt động trước khi triển khai đầy đủ phiên bản mới vào sản xuất. Mặt khác, lên lịch cho một khoảng thời gian phát hành khác để quay lại quá trình sản xuất ngay sau khi kết thúc quá trình phát hành sản phẩm.
    • Việc triển khai Canary đương nhiên buộc bạn phải đầu tư vào các công cụ và quy trình tự động nếu có thể. Mặt khác, việc bám sát các chiến lược triển khai truyền thống sẽ tự nhiên làm giảm mức độ ưu tiên của tất cả các sáng kiến ​​tự động hóa xuống phần cuối của hồ sơ tồn đọng.

    Quy trình CI/CD trong quá trình triển khai Canary

    Nguồn: aws.amazon.com

    Trong quy trình CI/CD điển hình, các thay đổi được tự động xây dựng, thử nghiệm và triển khai đến môi trường chạy thử để thử nghiệm thêm trước khi triển khai vào sản xuất. Đây cũng là một trường hợp sử dụng tuyệt vời khi triển khai Canary.

    Sau khi các thay đổi được triển khai tới môi trường chạy thử và vượt qua tất cả các thử nghiệm cần thiết, quy trình CI/CD sẽ tự động triển khai phiên bản canary cho một nhóm nhỏ người dùng trong môi trường sản xuất.

    Nếu có sự cố xảy ra, chỉ cần chạy một quy trình khác để khôi phục. Hoặc gắn cờ các tính năng có vấn đề và chúng sẽ không bao giờ xuất hiện nữa trong quy trình triển khai. Mọi thứ đều tự động và bạn không phải lo lắng về điều đó nữa.

    Vì phiên bản Canary có đầy đủ các thử nghiệm chứng minh tự động nên tất cả chúng đều được tích hợp một cách tự nhiên vào chức năng cốt lõi của quy trình CI/CD. Trong mọi trường hợp, chúng là một phần thiết yếu của bất kỳ quy trình CI/CD tốt nào.

    Quy trình làm việc và giai đoạn triển khai của Canary

    Tóm tắt các thông tin lại với nhau, đây là quy trình làm việc thông thường của quá trình triển khai Canary điển hình mà bạn có thể sử dụng trong dự án của mình.

    # 1. Lập kế hoạch và chuẩn bị

    Trong giai đoạn này, nhóm phát triển lập kế hoạch và chuẩn bị thực hiện chim hoàng yến. Điều này bao gồm việc xác định các thay đổi hoặc cập nhật cần thực hiện, tạo bản phát hành mới của phần mềm cũng như xác định các số liệu và kiểm tra tình trạng sẽ được sử dụng để theo dõi hiệu suất của bản phát hành mới. Nhóm cũng xác định tập hợp con người dùng sẽ là người đầu tiên nhận được phiên bản mới và xác định kế hoạch triển khai.

    #2. Triển khai quản lý và giám sát giao thông

    Phiên bản mới của phần mềm được triển khai cho một nhóm nhỏ người dùng được xác định trong giai đoạn lập kế hoạch. Định tuyến lưu lượng được triển khai để hướng một số lưu lượng truy cập của người dùng sang phiên bản mới trong khi vẫn giữ phiên bản cũ hoạt động cho những người dùng khác. Hiệu suất và độ ổn định của bản phát hành mới được giám sát chặt chẽ bằng các số liệu và kiểm tra tình trạng để đảm bảo nó hoạt động như mong đợi.

    #3. Phân tích và đánh giá hiệu quả thực hiện

    Hiệu suất của bản phát hành mới được phân tích và đánh giá dựa trên các số liệu và kiểm tra tình trạng được xác định trong giai đoạn lập kế hoạch. Nếu phiên bản mới hoạt động tốt, quá trình triển khai sẽ dần dần được mở rộng cho nhiều người dùng hơn theo thời gian. Nếu có bất kỳ vấn đề nào phát sinh với phiên bản mới, quá trình triển khai có thể nhanh chóng được khôi phục về phiên bản trước.

    #4. Thúc đẩy hoặc thu hồi triển khai

    Nhóm phát triển quyết định nên quảng cáo phiên bản mới cho toàn bộ cơ sở người dùng hay khôi phục phiên bản trước đó. Nếu phiên bản mới hoạt động tốt và đáp ứng các tiêu chuẩn chất lượng cần thiết, hãy quảng bá nó đến toàn bộ cơ sở người dùng. Nếu có bất kỳ vấn đề nào với phiên bản mới, 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.

    Nguồn: aws.amazon.com

    Các phương pháp và chiến lược tốt nhất

    Khi triển khai Canary Deployment trên nền tảng của bạn, hãy bắt đầu bằng cách xác định mục tiêu rõ ràng và thành công cuối cùng sẽ như thế nào. Tại đây, bạn có thể trợ giúp về các vấn đề như số liệu hiệu suất, tiêu chí phản hồi của người dùng và tác động kinh doanh.

    Tạo một nhóm nhỏ người dùng để thử nghiệm phiên bản phần mềm mới (Canary). Một nhóm lớn hơn lúc đầu không thực sự là một lợi thế. Bạn muốn linh hoạt nhất có thể, đặc biệt là vào thời gian đầu.

    Như đã đề cập nhiều lần, hãy theo dõi hiệu suất và độ ổn định của phiên bản mới bằng các số liệu và kiểm tra tình trạng. Phản ứng khi bạn thấy điều gì đó đáng ngờ. Trong trường hợp thực hiện dần dần, thà phản ứng thái quá còn hơn phản ứng kém.

    Theo thời gian, hãy tăng dần khả năng cung cấp phiên bản mới cho nhiều người dùng hơn. Điều này đảm bảo quá trình chuyển đổi sang phiên bản mới suôn sẻ hơn.

    Sử dụng các công cụ và quy trình tự động hóa nếu có thể để hợp lý hóa quy trình triển khai và giám sát. Đưa chúng vào quy trình CI/CD của bạn và tự động triển khai theo lịch trình. Điều này làm giảm nguy cơ lỗi của con người và đảm bảo tính nhất quán và khả năng lặp lại của quá trình thực hiện.

    Triển khai cờ tính năng để bật hoặc tắt các tính năng cụ thể trong phần mềm của bạn. Bạn sẽ giành được quyền kiểm soát việc triển khai trong tương lai mà không cần phải liên tục điều chỉnh hoặc cập nhật thủ công. Bạn giúp các nhà phát triển chú ý hơn đến các lĩnh vực quan trọng – sửa lỗi.

    Sử dụng thử nghiệm A/B để so sánh hiệu suất của hai phiên bản phần mềm khác nhau. Chỉ định người dùng ngẫu nhiên cho phiên bản này hay phiên bản khác. Xác định phiên bản nào hoạt động tốt hơn và phản ứng với phiên bản đó khi đưa ra quyết định phát triển trong tương lai.

    Đảm bảo bạn có thể quay lại nhanh chóng và bất kỳ lúc nào nếu có bất kỳ vấn đề nào với phiên bản mới. Nó sẽ làm giảm tác động của bất kỳ vấn đề nào và cho phép phục hồi nhanh chóng.

    Những thách thức và nghiên cứu trường hợp

    Vẫn còn một số thách thức trong việc triển khai Canary, mặc dù nó có những lợi thế rõ ràng.

    Một trong những thách thức khi triển khai Canary là độ trễ mạng, điều này có thể ảnh hưởng đến hiệu suất của bản phát hành phần mềm mới. Để giải quyết thách thức này, nhà phát triển có thể sử dụng các công cụ như bộ cân bằng tải và mạng phân phối nội dung để cải thiện hiệu suất mạng. Đó không chỉ là sự chậm trễ của hệ thống khi sử dụng bên ngoài. Nhưng cũng có sự chậm trễ đối với các quy trình nội bộ như triển khai hoặc thực thi quy trình CI/CD. Chúng phải kết thúc càng sớm càng tốt. Nếu không, bạn sẽ có một hàng dài các nhà phát triển không hoạt động chờ quá trình hoàn thiện.

    Một thách thức khác là đảm bảo tính nhất quán của dữ liệu giữa phiên bản cũ và phiên bản mới của phần mềm. Để vượt qua thách thức này, nhà phát triển có thể sử dụng các kỹ thuật như sao chép và đồng bộ hóa cơ sở dữ liệu để đảm bảo tính nhất quán của dữ liệu giữa các phiên bản. Việc có người dùng sản xuất chạy cả phiên bản cũ và mới cùng lúc sẽ làm tăng kỳ vọng rằng bạn sẽ đảm bảo rằng cả hai phiên bản luôn đồng bộ hóa và người dùng không mất bất kỳ dữ liệu sản xuất nào chỉ vì họ thuộc nhóm Canary/Baseline. Điều này có thể thực sự khó thực hiện, vì vậy hãy tự bảo vệ mình bằng các quy trình nền mạnh mẽ.

    Netflix là một ví dụ nổi tiếng về một công ty 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 là một ví dụ khác về một công ty 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 bộ phận nhỏ người dùng trước khi triển khai chúng cho tất cả người dùng. Cách tiếp cận này đã giúp Google cải thiện chất lượng và tính ổn định của dịch vụ.

    những từ cuối

    Giống như tất cả các quy trình, cách tiếp cận hoặc chiến lược, việc triển khai Canary không phải là giải pháp cho mọi vấn đề trên thế giới. Có những trường hợp gần như không thể thực hiện được do những hạn chế về môi trường, kiến ​​thức của con người hoặc sự thiếu hiểu biết chung về khái niệm này. VÀ

    t phù hợp hơn nhiều cho các dự án thời đại mới. Trong đó tư duy linh hoạt là đặc tính cốt lõi vững chắc thì việc tự động hóa mọi quy trình là ưu tiên hàng đầu và độ tin cậy tối đa là kỳ vọng mạnh mẽ của các bên liên quan.

    Trong trường hợp này, việc triển khai Canary về mặt nào đó là cấp độ tiếp theo của thực tiễn phát triển linh hoạt. Nó có thể đưa các nhóm vào lãnh thổ mà dự án chưa từng đến trước đây.

    Sau đó kiểm tra tỷ lệ và tối ưu hóa CI/CD.

    Mục lục