حسین کعبی: وقتی فیگو را در جام جهانی زدم....
اگرچه صنعت هنوز کمی با تعریف دقیق محاسبات ابری مخالف است، ولی به معنی آن نیست که با ابر سه لایه مخالف باشد. بالاترین لایه، لایه سرویسهای برنامههای کاربردی قرار دارد. در پایین آن لایه سرویسهای بستر نرمافزاری و سپس لایه سرویسهای زیرساختی قرار گرفته است. اگر بخواهیم تعریفی کلی ارائه کنیم، لایه سرویسهای برنامههای کاربردی، خروجیهای 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 سایت آمازون، سرویس زیرساختی با مجموعهای تعریفپذیر از قابلیتهایی مثل ظرفیت ذخیرهسازی و صفبندی پیغامها همراه خواهد بود. دستکم توسعهدهندگان باید از مشخصات این سرویسهای زیرساختی آگاه باشند.
برای مثال در زمان توسعه یک نرمافزار، توسعهدهنده خوب است بداند، آیا یک موضوع زیرساختی میتواند به صورت پویا و براساس حجم، درخواست خود را تطبیق و تغییر اندازه دهد یا خیر؟ اگر چنین چیزی باشد، توسعهدهنده بهترین موقعیت را برای هدایت اطلاعاتی دارد که درباره متریکهایی هستند که تصمیم میگیرند چه زمانی آن موضوع زیرساختی تغییر اندازه دهد. اگر هم سرویس زیرساختی نتواند به طور پویا تغییر اندازه دهد، توسعهدهندگان و معماران باید زمانی که این سیستم را طراحی میکنند، از این موضوع آگاه باشند. این مساله به آنها اجازه میدهد راهحلهایی را طراحی و پیادهسازی کنند تا بتوانند محدودیتهایشان را تقلیل بخشند.
اگر شما توسعهدهنده سازمانی هستید که به دنبال راهحلهای محاسبات ابری است، پس باید فعالتر باشید. درباره لایههای مختلف ابر که سازمان شما به آنها نیاز دارد تحقیق کنید، نقاط برخورد آن را با خود و شغلتان مورد بررسی قرار دهید و نظرتان را درباره مسیری که باید طی شود ارائه کنید.
محمدحسین کردونی
منبع: cloudcomputingbootcamp
حسین کعبی: وقتی فیگو را در جام جهانی زدم....