معرفی

در عصر مدرن، نرم‌افزار معمولاً به عنوان یک سرویس به نام برنامه‌های کاربردی تحت وب یا نرم‌افزار به عنوان سرویس ارائه می شود. برنامه‌ی کاربردی دوازده-سازه روشی برای ساخت برنامه‌های کاربردی نرم‌افزاری به عنوان سرویس است که:

روش دوازده-سازه را می توان برای برنامه‌هایی که به هر زبان برنامه‌نویسی نوشته شده‌اند و از هر ترکیبی از خدمات پشتیبان (پایگاه داده، صف، کش حافظه و غیره) استفاده می‌کنند، اعمال کرد.

پس‌زمینه

مشارکت‌کنندگان در این نوشتار، به طور مستقیم در توسعه و استقرار صدها برنامه‌ی کاربردی مشارکت داشته‌اند و به‌طور غیرمستقیم شاهد توسعه، عملیات و مقیاس‌پذیری صدها هزار برنامه‌ی کاربردی از طریق کار ما در Heroku بوده‌اند.

این نوشتار، همه‌ی تجربیات و مشاهده‌های ما را در مورد طیف گسترده‌ای از برنامه‌های کاربردی نرم افزاری به عنوان سرویس در صنعت ترکیب می‌کند. سه ضلعی که بر روی شیوه‌های ایده‌آل برای توسعه‌ی برنامه‌ی کاربردی، توجه ویژه به پویایی رشد ذاتی یک برنامه‌ی کاربردی در طول زمان، پویایی همکاری بین توسعه‌دهندگانی که روی کدنویسی برنامه‌ی کاربردی کار می‌کنند، و جلوگیری از هزینه‌ی زوال نرم‌افزار بنا شده است.

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

چه کسی باید این سند را بخواند؟

هر برنامه‌نویسی که برنامه‌های کاربردی را می‌سازد که به‌عنوان یک سرویس اجرا می‌شوند. مهندسان عملیاتی که چنین برنامه‌هایی را مستقر یا مدیریت می‌کنند.

دوازده-سازه

I. کد منبع

یک مخزن کد که با سیستم کنترل نسخه ردیابی می‌شود، در محیط‌های متعدد مستقر کنید

II. وابستگی‌ها

وابستگی‌ها را به صراحت اعلام و جدا کنید

III. پیکربندی‌ها

پیکربندی‌ها را در محیط ذخیره کنید

IV. سرویس‌های پشتیبان

خدمات پشتیبان را به عنوان منابع همراه نرم‌افزار تلقی کنید

V. ساخت، انتشار، اجرا

مراحل ساخت و اجرا را کاملاً از هم جدا کنید

VI. پردازه‌ها

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

VII. درگاه‌های شبکه

سرویس‌های نرم‌افزار را از طریق درگاه‌های شبکه ارائه کنید

VIII. همزمانی

از طریق مدل پردازه مقیاس‌پذیری را افزایش دهید

IX. دسترس‌پذیری

با راه‌اندازی سریع و توقف تدریجی نرم‌افزار، دسترس‌پذیری را به حداکثر برسانید

X. برابری توسعه/عملیات

محیط توسعه، آزمون و عملیات را تا حد امکان همانند هم نگه دارید

XI. رویدادنویسی

رویدادنویسی را به‌عنوان جریانی از رویدادها در نظر بگیرید

XII. فرآیندهای مدیریتی

وظایف مدیریتی/نگهداری را با پردازه‌های یکبار مصرف اجرا کنید