پاس چیه، چرا باید ازش استفاده کنیم و معرفی یه پاس برای تمرین و پروداکشن

قدیم‌ها وقتی یه سرویس می‌نوشتیم، مجبور بودیم سخت افزارش رو بذاریم در یک دیتا سنتر و به اینترنت وصلش کنیم و روش سیستم عامل نصب کنیم و … اما بعد که vps ها اومدن، حداقل دردسر سخت افزار از سر ما باز شد و یکضرب یه سیستم‌عامل داشتیم که باید کانفیگش میکردیم تا مثلا بتونیم جنگو، لاراول یا دیتابیس خودمون رو روش اجرا کنیم. اینو می دونستین؟ حتما می دونستین پس بذارین از یه جای جالب دیگه شروع کنم (:

تو نرم افزار اصطلاح مهمی هست به اسم Yak Shaving یا تراشیدن موهای گاومیش. بحث هم سر اینه که وقتی مثلا تصمیم می‌گیرین پایه‌های میز ناهار خوری رو محکم کنین، اول باید صندلی هاش رو بذارین جایی مثل انباری که بشه میز رو جابجا کرد ولی می بینین تو انباری جا نیست و مجبورین لباس های قدیمی که اونجا انبار شده رو تحویل یه خیریه بدین ولی چون تو ماشین خودتون جا نمی شه باید زنگ بزنین به یه دوست قدیمی که وانت پراید داره و … و یکهو می بینین چون می خواستین میز ناهارخوری رو عوض کنین، مشغول تراشیدن موهای یه گاومیش هستین (: این تو دنیای نرم افزار خیلی زیاد اتفاق می افته. شما می خواین برنامه ای که نوشتین رو بذارین روی یک سرور ولی می بینین که سه روز مشغول کمپایل یه ماجول یا درست کردن مکانیزم های آپدیت یا بک آپ اتوماتیک و این چیزها هستین.

این مشکل رو توی دنیا، پاس حل می کنه. همون PaaS یا Platform as a Service. پلتفرم اونجایی است که برنامه شما روش اجرا می شه و اگر یه VPS خریده باشین شامل کارهایی می شه مثل درست کردن شبکه اون سرویس، راه انداختن گیت روش، تنظیمات امنیتی، آپدیت کردن، ساختن یوزرها، دسترسی به دیتابیس و غیره و غیره. بعدها هم آپدیت کردنش، خالی کردن هاردش، ارتقاء سخت افزارش و غیره و اطمینان از اینکه بعد از این کارها همه چیز درست کار می کنه. حالا فرض کنین یه شرکت بیاد و این خدمات رو به شما بده و بگه شما کافیه فقط نگران دیتا و برنامه‌تون باشین و بقیه چیزها شامل راه اندازی سرورها، استورج، مجازی‌سازی، سیستم عامل، شبکه و … با اونهاست. این شرکت کلی کار شما رو ساده و امن می کنه. توی این سیستم یکسری سرویس مرسوم از پیش تنظیم شده هست که شما می تونین انتخابشون کنین. مثلا می تونین بگین یه دیتابیس پستگرس یا مای‌اسکوئل لازم دارین و اون به شما یوزر و پسورد و روش اتصالش رو می ده. یا ممکنه بگین نیاز به جایی دارین که بتونه پروژه جنگوی شما رو اجرا کنه یا اصولا در سطحی دیگه، یه کانتینر (مثلا داکر) بهش بدین و بگین سه تا ازش بالا باشه و اگر لازم شد تا ۷ تا هم از اون بیاره بالا. این می شه یه سرویس پاس. سرویسی که کلی از زحمات ما به عنوان مدیر سیستم رو کم می کنه و اجازه می ده روی بخش معماری و برنامه نویسی مون تمرکز کنیم. همچنین انتظار می ره از هر چیزی که خودمون سر هم کرده باشیم، امن تر و قابل توسعه تر باشه.

هر پاسی، معمولا برنامه های کامند لاین خودش رو داره که اجازه می ده بگین «برنامه های داخل این دایرکتوری رو با یه پلتفرم با فلان مقدار رم و سی پی یو بیار بالا». با تنظیمی مثل این:

kind: ExternalService
name: mywebsite
spec:
  image_pull_policy: Always
  port: 80
  source:
    context: .
    media_path: ''
    project_type: django
    python_version: '3.5'
    static_path: static
    wsgi: fandoghapp.wsgi
  env:
    - name: Mysql_Host
        value: db
    - name: Mysql_Password
        value: 123456
    - name: Mysql_User
        value: root
    - name: DB_Name
        value: myDatabaseName

می تونین این رو بنویسین و بعد با استفاده از کامند لاینی که پاس بهتون داده، کد رو پوش کنین و کاری نداشته باشین سیستم عامل اصلی چیه یا چقدر رم داره یا چقدر سی پی یو یا آپدیت شده یا نه. در واقع در پاس ها، شما مسوولیت مدیریت سیستم و غیره رو می سپرین به یکی دیگه و فقط می گین «این کد رو روی سروری با فلان مقدار رم و سی پی یو اجرا کن» و خلاص (:

توی دنیا پاس های مشهوری مثل هروکو هستن که باعث می شه راه اندازی کد، بی نیاز از کارهای مدیر سیستمی بشه ولی خب تو ایران بهشون دسترسی نداریم. اما چند ماه قبل که از نگهداری سرور یه پروژه خسته شده بودم، سرچ کردم و دیدم توی ایران یه پاس هست به اسم فندق و بعد از مدتی تلاش و صحبت با ساپورتشون که خیلی هم با حوصله کمک می کرد، موفق شدم پروژه رو منتقل کنم اونجا و از اون موقع هیچ مشکلی نداشتم و کارهای حتی فان بعدی رو هم با فندق پیش بردم. به نظرم داکیومنت هاشون خیلی خوبه و ساپورتشون از داکیومنت ها هم بهتر. در ضمن دونستن و یادگرفتن کار با پاس،‌ کمی کار می بره ولی جزو مهارت هایی است که خیلی مهمه یه آدم فنی داشته باشه. پیشنهاد می کنم حتی به شکل تفریحی هم که شده، یه چیز کوچیک با سرورهای رایگانشون بالا بیارین – هرچند که به نظرم سرویس رایگانشون برای اکثر کارهای واقعی (حتی شخصی) خیلی کمه؛ ولی برای یادگیری کافیه.

این تبلیغه؟ (: بستگی داره به چی بگین تبلیغ. خودشون نمی دونن من دارم این رو می نویسم و نه فقط بهم پولی ندادن، که پول تک تک کارهایی که روشون کردم رو هم دادم و خواهم داد (: اما به این معنی تبلیغ/آگاهی است که : یه چیز خوب اونجاست که خوبه اگر لازم دارین استفاده اش کنین + یک مهارت مهم هست که خوبه یادش بگیرین. ولی خوب توی این دنیای مهمل این روزها، آدم از هر چی تعریف کنه حتما خواهد شنید: پول گرفته که می گه (: البته من ترجیح می دم پیش فرض این باشه چون واقعا تقریبا همه پول می گیرن که از هر چیزی که پول می ده، تعریف کنن (: به قول معروف «خیلی هاتون پرسیده بودین پس بکشین بالا» ((:

برای اینکه لینک گم نشه: این شما و این فندق و البته دوستان از پشت صحنه تذکر می دن که لیارا هم هست که من همین الان دارم تجربه اش کنم (: