ویرگول
ورودثبت نام
صادق محبی
صادق محبیبرنامه نویس node js و DevOps کار - دانش‌آموخته اقتصاد علاقه‌مند به کارآفرینی و استارتاپ ها - sadeghmohebbi.ir
صادق محبی
صادق محبی
خواندن ۳ دقیقه·۷ سال پیش

تست سرعت Apache و Nginx با طعم داکر و NodeJs

منبع: unsplash  با اندکی تغییر
منبع: unsplash با اندکی تغییر

شرایطی به وجود اومده که به عنوان برنامه نویس backend nodejs مدتی در یک استارتاپ فعالیت کنم ؛ از اونجایی که بک اند کار ها مجبورند (یا علاقه مندند) در نبود جایگاه DevOps در شرکت خودشون دست به کار بشن ... من هم از این قاعده تا الآن مستثنا نبودم! البته برای یه بک اند کار نسبتا تازه کار مثل من این قبیل ماجراجویی ها توصیه نمی شه ولی من گوش نمی دم و کار خودم رو می کنم.

حالا من بودم و یه دنیای جدید! یکی از اون جذاب ترین و لذت بخش ترین دنیا های پیش روی من Docker بود. طبق تحربه های قبلی برای یادگیری این ابزار ابتدا به سراغ منابع خارجی رفتم ولی راستش نمی فهمیدم و تلاش برای درک مفاهیم عجیب و غریب Docker منو کلافه کرده بود. عادت شکنی کردم و یه جستجوی فارسی زدم تا به آموزش آقای احمد طحانی @atahani رسیدم. همین جا ازش تشکر می کنم اولا بخاطر این دوره ی خوب آموزش Docker شون که توی فرانش منتشر کردند (آشنایی و استفاده از Docker) و ثانیا استفاده ای که از فایل های آموزشی شون داریم برای تست وب سرویس ها در این ویرگول

http://www.docker.com/
http://www.docker.com/

اگر با داکر آشنایی نداشتید می تونید سری به سایت رسمی داکر بزنید و روی سیستم خودتون اونو نصب و راه اندازی کنید


حالا ما می خواهیم با استفاده از یک برنامه ی ساده با NodeJs و با استفاده از ابزار Docker یک تست خیلی ساده رو ترتیب بدیم تا به این نتیجه برسیم که برای NodeJs از چه وب سرویسی بهتره استفاده کنیم. البته باید خاطر نشان کنم که...! طبیعتا انتخاب یه وب سرویس مناسب بستگی به شرایط فنی کسب و کار و خیلی چیزای دیگه داره ولی به هر حال این آزمایش ساده ی تجربی می تونه منشأ تصمیمات خیلی از افراد دیگه از جمله خودم در استارتاپ مون باشه.

خب ... ما می خواهیم با ساختار زیر Container های Docker رو بچینیم. یعنی MongoDB به عنوان دیتابیس میاد link می شه به ۴ تا Container که Scale شدن برای اجرای برنامه ی NodeJs مون. در نهایت این ۳ تا با استفاده از ابزار load balancing وب سرویس مورد نظر مون listen می شن روی پورت ۸۰ (یا ۴۴۳)

منبع: اسلاید های دوره ی آقای طحانی که در ابتدای نوشته اشاره شده
منبع: اسلاید های دوره ی آقای طحانی که در ابتدای نوشته اشاره شده

خطوط این gist کد های ساده ای با NodeJs هست که به طور خلاصه میاد به ازای هر request یک عدد به counter ذخیره شده توی دیتابیس اضافه می کنه و اونو نمایش می ده ( کد های NodeJs استفاده شده در این آزمایش موضوع بحث ما نیستند به خاطر همین خودتون اگر علاقه مند بودید می تونید اینجا ببینید خیلی سادست)

روش آزمایش ما بدین صورت هست که ابتدا بایستی با کمک داکر دیتابیس رو اجرا کنیم سپس NodeJs اپلیکیشن ها رو و در آخر وب سرویس و کانفیگ مربوطه. البته می تونیم همه ی این کار هارو با استفاده از ابزار Docker Compose بهتر و سریع تر انجام بدیم. در آخر وقتی همگی به درستی اجرا شدند با کامند ab می آیم ۱۰۰۰ تا request به صورت ۵ تا در لحظه (/ab -n 1000 -c 5 http://localhost) به سرور مون می فرستیم. (من این کارو سه بار انجام دادم و میانگین رو محاسبه کردم تا عادلانه باشه)



لینک پروژه شامل کانفیگ ها و Dockerfile ها و کلا همه چی:

https://github.com/sadeghmohebbi/docker-workflow-sample

apachenginxnodejsdocker
۲۵
۳
صادق محبی
صادق محبی
برنامه نویس node js و DevOps کار - دانش‌آموخته اقتصاد علاقه‌مند به کارآفرینی و استارتاپ ها - sadeghmohebbi.ir
شاید از این پست‌ها خوشتان بیاید