---
title: "VIII. همزمانی"
source: Twelve-Factor App
source_url: https://github.com/heroku/12factor
licence: MIT
domain: engineering
subdomain: 12factor
date_added: 2026-04-25
---

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

هر برنامه‌ی کامپیوتری، پس از اجرا، توسط یک یا چند پردازه نمایش داده‌می شود. برنامه‌های وب، شکل‌های مختلفی برای اجرای فرآیند به خود گرفته‌اند. برای نمونه، پردازه‌های PHP به عنوان پردازه‌های فرزند آپاچی اجرا می‌شوند که بر حسب نیاز بر اساس حجم درخواست ایجاد شده‌اند. پردازه‌های جاوا رویکردی متفاوت دارند. JVM که یک پردازه‌ی مجمتع عظیم را ارائه می‌کند و بلوک بزرگی از منابع سیستم (پردازنده و حافظه) را در هنگام راه‌اندازی ذخیره می‌کند و مدیریت داخلی همزمانی را با استفاده از رشته‌ها انجام می‌دهد. در هر دو مورد، پردازه‌(ها) ی در حال اجرا، تنها برای توسعه‌دهندگان برنامه قابل مشاهده است.

![مقیاس‌پذیری به عنوان تعداد پردازه‌های در حال اجرا بیان می‌شود، اما تنوع حجم کار به عنوان تعداد انواع پردازه بیان می شود.](/images/process-types.png)

**در برنامه‌ی کاربردی دوازده-سازه، پردازه‌ها همانند شهروند درجه یک هستند.** پردازه‌ها در برنامه‌ی دوازده-سازه نشانه‌هایی قوی از [مدل فرآیند یونیکس برای اجرای دیمون‌های سرویس](https://adam.herokuapp.com/past/2011/5/9/applying_the_unix_process_model_to_web_apps/) دارند. با استفاده از این مدل، توسعه‌دهنده می‌تواند با اختصاص دادن هر نوع کار به یک *نوع پردازه*، برنامه‌ی خود را برای مدیریت بارهای کاری مختلف طراحی کند. برای مثال، درخواست‌های HTTP ممکن است توسط یک پردازه‌ی وب و وظایف طولانی‌مدت که در پس‌زمینه اجرا می‌شوند، توسط یک یا چند پردازه‌ی دسته‌ای انجام شود.

این امر پردازه‌های منفرد را از مدیریت چندگانه داخلی خود، از طریق رشته‌های داخل VM زمان اجرا، یا مدل async/evented که در ابزارهایی مانند [EventMachine](https://github.com/eventmachine/eventmachine)، [Twisted یافت می‌شود، حذف نمی‌کند. ](http://twistedmatrix.com/trac/)، یا [Node.js](http://nodejs.org/). اما یک ماشین مجازی تنها می‌تواند تا این حد بزرگ شود (مقیاس عمودی)، بنابراین برنامه باید بتواند چندین فرآیند در حال اجرا بر روی چندین ماشین فیزیکی را نیز بپوشاند.

زمانی که نوبت به افزایش مقیاس‌پذیری می‌رسد، مدل پردازه واقعاً اهمیت می‌یابد. [به اشتراک گذاشتن هیچ منبعی در ماهیت تقسیم افقی پردازه‌های برنامه‌ی دوازده‌سازه](./processes) به این معنی است که افزودن همزمانی بیشتر، یک عملیات ساده و قابل اعتماد خواهد بود. آرایه‌ی انواع پردازه و تعداد پردازه‌های هر نوع، با نام *مدل پردازه* شناخته می‌شود.

پردازه‌های برنامه‌ی دوازده-سازه [هرگز نباید دیمونیزه شوند](http://dustin.github.com/2010/02/28/running-processes.html) یا فایل‌های PID بنویسند. در عوض، به مدیر پردازه‌ی سیستم عامل (مانند [systemd](https://www.freedesktop.org/wiki/Software/systemd/)، یا یک مدیر پردازه‌ی توزیع شده در یک پلت فرم ابری یا ابزاری مانند [Foreman](http://blog.daviddollar.org/2011/05/06/introducing-foreman.html) در حال توسعه) برای مدیریت [جریان‌های خروجی](./logs)، پاسخگویی به پردازه‌هایی که با خطا روبه‌رو شده‌اند و مدیریت راه‌اندازی مجدد توسط کاربر و خاموش‌شدن سرور تکیه کنید.
