پیش‌بینی دنیای برنامه‌نویسی
برنامه‌نویسی بر فراز ابرها
توسعه‌دهندگان وب کسانی هستند که تمایل دارند یا مجبور هستند محاسبات ابری را برای هم‌گام شدن با ابزارهای جدید یاد بگیرند. کارشناسان درباره مهارت‌های مورد نیاز به شما مشاوره می‌دهند. امروزه، برچسب محاسبات ابری، فناوری‌های مختلفی را از فروشندگان مختلف صنعتی دربرمی‌گیرد. با این ‌حال، در بستر همه آن‌ها ماهیتی وجود دارد که همه به آن اذعان داریم و آن سرویس است. تمایز به‌ویژه برای طراحانی اهمیت دارد که دوست دارند بدانند تأثیر بعدی بر روند کاری آن‌ها چیست؟

این مطلب یکی از مجموعه مقالات پرونده ویژه «آینده برنامه‌نویسی» است. برای دانلود کل پرونده ویژه اینجا کلیک کنید. 

 برنامه‌نویسان متفکر و زرنگ می‌دانند همیشه باید در جهت بهبود مهارت‌های خود و آماده شدن برای نسل بعدی فناوری باشند. اما پرسش این‌جا است که چه تفاوتی بین محاسبات ابری و توسعه استاندارد وب وجود دارد؟ اگر برنامه‌نویسی بخواهد از مزایای کلاود در هر یک از اشکال بی‌شمار آن نظیر Software as a Service (SaaS)، Platform as a Service (PaaS) یا Infrastructure as a Service (Iaas)  استفاده کند، لازم است به چه فناوری‌هایی توجه داشته باشد؟ اگر شرکت شما به‌طور سنتی به توسعه در ارتباط با وب می‌پردازد، اما در حال برنامه‌ریزی برای ورود به کلاود است، به چه مجموعه مهارت‌های ممتازی باید نگاه کند؟ منحنی یادگیری حتی می‌تواند گمراه‌کننده‌تر نیز باشد و نگرانی‌های بیش‌تری را برای یک طراح SaaS به وجود آورد؛ زیرا تفاوت‌های زیادی در یک محیط توسعه مجازی وجود دارد و صنعت هنوز به‌طور کامل خود را با این فناوری یک‌پارچه نکرده است. دیوید جی جیلک در این ‌باره می‌گوید: «طراحی برنامه‌ها در کلاود کمی شبیه به مسافرت از امریکا به کانادا است. بیش‌تر چیزها یکسان هستند. اما تفاوت‌های کوچکی نیز وجود دارند که لازم است به آن‌ها توجه داشته باشید.» در این بخش، نگاهی کلی به موضوعاتی همچون ابر، ابزارها، مقیاس‌پذیری، امنیت، طراحی معماری و دانشی خواهیم داشت که برای زیرساخت‌ها نیاز است و در ادامه به معرفی تعدادی از زبان‌های برنامه‌نویسی که در محاسبات موازی مورد استفاده قرار می‌گیرند، خواهیم پرداخت.

کلاود کاربردی، اما کمی پیچیده
محاسبات کلاود محبوبیت قابل توجهی را نه تنها در زمینه تحقیق و کاربردهای صنعتی، بلکه نزد کاربران به‌ دست آورده است. با این ‌حال، امروزه این مفهوم بیش‌تر مورد توجه قرار گرفته است. وعده منابع بی‌نهایت مقیاس‌پذیر، بدون آن‌که پیچیدگی‌های مدیریت سیستمی را به ‌وجود آورند، شعار اصلی محاسبات ابری است. اما پرسش اصلی این است که چگونه مزایای کلیدی محاسبات ابری در یک سازمان محقق شده و چگونه کاهش هزینه‌ها در آن قابل درک است. به‌طور مثال، ابرهای عمومی همچون IaaS (زیرساخت به‌عنوان سرویس) از رابط‌ها و شرایط متفاوت استفاده می‌کنند که به این شکل برای مقیاس‌پذیر کردن آن‌ها با یک سازمان به سرمایه‌گذاری‌های قابل توجه همراه با نیروی متخصص ماهری نیاز است. در این حالت، نیاز به یک پلتفرم باز و پک‌پارچه برای پشتیبانی از هر دو مفهوم، طراحی و استقرار برنامه‌های کلاود توأم با یکدیگر، همراه با یک متدولوژی مشایعت‌کننده که اجازه توسعه مدل‌گرا، پیکربندی، بهینه‌سازی و استقرار برنامه‌های جدید و موجود را به‌طور مستقل در زیرساخت‌های کلاود پیاده‌سازی کند، ضروری است. این‌چنین پلتفرم بازی امروزه در قالب یک پروژه تحقیقاتی به‌نام PaaSage در مرکز تحقیقات اروپا در حال آزمایش و بررسی بوده و اکنون آماده بهره‌برداری است (شکل 1).

 شکل 1: میانگین دستمزد پرداخت 

