اگرچه صنعت هنوز كمی با تعریف دقیق محاسبات ابری مخالف است، ولی به معنی آن نیست كه با ابر سه لایه مخالف باشد. بالاترین لایه، لایه سرویسهای برنامههای كاربردی قرار دارد. در پایین آن لایه سرویسهای بستر نرمافزاری و سپس لایه سرویسهای زیرساختی قرار گرفته است. اگر بخواهیم تعریفی كلی ارائه كنیم، لایه سرویسهای برنامههای كاربردی، خروجیهای SaaS (نرمافزار به عنوان سرویس یاSoftware as a Service ) را تركیب میكند، لایه سرویسهای بستر نرمافزاری، بسترهای ابری مانند موتور برنامههای كاربردی گوگل،
Force.com و... را دربرمیگیرد و سرویسهای زیرساختی منابع محاسبه پایهای مثل پردازش و شبكهبندی در ابر را ارائه میكند.
به EC2 سایت آمازون فكر كنید؛ درباره این كه چه چیزی هریك از این سه لایه را ساخته است، مطالب بسیار گستردهای وجود دارد. در اینجا قصد داریم درباره تاثیر هركدام از این سه لایه ابری روی توسعه سازمانی صحبت كنیم.
در ارتباط با سرویسهای برنامههای كاربردی یا لایه SaaS ممكن است در همان نگاه اول به فكر توسعهدهندگان نیفتیم و بیشتر از آن، نرمافزار CRM، ایمیل، راهحلهای مشاركتی و دیگر موارد مشابه به ذهن ما خطور كند. به هرحال دستكم 2 راه درباره این كه كدامیك از سرویسهای موجود در این لایه روی توسعه سازمانی تاثیر میگذارد، وجود دارد؛ اول این كه امكان حركت محیطهای شكلدهی توسعه به سمت ابر روزبهروز بیشتر میشود. با گسترش شكلدهی توسعه در مدل استفاده از نرمافزار بهعنوان سرویس، این «محاسبات اغلب فشرده» قادر خواهد بود منابع خود را از یك ابر قدرتمند و قوی بگیرد و نه از ماشینهای شخصی ضعیفی كه اغلب در اختیار توسعهدهندگان قرار دارد. بعلاوه توسعهدهنده میتواند تمام زمان، تمركز و انرژی خود را صرف توسعه نرمافزار كند بدون این كه دغدغه فكری دیگری داشته باشد.
همچنین با حركت ابزار توسعه به طرف یك مدل SaaS، تكثیر سرویسهای مصرفی در ابر همچنان ادامه خواهد داشت تا بتواند با روشی كه توسعهدهندگان و معماران سیستمهای IT را طراحی میكنند، ادغام شود. سرویسهای موجود در ابر، خواه خصوصی یا عمومی به بخشی از SOA (معماری سرویس محور یا Service-Oriented Architecture ) كلی یك سازمان تبدیل شدند و این یعنی توجه به سرویسهای امنیتی، درخواستهای سرویسهای میانی و سرویسهای حاكم كه در طول دامنههای چندگانه به كار گرفته شدهاند. سرویسهای ابری میتوانند به قابلیتهای SOA یك سازمان، پیشرفت عظیمی دهند؛ ولی انشعابات گسترش آن SOA در میان دامنههای چندگانه و ابرها باید هرچه سریعتر از سوی توسعهدهندگان و معماران سازمانی مورد توجه قرار بگیرد.
احتمالا آشكارترین تاثیرات محاسبات ابری روی توسعهدهندگان در لایه سرویسهای بستر نرمافزاری است. اینجا جایی است كه ما بسترهایی مثل موتور برنامههای كاربردی گوگل، Force.com و... را كه در ابر وجود دارد، خواهیم دید. اگر یك سازمان انتخاب كند كه به سمت ریشه یك بستر نرمافزاری با میزبانی ابر برود، توسعهدهندگان باید سرعت خود را در طرحبندی آن بستر كه شامل APIهای پیشنهادی و گسترش برنامه كاربردی و استراتژی بستهبندی است، افزایش دهند. درمیان بسترهای مختلف، احتمالا بسترهایی وجود خواهد داشت كه از مجموعهای از زبانهای معمول مثل جاوا، PHP، پایتون و... پشتیبانی میكنند، ولی سرویسها و APIهایی نیز وجود دارند كه برای یك بستر نرمافزاری خاص طراحی شدهاند. برای نمونه موتور برنامههای كاربردی گوگل، سرویس حسابهای گوگل را برای نرمافزارهایی كه روی بستر نرمافزاری آن اجرا میشود، پیشنهاد میكند. این سرویس به توسعهدهندگان اجازه میدهد یك كاربر از نرمافزارشان را كه از اعتبارنامههای حساب گوگل كاربر استفاده میكند، شناسایی و تایید كند. بعلاوه بسترهای نرمافزاری مختلف، سرویسهای ادغامی و اتصالهای مختلفی نیز نیاز دارند. این قابلیتها زمانی اهمیت پیدا میكند كه نرمافزارهای متصل شده روی یك بستر نرمافزاری با میزبانی ابر اجرا میشود، درحالی كه اجزا و كامپوننتها در جای دیگری در حال اجرا هستند. زمانی كه سرویسهای بستر در ابر نفوذ میكند، توسعهدهندگان سازمانی باید بتوانند از مجموعه مهارتهای فعلی خود فراتر بروند و خودشان را در سرویسها وAPI های پیشنهادی بستر نرمافزاری آموزش دهند تا بتوانند از تمام پتانسیل خود استفاده كنند.
لایه سرویسهای زیرساختی كمترین برخورد را با توسعه سازمانی دارد. خروجی این سرویسها به طور معمول به وسیله سرویسهای سطح بالاتر مصرف میشود تا یك بستر نرمافزاری یا یك نرمافزار به عنوان سرویس (SaaS) به وجود بیاید. البته این مطلب نباید این گونه فهمیده شود كه توسعهدهندگان میتوانند بسادگی از یك سرویس زیرساختی كه در سازمان آنها استفاده میشود، صرفنظر كنند. در برخی موارد مثل مورد EC2 سایت آمازون، سرویس زیرساختی با مجموعهای تعریفپذیر از قابلیتهایی مثل ظرفیت ذخیرهسازی و صفبندی پیغامها همراه خواهد بود. دستكم توسعهدهندگان باید از مشخصات این سرویسهای زیرساختی آگاه باشند.
برای مثال در زمان توسعه یك نرمافزار، توسعهدهنده خوب است بداند، آیا یك موضوع زیرساختی میتواند به صورت پویا و براساس حجم، درخواست خود را تطبیق و تغییر اندازه دهد یا خیر؟ اگر چنین چیزی باشد، توسعهدهنده بهترین موقعیت را برای هدایت اطلاعاتی دارد كه درباره متریكهایی هستند كه تصمیم میگیرند چه زمانی آن موضوع زیرساختی تغییر اندازه دهد. اگر هم سرویس زیرساختی نتواند به طور پویا تغییر اندازه دهد، توسعهدهندگان و معماران باید زمانی كه این سیستم را طراحی میكنند، از این موضوع آگاه باشند. این مساله به آنها اجازه میدهد راهحلهایی را طراحی و پیادهسازی كنند تا بتوانند محدودیتهایشان را تقلیل بخشند.
اگر شما توسعهدهنده سازمانی هستید كه به دنبال راهحلهای محاسبات ابری است، پس باید فعالتر باشید. درباره لایههای مختلف ابر كه سازمان شما به آنها نیاز دارد تحقیق كنید، نقاط برخورد آن را با خود و شغلتان مورد بررسی قرار دهید و نظرتان را درباره مسیری كه باید طی شود ارائه كنید.
محمدحسین كردونی