رهبر گروه کانتینرها (بخش صفرم!)

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

اما داستان چیه؟

قبل از همه این ها باید بدونیم داکر چیه؟ خیلی ساده و کلیش میشه جمع و جور کردن همه نیازمندی های نرم افزاری داخل یک چیزی به اسم container. طوری که این کانتینر همه جا (منطقا هرجایی که داکر باشه) بتونه خودشو راه اندازی کنه و اجرا کنه. و شما رو از دردسر نصب کردن و کانفیگ کردن های مختلف و طولانی زیرساخت خلاص کنه! و عوضش به سادگی تمام فقط با run و stop کردن یک image ما نرم افزار رو راه اندازی یا متوقف میکنیم!

حالا کوبرنتیز چیه؟ کوبرنتیز رو بهش میگن کانتینر ارکستریشن. یعنی چی؟ یعنی کوبرنتیز وظیفه مدیریت یک عالمه کانتینر رو روی یک عالمه سرور ( از ۱ تا ۱۰۰۰ تا …) داره. همین؟ نه!

بیاین یک مثال بزنیم:

شما بلدین اعداد رو جمع کنین، حالا یک نفر میاد و به شما تند تند عدد میده. شما علاوه بر ظرفیت های انسانی تون در محاسبه و خستگی و … حوصله هم دارین که میتونه سر بره! یعنی خلاصه این که شما بعد از یک زمانی یا ذهنتون خسته میشه از محاسبه، یا حوصلتون سرمیره یا هرچیز دیگه! و اونجاست که شما همه چیزو میندازین کنار و میرین استراحت کنین. اصطلاحا شما Crash کردین! و اصطلاحا این خدمت شما که جمع اعداد بود Down شده الان و همه باید صبر کنن! این صبر کردنه در دنیای الان از لحاظ مارکتینگ یعنی از دست رفتن تمام تلاش ها! یا از لحاظ مباحث مهمتری، مثلا سیستم های پزشکی که هیچ وقت نباید Down بشن چون با مسئله حیات سروکار دارن!

حالا اگر یک نفر بود که حواسش به شما بود و اصطلاحا شما رو دائما health check میکرد و وقتی میدید دارید Crash میکنید فشار رو از شما برمیداشت و میداد به یک نفر جایگزین تا شما ریکاوری بشین. و باز وقتی فشار رو طرف مقابلتون که داشت زیاد میشد، فشار رو منتقل شما که تازه نفس شدین میکرد و ……..

خلاصه اگر یک نفر بود که اصطلاحا Load Balance میکرد بین شماها،‌ همه چیز نورعلی‌نور میشد! تازه چی میشد اگر میتونستیم افراد بیشتری رو اضافه کنیم؟ خب این شدنیه و به راحتی شما یک انسان محاسبه گر جدید اضافه میکنین و خب به راحتی درخواست های بیشتری رو پاسخ میشد داد.

کوبرنتیز همچین کاری میکنه با کانتینر ها. اما ما خیلی کلی و غیرفنی صحبت کردیم. واقعا کوبرنتیز و داکر چطور با هم نرم افزار رو مقیاس پذیر میکنن؟ پاسخ این سوال از مهمترین بخش صنعت نرم افزار یعنی معماری نرم افزاری برمیاد. ولی من میخوام فقط به توصیف و توضیح یکی از ابزارهایی که در راستای طراحی کامل این معماری و به عبارت دیگه تو زیرساخت استفاده میشه صحبت کنم. پس اگر به کل سیستم نگاه کنیم اجزای خیلی زیادی داره که ما فقط یک بخششو پوشش دادیم که اصطلاحا بهش میگن Infrastructure. بخش های مهمتری وجود داره مثل دیزاین خود سیستم ها و پیاده سازیشون و پروتکل هاشون، که من مطالبی رو به صورت کلی دربارشون میدونم و دنیایی از مفاهیم و نکاتن که در حدی که بدونم توی بخش های بعدی همین نوشته ازشون مینویسم.

نوشته های بعدی درباره چی خواهد بود؟

نوشته های بعدی با هم عمیقتر کوبرنتیز رو بررسی میکنیم و ببینیم اجزا سازنده اش چیه. بعد یک کوبرنتیز لوکال نصب میکنیم و شروع میکنیم به ساختن یک سری سرویس مبتنی بر php و nodejs که از قواعد حداقلی و ساده میکروسرویس ها استفاده کرده باشیم توش. و سعی میکنیم مقیاس پذیرشون کنیم. و بعد سری میزنیم به دنیای نرم افزارهای Statefull که با مفاهیمی مثل پایگاه داده درگیر میشیم. بعد وارد مباحث مانیتورینگ میشیم و از اونور هم سری به دنیای Volume ها میزنیم! و همینطور میریم تا ببینیم چی میشه! سعی میکنم هر هفته یک مطلب طولانی و جذاب بدم درباره این موضوع تا هم دانش خودمو برای خودم ثبت کنم و هم به کسی که قصد داره این راهو شروع کنه کمکی کرده باشم.

منابع هم معرفی میکنم؟

بوکمارک های مرورگرم و کورس های توی هاردم پر از منابع خوب و جذابه که به مرور توی بخش هایی که نیاز داریم بهشون معرفی میکنم 🙂

آیا تنها راه مقیاس پذیر کردن همیناست؟

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

بازدیدها: 39

۳ دیدگاه

  1. مثالت برای توضیح مبحث خوب بود 👌👌
    اگه وقت کردی یک توضیح هم برای میکروسرویس بری خیلی خوب میشه.
    منتظرش از الان هستم 😬

    1. میکروسرویس یک معماری نرم افزاریه که برای من هم جدید هستش و در حال مطالعه خیلی پراکنده هستم چون تمرکز من رو آماده سازی زیرساخت هست و تیم های دیگه روی پیاده سازیش کار میکنن. ولی خب مطالعه جانبی دربارش شروع کردم که چشم. سعی میکنم خلاصه ای از مباحث مهمشو بنویسم ولی اگر میکروسرویس رو با nginx سرچ کنی یک مجموعه مقالات خوبی هست که ایده کلی میده.
      https://www.nginx.com/blog/introduction-to-microservices/
      از اینجا شروع کن

پاسخی بگذارید

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