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