ابزارهایی که باید به آن‌ها توجه داشته باشید
اجازه دهید مبحث را با موضوعات ساده شروع کنیم. حرکت به سوی کلاود به احتمال زیاد نیازمند یادگیری رابط‌های برنامه‌نویسی است. Google App Engine و SalesForce.com که هر دو از کلاودهای عمومی هستند یا نرم‌افزارهایی که برنامه‌ کاربردی شما به آن وابسته است، نمونه‌ای از این موارد هستند. برای بیش‌تر طراحان، یادگیری یک رابط جدید به معنای یادگیری یک ابزار جدید بانک ‌اطلاعاتی یا کشف یک پلتفرم منبع باز است. در حالی‌ که بعضی ابزارهای توسعه افزونه‌هایی دارند که اجازه استقرار در کلاود را می‌دهند، برنامه‌نویسان مجبور به ‌یادگیری آن‌ها هستند. 

طراحی برای مقیاس‌پذیری
سرویس‌های کلاود زمانی مقیاس‌پذیر هستند که به‌عنوان زیرساخت برنامه‌های وب قرار گیرند. اگر ماهیت اصلی یک برنامه وب بسیار منقبض باشد، حرکت این برنامه به سوی کلاود کمکی به آن نخواهد بود. از جمله وعده‌هایی که محاسبات کلاود به ما می‌دهند، سهولت زیرساخت‌های کلاود است که می‌توانند مقیاس‌پذیر باشند. برخی توسعه‌دهندگان این جمله را این‌گونه تفسیر می‌کنند که یک طراح احتیاجی ندارد درباره آن به تفکر بپردازد، در حالی ‌که کارشناسان فن دیدگاه متفاوتی دارند.

 امنیت
یکی دیگر از نگرانی‌های آشکار در ارتباط با امنیت برنامه‌های کلاود و داده‌هایی است که آن‌ها بر آن تکیه دارند. با کلاود ناگهان فناوری‌های امنیتی شرکت شما به خارج از دیوار آتش یک شرکت می‌رود. در برخورد با برنامه‌های تجاری عادی درون‌سازمانی، اغلب از یک طرح امنیتی نسبتاً ساده استفاده می‌شود، اما زمانی که به دنیای کلاود وارد می‌شوید، اوضاع متفاوت می‌شود. طراحان نیازمند تفکر درباره دو عامل احراز هویت (من همان کسی هستم که ادعا می‌کنم) و اجازه دادن (من به چه سیستم‌ها یا داده‌هایی اجازه دسترسی بدهم) به فرآیندها هستند. 
همچنین، توجه کردن به قوانینی که دولت‌ها در ارتباط با داده‌های شما اتخاذ می‌کنند نیز ضروری است. در مجموع امنیت کلاود برای طراحان به معنای تفکر درباره امنیت داده‌ها و انتخاب فراهم‌کننده مناسبی است که متناسب با نیازهای کسب‌وکار و ملاحظات فنی سازمان باشد. دیوید بینونیدو، مدیرعامل شرکت TeamExtension، در این رابطه می‌گوید: «مشکلات عمدتاً در ارتباط با پیکربندی و سیاست‌ها به‌جای توسعه نرم‌افزار است. به‌طور مثال، TeamExtension شماره کارت‌های اعتباری ذخیره شده در بانک ‌اطلاعاتی را با استفاده از رمزنگاری AES محافظت می‌کند.» 

درباره معماری نرم‌افزار خود مجدد فکر کنید
بر خلاف انتظار توسعه‌دهندگان که تصور می‌کنند، پیاده‌سازی سرویس در کلاود درست مثل هر نوع توسعه وبی است، واقعیت این است که شما باید درباره معماری‌های مختلف اطلاع داشته باشید. جی جیلک، مدیرعامل Standing Cloud، می‌گوید: «طراحی برنامه‌های کلاود کمی شبیه به مسافرت از امریکا به کانادا است. بیش‌تر موضوعات یکسان هستند، اما تفاوت‌های جزیی وجود دارد که باید به آن‌ها توجه داشته باشید. بیش‌تر این تفاوت‌ها به‌جای آن‌که در کدهای برنامه‌ها قرار داشته باشد، در ارتباط با زیرساخت‌ها و لایه‌های فناوری‌ها مستتر هستند.»

مطلب پیشنهادی: آموزش کدنویسی به کودکان

 آنتونی ادن، رهبر طراحی در Heavy Water Software، می‌گوید: «محیط‌های میزبانی داخلی تمایل به پایداری با کم‌ترین تأثیرپذیری از نیروهای خارجی دارند.» اما محیط‌های توسعه ابری و تا حدی همه محیط‌های توسعه مجازی شلوغ هستند، به‌دلیل این‌که منابع را به‌ اشتراک می‌گذارند. رفتار سیستم به عنوان یک موجودیت کل در بیش‌تر موارد تحت تأثیر عواملی است که خارج از کنترل شما هستند. یک بانک ‌اطلاعاتی در کلاود ممکن است توانایی گرفتن داده‌ها را با یک نرخ فوق‌العاده بالا داشته باشد، اما به‌ حداقل رساندن داده‌های انتقال یافته تأثیر قابل توجهی بر عملکرد آن خواهد گذاشت. اگر تنها به سه فیلد از مجموع صد رکورد نیاز دارید، باید اطمینان حاصل کنید این تمام آن چیزی است که مورد نیاز است. 
در ادامه، این رکوردها را در گروه‌های بیست و پنج تایی نشان دهید. جان پاولی، مهندس Limewire VP، در این ‌باره می‌گوید: «برای آن‌که طراحان به‌درستی قادر باشند سرویس‌های وب را در ابر پیاده‌سازی کنند، نیازمند یک تفکر عمیق هستند.» 

طراحی برای یک زیرساخت پویا
برای بیش‌تر طراحان وب، هر آن چیزی که توسط سرورها انجام می‌شود، به‌عنوان عملیات دپارتمان تلقی می‌شود. زمانی ‌که به دنیای کلاود وارد می‌شوید، باید در انتظار یادگیری مسائل مدیریتی سیستم نیز باشید. در این بین، حتی یک اصطلاح جدید نیز وجود دارد؛ برنامه‌نویسان مراکز داده هوشیار. برای آن‌که هزینه‌ها کاهش یابد، طراحان باید مهارت‌های خود را دقیق‌تر کنند تا در زمان توسعه از کم‌ترین میزان منابع همچون حافظه و پردازش‌گر مرکزی استفاده کنند. برای این منظور لازم است کارایی برنامه و نشتی‌های منابع بررسی و مدلی طراحی شود که در آن مشخص شود، از چه تعداد کاربر برای دسترسی به هر سرور در هر اندازه‌ای پشتیبانی می‌شود. این قاعده کلیدی است که روی بیش‌تر پلتفرم‌ها اعمال می‌شود. به‌طور مثال، در ارتباط با Amazon EC2 لازم است در زمان ساخت برنامه‌های کاربردی عواملی نظیر پهنای باند، حافظه و پردازش‌گر مرکزی را در مد نظر داشته باشید. سرویس آژر مایکروسافت نیز مشابه همین روش عمل می‌کند. اگر این سیستم‌ها شناسایی کنند که یک برنامه بیش از اندازه از منابع مشخص شده استفاده می‌کند، آن برنامه را در وضعیت ایزوله قرار می‌دهند.
 
واژه کلیدی سرویس است
یک طراح وب ممکن است با توجه به بعضی ملاحظات از سرویس‌های وب صرف ‌نظر کند، اما توسعه‌ مبتنی بر پردازش ابری شما را ملزم می‌سازد با این مفاهیم آشناتر شوید. دانستن این‌که چگونه و چطور برنامه‌سازی می‌کنیم مهم نیست، بلکه آگاهی از احتیاجات و نیازهای کسب‌وکار و قرارداد‌هایی که توسط ارائه‌کنندگان خدمات ابری ارائه می‌شود، مهم است. باید اطلاعات بیش‌تری درباره تجارت و محیط‌های کسب‌وکار به‌ دست آورید. این بخشی است که در آن طراحان سازمانی از مزایای بیش‌تری نسبت به همکاران استارت‌آپی بهره می‌برند. طراحانی با درک قوی در معماری سرویس‌گرا به‌راحتی در کلاود موفق می‌شوند. شکستن نرم‌افزار یک‌پارچه به سرویس‌های گسسته چیزی بیش از تسهیل استفاده مجدد است. یک پیاده‌سازی خوب SOA به شما اجازه می‌دهد از اهرم مقیاس‌پذیری در کلاود بهره ببرید. حال که به‌طور کاملاً مختصر با محاسبات ابری آشنا شدید، زمان آن رسیده است تا ببینیم چه ابزارها‌ی برنامه‌نویسی در اختیار طراحان قرار دارد. 

8 زبان‌ برنامه‌نویسی برگزیده کلاود
در این قسمت، به شما هشت مورد از زبان‌های برنامه‌نویسی مبتنی بر کلاود را معرفی می‌کنیم که از کارایی بالا و عملکرد خوبی بهره می‌برند. زبان‌های برنامه‌نویسی کلاود اساساً توسط سرورها و بانک‌های اطلاعاتی مورد استفاده قرار می‌گیرند. 

1. SQL Data Language
SQL یکی از قدیمی‌ترین زبان‌های برنامه‌نویسی کلاودمحور است. SQL محبوبیت خاصی نزد برنامه‌نویسان دارد. بانک‌های اطلاعاتی سرورها اساساً بر مبنای SQL قرار دارند. یادگیری آن ساده و به‌شدت کاربردی است.

2. XML Data Language
XML زبان نشانه‌گذاری داده‌ها است. این زبان شباهت زیادی به جاوا اسکریپت دارد. بیش‌تر سیستم‌ها توزیع شده بزرگ از XML استفاده می‌کنند. اسناد XML به‌طور گسترده روی اینترنت قرار دارند. 

3. R Math Language
این زبان کدنویسی به‌طور گسترده برای ساخت آمارها، گراف‌ها و گزارش‌ها مورد استفاده قرار می‌گیرد. یک رابط جذاب تعاملی راهنمایی‌های مفیدی را به کاربر ارائه می‌کند. یک ابزار محبوب برای تجزیه و تحلیل داده‌های حجیم به‌ شمار می‌رود.

4. Clojure Math Language
یک زبان برنامه‌نویسی خالص ریاضیات است و هم برای مقاصد عمومی و هم برای برنامه‌نویسی تابعی می‌تواند مورد استفاده قرار گیرد. یکی از محبوب‌ترین زبان‌ها برای تجزیه و تحلیل داده‌ها است.

5. Haskell Functional Language
یک زبان برنامه‌نویسی کلاودمحور به‌شدت تابعی و کاربرپسند است. بهترین زبان برای محاسبات توزیع شده است. این زبان همچنین قابلیت پشتیبانی از تابع‌های بازگشت‌پذیر و انواع داده‌های جبری را دارد.

6. Eriang Functional Language
این محصول توسط شرکت مخابراتی سونی‌اریکسون ساخته شده است. این محصول مناسب برای محاسبات ابری است. بیش‌تر برنامه‌های ابرمحور توسط Eriang طراحی شده‌اند.

7. Python Procedural Language
زبانی که یادگیری آن ساده بوده و بسیار تعاملی است.

8. Go Procedural Language
این زبان توسط گوگل ساخته شده و به‌عنوان راه‌کاری به‌جای زبان‌های برنامه‌نویسی دشوار پیشنهاد شده است. Goggle یک زبان کاربرپسند همراه با آموزش‌های مناسب برای کاربران است. 

آمارها چه می‌گویند؟
به جالب‌ترین بخش این مقاله وارد می‌شویم. آمارها و دستمزد‌های مالی! یک برنامه‌نویس کلاود در شهر ساوانی جرجیا در ایالات متحده به‌طور میانگین 118 هزار دلار دستمزد دریافت می‌کند (شکل 2).

 شکل2: یک نمای سطح بالا از PaaSage و محدوده تحت پوشش این پروژه

در مجموع، اگر به میزان دستمزد پرداخت شده به مشاغلی که در ارتباط با سرویس‌های ابری هستند نگاه کنید، مشاهده خواهید کرد  متخصصان این حوزه دستمزدهای خوبی دریافت می‌کنند (شکل 3).

 شکل 3: مجازی‌سازی و کلاود از مشاغل پردرآمد محسوب می‌شوند.

سخن آخر
الکساندر کاترومپاس، معمار سازمانی جاوا، درباره محاسبات کلاود می‌گوید: «بزرگ‌ترین تفاوت یک برنامه وب و هر برنامه سازمانی از جمله کلاود در جدایی سخت‌گیرانه لایه منطق کسب‌وکار و لایه سرویس وب قرار دارد. یک نرم‌افزار وب معمولی بیش‌تر در ارتباط با ارائه محتوا متمرکز است، در حالی ‌که یک برنامه سازمانی در ارتباط با فرآیند و پایداری متمرکز است. حرکت به سوی کلاود مستلزم شناخت محاسبات توزیع شده گسترده و توان بارگذاری است. همچنین، به یک معماری سازمانی سخت‌گیرانه هم نیاز است. در حالی ‌که بیش‌تر مردم تصور می‌کنند محاسبات ابری یک انقلاب است، اما فقط یک بازاریابی زیرپوستی است. محاسبات کلاود تکاملی از مدل سازمانی است که خود بر مبنای یک مدل ‌برنامه‌نویسی وب تکامل یافته‌اند.» توسعه کلاود خود در اساس تفاوت زیادی با توسعه سنتی ندارد. برای سال‌های متمادی برنامه‌نویسان نگران مقیاس‌پذیری و امنیت برنامه‌های کاربردی خود بودند، اما واقعیت این بود که بیش‌تر طراحان به بهبود سخت‌افزارها و امنیت متکی بودند. محاسبات ابری در معرض این‌گونه مفاهیم قرار ندارد.

برچسب: