Deployment چیست؟
Deployment یا استقرار نرمافزار فرایندی است که به واسطهی آن نرمافزار برای استفاده آماده میشود. این فرایند شامل نصب، پیکربندی، ارزیابی و بهینهسازی میشود، پس بهتر است نرمافزار زمانی وارد فرایند استقرار شود که مراحل تست را گذرانده باشد و باگها و مشکلات احتمالی آن برطرف شده باشد. بهعنوان مثال، استقرار در توسعهی وب به معنای انتقال نرمافزار مورد نظر به یک سرور یا سکوی ابری یا فیزیکی است، یعنی همان فضایی که در آن اجرا خواهد شد. در فرایند استقرار معمولن لازم است منابع مورد نیاز برای دریافت عملکرد مناسب مانند مقدار توان پردازشی و فضای حافظهی لازم تنظیم شود.
توجه ش ود که Deployment به معنای انتشار نرمافزار برای کاربران نیست، بلکه یک گام قبل از آن است. Deployment با توجه به پروژه تعریف میشود و از موردی به مورد دیگر متفاوت است. البته بهشکل کلی، استقار یعنی آماده کردن نرمافزار برای استفاده واقعی. مثلن ممکن است شما یک قطعه کد را روی یک سرور آزمایشی و پیش از انتشار نهایی، برای بررسی بیشتر قرار دهید. در این حالت نرمافزار فقط برای تیم توسعه در دسترس است، اما باز هم Deployment انجام شده است.
اجزای Deployment
در سیستمهای ساده، Deployment شامل برقرار کردن مواردی مانند دستورات، میانبرها، سرویسها و اسکریپتها است که برای اجرای دستی یا خودکار نرمافزار مورد نیاز است. در سیستمهای پیچیدهتر، ممکن است لازم باشد سیستم پیکربندی نیز شود. پس از این مراحل نیز لازم است فایل اجرایی یک بار اجرا و راهاندازی شود. در Deploymentهای بزرگتر، ممکن است با توجه به اهمیت محصول لازم باشد تا در کنار نسخهی اصلی محصول هدف، سایر نسخهها نیز در محیطهای تست، توسعه و بازیابی نصب شوند.
در کاربردهای حرفهای تر نیز ممکن است ورژنهایی با پیکربندیهای متفاوت در محیط محصول (Production) بهشکل همزمان برای استفادهی کاربران داخلی و خارجی و یا برای انتشار تدریجی استقرار یافته باشند. این ویژگی اجازه میدهد که امکان عرضهی محصول با توجه به استراتژیهای شرکت فراهم باشد و رفع مشکل بهسادگی انجام شود. برای مثال، توییتر، محصول خود را به این روش استقرار داده است تا بهسادگی بتواند ویژگیهای جدید و رابطهای کاربریاش را از طریق A/B Test بررسی کند.
مفاهیم جدید مبتنی بر Deployment
پیش از توسعهی اینترنت، استقرار نرمافزار کاری پرهزینه، نامتداول و بزرگ محسوب میشد اما با ظهور اینترنت Deployment چابک نرمافزار گسترش یافت. درعمل، توسعهی پردازش ابری و ارایهی معماری نرمافزار بهعنوان سرویس (SaaS) باعث شد عرضهی نرمافزار برای تعداد قابل توجهی مشتری از طریق اینترنت در زمانی کوتاه، ممکن شود. این توانمندی جدید، خود باعث امکانپذیر شدن مفهومی جدید با عنوان Continuous Delivery شد؛ به این معنا که تغییرات کد (پس از عرضهی اولیه) پس از اعمال بر Source Code نرمافزار، بهشکل کاملن خودکار برای عرضه به مشتری آماده شود.