تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

Harness چیست؟ پلتفرم مدرن یکپارچه‌سازی و تحویل مداوم


۲۴ اردیبهشت ۱۴۰۴

بسیاری از کسب‌وکارها به دنبال راه‌حل‌هایی هستند که به آن‌ها کمک کند تا فرآیندهای توسعه نرم‌افزار خود را سریع‌تر، کارآمدتر و ایمن‌تر انجام دهند. در این مسیر، ابزارهایی مانند Harness به عنوان یک پلتفرم CI/CD (یکپارچه‌سازی مداوم و تحویل مداوم) وارد عمل می‌شوند و فرصتی را برای تیم‌های توسعه به وجود می‌آورند تا با اتوماسیون مراحل پیچیده نرم‌افزاری، از ریسک‌های احتمالی بکاهند و در عین حال سرعت عملکرد خود را بهبود دهند. Harness با ارائه یک معماری مبتنی بر کدهای خودکار، امکان مدیریت راحت‌تر و سریع‌تر فرآیندهای ساخت، تست و انتشار نرم‌افزار را فراهم می‌کند.

در ادامه بخوانید:

  • Harness چیست؟
  • کاربرد های Harness
  • معماری و اجزای تشکیل‌ دهنده‌ی Harness
  • یکپارچه‌ سازی و تحویل مداوم در Harness
  • مزایا و معایب Harness
  • جمع بندی

Harness چیست؟

Harness یک پلتفرم یکپارچه برای یکپارچه‌سازی و تحویل مستمر (CI/CD) است که هم برای پروژه‌های ابری و هم محلی قابل استفاده است. این پلتفرم به تیم‌های DevOps کمک می‌کند تا مراحل تست کد، دیپلوی و بازگردانی را به‌صورت خودکار انجام دهند. Harness الگوهای آماده‌ای برای انواع روش‌های دیپلوی مانند blue/green, canary و rolling دارد و همچنین امکان ساخت الگوهای سفارشی با استفاده از کد YAML را هم فراهم کرده است.

Harness بسیاری از کارهای زمان‌بر در روند توسعه نرم‌افزار را به‌صورت خودکار انجام می‌دهد. برخی از این وظایف در ادامه بررسی شده است.

  • شناسایی خودکار کاهش عملکرد یا کیفیت سرویس در حین دیپلوی‌های canary.
  • اجرای خودکار فرآیند بازگردانی (rollback) و دیپلوی بر اساس سطوح دسترسی تعریف‌شده.
  • اجرای خودکار دیپلوی سلف (self-deployment) با رعایت نقش‌ها و دسترسی‌های مشخص‌شده.

برخی از ویژگی‌های مهم دیگر Harness شامل موارد زیر است:

  • تریگرهای مبتنی بر رویداد برای اجرای خودکار عملیات
  • فرآیندهای تایید (approval) پیش از انجام برخی مراحل
  • ارسال نوتیفیکیشن و هشدار در صورت وقوع خطا یا نیاز به تایید
  • محدودسازی دسترسی بر اساس IP
  • تحلیل خودکار لاگ‌ها
  • پشتیبانی از روش‌های احراز هویت مثل SSO و OAuth
Harness

کاربرد های Harness

پلتفرم Harness یک ابزار جامع و پیشرفته برای اتوماسیون فرآیندهای CI/CD است که به تیم‌های DevOps کمک می‌کند تا فرآیندهای تست، استقرار و بازگشت به نسخه‌های قبلی را به صورت کاملا خودکار و با دقت بالا انجام دهند. در ادامه به برخی از کاربردهای اصلی Harness در پروژه‌های نرم‌افزاری اشاره شده است.

  • مدیریت خودکار استقرار و تست: Harness به تیم‌ها این امکان را می‌دهد که به راحتی از استراتژی‌های استقرار مانند blue/green, canary و rolling استفاده کنند به صورت خودکار تست‌های لازم را انجام دهند. این ویژگی باعث می‌شود تا نسخه‌های جدید به صورت ایمن و بدون اختلال در سیستم‌های موجود منتشر شوند.
  • بازگشت خودکار به نسخه‌های قبلی: در صورتی که مشکلی در عملکرد نرم‌افزاری بعد از استقرار پیش‌آید، Harness قادر است به طور خودکار فرآیند Rollback را اجرا کرده و نسخه‌های پایدار قبلی را مجددا راه‌اندازی کند.
  • ساخت و مدیریت Pipelines به صورت گرافیکی یا کدنویسی: با استفاده از Harness، توسعه‌دهندگان می‌توانند Pipelines خود را به صورت گرافیکی یا بدون استفاده از کد YAML بسازند و به صورت کامل فرآیندهای Test و Build و دیپلوی را مدیریت کنند.
  • کنترل دسترسی و امنیت پیشرفته: Harness از قابلیت‌های امنیتی مانند SSO و OAuth پشتیبانی می‌کند و به‌راحتی می‌توان دسترسی‌ها را براساس نقش‌های مختلف کاربری در پروژه‌ها مدیریت کرد.
  • پایش و تحلیل مداوم وضعیت سیستم: با استفاده از ابزارهای قدرتمند نظارت و تحلیل لاگ، تیم‌های توسعه‌می‌توانند مشکلات را به طور فوری شناسایی کنند و در صورت لزوم اقدام به اصلاح‌ آن‌ها کنند.

Harness به عنوان یک پلتفرم اتوماسیون کامل CI/CD، به تیم‌های نرم‌افزاری کمک می‌کند تا روند توسعه نرم‌افزار خود را سریع‌تر، ایمن‌تر و با کیفیت بالاتر انجام دهند و هزینه‌ها و زمان لازم برای استقرار نرم‌افزار به حداقل می‌رسد.

لیارا به‌عنوان یکی از ارائه‌دهندگان خدمات ابری، مجموعه‌ای از برنامه‌های آماده (One Click Apps) را در اختیار کاربران قرار می‌دهد که با استفاده از آن‌ها می‌توانند به‌سرعت و تنها با چند کلیک، نرم‌افزارهای متن‌باز مختلفی را راه‌اندازی کنند.

یکی از برنامه‌های آماده‌ای که کاربران می‌توانند از سایت لیارا تهیه کرده، روی پلتفرم ابری لیارا مستقر کنند و از امکانات آن بهره‌مند شوند، پلتفرم Harness است. این فرایند به‌صورت خودکار انجام می‌شود و نیازی به تنظیمات پیچیده ندارد. بنابراین کاربران می‌توانند به‌سادگی فرآیندهای CI/CD خود را خودکارسازی کرده و کنترل دقیق‌تری بر مراحل ساخت، تست و استقرار نرم‌افزارشان داشته باشند. برای اطلاعات بیشتر درباره‌ی این پلتفرم می‌توانید به مستندات سایت لیارا مراجعه کنید.

با برنامه آماده Harness لیارا، فرایند دیپلوی، تست و تحویل نرم‌افزار را به‌شکلی سریع، امن و خودکار انجام دهید.
✅ پشتیبانی از CI/CD پیشرفته✅ یکپارچه‌سازی آسان✅ گزارش‌گیری دقیق✅ قابل استفاده در تیم‌های حرفه‌ای
خرید و راه‌اندازی سریع Harness

معماری و اجزای تشکیل‌ دهنده‌ی Harness

در ادامه، معماری و بخش‌های اصلی پلتفرم Harness معرفی و توضیح داده شده‌اند.

  • مدیر Harness (Harness Manager): این بخش وظیفه مدیریت تنظیمات و کنترل فرآیندهای CI/CD را بر عهده دارد. شما می‌توانید خطوط لوله (Pipeline) را هم از طریق یک رابط گرافیکی ساده و هم به‌طور مستقیم از طریق Git مدیریت کنید. اجرای این خطوط لوله می‌تواند به‌صورت دستی انجام شود یا به شکل خودکار بر اساس رویدادهایی مثل تغییرات در Git، انتشار نسخه جدید یا زمان‌بندی مشخص، فعال شود. مدیر Harness هم به‌صورت ابری (SaaS) قابل استفاده است و هم می‌توانید آن را روی زیرساخت اختصاصی خود راه‌اندازی کنید.
  • نماینده Harness (Harness Delegate): این نرم‌افزار روی محیط کاری شما (مثلاً سرورها یا کلاسترها) نصب می‌شود و وظیفه‌اش برقراری ارتباط بین زیرساخت شما و مدیر Harness است. کارهایی مثل تعامل با ابزارهای Orchestration، سیستم‌های مانیتورینگ و مخازن artifact‌ از طریق همین نماینده انجام می‌شود.

یکپارچه‌سازی پلتفرم Harness با ابزارها

پلتفرم Harness با انواع منابع و ابزارهای مختلف یکپارچه می‌شود؛ از مخازن کد گرفته تا ابزارهای توسعه، دیپلوی و همکاری. برخی از این یکپارچگی‌های مهم در ادامه ارائه شده‌اند.

  • ارائه دهندگان ابری: Harness با ارائه دهندگان زیرساخت عمومی و خصوصی و زیرساخت فیزیکی یکپارچه می‌شود.
  • کانکتورها: برای اتصال به مخازن، ابزارهای مانیتورینگ و همکاری و سایر منابع استفاده می‌شود. هر کانکتور نمایانگر یک ابزار یا منبع متفاوت است.
  • سرورهای Artifact: مانند Jenkins, Nexus, Bamboo, Artifactory, Helm Repo و Docker Registry که منبع اصلی تحویل Artifact در جریان CI/CD هستند.
  • ارائه‌دهندگان Verification: برای تست و بررسی خودکار دیپلویمنت‌ها، Harness با ابزارهایی مثل Prometheus، AppDynamics و Datadog یکپارچه می‌شود.
  • ارائه‌دهندگان مخزن کد: اتصال مستقیم به Git برای همگام‌سازی با مخازن، مدیریت دیپلویمنت‌ها از طریق Git و استفاده از مشخصاتی مثل مانفیست‌های Kubernetes یا اسکریپت‌های Terraform و Helm.
  • ارائه‌دهندگان همکاری: ابزارهایی مانند Slack، ایمیل، ServiceNow و Jira برای اطلاع‌رسانی، تأییدیه‌ها و مدیریت فرآیند دیپلوی استفاده می‌شوند.

مدل انتزاعی دیپلوی پیوسته (CD)

Harness برای مدل‌سازی فرآیند تحویل نرم‌افزار از یک مدل مفهومی CD استفاده می‌کند که شامل اجزای زیر است.

  • Applications: هر پروژه دیپلوی به‌صورت یک اپلیکیشن تعریف می‌شود که شامل میکروسرویس‌ها، Pipeline ها و اجزای ساخت آن‌هاست.
  • Services: معادل اپلیکیشن یا میکروسرویس هستند که شامل فایل‌ها، پیکربندی‌ها، و مشخصات کانتینرها می‌شود.
  • Environments: زیرساخت‌های دیپلوی به محیط‌های مختلفی مثل dev، QA، stage و production تقسیم می‌شوند.
  • Workflows: فرآیند دیپلوی، بررسی و بازگردانی را مدل می‌کند و شامل اجزایی مثل Service، Environment و زیرساخت‌هاست.
  • Pipelines: نمایانگر کل فرآیند انتشار هستند که شامل مراحل متنوعی از Workflows و فرآیندهای بررسی و دیپلوی می‌باشند.
  • Triggers: برای اجرای خودکار Pipeline در پاسخ به رویدادهایی مثل نسخه جدید، زمان‌بندی مشخص یا Webhook ها کاربرد دارند.
دیپلوی چیست؟ اهمیت و مزایای دیپلوی سریع
دیپلوی

مدیریت هزینه‌های فضای ابری با Harness

ماژول CCM در Harness به شما کمک می‌کند تا هزینه‌های زیرساخت ابری خود را بهتر کنترل و مدیریت کنید. با استفاده از این ابزار، می‌توانید مصرف منابع ابری را به‌صورت دقیق و حتی ساعتی بررسی کرده و دید شفافی از هزینه‌ها داشته باشید. این قابلیت برای بهینه‌سازی هزینه‌ها و جلوگیری از مصرف بی‌رویه منابع بسیار کاربردی است.

Harness چیست؟

تأیید پیوسته (CV) در Harness

در توسعه چابک، استقرارهای مکرر بخش مهمی از فرایند هستند، اما قبل از هر دیپلوی جدید، بررسی سلامت سرویس‌ها یک ضرورت اساسی به شمار می‌رود. تایید پیوسته در Harness این فرآیند را ساده کرده و با استفاده از تحلیل رفتار و تشخیص ناهنجاری‌ها، به شما کمک می‌کند تا به راحتی مشکلات را شناسایی کنید.

به جای اینکه برای بررسی وضعیت سیستم به طور دستی به لاگ‌ها یا داشبوردهای پراکنده مراجعه کنید، تایید پیوسته در Harness اطلاعات مورد نیاز را از ابزارهای مانیتورینگ جمع‌آوری می‌کند. سپس با استفاده از یادگیری ماشین، رفتار نرمال سرویس‌ها را شناسایی کرده و در صورتی که اختلالی در عملکرد مشاهده شود، به شما هشدار می‌دهد یا حتی می‌تواند به صورت خودکار فرآیند بازگشت (rollback) را انجام دهد.

یکپارچه‌سازی پیوسته (CI) با Harness

برای Harness، یکپارچه‌سازی پیوسته (CI) از ابزار Drone استفاده می‌کند که در سال 2020 به مالکیت این شرکت درآمد. اکنون Drone به عنوان بخشی از اکوسیستم Harness عمل می‌کند و تجربه‌ای یکپارچه از CI/CD را برای کاربران فراهم می‌آورد.

Harness CI با حذف وظایف وقت‌گیر مهندسان مانند مدیریت وابستگی‌ها و نوشتن اسکریپت‌ها، به آن‌ها این امکان را می‌دهد که تمرکز خود را بیشتر روی توسعه و تحویل نرم‌افزار بگذارند. این رویکرد باعث می‌شود تا فرآیندهای CI/CD سریع‌تر، ساده‌تر و کارآمدتر انجام شوند.

هماهنگ‌سازی تست امنیتی

ماژول Security Testing Orchestration (STO) به تیم‌ها کمک می‌کند تا تست امنیتی را به ابتدای فرآیند توسعه منتقل کنند. این ماژول تست‌ها را مدیریت کرده، اولویت بندی می‌‌کند، گزارش‌دهی امنیتی را بهبود می‌دهد و به صورت هوشمند داده‌های تکراری اسکنرها را حذف می‌کند.

ویژگی‌های کلیدی STO

  • Test: امکان ست کد؛ کانتینرها، کتابخانه‌های متن‌باز و اپلیکیشن‌های زنده به کمک اسکنرهای امنیتی رایج.
  • Remediate: لیستی اولویت بندی‌شده از آسیب‌پذیری‌ها برای رفع سریع‌تر مشکلات امنیتی فراهم می‌کند.
  • Govern: داشبوردهای امنیتی لحظه‌ای و سیاست‌های حاکمیتی (مانند OPA) برای کنترل دقیق‌تر امنیت پیش از رسیدن به مرحله Production.

یکپارچه‌ سازی و تحویل مداوم (CI/CD) در Harness

Continuous Integration و Continuous Delivery که به‌اختصار CI/CD نامیده می‌شوند، دو بخش کلیدی در فرآیند توسعه و دیپلوی نرم‌افزارهای مدرن محسوب می‌شوند. Harness با ارائه‌ یک پلتفرم یکپارچه، امکان پیاده‌سازی کامل این دو فرآیند را فراهم کرده است.

Harness CI

Harness یک روش ساده و کارآمد برای توسعه و تست کد ارائه می‌دهد. با استفاده از پایپ‌لاین‌های Harness، می‌توانید مراحل مختلف ساخت (build) و تست را به‌صورت تصویری طراحی و مدل‌سازی کنید. هر مرحله از این فرآیند شامل چند گام است که به ساخت، تست و ارسال (push) کد کمک می‌کنند.

در سیستم CI Harness، گام‌هایی مانند بسته‌بندی کد، ساخت کانتینرها و مدیریت وابستگی‌ها به‌صورت جداگانه از هم اجرا می‌شوند. تنها کافی است که کانتینر مورد نظر خود را مشخص کنید؛ Harness آن را پیدا کرده، اجرا می‌کند و job مربوطه را در داخل همان کانتینر انجام می‌دهد. از آنجایی که هر مرحله یا افزونه (plugin) در یک کانتینر مجزا اجرا می‌شود، دیگر نیازی به استفاده از زنجیره‌های پیچیده وابستگی برای مدیریت فرآیند اجرا نخواهید داشت.

یکی از اجزای مهم در این سیستم، ابزار Delegate است که مسئول اجرای تمام عملیات CI است. شما می‌توانید Delegate را در محیط‌های مختلف مانند شبکه داخلی، کلاستر یا فضای ابری خصوصی راه‌اندازی کنید. Harness این امکان را فراهم می‌کند که زیرساخت‌های ساخت (Build Infrastructure) مستقیماً با ارائه‌دهندگان سرویس‌های ابری و مخازن کد ارتباط برقرار کند. به این ترتیب، می‌توانید کدها و artifact ها را هم در پلتفرم‌های داخلی نگهداری کنید و هم از سرویس‌های عمومی مانند GitHub و DockerHub استفاده کنید.

Delegate مسئول مدیریت زیرساخت build است؛ یعنی job های مربوط به ساخت و تست را اجرا کرده و نتایج آن‌ها را برای Manager ارسال می‌کند. این داده‌ها می‌توانند برای انجام وظایف مختلفی مانند:

  • اجرای گام‌ها با ساختار DAG (Directed Acyclic Graph)
  • بررسی سلامت سیستم
  • خطایابی (Debugging)
  • تحلیل و آنالیز داده‌ها
  • ساخت مدل‌های یادگیری ماشین (ML)
  • ارسال اعلان‌ها (Notification)

استفاده شوند. در نهایت، زمانی که یک build با موفقیت انجام شد، artifact های تولید شده به رجیستری مشخص‌شده توسط شما منتقل می‌شوند.

Harness CD و GitOps

در حال حاضر، Harness در حال توسعه قابلیت GitOps است. این قابلیت به شما این امکان را می‌دهد که وضعیت مورد نظر یک سرویس که قصد دیپلوی آن را دارید، در قالب یک manifest در Git تعریف کنید. سپس، Harness این پیکربندی را با وضعیت زنده کلاستر Kubernetes همگام‌سازی می‌کند. به این ترتیب، می‌توانید فرآیندهای دیپلوی را با استفاده از کد مدیریت کنید و تغییرات در وضعیت سرویس‌ها را به‌راحتی از طریق Git پیگیری کنید.

CI/CD چیست؟
CI/CD

مزایا و معایب Harness

در ادامه، برخی از مهم‌ترین مزایا و معایب پلتفرم Harness مورد بررسی قرار گرفته‌اند.

مزایای Harness

  • پشتیبانی کامل از فرآیند CI/CD برای تیم‌های مختلف: این پلتفرم می‌تواند فرآیندهای یکپارچه‌سازی و تحویل مداوم را برای تیم‌های مختلف در یک پروژه به‌طور مؤثر مدیریت کند.
  • سیستم مدیریت Secrets داخلی: Harness ابزارهای داخلی برای مدیریت اطلاعات حساس مانند رمزهای عبور، کلیدهای API و دیگر داده‌های محرمانه را ارائه می‌دهد، بدون اینکه نیاز به ابزارهای جداگانه برای این کار باشد.
  • قابلیت Git Sync: با استفاده از این ویژگی، شما می‌توانید تغییرات مربوط به CI/CD را از طریق Pull Request اعمال کنید و این تغییرات به‌صورت خودکار در سیستم اعمال می‌شود.
  • تیم پشتیبانی و موفقیت مشتریان: نسخه سازمانی Harness با تیم پشتیبانی قوی همراه است که می‌تواند به تیم‌های مختلف در مدیریت پروژه‌های بزرگ و پیچیده کمک کند.
  • رابط کاربری ساده و قابل یادگیری: طراحی رابط کاربری به گونه‌ای است که توسعه‌دهندگان می‌توانند به سرعت آن را یاد بگیرند و از آن استفاده کنند.
  • ارائه قالب‌های قابل استفاده مجدد: Harness قالب‌های آماده‌ای برای ساخت سریع و یکپارچه پایپ‌لاین‌های CI/CD ارائه می‌دهد که به تیم‌ها کمک می‌کند در فرآیندهای خودسازماندهی و سرعت عمل بالاتری داشته باشند.
  • امکانات پیشرفته در تحویل نرم‌افزار: ویژگی‌هایی مانند Feature Toggle، Continuous Verification (تأییدیه خودکار)، و نظارت بر دیپلوی و هشداردهی از ویژگی‌های کلیدی Harness برای ارتقاء کیفیت و عملکرد فرآیندهای دیپلوی هستند.
  • سازگاری کامل با ابزارهای IaC: پلتفرم Harness به‌طور کامل با ابزارهای مدیریت زیرساخت به‌عنوان کد (مثل Terraform) یکپارچه می‌شود تا فرآیندهای پیکربندی و مدیریت زیرساخت را ساده‌تر کند.
مزایا و معایب Harness

معایب Harness

در حالی که Harness امکانات بسیاری ارائه می‌دهد، برخی محدودیت‌ها و چالش‌ها نیز وجود دارند که ممکن است برای کاربران مشکل‌ساز شوند:

  • نبود پشتیبانی کامل از GitOps: پلتفرم Harness هنوز به‌طور کامل از قابلیت‌های GitOps پشتیبانی نمی‌کند، در بخش reconciliation loop که برای همگام‌سازی وضعیت سیستم با وضعیت پیکربندی در Git بسیار حیاتی است.
  • تنظیمات پیچیده پشت‌صحنه: برخی تنظیمات مانند delegate profile که برای مدیریت و تنظیم Delegate در سیستم نیاز است، برای کاربران جدید می‌تواند گیج‌کننده باشد و نیاز به آموزش بیشتری دارد.
  • افزودن اسکریپت‌های سفارشی به پایپ‌لاین‌ها: افزودن اسکریپت‌های سفارشی برای اجرای مراحل خاص در پایپ‌لاین‌ها ممکن است دشوار باشد، و همچنین خطایابی این اسکریپت‌ها می‌تواند چالش‌برانگیز باشد.
  • پیکربندی پیچیده RBAC: پیکربندی و مدیریت دسترسی‌ها با استفاده از RBAC (Role-Based Access Control) ممکن است پیچیده و زمان‌بر باشد، بخصوص برای تیم‌های بزرگ با نیازهای دسترسی متنوع.
  • ساخت فلوها به‌صورت دستی: برای ایجاد flows، شما باید آن‌ها را به‌صورت دستی بسازید و بعد از آن می‌توانید از این فلوها به‌عنوان قالب استفاده کنید. این در حالی است که برخی کاربران ترجیح می‌دهند از ابتدا با قالب‌های آماده شروع کنند.

جمع بندی

Harness تنها یک ابزار CI/CD نیست؛ بلکه یک راهکار جامع برای تیم‌هایی است که به دنبال افزایش سرعت توسعه، کاهش خطاهای عملیاتی و ایجاد یک جریان کاری امن و هوشمند در فرآیند تحویل نرم‌افزار هستند. با معماری ماژولار، قابلیت‌های امنیتی پیشرفته، پشتیبانی از استقرارهای پیچیده و یکپارچگی با سایر ابزارهای DevOps، Harness می‌تواند به یکی از ارکان اصلی تیم‌های مهندسی نرم‌افزار تبدیل شود. در نهایت، انتخاب پلتفرمی مانند Harness به معنای سرمایه‌گذاری روی پایداری، چابکی و آینده توسعه نرم‌افزار شماست.