رایانش ابری (cloud computing) را اغلب با فهرستی از مزایا معرفی میکنند: انعطاف، مقیاسپذیری، صرفهجویی. اما این فهرستها تصمیمگیری را آسان نمیکنند. وقتی تیم فنی و مدیر کسبوکار پای یک میز مینشینند، پرسش واقعی این نیست که «ابر یا سرور خودمان؟»؛ پرسش این است: «مرز مسئولیت من و فروشنده از کجا شروع میشود؟» مدلهای زیرساخت بهعنوان خدمت (Infrastructure as a Service یا IaaS)، بستر بهعنوان خدمت (Platform as a Service یا PaaS) و نرمافزار بهعنوان خدمت (Software as a Service یا SaaS) سه پاسخ متفاوت به همین پرسش واحدند، نه سه سطح کیفیت یا سه برند.
پشت هر مدل، یک پشته فناوری مشترک است
هر سامانهای، از یک سایت کوچک تا یک پلتفرم سازمانی، روی مجموعهای از لایهها مینشیند: مرکز داده و شبکه، سرور فیزیکی، لایه مجازیسازی، سیستمعامل، میانافزار و پایگاه داده، زمان اجرا (runtime)، خود برنامه و در نهایت داده. تفاوت مدلهای ابری فقط در این است که کدام لایهها را فروشنده میچرخاند و کدامها را شما. هرچه از IaaS به سمت SaaS حرکت میکنید، لایههای بیشتری از دوش تیم شما برداشته میشود و در عوض کنترل شما روی جزئیات کمتر میشود. برای اینکه این دستهبندی را از یک تعریف مرجع و نه از بروشور فروشندگان بردارید، دستهبندی مدلهای خدمت ابری در چارچوبهای استاندارد نقطه شروع خوبی است.
IaaS: زمین بازی، نه ساختمان آماده
در IaaS، فروشنده ماشین مجازی، شبکه و فضای ذخیرهسازی را در اختیار شما میگذارد؛ از سیستمعامل به بالا با خودتان است. این مدل برای موارد زیر منطقی است:
- نرمافزارهای قدیمی (legacy) که مهاجرتشان پرهزینه است و همان پیکربندی قبلی را میخواهند.
- بارهایی که به تنظیم دقیق سیستمعامل، درایور یا مجوز نرمافزاری خاص نیاز دارند.
- سازمانهایی که تیم عملیات دارند و میخواهند آن تیم، مهارت و کنترلش را حفظ کند.
بهای این کنترل روشن است: وصلهکاری امنیتی، پشتیبانگیری، پایش، تنظیم مقیاس و پاسخ به حادثه در ساعت سه بامداد، همه وظیفه شماست. اگر مرز میان ماشین مجازی و کانتینر برایتان مبهم است، مقایسه مجازیسازی و کانتینر پیش از انتخاب IaaS کمک میکند سطح انتزاع درستی را انتخاب کنید.
PaaS: کد بنویسید، بقیه را بسپارید
در PaaS، فروشنده سیستمعامل، زمان اجرا و بخشی از میانافزار را میچرخاند: پایگاه داده مدیریتشده، صف پیام، سرویس لاگ و مانند آن. شما برنامه و داده را میآورید و بقیه را بهعنوان سرویس مصرف میکنید. این مدل برای تیم کوچکی که میخواهد انرژیاش را روی محصول بگذارد، معمولاً بهترین توازن است. اما شرایطی دارد که باید از پیش بپذیرید: نسخههای زمان اجرا از سوی فروشنده تعیین میشود، دسترسی شما به سیستمعامل محدود یا صفر است، و سرویسهای اختصاصی بستر میتوانند بعداً جابهجایی را سخت کنند. PaaS وقتی بد است که تیم شما نیازهای غیرمعمولی دارد و بستر اجازه برآورده کردنشان را نمیدهد.
SaaS: نرمافزار آماده، با بهای کنترل
در SaaS شما نه سرور میبینید و نه زمان اجرا؛ فقط کاربر یا مشتری هستید و دادهتان را وارد میکنید. این مدل وقتی درست است که آن نرمافزار در حوزهای عمومی باشد و تفاوت رقابتی شما در آن حوزه نباشد؛ مثلاً میزبانی ایمیل سازمانی یا بخشی از ابزارهای پشتیبانی. پیش از امضا، چهار پرسش را جدی بپرسید: داده را چطور و با چه قالبی میتوانم بیرون ببرم؟ سطح خدمت تضمینشده (SLA) دقیقاً چه چیزی را پوشش میدهد؟ ادغام با سامانههای داخلی از چه راهی ممکن است؟ و اگر فروشنده سیاست قیمتگذاری یا مسیر محصولش را عوض کند، هزینه جابهجایی من چقدر است؟
یک مثال عملی: سامانه تیکتینگ کجا بنشیند؟
فرض کنید سامانهای دارید که تیکت، اسپرینت، صورتحساب و فیش پرداخت را مدیریت میکند و با لاراول نوشته شده است؛ نمونهای از همین دست سامانه پشتیبانی و مدیریت پروژه. سه مسیر پیش رو دارید:
- روی IaaS: همان سرور و همان پایگاه داده، فقط اجارهای. سریعترین مهاجرت و بیشترین کنترل، اما همه کار عملیاتی هم با شماست.
- روی PaaS: برنامه را روی بستر مدیریتشده اجرا میکنید و پایگاه داده را هم مدیریتشده میگیرید. کار عملیاتی کمتر، به شرط پذیرش محدودیتهای بستر.
- جایگزینی با SaaS: یک ابزار آماده میگیرید. سریعترین شروع و کمترین سفارشیسازی؛ مناسب وقتی منطق این سامانه مزیت رقابتی شما نیست.
هیچکدام مطلقاً بهتر نیست. اگر گردشکار تیکت و صورتحساب شما به کسبوکارتان شکل میدهد، سفارشیسازی ارزش دارد و IaaS یا PaaS منطقیتر است. اگر فقط میخواهید تیکتها پاسخ بگیرند، ساختن و نگهداشتن نسخه اختصاصی، هزینهای است که بازگشتی ندارد.
چارچوب تصمیم: پنج پرسش پیش از انتخاب
- تفاوت رقابتی شما در کدام لایه است؟ اگر در لایه زیرساخت نیست، نگهداشتن آن لایه معمولاً توجیه ندارد.
- تیم شما چه مهارتی دارد و میخواهد چه مهارتی را نگه دارد؟ تصمیم ابری، تصمیم درباره تیم هم هست.
- الگوی بار شما چیست؟ بار نوسانی و کوتاهمدت با مدل مصرفی جور درمیآید؛ بار پایدار و سنگین ممکن است اقتصادیتر هم بشود.
- الزامات داده چه میگوید؟ محل نگهداری، سطح دسترسی و نگهداشت سوابق را پیش از معماری روشن کنید.
- هزینه خروج (exit cost) چقدر است؟ اگر جابهجایی از این فروشنده عملاً ناممکن باشد، در واقع کنترل را از دست دادهاید.
هزینههایی که در جدول مقایسه دیده نمیشوند
- ترافیک خروجی داده (data egress): جابهجایی داده به بیرون میتواند به یکی از خطوط هزینه تبدیل شود.
- وابستگی به فروشنده (vendor lock-in): استفاده از سرویسهای اختصاصی، مهاجرت آینده را گران میکند.
- مهارت و آموزش: مدل جدید یعنی ابزار جدید، رویه جدید و دوره یادگیری جدید.
- پیچیدگی محیط ترکیبی: نگهداشتن همزمان چند محیط، خودش یک شغل تماموقت است.
جمعبندی
IaaS، PaaS و SaaS سه مرحله از یک طیفاند: هرچه بالاتر بروید، کار عملیاتی کمتری میخرید و کنترل کمتری میدهید. تصمیم درست از پرسش «کدام مدل بهتر است؟» شروع نمیشود، بلکه از این پرسش که «کدام لایهها را حاضر نیستم واگذار کنم؟» شکل میگیرد. یک راه میانه همیشه وجود دارد: لایههای عمومی و پرزحمت را به سرویس مدیریتشده بسپارید و کنترل را دقیقاً روی همان لایهای نگه دارید که کسبوکارتان را از دیگران جدا میکند.