اینم یه تجربه پراکنده دیگه!

سر کار اخیرا نیاز شد که یه سیستم با قابلیت virtualization نصب کنیم. خوشبختانه همکارمون که مسئول این کار بود از من در این مورد مشورت گرفت. توی کارهای خیلی جدی شرکت معمولا از vmware ESXi استفاده میشه اما اینجا من و این دوستمون علاقه‌مند شدیم که از یه تکنولوژی دیگه استفاده کنیم. هر دومون با kvm و linux آشنایی داشتیم پس مطمئن بودیم که میتونیم در بدترین حالت با استفاده از لینوکس مشکل رو حل کنیم. پس من پیشنهاد دادم بریم سراغ smartos. یه شرکت به نام joyent از این سیستم عامل پشتیبانی میکنه که اسپانسر nodejs و چیزهای دیگه هم هست. همونطور که قبلا هم گفته بودم این سیستم عامل یه مدته «چشم من رو گرفته» دلایلش هم ایناست

  1. ریشه اش به سولاریس برمیگرده که سیستم عامل بسیار خوبیه!
  2. از zfs پشتیبانی میکنه که اون هم سیستم فایل محشریه!
  3. از kvm به عنوان مجازی ساز سخت افزار استفاده میکنه
  4. از zone های سولاریس به عنوان مجازی سازی سبک(مراجعه کنید به این و این) پشتیبانی میکنه

کاری که ما میخواستیم انجام بدیم این بود که میخواستیم علی الحساب یه ماشین مجازی pfsense توش نصب کنیم و یه کارهایی باهاش انجام بدیم در حین این کار نکات جالب و قابل توجهی برخوردیم که میخوام اینجا مستندشون کنم

نکات جالب در برخورد من با این سیستم عامل اینهاست

  1. کل سیستم نیاز به نصب نداره! و فقط کافیه که روی هارد بتونه سیستم فایل zfs رو تشخیص بده. پس بروز رسانی در حد خاموش و روشن کردن سیستم هزینه داره. از اون سمت با استفاده از pxe میشه سیستم رو بوت کرد که یعنی کل هاردهای سرور جهت ذخیره سازی اطلاعات بکار میره
  2. از json برای توصیف ماشین‌های مجازی و zone هاش استفاده میکنه. که این قضیه برنامه نویسی کردن برای اون رو به شدت ساده میکنه

نکات قابل توجهی که من در حین کار بهش برخوردم اینا بود

  1. کارت شبکه mainboard یکم مشکل داشت و smartos هم درست ازش استفاده نمیکرد
  2. مدت زمان لازم برای reboot شدن ماشین مجازی pfsense زیاد بود(حدود ۵ دقیقه)
  3. نمیشد از توی pfsense سیستم رو reboot کرد
  4. نصب واسط گرافیکی برای راحت‌تر کار کردن لینوکس و یونیکس نابلدها با سیستم به نظر پر دردسر میرسید!

علی الحساب همین تا باز هم بیشتر باهاش کار کنم و نتایج رو بهتون بگم!

این یه تجربه پراکنده دیگه!

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

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

در اینجا من یکم در مورد مزایا و معایب این سیستم‌ها میگم و یه معرفی کوتاه سرنخ وار از این سیستم‌ها میدم و امیدوارم به درد کسی بخوره:

بزرگترین مزیت این سیستم اینه که صفحات ایستا به شدت با سرعت خوبی نشون داده شده و سربار اضافی روی سرور ندارن. از این مزیت که بگذریم یکی دیگه از بهترین نکات اینه که صفحات بصورت فایل‌هایی ذخیره میشن که می‌تونن ورژن گذاری بشن و نحوه تغییراتشون با استفاده از نرم‌افزارهای مانند GIT و Subversion و … ثبت بشن و تمامی نسخه‌هاشون در دسترس باشه.

اما بزرگترین ایرادشون هم اینه که کارهایی که نیاز به محاسبه زمان اجرا داره، مثل گذاشتن کامنت، یا پیاده‌سازی یک سایت خرید آنلاین و از این دست کارها رو نمیشه به راحتی و خوبی انجام داد. که معمولا این سیستم‌ها راه‌حل‌هایی برای حل برخی از این مشکلات دارن اما معمولا این راه‌حل‌ها وابسته به سرویس‌هایی هستن که سایت‌های دیگه ارائه میدن هست.

خب حالا نوبت به اسم این سیستم ها میرسه:

  • Jekyll/Octopress: یک سیستم نوشته شده با استفاده از زبان ruby که الان صفحات مربوط به پروژه های سایت گیت هاب با استفاده از این تکنولوژی تولید و نگهداری می‌شن. یکی از خوبی‌های این سیستم اینه که میشه کامنت‌ها رو بصورت ایستا مدیریت کرد.
  • Pelican: سیستمی است که تو سایت کرنل لینوکس مورد استفاده قرار گرفته و به زبان python نوشته شده. این سیستم امکانات بسیاری داره و طرفداران زیادی رو برای خودش جمع کرده.
  • Blosxom: یکی دیگه از این سیستم ها که به زبان Perl نوشته شده و یکی از خوبیاش اینه که همه جا قابل اجراست. یکی از ویژگی‌های خوب این سیستم قدرت زیاد برای نوشتن افزونه‌ها برای بهبود کارایی سیستم فعلی است.
  • Second Crack با استفاده از زبان PHP نوشته شده و جوری طراحی شده که صفحات با استفاده از dropbox قابل میزبانی باشه.
  • Blacksmith یکی از جدید ترین سیستم‌های موجود هست که با استفاده از Node.js استفاده کرده

منبع این نوشته اینجاست.

 

پیش نوشت: یکم با خودم درگیرم که چطور باید نوشت. هدفم از نوشتن اینجا ارائه سرنخ‌هایی هست که اگه کسی خواست، بتونه بره و مابقی ماجرا رو پیگیری کنه.

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

خب تکنولوژی‌های مختلفی وجود داره که باهاش مجازی سازی صورت میگیره که خب به طبع من دوست دارم متن باز هاش رو معرفی کنم. خیلی هم هدف معرفی عمیق این تکنولوژی‌ها و سرویس‌ها نیست. هدفم اینه که از نقطه نظر خودم که یه مهندس نرم افزار یا توسعه دهنده هستم ببینم چه تکنولوژی‌هایی وجود داره و چطور میشه از اون برای «بهبود زندگی» یه برنامه نویس استفاده کرد.

لیست این تکنولوژی‌ها از این قرارن

اما نکته قابل توجهی که به نظر من مهمه اینه که از منظر یه شرکت که قراره یه سرویس مجازی سازی ارائه کنه و بفروشه یا اینکه سرویس‌های اصلی شرکتش رو به این زیرساخت‌ها مهاجرت بده مساله انتخاب بین این تکنولوژی‌ها بسیار مهم میشه. اما در سطح توسعه دهنده‌ها خیلی اهمیت خاصی نداره که از کدوم یک از این سیستم‌ها استفاده می‌شه. من تقریبا تمام کارهای خودم رو با استفاده از kvm و virtual box‌ انجام میدم. 

حالا علاوه بر اینها سیستم عامل‌هایی اومدن اختصاصی سازی شدن برای بوجود آوردن زیر ساخت مجازی سازی. یعنی شبیه vmWare ESXi یه سیستم عامل هستن که بهینه شدند که مجازی ساز شما باشن. خب اکثر این سیستم ها مجانی نیستن و شما بایستی ساپورت اونها رو از شرکت تولید کننده بخرید اما نسخه‌های مجانی هم وجود دارند که قابل بررسی هستن. تفاوت این سیستم‌ها در بسته‌هایی که بصورت پیشفرض نصب و پیکر بندی شدن هست نه چیز دیگه‌ای. اما نکته قابل توجه اینه که شما با گذاشتن وقت و زمان کافی میتونید یه سیستم عامل مثل دبیان رو تبدیل کنید به سیستمی شبیه این سیستم. لیست این سیستم عامل‌هایی که تا حالا من پیدا کردم هم ایناست

  • Redhat Enterprise Virtualization
  • Promox Ve
  • Ubuntu Cloud

البته من سعی کردم بیشتر بگردم اما سیستم‌عامل‌های دیگه‌ای پیدا نکردم اما اگه شما میشناسید سیستمی رو بگید که به این لیست اضافه شه.

حالا برم سراغ استفاده من. من در یه محیط چند ریختی برنامه نویسی میکنم. یعنی اینکه یکم تحت ویندوز برنامه مینویسم، یکم تحت جاوا که رو تام کت ران میشه و خیلی وقت‌ها بایستی تو یه سناریوی آزمایش یه چند تا کامپیوتر دارم یا در حالت ساده یه سرور میخوام که بصورت تستی نرم افزار رو روش تست کنم. در این موارد واقعا فرقی نداره که از kvm استفاده کنم یا از virtual box و اکثر اوقات از kvm  استفاده میکنم مگر اینکه مجبور باشم با مثلا یو اس بی کاری انجام بدم که توی virtual box سر راست تره.