Việc triển khai xanh lá cây là một chiến lược quản lý giảm thời gian và nguy hiểm bằng cách chạy hai môi trường sản xuất giống hệt nhau - một đang phục vụ giao thông (xanh) và một không dùng (xanh). Khi một phiên bản mới của ứng dụng này đã sẵn sàng, nó được triển khai vào môi trường không hoạt động, kiểm tra kỹ lưỡng, và sau đó giao thông được chuyển đổi trên. Phương pháp này loại bỏ nhu cầu bảo trì cửa sổ, hiệu lực cuộn lại ngay lập tức, và cung cấp sự phân chia sạch giữa mã cũ và mới. Một bản gốc được Martin phạt và Jez, Xanh- sep, đã trở thành nền tảng của các thực hiện thời, đặc biệt khi có hai đường ống nóng/ CN/ CN.

Tại sao việc tăng cường xanh lá cây

Các phương pháp triển khai truyền thống - như di chuyển cập nhật hoặc phát hành chim hoàng yến - vẫn còn để lộ ra các người dùng một phần giảm thời gian hoặc giảm hiệu suất trong quá trình chuyển tiếp. bật đèn xanh lên để xác định toàn bộ môi trường cũ cho đến khi hệ thống mới được kiểm tra. Điều này cho các đội sự tự tin để triển khai thường xuyên, thậm chí đến các hệ thống nhiệm vụ nghiêm trọng.

  • Việc triển khai thời gian xuống:[FLT: 1] Không có cửa sổ thời gian khi ứng dụng không sẵn sàng.
  • Quay lại Instant:) Giao thông trở lại môi trường cũ trong giây nếu vấn đề xảy ra.
  • Thử nghiệm đã được giải quyết: thẩm tra phiên bản mới dưới điều kiện thế giới thực mà không ảnh hưởng đến người dùng.
  • Các cuộc di cư cơ sở dữ liệu kiểu Simplified:) có thể được xử lý cẩn thận phiên bản cấu hình và tương thích ngược.
  • Tốc độ đồng đội được bảo vệ: nhà phát triển có thể giải phóng thường xuyên hơn với ít sợ hãi hơn.

Kết hợp xanh lá cây với đường ống CI/CD

Đường ống CI/CD tự động hóa các công trình xây dựng, kiểm tra và triển khai. khi kết hợp với màu xanh lá cây xanh, các đường ống trở thành bộ điều hòa của môi trường chuyển đổi. dòng chảy điển hình trông như thế này:

  1. Cấu trúc và thử nghiệm: Bộ luật cam kết kích hoạt một tòa nhà.
  2. Tuỳ theo môi trường không hoạt động:) Đường ống này triển khai hiện tại không phục vụ giao thông (v. g., xanh lá cây nếu có hoạt động).
  3. Thử nghiệm tự động :[FLT:] và Chấp nhận: chạy ngược lại môi trường mới để xác minh tính năng, hiệu suất và dữ liệu thống nhất.
  4. Giao thông phù thủy:) Một bộ cân bằng tải hoặc DNS được cập nhật để chuyển tất cả phương tiện giao thông sang môi trường mới.
  5. Kiểm tra sức khỏe kiểm tra và giám sát tiếp tục trong thời gian làm mát.
  6. Campup (Optional): ) Môi trường cũ hoặc là giữ lại như một mục tiêu quay vòng hoặc bị phá hủy sau một thời kỳ mát mẻ.

Thiết lập hai môi trường có song

Sự phân chia môi trường là quan trọng. Môi trường xanh và xanh phải giống hệt nhau trong phần cứng, cấu hình, địa hình mạng và dữ liệu, ngoại trừ phiên bản ứng dụng. Hãy dùng cơ sở hạ tầng như mã (IaC) như Terraform, CloudFormation, hoặc Pulmi để cung cấp cả hai môi trường từ cùng một mẫu. Việc sao chép cơ sở dữ liệu nên được thiết lập để cả hai môi trường chia sẻ dữ liệu (hoặc có chiến lược di trú để cho phép sự thay đổi an toàn).

Xem xét co sở dữ liệu

Dịch vụ quốc gia đặc biệt là cơ sở dữ liệu phức tạp hóa việc triển khai xanh lá cây.

  • Những cuộc di cư có thể đáp ứng lại: ) áp dụng những thay đổi hoạt động với cả mã cũ và mới (v. g., thêm cột nhưng không làm rớt).
  • Mô phỏng và đọc bản sao: chỉ hai môi trường vào cùng cơ sở dữ liệu, nhưng đảm bảo rằng văn bản chỉ xảy ra từ môi trường hoạt động.
  • Trình giả kim-per-nronment: cơ sở dữ liệu riêng lẻ cho mỗi môi trường và xử lý đồng bộ hóa với một công cụ di trú.

Công cụ như Flyway hoặc Liqui base có thể quản lý các cuộc di trú tăng trưởng an toàn cho dòng chảy xanh lá cây.

Tự động chuyển giao thông

Công tắc giao thông có thể thực hiện tại bộ cân bằng tải (Layer 7), DNS (tiếng latinh 4/ 7), hoặc cấp bộ định tuyến. Đối với việc triển khai đám mây, dịch vụ như AWS ALB, Google Cloudload bộ cân bằng, hoặc Kubernetes Service+Inaign (tiếng Anh) cần phải làm cho đường ống CI/CD kích hoạt công tắc qua hệ thống gọi hay cập nhật cấu hình hệ thống:

  • Kiểm tra sức khỏe:) Bộ cân bằng nạp phải xác minh môi trường mới là tốt trước khi nhận giao thông.
  • Đang thoát nước: môi trường cũ nên hoàn thành yêu cầu bay trước khi được đưa ra ngoài quay.
  • Nếu ứng dụng của bạn dùng các phiên chạy dính, hãy đảm bảo rằng công tắc không phá vỡ ngữ cảnh người dùng.

Công cụ đơn giản hoá xanh lá cây có CI/CD

Nhiều nền tảng và công cụ triển khai của CI/CD có hỗ trợ bản thân cho các chiến lược xanh dương.

Jenkins với Ansable hay Spinnaker

Jenkins rất linh hoạt, bạn có thể xác định các bước đường ống gọi là sách chiến thuật điều khiển khả thi để cập nhật cấu hình cân bằng tải lên hoặc sử dụng chiến lược xây dựng của Spinnaker màu đỏ và đen.

GitLab CI với Auto DevOps

GitLib Auto DevOps bao gồm một “chuyến đi màu xanh lá cây khi được triển khai đến Kubernetes. Nó tạo hai lần triển khai (xanh và xanh lá cây) và một dịch vụ lật nhãn « người bầu cử » (FLTT: 0) tài liệu của Gabriel [FLT: 1] cung cấp một hướng dẫn bước theo bước chân.

Hành động GitHub với mã AWS

AWS CodeDeploy hỗ trợ phát triển xanh lá cây tự động. Một tài liệu hướng dẫn làm việc của GitHub có thể đẩy mã đến một xô S3 và sau đó kích hoạt một bản sửa đổi ứng dụng mã tố. Nhóm triển khai tự động cung cấp các trường hợp mới, kiểm tra sức khỏe, và chuyển giao thông. [FLT: 0] Tài liệu hướng dẫn đọc [FLT: 1] Giải thích thiết lập [FLT: 1).

Comment

Argo Rollouts cung cấp chiến lược triển khai nâng cao bao gồm xanh lá cây. Nó hợp nhất với bộ điều khiển và dịch vụ mạng lưới để tự động chuyển giao thông. Rollbacks là giải mã và có thể được kích hoạt tự động dựa trên bộ đo [FLT: 0] LLearn nhiều hơn [FLT: 1].

Tập tin tốt nhất cho việc triển khai sản xuất-Grade

Thay vì chỉ chuyển máy chủ để tránh những cạm bẫy thông thường, hãy thực hiện những cách tốt nhất:

Tự động hóa tất cả

Lỗi bước thủ công giới thiệu. Toàn bộ đường ống từ tòa nhà đến việc chuyển giao giao thông nên được tự động hóa. Dùng định nghĩa đường ống điều khiển phiên bản (v. d., « Tập tin da trời », «.gitlab-ci.yml » và đảm bảo các thử nghiệm được chạy tự động trên mỗi việc triển khai.

Dùng cờ tính năng

Kết hợp xanh lá cây với cờ tính năng để giảm tốc độ phóng. Bạn có thể triển khai mã với tính năng mới được ẩn và hiệu lực dần dần qua công cụ quản lý cờ (DrunchDarkly, PostHog, Unleash). Việc này tránh cần cuộn lại toàn bộ môi trường nếu tính năng không thành công.

Thử nghiệm đầy đủ

Thử ra khói nên xác minh các phản ứng cơ bản HTTP, kết nối cơ sở dữ liệu và các chuyến đi của người dùng chỉ dẫn. Dùng công cụ giám sát tổng hợp (v. d., Checkly, Datadogs) để chạy các thử nghiệm trình duyệt chống lại môi trường bị động trước khi chuyển đổi. Gồm kiểm tra nạp để bắt hồi quy hiệu suất.

Theo dõi liên tục

Sau công tắc, theo dõi số đo lường ứng dụng, tỷ lệ lỗi, độ trễ và doanh nghiệp KPIs. Dùng cảnh báo (PPrDuty, Opsgenie) để kích hoạt vòng quay tự động nếu ngưỡng bất thường bị phá vỡ. Lấy thí dụ, nếu 5xx lỗi lỗi tăng 50%, lưu lượng giao thông trở lại môi trường cũ.

Lập kế hoạch cho các thành phần chính thức

Tải lên tập tin, phiên chạy người dùng và hàng đợi công việc cần xử lý cẩn thận. Hãy dùng các kho bên ngoài dùng chung (S3, EFS) và phân phối bộ nhớ tạm (Redis, Memcached) để cả hai môi trường đều có thể truy cập. Để đảm bảo thông điệp không bị mất trong khi chuyển đổi.

Định nghĩa giai đoạn bình tĩnh

Sau khi chuyển đổi giao thông, hãy để cho môi trường cũ chạy trong một thời gian nhất định (v. d. 30 phút) để cho phép quay lại nhanh nếu phát hiện lỗi tinh tế. Sau đó, bạn có thể giảm bớt chi phí.

Những thử thách và cách vượt qua chúng

Sơ đồ cơ sở dữ liệu

Thử thách lớn nhất là xử lý các thay đổi cơ sở dữ liệu mà phá vỡ sự tương thích ngược.

  • Chỉ dùng những cuộc di cư bổ sung (thường là những cột, chứ không phải là thả).
  • Loại bỏ những cột cũ trong một cuộc di cư sau khi bị phù thủy.
  • Triển khai các thay đổi cơ sở dữ liệu trước phiên bản ứng dụng mới, đảm bảo mã cũ vẫn còn chạy được.

Chi phí

Điều khiển hai môi trường sản xuất giống hệt nhau tăng gấp đôi chi phí cơ sở hạ tầng. sự di chuyển: sử dụng những trường hợp nhỏ hơn cho môi trường không hoạt động trong quá trình thử nghiệm, hoặc sử dụng công-te- hóa để chia sẻ nguồn tài nguyên cơ bản. việc tạo ra mây có thể giảm lượng chất thải.

Phiên chạy và bộ nhớ tạm đã sưởi ấm

Khi chuyển đổi giao thông, bộ nhớ tạm là lạnh. Kích hoạt môi trường mới bằng cách mô phỏng yêu cầu kiểu điển hình trước khi chuyển đổi. Công cụ như là máy tính xách tay hay k6 có thể tạo ra trọng tải thực tế.

Cấu hình mạng

Luật tường lửa, hồ sơ DNS và chứng nhận SSL phải giống hệt nhau trên môi trường. Dùng IaC để đảm bảo tính nhất quán. Nếu dùng chuyển đổi dựa trên DNS, tài khoản để truyền bá thời gian (TTL).

Ví dụ thực tế:

Một nhà bán lẻ trực tuyến với 10 triệu khách hàng hàng ngày cần để triển khai các tính năng mới mỗi tuần mà không cần thời gian làm giảm. họ chấp nhận triển khai xanh lá cây với thiết lập sau:

  • Hai nhóm chạy trốn của AWS (xanh, xanh) phía sau một ALB.
  • Thay đổi hình dạng để cung cấp cơ sở hạ tầng giống hệt nhau.
  • Đường ống dẫn kim loại Gitlab: xây dựng, thử nghiệm, triển khai màu xanh lá cây, chạy thử nghiệm khói Playwright, sau đó kích hoạt công tắc ALB.
  • Redis cho các phiên họp chia sẻ qua các môi trường.
  • Di cư cơ sở dữ liệu: tương thích ngược với Flyway.
  • Tự động tua lại nếu tỷ lệ lỗi > 1% trong 5 phút đầu.

Kết quả là: tần số tăng từ tháng này sang tuần khác, không có sự cố nào xảy ra quá sáu tháng.

Kết luận

Việc triển khai xanh lá cây, khi kết hợp với một đường ống ống dẫn hiện đại của CN/CD, cung cấp một cách rất tốt để phát hành phần mềm an toàn và thường xuyên. nó loại bỏ thời gian giảm, cho phép quay lại ngay lập tức, và cho các kỹ sư sự tự tin để thúc đẩy nhanh chóng thay đổi nhanh chóng. trong khi thách thức như di trú và chi phí cơ sở hạ tầng tồn tại, họ có thể được quản lý cẩn thận với kế hoạch và quá trình làm việc với quyền lợi nhuận. bằng cách tự động toàn bộ quá trình từ môi trường cung cấp để chuyển giao thông có thể liên tục với rủi ro tối thiểu. bắt đầu thực hiện một bằng chứng nhỏ bằng một khái niệm với một, và quy mô dịch vụ từ đó. đầu tư vào màu xanh, và giảm kinh nghiệm trả tiền trong thời gian đáp ứng và giảm của người dùng.