پیشگفتار:
چندی پیش به صورت اتفاقی با مفهومی آشنا شدم با نام The Twelve-Factor App یا برنامه ۱۲ عاملی. برای من جالب آمد و بعد از گفتگو و بررسی آن در جلسات هفتگی با چند تن از دوستانم، تصمیم گرفتم که روزی آن را ترجمه نمایم. در این بین موضوع را با دوست خوبم حمید آقای خاتمی مطرح کردم و ایشان استقبال کردند تا آن را ترجمه نمایند. قرار بر آن شد که ایشان مطالب را ترجمه نمایند و بازنگری نهایی نیز بر عهده من باشد. ضمن تشکر صمیمانه از ایشان، امیدوارم آموختن این موضوع برای شما هم مفید باشد.
گفتار:
۱- معرفی
در دنیای مدرن، نرم افزارها معمولا به صورت خدمت (سرویس) ارائه میشوند و با نامهای برنامهی تحت وب (web apps) یا «نرمافزار در قالب خدمت» (software-as-a-service) شناخته میشوند.
برنامه دوازه عاملی (twelve-factor app) روشی برای ساخت برنامههای «نرمافزار در قالب خدمت» است که دارای ویژگیهای زیر هستند:
- از شکل تشریحی (declarative) برای تعریف و راهاندازی خودکارسازیها (automation setup) استفاده میکنند تا زمان و هزینه برای توسعهدهندگان تازه وارد به پروژه به حداقل برسد.
- قرارداد مشخص و شفافی (clean contract) با سیستم عاملی که نرمافزار روی آن مستقر میشود دارند تا حداکثر امکان جابهجایی (portability) بین محیطهای اجرا فراهم گردد.
- برای استقرار(deployment) روی سکوهای (platform) ابری مدرن مناسبند و نیازی به خدمتگذارها (server) و مدیریت سیستم ندارند.
- تفاوت و دوگانگی بین محیط توسعه (development) و محیط عملیاتی (production) را به حداقل میرسانند و امکان استقرار پیوسته (continuous deployment) با هدف حداکثرسازی چابکی را فراهم میکنند.
- و بدون تغییرات قابل توجهی در ابزار، معماری یا شیوههای توسعه میتوانند مقیاس و اندازه خود را افزایش دهند (scale up).
روش دوازده عاملی را میتوان برای برنامههایی که با هر زبانی نوشته شدهاند و برنامههایی که از هر ترکیبی از خدمات (پایگاه داده، صف (queue)، حافظه پنهان (cache) و غیره) استفاده میکنند، اعمال کرد.
گزیده:
ارزش یک محصول به تعداد مشکلاتی است که میتواند حل کند تقسیم بر میزان پیچیدگی که کاربر برای استفاده از آن باید در ذهن خود نگه دارد. آیفون را با کنترل تلویزیون استاندارد مقایسه کنید: صفحه نمایش آیفون را میتوان برای کارهای متفاوتِ بیشماری استفاده کرد، اما برای کار با آن اطلاعات کمی را باید به خاطر سپرد. برای کار با کنترل تلویزیون باید یادتان بماند که هر دکمه چه کاری انجام میدهد. هر چقدر بخواهید از کنترل تلویزیون برای کارهای بیشتری استفاده کنید، باید دکمههای بیشتری را به خاطر بسپارید. ما میخواهیم آیفون بسازیم، نه کنترل تلویزیون.
– آدام ویگینز: ارزشهای شرکت Heroku (شرکت خدمات ابری)
دیدگاهتان را بنویسید