محاسبات چیست؟
در رایانش ابری، اصطلاح “محاسبات” مفاهیم و اشیاء مرتبط با محاسبات نرمافزاری را توصیف میکند. این یک اصطلاح کلی است که برای اشاره به قدرت پردازش، حافظه، شبکه، ذخیرهسازی و سایر منابع مورد نیاز برای موفقیت محاسباتی هر برنامه استفاده میشود.به عنوان مثال، برنامههایی که الگوریتمهای یادگیری ماشین یا توابع رندرینگ گرافیک سهبعدی را اجرا میکنند، برای اجرای موفقیتآمیز به چندین گیگابایت رم و چندین CPU نیاز دارند. در این حالت، CPUها، رم و واحدهای پردازش گرافیکی مورد نیاز، منابع محاسباتی نامیده میشوند و برنامهها، برنامههای محاسباتی فشرده خواهند بود.
بیایید نگاهی به برخی از سوالات متداول محاسبات بیندازیم تا این اصطلاح را در زمینه رایانش مدرن درک کنیم.
منابع محاسباتی چیست؟
منابع محاسباتی مقادیر قابل اندازهگیری از قدرت محاسباتی هستند که میتوان برای فعالیتهای محاسباتی درخواست، تخصیص و مصرف کرد. برخی از نمونههای منابع محاسباتی عبارتند از:
- CPU واحد پردازش مرکزی (CPU) مغز هر رایانه است. CPU با واحدی به نام هسته میلی (millicores) اندازهگیری میشود. توسعهدهندگان برنامه میتوانند مشخص کنند که برای اجرای برنامه و پردازش دادهها به چه تعداد CPU اختصاص داده شده نیاز است.
- حافظه حافظه با واحد بایت اندازهگیری میشود. برنامهها میتوانند درخواستهای حافظهای را که برای اجرای کارآمد مورد نیاز است، ارائه دهند.
اگر برنامهها روی یک دستگاه فیزیکی واحد اجرا شوند، دسترسی محدودی به منابع محاسباتی آن دستگاه دارند. اما اگر برنامهها روی ابر اجرا شوند، میتوانند به طور همزمان به منابع پردازشی بیشتری از بسیاری از دستگاههای فیزیکی دسترسی داشته باشند. بیایید نگاهی دقیقتر به این موضوع بیندازیم.
رایانش ابری چیست؟
رایانش ابری یک اصطلاح کلی برای هر چیزی است که شامل ارائه منابع رایانهای از طریق اینترنت میشود. کاربران میتوانند به مقادیر زیادی از قدرت محاسباتی بر اساس تقاضا دسترسی داشته باشند. آنها میتوانند به صورت دقیقهای یا ساعتی خرید کنند و به هر میزان که برای فعالیتهای محاسباتی خود نیاز دارند، از آن استفاده کنند.
تاریخچه رایانش ابری
به طور سنتی، برنامههای وب روی سرورهای فیزیکی ثابت میزبانی میشدند. قدرت محاسباتی مورد نیاز برای برنامه به سروری که روی آن اجرا میشد، محدود بود. صاحبان وبسایت میتوانستند چندین سرور یا فضایی را در یک سرور خریداری کنند، اما باید قیمت ثابتی را بدون توجه به میزان استفاده پرداخت میکردند. آنها همچنین باید زیرساخت سرور رایانهای خود را مدیریت و نگهداری میکردند.
امروزه، برنامهها میتوانند به طور انعطافپذیر از منابع محاسباتی بسیاری از دستگاههای فیزیکی مختلف استفاده کنند. ارائهدهندگان خدمات ابری دارای مجموعههای وسیعی از منابع محاسباتی هستند که شامل سرورها و مراکز داده فیزیکی میشود. شرکتها میتوانند برنامهها را میزبانی کرده و از این منابع محاسباتی موجود در این مجموعهها دسترسی پیدا کنند. ارائهدهنده به طور کامل منابع را مدیریت و بهینه میکند تا انعطافپذیری، مقیاسپذیری و کارایی را برای کاربران فراهم کند. کاربران فقط باید برنامههای خود را نگهداری کنند؛ مدیریت زیرساخت محاسباتی توسط ارائهدهنده خدمات ابری انجام میشود.
نرمافزار حسابداری: نمونهای از رایانش ابری
بیایید به مثال نرمافزار حسابداری نگاه کنیم. چند دهه پیش، کسبوکارها مجبور بودند نرمافزار را خریداری و روی سختافزار فیزیکی داخلی خود نصب کنند. قابلیتهای نرمافزار به سختافزار زیربنایی محدود بود. با گذشت زمان، سیستم از حافظه کم میآورد یا نیاز به بهروزرسانی پیدا میکرد و خرابی سختافزار میتوانست منجر به از دست رفتن دادههای حیاتی کسبوکار شود.
امروزه، توسعهدهندگان نرمافزار حسابداری میتوانند نرمافزار را روی ابر اجرا کنند. کاربران میتوانند به همان روشی که به هر وبسایت دیگری دسترسی پیدا میکنند، به آن دسترسی داشته باشند و میتوانند طرحهای اشتراکبندی شده را مطابق با نیازهای خود خریداری کنند. برنامههای نرمافزاری از قدرت محاسباتی ابر استفاده میکنند و خود نرمافزار نیز میتواند در صورت نیاز مقیاسبندی شود. همچنین هیچ ترسی از از دست رفتن دادههای مشتریان وجود ندارد.
میکروسرویسها چه هستند؟
میکروسرویسها، که به عنوان معماری میکروسرویسها نیز شناخته میشوند، یک سبک معماری است که برای برنامههای نرمافزاری ساختاریافته به عنوان مجموعهای از سرویسها استفاده میشود.
برنامههای سازمانی معمولاً در سه بخش اصلی ساخته میشوند:
- یک رابط کاربری سمت مشتری (یک برنامه یا صفحه HTML که روی دستگاه کاربر نهایی اجرا میشود)
- یک پایگاه داده (که دادههای برنامه را ذخیره میکند)
- یک برنامه سمت سرور (که عملکرد و منطق عملیاتی را تعریف میکند)
این سبک معماری یکپارچه (monolith) غیرقابل انعطاف و تغییر آن دشوار است. تغییرات کوچک در یک بخش از سیستم مستلزم استقرار مجدد کل سیستم یکپارچه است.
از طرف دیگر، معماری میکروسرویسها برنامه را به عنوان مجموعهای از سرویسهای کاربردی با مدیریت غیرمتمرکز طراحی میکند. یک میکروسرویس تلاش میکند تا به یک نگرانی واحد، مانند جستجوی داده، عملکرد ثبت رویداد یا عملکرد سرویس وب بپردازد. این میکروسرویسها میتوانند به طور مستقل مستقر شوند، از منابع محاسباتی خود استفاده کنند و با یکدیگر ارتباط برقرار کنند.به عنوان مثال، یک برنامه خبری میتواند از میکروسرویسهای مستقل مانند ورزشی، جنایی، جهانی و غیره تشکیل شده باشد. هر میکروسرویس بازیابی و مرتبسازی محتوای خود را مدیریت میکند. آنها همچنین میتوانند در صورت نیاز مقیاس بالا یا پایین شوند. در طول یک رویداد ورزشی بزرگ، میکروسرویس ورزشی از قدرت پردازش بیشتری استفاده میکند اما پس از اتمام رویداد، مقیاس آن کاهش مییابد.
ماشینهای مجازی چیستند؟
ماشینهای مجازی بلوکهای ساختمانی اساسی هستند که قدرت محاسباتی را از ابر دریافت میکنند. یک ماشین مجازی نرمافزاری است که میتواند تمام عملکردهای یک رایانه فیزیکی را انجام دهد، از جمله اجرای برنامهها و سیستم عاملها. این یک نسخه دیجیتالی از یک رایانه فیزیکی است. ماشینهای مجازی میتوانند برنامهها و سیستم عاملها را اجرا کنند، دادهها را ذخیره کنند، به شبکهها متصل شوند و سایر عملکردهای محاسباتی را انجام دهند. آنها همچنین ممکن است نیاز به نگهداری مانند بهروزرسانیها و نظارت بر سیستم داشته باشند.یک ماشین مجازی ممکن است روی بسیاری از ماشینهای فیزیکی زیربنایی اجرا شود و قدرت محاسباتی مورد نیاز برای اجرای موفقیتآمیز برنامهها را فراهم کند. رایانش ابری به کاربران این امکان را میدهد تا ماشینهای مجازی را بر اساس تقاضا مستقر و مقیاسبندی کنند. این سرویس منابع محاسباتی تضمین شده را در یک محیط امن و ایزوله بدون سربارهای مورد نیاز برای مدیریت سرورهای فیزیکی ارائه میدهد.
نمونه Amazon EC2 چیست؟
در سرویسهای محاسباتی AWS، ماشینهای مجازی نمونه (instance) نامیده میشوند. AWS EC2 انواع مختلف نمونهها را با پیکربندیهای مختلف CPU، حافظه، ذخیرهسازی و منابع شبکه ارائه میدهد تا کاربر بتواند منابع محاسباتی خود را با نیازهای برنامه خود تنظیم کند.
پنج نوع نمونه وجود دارد:
- نمونههای با هدف عمومی نمونههای با هدف عمومی تعادلی از منابع محاسباتی، حافظه و شبکه را فراهم میکنند و میتوان از آنها برای طیف گستردهای از بارهای کاری متنوع استفاده کرد. این نمونهها برای برنامههایی که از این منابع به نسبت مساوی استفاده میکنند، مانند سرورهای وب و مخازن کد، ایدهآل هستند.
- نمونههای بهینهسازی شده برای محاسبات نمونههای بهینهسازی شده برای محاسبات برای اجرای برنامههای محاسباتی با کارایی بالا که به عملکرد شبکه سریع، دسترسی گسترده و عملیات ورودی/خروجی (I/O) بالا در ثانیه نیاز دارند، استفاده میشوند. مدلسازی و شبیهسازی علمی و مالی، دادههای بزرگ، انبار دادههای سازمانی و هوش تجاری نمونههایی از این نوع برنامهها هستند.
- نمونههای محاسبات شتابدهنده نمونههای محاسبات شتابدهنده از شتابدهندههای سختافزاری یا کمکپردازندهها برای انجام کارکردهایی مانند محاسبات اعداد ممیز شناور، پردازش گرافیکی یا تطبیق الگوهای داده به طور کارآمدتر از آنچه در نرمافزار در حال اجرا بر روی CPUها امکانپذیر است، استفاده میکنند.
- نمونههای بهینهسازی شده برای حافظه نمونههای بهینهسازی شده برای حافظه از زیرساخت درایو حالت جامد با سرعت بالا برای ارائه دسترسی فوقالعاده سریع به دادهها و ارائه عملکرد بالا استفاده میکنند. این نمونهها برای برنامههایی که به حافظه بیشتر و قدرت CPU کمتری نیاز دارند، مانند پایگاههای داده متنباز و تجزیه و تحلیل دادههای بزرگ در زمان واقعی، ایدهآل هستند.
- نمونههای بهینهسازی شده برای ذخیرهسازی نمونههای بهینهسازی شده برای ذخیرهسازی برای بارهای کاری طراحی شدهاند که نیاز به دسترسی خواندن و نوشتن متوالی بالا به مجموعههای داده بسیار بزرگ در ذخیرهسازی محلی دارند. آنها برای ارائه دهها هزار عملیات ورودی/خروجی تصادفی با تأخیر کم (IOPS) در ثانیه به برنامهها بهینه شدهاند.
کانتینر چیست؟
قبل از انتشار نرمافزار، باید آزمایش، بستهبندی و نصب شود. استقرار نرمافزار به فرآیند آمادهسازی یک برنامه برای اجرا بر روی یک سیستم رایانهای یا یک دستگاه اشاره دارد.
Docker ابزاری است که توسط توسعهدهندگان برای استقرار نرمافزار استفاده میشود. این ابزار یک روش استاندارد برای بستهبندی کد یک برنامه و اجرای آن بر روی هر سیستمی فراهم میکند. این ابزار کد نرمافزار و وابستگیهای آن را در داخل یک کانتینر ترکیب میکند. کانتینرها (یا تصاویر Docker) سپس میتوانند از طریق یک موتور Docker بر روی هر پلتفرمی اجرا شوند. Amazon Elastic Container Service (ECS) یک سرویس مدیریت کانتینر بسیار مقیاسپذیر و با کارایی بالا است که از کانتینرهای Docker پشتیبانی میکند و به شما امکان میدهد به راحتی برنامهها را بر روی یک خوشه مدیریت شده از نمونههای Amazon EC2 اجرا کنید. این امر استقرارهای سریع، قابل اعتماد و سازگار را بدون توجه به محیط تضمین میکند.
برنامه رزرو بیمارستان: نمونهای از Docker
به عنوان مثال، یک بیمارستان میخواهد یک برنامه رزرو نوبت ایجاد کند. کاربران نهایی ممکن است از این برنامه در Android، iOS، دستگاه Windows، MacBook یا از طریق وبسایت بیمارستان استفاده کنند. اگر کد به طور جداگانه بر روی هر پلتفرم مستقر شود، نگهداری آن چالشبرانگیز خواهد بود. در عوض، میتوان از Docker برای ایجاد یک کانتینر جهانی واحد از برنامه رزرو استفاده کرد. این کانتینر میتواند در همه جا اجرا شود.
توزیع بار الاستیک منابع محاسباتی چیست؟
توزیع بار فرآیند توزیع یکنواخت منابع محاسباتی و بار کاری در یک محیط رایانش ابری است. این کار برای کاهش تأخیر و حفظ زمان پردازش، حتی زمانی که تقاضا برای برنامه زیاد است، انجام میشود. توزیعکنندههای بار میتوانند به طور هوشمندانه درخواستهای مشتری را در چندین سرور برنامه که در یک محیط ابری اجرا میشوند، توزیع کنند.
Elastic Load Balancing کاربران را قادر میسازد تا عملکرد و قابلیت اطمینان برنامه را به حداکثر برسانند. این سرویس میتواند به طور خودکار ترافیک ورودی برنامه را در چندین هدف، مانند نمونههای Amazon EC2، کانتینرها، آدرسهای IP، توابع AWS Lambda و سرورهای مجازی توزیع کند. این سرویس میتواند بار متغیر ترافیک برنامه را مدیریت کند، هزینه را کاهش دهد و برنامه را به طور کارآمد برای مطابقت با تقاضا مقیاس بالا یا پایین ببرد.
تجارت الکترونیک: نمونهای از توزیع بار الاستیک
به عنوان مثال، یک فروشگاه تجارت الکترونیک آنلاین برنامهای برای مرتبسازی بهترین معاملات روز اجرا میکند. این برنامه به عنوان یک برنامه محاسباتی فشرده، از محاسبات ابری و توزیع بار برای مدیریت تقاضا استفاده میکند. این امر به طور خودکار در آخر هفتهها، کریسمس و سایر اوجهای فصلی که تقاضا افزایش مییابد، از منابع پردازشی اضافی استفاده میکند. در روزهای دیگر، زمانی که تقاضا کاهش مییابد، محاسبات را مقیاس پایین میآورد. بدون توزیع بار، فروشگاه مجبور بود حتی در روزهای کمتقاضا نیز نرخهای اوج مصرف را پرداخت کند و حاشیه سود را کاهش دهد.
سرویسهای محاسباتی چیستند؟
سرویسهای محاسباتی به عنوان زیرساخت به عنوان سرویس (IaaS) نیز شناخته میشوند. پلتفرمهای محاسباتی، مانند AWS Compute، یک نمونه سرور مجازی و فضای ذخیرهسازی و APIهایی را ارائه میدهند که به کاربران امکان میدهد بارهای کاری را به یک ماشین مجازی منتقل کنند. کاربران قدرت محاسباتی اختصاص داده شده دارند و میتوانند منابع رایانهای خود را مطابق میل خود راهاندازی، متوقف، دسترسی و پیکربندی کنند.