port binding

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/09/30
  • تعداد بازدید: 8

فاکتور هفتم: Port Binding

فاکتور هفتم در 12-Factor App مربوط به Port Binding است. اپلیکیشن باید سرویس‌های خود را از طریق اتصال به پورت (Port) ارائه دهد و برای اجرای سرویس‌های وب به وب‌سرور خارجی یا محیط injection شده وابسته نباشد.

در برخی سیستم‌ها، وب اپلیکیشن‌ها به عنوان ماژول داخل وب‌سرور اجرا می‌شوند. برای مثال، اپلیکیشن‌های PHP ممکن است داخل Apache HTTPD اجرا شوند و اپلیکیشن‌های Java داخل Tomcat. اما در مدل 12-Factor، اپلیکیشن به‌صورت self-contained است و خود سرویس وب را ارائه می‌کند.

نحوه عملکرد

  • اپلیکیشن با bind شدن به یک پورت HTTP درخواست‌ها را دریافت می‌کند.
  • در محیط توسعه، توسعه‌دهنده می‌تواند با مراجعه به URL محلی مانند http://localhost:5000/ به سرویس دسترسی پیدا کند.
  • در محیط production، یک لایه routing درخواست‌ها از hostname عمومی به پورت‌های اپلیکیشن هدایت می‌کند.

ابزارهای رایج

این مدل معمولاً با افزودن کتابخانه‌های وب‌سرور به اپلیکیشن پیاده‌سازی می‌شود، به عنوان مثال:

  • Python: Tornado
  • Ruby: Thin
  • Java/JVM: Jetty

این کار کاملاً در فضای کاربر (User Space) انجام می‌شود و قرارداد با محیط اجرا، ارائه سرویس از طریق یک پورت مشخص است.

Port Binding برای سرویس‌های دیگر

HTTP تنها سرویسی نیست که می‌تواند از طریق port binding ارائه شود. تقریباً هر نرم‌افزار سرور می‌تواند با bind شدن به یک پورت و دریافت درخواست‌ها اجرا شود. مثال‌ها:

  • ejabberd برای پروتکل XMPP
  • Redis برای پروتکل Redis

این رویکرد همچنین اجازه می‌دهد که یک اپلیکیشن به عنوان Backing Service برای اپلیکیشن دیگر عمل کند. در این حالت، URL اپلیکیشن ارائه‌دهنده به عنوان resource handle در config اپلیکیشن مصرف‌کننده قرار می‌گیرد.

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد
0/600

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.