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

سیستم‌های مبتنی بر رایانش ابری بسیار باب شدند و خب هر کسی سعی میکنه که بصورتی خدمات ارائه شده رو از قالب سنتیش راه کنه و اون رو در ابرها به پرواز در بیاره. البته لازم میدونم که بگم رایانش ابری همه چیز نیست و برخی از نیازهای دنیای امروز رو جواب میده که بازم اگه عمری بود دربارش مینویسم.

سرویس openshift که توسط غول دنیای متن باز redhat تاسیس شده و اتفاقا یه سرویس اولیه مجانی هم داره سعی میکنه بستر برنامه نویسی مورد نیاز رو در اختیار برنامه نویسان قرار بده و بعدش برنامه نویسی بتونن با استفاده از git نرم افزارهاشون بدون نگرانی در مورد بستری که قرار این نرم افزار رو اجرا کنه مورد آزمایش و تست قرار بدن.

اتفاقا پلتفرمهای پشتیباین شده تقریبا کامل هستند node.js، j2ee، python، django، perl، ruby، ruby on rails رو پشتیبانی میکنه و پایگاه داده‌هایی هم که داره  mySql، postgreSql و monogoDB هست. که تقریبا ۹۰ درصد نیازهای یک برنامه نویس رو پشتیبانی میکنه. اتفاقا چون از git هم برای نصب و راه‌اندازی  هر برنامه استفاده میشه نسخه‌های قبلی اون هم  نگه داشته میشه و این خودش بسیار خوبه.

همچنین یکی دیگه از چیزایی که این سیستم پشتیبانی میکنه اینه شما میتونید از jenkins هم استفاده کنید که یک پلتفرم continious integration هست که به شما کمک میکنه بصورت اتوماتیک نرم افزار شما سر هم بشه و build بشه و تست میشه که آیا قسمت‌های مختلف اون با هم تضاد دارند یا نه. که خب این نکته خیلی خارجیه و هنوز من جایی در اطرافم رو ندیدم که واقعا از یک چنین سیستم در محیط عملیاتیشون استفاده کنند

البته باید بگم که سیستم های دیگه ای مثل heroku هم برای اینکار وجود داره اما من این openshift بیشتر خوشم و اگه بازم عمری بود در مورد سیستم‌های مشابه یکم می‌نویسم.

توی پست قبلم در مورد جایگزین های سرویس ذخیره سازی فایل در فضای ابری (Cloud) مثل Dropbox یه مطلب نوشتم. حالا یکی از خواننده‌ها بسیار معدود این بلاگ گفته بود اگه با bittorrent sync کار کردم تجربم رو بنویسم. من هم که عمرا بتونم به یه چنین درخواستی جواب نه بدم به همین خاطر الان دارم مینویسم

کل راه اندازی خیلی خیلی ساده بود. تست من روی لپ تاپم با سیستم فدورا ۱۸ نسخه ۶۴ بیتی و یه پی سی قدیمی که کار فایل سرور خونه رو انجام میده با سیستم عامل اوبونتو ۱۲٫۰۴ نسخه ۶۴ بیتی تست کرد. تنها کاری که کردم از سایت اصلی فایل مربوطه رو دانلود کردم و اجرا کردم. تنها نکته قابل اشاره اینه که شاید توی لینوکس این فایل‌(btsync) دسترسی اجرایی نداشته باشن که شما باید این دسترسی رو براشون ایجاد کنید.

با انجام این کار روی آدرس http://my_ip_adress:8888/gui سرویس btsync اجرا شده و آماده است.

صفحه اصلی btsync

صفحه اصلی btsync

پس از اینکار حالا باید یه فولدر رو انتخاب کنید و براش یه secret بسازید. برای این کار کافیه رو دکمه generate کلیک کنید.

انتخاب فولدر btsync

انتخاب فولدر btsync

خب حالا کافیه همین کار رو در سمت دیگه (کامپیوتر دومتون) انجام بدید و این دفعه بجای زدن دکمه generate کافیه که secret که در کامپیوتر اول درست کردید رو اینجا هم وارد کنید. و کار تمامه

البته شما سطوح دسترسی هم دارید که میتونید اون رو بصورت که تو شکل زیر میبینید کنترل کنید. که شامل نحوه بروزرسانی و امکان دسترسی فقط خواندنی به فولدر یا حتی تغییر secret فعلی به منظور حذف دسترسی افرادی که الان دسترسی دارن به این فولد هست.

تنظیمات اولیه btsync

تنظیمات اولیه btsync

Selection_004

تنظیمات پشرفته btsync

 

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

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

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

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

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

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

  • Redhat Enterprise Virtualization
  • Promox Ve
  • Ubuntu Cloud

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

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

من دوباره برگشتم با یه موضوع پراکنده دیگه!

خب خود من و شاید خیلیای دیگه از dropbox برای ذخیره سازی نیمه امن(به هر حال فایل دست یه نفر دیگس) فایلهای شون استفاده میکنن.
خب من توی این مدت به این فکر کردم که آیا میشه یه سرویس اینجوری بوجود بیاد که تقریبا همین سرویسها رو بده و خب به وضوح متن باز هم باشه. خب شروع کردم به گشتن یکی از بهترین جایگزین‌ها ownCloud بود. تنها یه ایراد کوچیک داره اونم اینه که شما یا باید به یه سرور دسترسی داشته باشید و گرنه روی هاستینگ‌های معمول به این راحتیا نصب نمیشه. دوم اینکه مساله افزونگی که من درست در این مورد اطلاع ندارم اما اطلاعات شما تنها روی یک سرور وجود داره و روی سرورهای دیگه بک آپ گرفته نمیشه. البته تا زمانی که وسیله‌های شما با همدیگه یکی باشن فایلها افزونگی کافی رو دارن

اما یه راه حل دیگه است که من بیشتر ازش خوشم اومد. اونم یه راه حل مبیتی بر معماری p2p هست. شرکت (یا بنیاد) bittorrent لطف کرده مبتنی بر پروتکل torrent یه سیستم غیر متمرکز اشتراک گذاری فایل و sync کردن فایلها بین دستگاه‌های مختلف شما ایجاد کرده بدون اینکه نیازی به سرور متمرکزی باشه. تنها نیازه که برنامه bittorrent sync رو روی کامپیوترتون نصب کنید و فولدری که میخواید رو مشخص کنید و با یه مشخصه تصادفی که برای اون فولدر تولید میشه میتونید بین تمام کامپیوترهاتون فایل رو به اشتراک بگذارید.

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

با توجه به مواردی که من بررسی کردم به نظر میرسه راه‌حل‌های مناسبی برای جایگزین شدن با dropbox وجود داره که هم متن بازن هم مدیریتشون دقیق‌تره. ولی من ترجیح میدم از نسخه bittorrent استفاده کنم چون حداقل به زیرساخت خاصی نیاز نداره.