معماری یک پروژه جنگو با Nginx و Gunicorn

به طوی کلی برای پیاده سازی یه پروژه که با backend پایتونی زده شده (مثل جنگو و فلسک) باید از یک اپلیکیشن سرور (مثل uWSGI یا Gunicorn) و یک وب سرور (که اینجا بهش پراکسی سرور گفته میشه استفاده کرد. مثل شکل زیر:

ولی چرا مثل یک پروژه که با php زده میشه نمیتونیم مستقیم از یه وب سرور استفاده کنیم و خلاص؟ به این دلیل که وب سرورها قابلیت اجرای وب اپلیکیشن های پایتونی رو به خوبی پیاده سازی نکردن. این روش مزایای زیادی داره یکی اینکه تمام منطق کد پایتونی توسط Gunicorn اجرا میشه و عملا Nginx فقط request رو به اون فوروارد میکنه. در عوض خود Nginx کارهای دیگه ای رو انجام میده و عملا باعث بهبود عملکرد اپلیکیشن سرور میشه مثلا درخواست های کاربر رو فیلتر می کنه و اونایی که معتبر هستن رو به اپلیکیشن سرور میده همچنین فایلهای static مثل html, css و… رو خود Nginx به کاربر میده و باعث میشه اپلیکیشن سرور کار پرهزینه انجام نده.

تصویر بالا معماری گفته شده رو نشون میده که یه قابلیت دیگه از این معماری رو میبینیم. همینطور که میبینیم 3 نمونه از پروژه با 3 worker اجرا شده که باعث افزایش کارایی اپلیکیشن میشه. در این حالت خود Nginx درخواست ها رو مدیریت می کنه و میدونه به کدوم worker بفرسته.

سایت دیجیتال اوشن جزئیات پیاده سازی این معماری رو توضیح داده

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *