XII. فرآیندهای مدیریتی
وظایف مدیریتی/نگهداری را با پردازههای یکبار مصرف اجرا کنید
مدل پردازش آرایهای از پردازههایی است که برای انجام کارهای عادی برنامه (مانند رسیدگی به درخواستهای وب) در حین اجرا استفاده می شود. به طور جداگانه، توسعهدهندگان اغلب مایلند کارهای مدیریتی یا نگهداری نرمافزار را برای برنامه انجام دهند، مانند:
- اجرای مهاجرتهای پایگاهداده (به عنوان مثال
manage.py migrate
در Django وrake db:migrate
در Rails). - اجرای یک خط فرمان (که به عنوان پوسته REPL نیز شناخته می شود) برای اجرای کد دلخواه یا بازرسی مدلهای برنامه در برابر پایگاهدادهی عملیاتی. اکثر زبانها با اجرای مفسر بدون هیچ آرگومان (مانند
python
یاperl
) یک REPL ارائه میکنند یا در برخی موارد دارای یک فرمان جداگانه هستند (مانندirb
برای Ruby، وrails console
برای Rails). - اجرای اسکریپت های یکبار مصرف در مخزن برنامه (مانند
php scripts/fix_bad_records.php
).
پردازههای مدیریت یکبار مصرف باید در محیطی مشابه با پردازههای با طول عمر بالا ی برنامه اجرا شوند. آنها در برابر یک استقرار برنامهی کاربردی اجرا می شوند، با استفاده از همان کد و پیکربندی مانند هر پردازهای که در از آن نسخه اجرا میشود. کد زیربرنامهی مدیریتی یا نگهداری باید همراه با کد برنامه ارسال شود تا از مشکلات همگامسازی و عدم یکسان بودن آنها جلوگیری شود.
تکنیکهایی یکسان برای جداسازی وابستگی باید در همهی انواع پردازهها استفاده شود. به عنوان مثال، اگر فرآیند وب Ruby از دستور bundle exec thin start
استفاده کند، در این صورت مهاجرت پایگاهداده نیز باید از bundle exec rake db:migrate
استفاده کند. به همین ترتیب، یک برنامهی پایتون با استفاده از Virtualenv باید از bin/python
آن کتابخانه برای اجرای هر دو وب سرور Tornado و هر فرآیند مدیریتی manage.py
استفاده کند.
دوازده-سازه به شدت طرفدار زبانهایی است که پوسته REPL بدون نیاز به ابزار جانبی ارائه میدهند و اجرای اسکریپتهای یکباره را آسان می کنند. در یک استقرار داخلی، توسعهدهندگان فرآیندهای مدیریت یکباره را با یک فرمان پوسته مستقیم در مسیر پوشهی وارسی برنامه فراخوانی میکنند. در استقرار عملیاتی، توسعهدهندگان میتوانند از ssh یا سایر روشهای اجرای فرمان از راه دور که توسط محیط اجرای آن استقرار ارائه میشود، برای اجرای چنین فرآیندی استفاده کنند.