عامل ۴: سرویس های کمکی ( backing services)
با سرویسهای کمکی مانند منابع ضمیمه شده یا پیوست ( attached resources) رفتار کنید.
سرویس کمکی ( backing services) هر سرویسی است که برنامه از طریق شبکه از آن برای انجام کارهای معمول و روزمرهاش استفاده کند. از جمله سرویسهای کمکی میتوان به پایگاه داده مانند MySQL، سیستمهای پیامرسان و مدیریت صف (messaging/queueing) مانند RabbitMQ، سرویس ایمیل ( SMTP) برای ارسال و دریافت ایمیلهامانند Postfix و حافظههای ذخیرهسازی سریع (caching) مانند Memcached اشاره کرد.
سرویسهای کمکی مانند پایگاه داده از قدیم توسط راهبران سیستم (administrators) که استقرار برنامهها نیز بر عهدهی آنهاست مدیریت میشوند. علاوه بر سرویسهایی که به صورت محلی و داخلی (local) مدیریت میشوند، برنامهها ممکن است از سرویسهایی استفاده کنند که توسط شرکتهای دیگر ارائه و مدیریت میشوند. برای مثال میتوان به سرویس ایمیل مانند Postmark، سرویس جمعآوری شاخصهای آماری مانند New Relic یا Loggly، سرویس مدیریت داراییهای دیجیتالی مانند Amazon S3 و حتی سرویسهای مبتنی بر API مانند Twitter، Google Maps یا Last.fm اشاره کرد.
کد هر برنامه دوازده عاملی هیچ تفاوتی بین سرویسهای محلی و سرویسهای خارجی قائل نیست. از دید برنامه، هر دو نوع سرویس، منابع پیوست (attached resources) هستند که از طریق یک آدرس (URL) یا هر مکانیزم آدرسدهی دیگری که در فایل پیکربندی ذخیره شده قابل دسترسیاند. موقع استقرار ( deploy) هر برنامه دوازده عاملی باید بتوان بدون تغییر کد، یک پایگاه داده MySQL محلی را با نسخهای که توسط یک شرکت خارجی مدیریت میشود مانند Amazon RDS تعویض کرد. همچنین بدون تغییر کد باید یک سرویسدهندهی SMTP داخلی را با یک سرویسدهندهی خارجی مانند Postmark تعویض کرد. در هر دو مورد فقط کافی است آدرس دسترسی به منابع در پیکربندی (config) تغییر داده شود.
هر سرویس کمکی یک منبع ( resource) به حساب میآید. برای نمونه هر پایگاه داده MySQL یک منبع است. دو پایگاه داده MySQL (که در لایه Application برای اشتراک گذاری استفاده میشود) دو منبع مجزا به شمار میآیند. برنامه دوازده عاملی با این پایگاههای داده مانند منابع پیوست (attached resources) برخورد میکند که نشاندهنده همبستگی کم (loose coupling) آنها به استقراری است که در آن قرار دارند.
منابع را میتوان به دلخواه به استقرارها متصل و جدا کرد. برای مثال، اگر پایگاه داده به دلیل مشکلات سخت افزاری بد کار کرد راهبر (admin) برنامه میتواند از روی آخرین نسخهی پشتیبان، سرویسدهندهی جدیدی برای پایگاه داده راهاندازی کند و برنامه را به آن متصل نماید. به عنوان نمونهای دیگر، پایگاه داده عملیاتی را میتوان جدا کرد و پایگاه داده جدیدی را به برنامه متصل کرد. تمام این کارها بدون هیچ تغییری در کد انجام میشود.
نوشتههای قبلی:
– قسمت چهارم: پیکربندی
مترجم: حمید آقای خاتمی
گزیده:
«زمانی که از به هدر دادنش لذت ببری. به هدر نرفتهاست.» جان لنون
دیدگاهتان را بنویسید