گاه نوشته های مهدی بیاضی

tail -f /dev/mind > blog

گاه نوشته های مهدی بیاضی

tail -f /dev/mind > blog

طبقه بندی موضوعی

۲ مطلب با کلمه‌ی کلیدی «cloud» ثبت شده است

در زمان های نه چندان دور تعداد سرور ها و کل زیر ساخت معمولا کوچک و کم بود. سازمان یا سرویس های بسیار اندکی تعداد سرور هایشان از چند ده تا بیشتر می شد اما با پیشرفت فوق العاده عجیب و سریع اینترنت و سرویس ها، نیاز به استفاده از سرور های بیشتر در بستر و زیر ساخت احساس شد. الان سرویس ها و نرم افزارهای تحت وب بسیاری دارای میلیون ها کاربر بوده و بعضی داده هایی با حجم های بسیار زیاد (چندین پتابایت) ذخیره و روزانه به هزاران و حتی میلیون ها کاربر سرویس دهی می کنند.

ادمین ها قبلا با روش های ساده ای مثل ssh به یک سرور متصل و دستوراتی رو اجرا می کردند اما مشخص هست که با اضافه شدن تعداد سرور، بحث مدیریت این سرور ها سخت و سخت تر می شه.

هر نرم افزار تحت وب برای راه اندازی و سرویس دهی نیاز به یک سری زیرساخت و بستر داره که اکثرا آشنایی دارید با این موارد. به طور کلی مدیریت زیرساخت در یک سرویس تحت وب موارد زیر می تونه باشه

  • سخت افزار و شبکه
  • تنظیم و نصب سیستم ابری (کلود یا Cloud) و سیستم های مجازی (vm)
  • سیستم عامل و نرم افزار (نصب، تنظیم و به روز رسانی)
  • وظایف و دستورات زمانبندی شده (پشیبان گیری، حذف لاگ، تنظیم ساعت و ...)
  • دستورات و وظایف دستی (نصب نرم افزار، ریست و ...)
  • مانیتورینگ
  • و ...

خوب همین دلایل و نیاز به روشی سریع و مطمئن برای مدیریت سرور ها باعث ایجاد نرم افزار هایی خاص برای این کار شد. نرم افزار هایی مثل puppet. ابزار puppet با استفاده از زبان روبی (Ruby) نوشته شده و یکی از نرم افزار های خوب برای مدیریت مرکزی نصب، تنظیمات و نگهداری سیستم عامل و نرم افزار های چندین سرور هست.

ابزار های پایتونی هم هستند که البته به نسبت پاپت محدود تر بودند و مثلا برای اجرای یک سری دستورات از طریق ssh کاربرد داشتند مثل Fabric.

سال ۲۰۱۱ ابزاری معرفی شد به اسم salt. این یک پروژه پایتونی بود که به منظور مدیریت متمرکز سرور ها ایجاد شد و به زودی طرفداران بسیاری پیدا کرد. مدت ها از پروژه های بسیار فعال github بود (رکورد بیشترین تعداد توسعه دهنده در سال ۲۰۱۲) و توسعه وحستناکی روش انجام شد ! تقریبا هر روز کلی بهبود و کد جدید بهش اضافه می شد تا اینکه تبدیل شد به یک ابزار بسیار قوی و مناسب.

از Salt یا همون SaltStack برای ۲ منظور مهم استفاده می شه.

  1. سیستم مرکزی برای مدیریت تنظیمات
  2. اجرای از راه دور دستورات

اما ویژگی های منحصر به فرد ابزار Salt:

Scale

  • توانایی مدیریت ده ها هزار سرور
  • سیستم Message بر اساس ZeroMQ
  • اتصالات همزمان و اجرای موازی دستورات
  • استفاده از MessagePack
  • عدم استفاده از ssh که بسیار کند تر هست

امنیت

  • سیستم اعتبار سنجی با استفاده از کلید عمومی
  • رمز نگاری پیغام ها و دستورات ارسالی با استفاده از AES

ویژگی های برجسته

  • معماری ساده
  • نصب آسان
  • تنظیمات آسان
  • امکان توسعه و ماژول نویسی
  • سرور داخلی قایل
  • عدم وابستگی به ابزار یا نرم افزار های دیگر

سایت رسمی

آدرس Github

مستندات پروژه

۰ موافقین ۲ مخالفین ۰ ۱۱ آبان ۹۲ ، ۱۸:۳۱
مهدی بیاضی

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

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

خیلی دوست دارم در مورد بحث های پردازش ها و سیستم های توسعه پذیر یا دارای scalability بالا بنویسم. مواردی که ما با اون در یک نرم افزار با قابلیت توسعه بسیار زیادی که باید بتونه به حجم بسیار زیاد از کاربران جواب بده یا با داده های بسیاری سرو کار داشته باشه با سایر نرم افزار ها بسیار فرق داره. معمولا از این تکنولوژی ها زیاد نمی شنویم. آموزش یا راهنمای خوبی هم براشون نیست و بیشتر تجربی هست. کسی هم که تجربه خوبی داشته باشه به راحتی حاضر به ارائه اون نیست متاسفانه !

وقتی میزان درخواست و پردازش یک نرم افزار یا مقدار اطلاعات ذخیره شده در سیستم یا مواردی از این دست زیاد و زیاد تر می شه ما با مشکلات جدیدتری روبرو می شیم. مشکلاتی که قبلا پیش نیامده بودند. در هر مرحله می شه با یک سری کارها سیستم رو بهبود داد تا توانایی پردازش و کار رو داشته باشه. اما با ادامه روند رشد و از یک مرحله به بعد اگر سیستم طراحی شده با در نظر گرفتن بحث های توسعه پذیری بالا یا High Scalability پیاده سازی نشده باشه دیگه با تغییرات رو سیستم موجود نمی شه بار پردازشی یا حجم اطلاعات رو تحمل کرد و سیستم به مشکل بر می خوره یا کاملا خاموش می شه. 

سعی خواهم کرد در ادامه مطالبی رو مرتبط با این شاخه شیرین و مهم و روبه رشد رو در این وبلاگ منتشر کنم. بخشی از مطالب از تجارب شخصی خودم هست و ممکنه برخی مطالب هم ترجمه یا معرفی ابزار ها و نرم افزار ها باشه.

۱ موافقین ۲ مخالفین ۰ ۱۴ شهریور ۹۱ ، ۱۰:۳۵
مهدی بیاضی