Table of Contents
استقرار سبز-آبی یک استراتژی مدیریت آزاد است که باعث کاهش خرابی و خطر با اجرای دو محیط تولیدی یکسان می شود – یکی در حال حاضر در حال خدمت ترافیک (آبی) و یک بیکار (Green) است که یک نسخه جدید از برنامه آماده است، آن را به محیط غیر فعال، به طور کامل آزمایش شده، و سپس ترافیک روشن است. این رویکرد نیاز به پنجره های تعمیر و نگهداری را از بین می برد، سوئیچ سریع، و مدرن را فراهم می کند، و یک کد تمیز شده توسط مارتین.
چرا Blue-Green Deployment مهم است
روش های استقرار سنتی - مانند به روز رسانی های نورد یا انتشار های کنسروی - هنوز کاربران را در معرض خرابی جزئی یا عملکرد ضعیف در طول انتقال قرار می دهد. استقرار سبز سبز با نگه داشتن محیط قدیمی به طور کامل عملیاتی تا زمانی که فرد جدید تایید شده است، این اطمینان را به تیم ها می دهد که به طور مکرر، حتی برای سیستم های کلیدی ماموریتی، استفاده کنند:
- [در این باره]: [[۱]] [۱۰] [۱] [۱۰] [۱]] [۱۰] [۱] [۱۰] [۱]] هیچ پنجره ای از زمان نیست که درخواست در دسترس نباشد.
- در عقب نشینی مداوم: ترافیک به محیط قدیمی در ثانیه اگر مسائل بوجود آمده است.
- تست حل شده در تولید؛ [FLT 1] نسخه جدید را در شرایط دنیای واقعی بدون تاثیر بر کاربران معتبر می کند.
- مهاجرت پایگاه داده تقویت شده: می تواند با نسخه دقیق طرح و سازگاری عقب مانده کار کند.
- سرعت تیم بهبود یافته: توسعه دهندگان می توانند اغلب با ترس کمتر آزاد شوند.
ادغام Blue-Green Deployment با خطوط لوله CI/CD
خط لوله CI / CD خودکارسازی مراحل ساخت، آزمایش و استقرار را انجام می دهد.هنگامی که همراه با سبز آبی، خط لوله به ارکستر تغییر محیط تبدیل می شود. جریان معمولی به نظر می رسد این است:
- ساخت و آزمایش: کد متعهد به ایجاد یک تست واحد، تست های یکپارچه، و اسکن های امنیتی در خط لوله.
- تلاش برای محیط فعال: خط لوله به محیط زیست که در حال حاضر در حال خدمت ترافیک نیست (به عنوان مثال سبز اگر آبی فعال است).
- تست های ترک و پذیرش: تست های خودکار در برابر محیط جدید برای تأیید عملکرد، عملکرد و سازگاری داده ها اجرا می شود.
- ترافیک (FLT:1) یک تعادل بار یا DNS رکورد به روز می شود تا تمام ترافیک کاربر را به محیط جدید هدایت کند.
- پس از عمل، اعتبار: بررسی و نظارت بر ادامه برای یک دوره خنک کننده.
- تمیز کردن (اختیاری): [FLT 1] محیط قدیمی یا به عنوان یک هدف عقب نشینی یا پس از یک دوره خنک نگه داشته می شود.
تنظیم دو محیط Identical
تنوع محیط زیست بسیار مهم است. محیط های آبی و سبز باید در سخت افزار، پیکربندی، توپولوژی شبکه و داده ها یکسان باشد - به استثنای نسخه برنامه استفاده از زیرساخت به عنوان کد (IaC) ابزار مانند Terraform، CloudFormation یا Pulumi برای ارائه هر دو محیط از همان قالب کد.
پایگاه داده
خدمات دولتی - به ویژه پایگاه های داده - گسترش آبی سبز را پیچیده می کنند.
- مهاجرت های سازگار با بازگشت: [FLT 1] اعمال تغییرات که با کد قدیمی و جدید کار می کنند (به عنوان مثال، ستون اضافه کنید اما آنها را رها نکنید).
- تکرار و خواندن نسخه ها: نقطه هر دو محیط به همان پایگاه داده، اما اطمینان حاصل کنید که تنها از محیط فعال اتفاق می افتد.
- پایگاه داده های جداگانه برای هر محیط و هماهنگ سازی با ابزار مهاجرت.
ابزارهایی مانند Flyway یا Liquibase می توانند مهاجرت های افزایشی را که برای جریان های سبز سبز آبی ایمن هستند، مدیریت کنند.
خودکار سازی تعویض ترافیک
سوئیچ ترافیک را می توان در تعادل بار (Layer 7)، DNS (Layer 4/7)، یا سطح روتر اجرا کرد.برای استقرار های ابر، خدمات مانند AWS ALB، Google Cloud Load Balancer یا Kubernetes Service + Ingress این را ساده می کند. خط لوله CI / CD باید سوئیچ را از طریق تماس های API یا ملاحظات کلیدی تنظیم کند:
- بررسی سلامت: تعادل بار باید قبل از پذیرش ترافیک، محیط جدید را تأیید کند.
- تخلیه گران: [FLT 1] محیط قدیمی باید درخواست های پرواز را قبل از خروج از چرخش به پایان برساند.
- پایداری: اگر برنامه شما از جلسات چسبنده استفاده می کند، اطمینان حاصل کنید که سوئیچ متن کاربر را نمی شکند.
ابزارهایی که Blue-Green را با CI/CD تقویت می کنند
انواع پلتفرم های CI / CD و ابزارهای استقرار، پشتیبانی بومی از استراتژی های سبز سبز سبز آبی دارند.
جنسن با Ansible یا Spinnaker
Jenkins بسیار انعطاف پذیر است.شما می توانید مراحل خط لوله را تعریف کنید که به آن ها می گویند کتاب های بازی Ansible برای به روز رسانی تنظیمات بار balancer یا استفاده از استراتژی قرمز / سیاه اسپیناکر اسپیناکر ساخته شده اسپیناکر حتی یک UI بصری برای تأیید دستی قبل از سوئیچ فراهم می کند.
GitLab CI با Auto DevOps
GitLab Auto DevOps شامل یک مرحله ساخته شده در "آبی سبز" است که در آن به Kubernetes متصل می شود، دو استقرار (آبی و سبز) و خدماتی که برچسب های "فعال" را روشن می کند، ایجاد می کند.
اقدامات GitHub با AWS CodeDeploy
AWS CodeDeploy از استقرار سبز سبز به طور بومی پشتیبانی می کند.A GitHub Actions Workflow می تواند کد را به یک سطل S3 فشار دهد و سپس یک بازنگری درخواست CodeDeploy را ایجاد کند. گروه استقرار به طور خودکار موارد جدید را تنظیم می کند، سلامت را بررسی می کند و ترافیک را تغییر می دهد.
دانلود بازی Argo Rollouts در Kubernetes
Argo Rollouts استراتژی های پیشرفته استقرار از جمله آبی سبز را فراهم می کند.این ادغام با کنترل کننده های مهاجم و مش های خدمات برای انتقال ترافیک خودکار است. روبک ها به صورت خودکار و می تواند به طور خودکار بر اساس معیارهای ایجاد شود. اطلاعات بیشتر در مورد روبوت های Argo.
بهترین روش ها برای تولید-Grade Deployment
پیاده سازی سبز سبز آبی بیشتر از سرورهای تعویض است تا از مشکلات رایج جلوگیری شود، از این بهترین شیوه ها پیروی کنید:
همه چیز را خودکار کنید
گام های دستی خطا را معرفی می کنند.کل خط لوله - از ساختمان برای تغییر ترافیک - باید خودکار باشد.استفاده از تعاریف خط لوله کنترل نسخه (به عنوان مثال، @Jenkinsfile، @gitlab-ci.yml'، جریان کار YAMLs) و اطمینان از تست ها به طور خودکار در هر استقرار اجرا می شوند.
استفاده از پرچم های
رنگ سبز را با پرچم های ویژگی ترکیب کنید تا از انتشار جدا شوید.شما می توانید کد را با ویژگی های جدید پنهان کنید و آنها را به تدریج از طریق ابزارهای مدیریت پرچم (Launch Darkly، PostHog، Unleash) فعال کنید.این از نیاز به عقب نشینی کل محیط در صورت شکست یک ویژگی اجتناب می کند.
اجرای کامل تست
آزمایش های دود باید پاسخ های اساسی HTTP، اتصال پایگاه داده و سفرهای کاربر انتقادی را تأیید کنند.استفاده از ابزارهای نظارت مصنوعی (به عنوان مثال، Checkly، Datadog Artificials) برای اجرای تست های مرورگر در برابر محیط غیر فعال قبل از تعویض شامل تست بار برای گرفتن برگشت عملکرد.
نظارت مستمر
پس از سوئیچ، معیارهای کاربردی، نرخ خطا، تأخیر و KPI های کسب و کار را نظارت کنید.استفاده از هشدار (PagerDuty، Opsgenie) برای ایجاد رول خودکار اگر آستانه های ناهنجاری به طور مثال، اگر 5xx افزایش یابد، ترافیک را به محیط قدیمی بازگردانید.
برنامه ریزی برای اجزای دولتی
آپلود فایل، جلسات کاربر و صف های شغلی نیاز به مدیریت دقیق دارند.استفاده از ذخیره سازی مشترک خارجی (S3، EFS) و حافظه های توزیع شده (Redis، Memcached) که هر دو محیط می توانند به آن دسترسی داشته باشند، اطمینان حاصل کنید که پیام ها در طول تغییر از دست نمی روند.
تعریف یک دوره Cooldown
پس از تغییر ترافیک، محیط قدیمی را برای یک زمان تنظیم شده (به عنوان مثال، 30 دقیقه) برای اجازه دادن به عقب نشینی سریع اگر یک باگ ظریف کشف شده است، نگه دارید.
چالش ها و چگونگی غلبه بر آن ها
پایگاه داده مهاجرت
بزرگترین چالش این است که با تغییرات پایگاه داده که سازگاری معکوس را از بین می برد، مقابله کنید:
- از مهاجرت های افزودنی فقط ( ستون های اضافه شده، نه آنها را رها کنید) استفاده کنید.
- ستون های قدیمی را در یک مهاجرت جداگانه و پس از تغییر حذف کنید.
- بانک اطلاعاتی قبل از نسخه جدید برنامه تغییر می کند و اطمینان حاصل می کند که کد قدیمی هنوز هم می تواند اجرا شود.
هزینه هزینه هزینه هزینه
اجرای دو محیط تولیدی یکسان هزینه زیرساخت را دو برابر می کند.تگش: استفاده از موارد کوچکتر برای محیط غیر فعال در طول آزمایش، یا استفاده از containerization برای به اشتراک گذاری منابع زیربنایی. Cloud auto-scaling همچنین می تواند زباله را کاهش دهد.
دانلود بازی The Silence & cache
هنگامی که سوئیچ های ترافیک، حافظه سرد هستند، قبل از جنگ محیط جدید با شبیه سازی درخواست های کاربری معمولی قبل از تعویض.
تنظیمات شبکه
قوانین فایروال، سوابق DNS و گواهینامه های SSL باید در سراسر محیط ها یکسان باشند.استفاده از IaC برای اطمینان از سازگاری.اگر با استفاده از تغییر مبتنی بر DNS، زمان انتشار (TTL) را در نظر بگیرید.
مثال واقعی جهانی: پلتفرم تجارت الکترونیک
یک خرده فروشی آنلاین با 10 میلیون بازدید کننده روزانه برای استقرار ویژگی های جدید در هر هفته بدون خرابی، آنها استقرار آبی سبز با تنظیمات زیر را تصویب کرد:
- دو گروه مقیاس سازی خودکار AWS (آبی، سبز) پشت یک ALB
- به منظور ارائه زیرساخت های یکسان
- خط لوله CI GitLab: ساخت، آزمایش، استقرار به سبز، اجرای تست های دود راست، سپس ماشه ALB هدف گروه سوئیچ.
- رد برای جلسات مشترک در سراسر محیط ها
- مهاجرت پایگاه داده: با استفاده از Flyway سازگار با عقب است.
- خودکارسازی خودکار اگر نرخ خطا > 1٪ در 5 دقیقه اول
نتیجه: افزایش فرکانس از ماهانه به هفتگی، با حوادث خرابی صفر در طول شش ماه.
نتیجه گیری
استقرار سبز، هنگامی که با یک خط لوله CI / CD مدرن ادغام شده است، یک راه قدرتمند برای انتشار نرم افزار با خیال راحت و اغلب، آن را از بین می برد، باعث می شود که عقب نشینی فوری، و اطمینان مهندسان برای فشار دادن تغییرات به سرعت در حالی که چالش هایی مانند مهاجرت پایگاه داده و هزینه زیرساخت وجود دارد، آنها می توانند با برنامه ریزی دقیق و ابزار مناسب با خودکار سازی کل فرآیند - با ارائه زمان تقسیم به اشتراک گذاری کاهش سرعت، و کاهش سرعت دسترسی به سرعت انتقال ترافیک، مدیریت شوند.