رایانش ابری و متخصصین علوم داده

علوم داده در‌واقع اصطلاحی‌ست که بیانگر تقاطع بسیاری از موارد مهم است. در مقاله‌ای با عنوان "اطلاعات داده چیست؟ و متخصصین چه کاری انجام می دهند" در رابطه با متخصصین علوم داده توضیحاتی ارائه شده است. این تخصص اغلب شامل موارد زیر است:حوزه تجارتاحتمال و آمارعلوم کامپیوتر و برنامه‌نویسی نرم‌افزارارتباط کتبی و کلامیسومین مورد به نوعی تمام آن چیزی‌ست که افراد برای درک دانش علوم کامپیوتر و برنامه‌نویسی نرم‌افزار باید به آن آگاه باشند.در حالی که برای متخصصین داده فعال، به طور واضح آشکار نیست، باید بدانید که این بخش، بخش‌های دیگر نظیر DevOps، خطوط فعالیت داده، مهندسی داده‌ها، تجزیه‌وتحلیل تخصصی داده، انواع مختلف پایگاه داده، ساخت و استفاده از راه‌حل‌های نرم‌افزاری و... را نیز شامل می‌شود. همچنین متخصصین داده‌ها باید در برنامه‌نویسی مهارت کاملی داشته باشند هر چند که این امکان وجود دارد هیچ تجربه و یا تجزیه‌وتحلیلی از علوم کامپیوتر، مفاهیم برنامه‌نویسی و معماری و تولید زیرساخت‌های نرم‌افزاری نداشته باشند. وقتی شخصی در علوم داده مشغول به فعالیت می‌شود به این درک می‌رسد که باید Python و یا R را بر روی رایانه خود نصب کرده و سپس کد را در یک محیط توسعه یکپارچه محلی یا IDE همانند برنامه Jupyter NoteBook یا RStudio به اجرا درآورد.علاوه‌براین، هرچقدر که تجزیه‌وتحلیل پیشرفته رواج بیشتری پیدا کند و تیم‌های متخصصین علوم داده رشد بیشتری می‌نمایند، به همان اندازه نیاز بیشتری به ایجاد راه‌حل‌های مشترک برای بینش تحویل، تجزیه و تحلیل و پیش‌بینی سیستم ها و... احساس می‌شود. تحقیقات قابل چاپ و ابزارهای نوت‌بوک به همراه کنترل کننده های منبع کد مانند گیت و... ، بخشی از راه‌حل موجود به حساب می‌آیند، درحالی‌که امروزه از ابزارهای آنلاین و سیستم عامل‌های آنلاین مبتنی بر ابر برای رسیدن به اهداف استفاده می‌شود.در برخی موارد نیاز به همکاری افراد خارج از علوم داده و متخصصین علوم داده دیده می‌شود، خصوصا زمانی که متخصصین علوم داده باید برای دستیابی به اهداف‌ مربوط به کسب و کار استقرار پیدا کنند. به این ترتیب، ذینفعان یک پروژه علوم داده می‌توانند شامل مدیران، مسئولان بخش و سایر کارکنان تیم مانند طراحان، مهندسین داده، تحلیلگران و... باشند.این مقاله در نظر دارند به متخصصین علوم داده یک بینش در رابطه با آن چیزی که خارج از لپ‌تاپ‌ها یا سیستم‌های کاری رخ می‌دهد، خصوصا زمانی که به سراغ بهره‌گیری از راه‌حل‌های علوم داده برای گسترش قابلیت‌های محاسباتی و اطلاعاتی می‌روند توضیحاتی ارائه دهد. با توجه به تجربه‌ای که در مباحث خاص از علم داده در اختیارمان هست. این مقاله تمامی متخصصین علوم داده در تمامی سطوح مهارتی را شامل می‌شود.ابر دقیقا چیست؟این روزها بسیاری از افراد همچنان نتوانسته‌اند درک درستی از فضای ابری داشته باشند. علاوه‌براین، بسیار آن را فرضی و انتزاعی می‌دانند. بهتر است قبل از اینکه به سراغ مفهوم دقیق و کامل از فضای ابری برویم، کمی نسبت به مفاهیم کلیدی اطلاعات کامل‌تری بدست آوریم.زمانی که رایانه‌ها منابع مشترک خود را به یکدیگر متصل می‌کنند، شبکه‌ای را به وجود می‌آورند که اینترنت یکی از بزرگ‌ترین و مشهورترین آن شبکه‌های رایانه‌ای محسوب می‌شود. شبکه‌های محلی مانند (LAN) یا (SSID) Wi-Fi Service Set Identifier نیز که در آن چندین کامپیوتر به یکدیگر متصل می‌شوند از دیگر نمونه‌های شبکه می‌باشند که هرچند بسیار کوچک‌تر بوده اما منابع آن شامل صفحات وب، رسانه، ذخیره‌داده، سرور برنامه، چاپ‌گر و... می‌باشد.از رایانه‌ها در یک شبکه با عنوان گره نام‌برده می‌شود که با استفاده از پروتکل‌هایی مانند پروتکل انتقال (HTTPS) HyperText، پروتکل کنترل انتقال (TCP)/پروتکل اینترنت (IP) و.... در ارتباط با یک‌دیگر هستند. این ارتباطات در به‌روزرسانی وضعیت، نظارت، درخواست و پاسخ و بسیاری از موارد دیگر مورد استفاده قرار می‌گیرد.برنامه‌ها و داده‎ها معمولا در رایانه‌های واقع در یک مرکز داده میزبانی می‌شوند. این مرکز کلیه زیرساخت‌های لازم از قبیل برق، سرمایش، امنیت، محافظت در برابر بلایای طبیعی و... را برای نگه‌داری و اجرای موفقیت‌آمیز تعداد زیادی از رایانه‌هایی که در دسترس شرکت‌ها و یا به‌طور کلی در دنیای خارج هستند فراهم می‌کند.با توجه به‌اینکه رایانه و ذخیره‌سازی با گذر زمان نسبتا به یک کار آسان و ارزان تبدیل شده است، امروزه متخصصان به سراغ بهره‌گیری از راه‌حل‌های چندین کامپیوتری رفته‌اند که مقیاس‌پذیری آن هزینه زیادی را به دنبال ندارد. درواقع در صورت نبود امکان مقیاس‌پذیری، تنها با خرید یک دستگاه فوق‌العاده قدرتمند و گران‌قیمت می‌توان خواسته‌های بسیاری از شرکت‌ها را برطرف نمود. اما با وجود مقیاس پذیری، حتی اگر یکی از رایانه‌ها از کار بیافتد، سیستم این توانایی را دارد تا به‌صورت خودکار مقیاس را بر روی سیستم تحمیل کند.امروزه توئیتر، فیسبوک، اینستاگرام، اسنپ‌چت، نتفلیکس و یوتیوب، نمونه‌های کاملی از برنامه‌های مبتنی بر فضای ابری هستند که باید از هر دو روش برای مقیاس‌پذیری استفاده نمایند. زمانی که برنامه پایین است دیدن برنامه‌های آن‌ها تقریبا غیرممکن است، نکته قابل توجه این است که آن‌ها این توانایی را دارند تا میلیون‌ها کاربر را به صورت روزانه که با سیستم‌عامل‌های خود درگیر هستند مدیریت نمایند.زمانی‌که یک گروه خاصی از رایانه به شبکه متصل می‌شوند و برای دستیابی به یک کار یا مجموعه‌ای از کارها در کنار هم به فعالیت می‌پردازند، از آن با عنوان خوشه یاد می‌شود. یک خوشه را می‌توان همانند یک کامپیوتر تصور کرد، اما با این تفاوت که توانایی ارائه مقایسه با یک دستگاه واحد در جهت پیشرفت‌های گسترده‌ در عملکرد، در دسترس بودن و مقیاس‌پذیری را دارد.اصطلاح سیستم‌های محاسباتی توزیع‌شده اغلب به نرم‌افزارهای یک سیستم گفته می‌شود که برای اعمال وظایف خاص روی خوشه ها نوشته شده‌اند مانند Hadoop ، Spark و MapReduce .در نهایت، برای تعریف فضای ابری باید بدانید علاوه‌بر منابع اشتراکی که در قسمت فوق به آن اشاره کردیم، سایر منابع مهم نیز می‌توانند به عنوان یک راه‌حل شامل سرورها، خدمات، میکروسرویس‌ها، شبکه‌ها و... نمود پیدا کنند. فضای ابری درواقع فضایی را توصیف می‌کند که یک حزب منفرد، گروهی از رایانه‌های شبکه‌ای و منابع مشترک را به طور معمول برای میزبانی و ارائه راه‌حل‌های مبتنی بر نرم‌افزار مدیریت می‌کند. با توجه به این تعریف، در‌حالی‌که قطعا اینترنت یک شبکه محسوب ‌می‌شود اما از آن به عنوان یک فضای ابری یاد نمی‌شود.علوم داده در فضای ابریدر این مقاله محاسبات ابری و سایر مفاهیم مرتبط تا عمق مناسبی مورد بحث قرار گرفته است. اگر با فرآیند علوم داده آشنایی داشته باشید، به خوبی می‌دانید که به طور معمول گردش دانش و علوم داده از طریق رایانه‌های متخصصین صورت می‌گیرد. رایانه از زبان‌های مختلفی مانند پایتون و R پشتیبانی می‌کند و متخصصین هم IDE های مورد علاقه خود را به کار می‌گیرند. راه‌اندازی محیط‌های دیگر توسعه نیازمند نصب بسته‌های مربوطه یا مدیریت آناکوندا و یا به‌کارگیری بسته‌های جداگانه است.زمانی‌که توسعه محیط به خوبی پیش رود، روند کار علوم داده به صورت کاملا معمولی آغاز می‌شود، دقت داشته باشید که داده‌ها تنها چیزی هستند که در اکثر موارد مورد نیاز می‌باشند. مراحل گردش کار تکراری به‌طور معمول شامل موارد زیر است:کسب اطلاعاتتجزیه و تحلیل، انتقال، تغییر شکل و حفظ داده‌هاتجزیه و تحلیل و استخراج داده‌ها، تجزیه و تحلیل داده‌های اکتشافی (EDA)، آمار و....ساخت، اعتبار و مدل‌های آزمایشی مانند پیش‌بینی، توصیه‌ها و... . توجه داشته باشید که در صورت ساخت مدل‌ها، پس از شناسایی الگوها، باید بینش عملی، استخراج اطلاعات مفید، نوشتن گزارش‌ها و... آغاز شود. در این‌جا این آموزش به "ایجاد یک محصول قابل تحویل" کمک می‌کند.تنظیم و بهینه‌سازی مدل یا محصول قابل تحویلبا این وجود، گاهی اوقات، انجام کلیه موارد مرتبط با علوم داده و یا وظایف بزرگ مرتبط به داده‌ها در یک محیط توسعه داده شده محلی امکان‌پذیر و عملی نمی‌باشد. در این قسمت لیستی از دلایل آن را ارائه می‌دهیم:مجموعه داده‌ها بسیار بزرگ هستند و در حافظه (RAM) سیستم توسعه برای آموزش مدل یا تجزیه وتحلیل‌ها جای نمی‌گیرد.قدرت پردازش محیط توسعه (CPU) برای انجام کارها در مدت زمان معقول در آن موضوع خاص کافی نیست.برای تحویل نیز باید به محیط تولید انتقال پیدا کند و احتمالا به عنوان یک جزء در یک برنامه بزرگ‌تر ( برای مثال، برنامه وب، پلت‌فرم SaaS و... ) درج شود.صرفا ترجیح داده می‌شود از یک ماشین سریع‌تر و قدرت‌مندتر (RAM، CPU و....) استفاده کرده و بار لازم را بر دستگاه توسعه محلی تحمیل نکنند.زمانی که سیستم در چنین موقعیتی قرار می‌گیرد، گزینه‌های مختلفی در دسترس قرار دارد. به‌جای استفاده از دستگاه توسعه محلی علوم داده، معمولا افراد کار محاسبات را به یک دستگاه یا یک ماشین مجازی مبتنی بر ابر ( AWS EC2, AWS Elastic Beanstalk، سرویس سرو یا دیگر سرویس‌های مناسب ابرآوند) بارگذاری می‌کنند. از مزیت‌های استفاده از ماشین‌های مجازی و خوشه‌بندی مقیاس خودکار این است که می‌توانند در صورت لزوم آن‌ها را از بین برده و متناسب با نیازهای محاسبات و ذخیره‌سازی معماری نمایند.در رابطه با استقرار محصول تحویل دادنی در یک محیط تولید که از آن با عنوان بخشی از برنامه بزرگ‌تر استفاده می‌شود گزینه‌ها و چالش‌های زیادی وجود دارد که باید در نظر گرفت.علاوه‌براین راه‌حل‌ها، ابزارهای دانش داده مبتنی بر فضای ابری و یا داده‌های سفارشی تولید شده نیز می‌توانند مورد استفاده قرار گیرند که با ابزارهای نوت‌بوک مانند Jupyter به خوبی کار می‌کنند. این موارد تا حد زیادی به عنوان داده‌های بزرگ، یادگیری ماشین و API های هوش مصنوعی در دسترس هستند و گزینه‌هایی مانند پلت‌فرم هوش مصنوعی AWS ، Databricks ، Google Cloud Platform Datalab و Machine Learning و موارد دیگر را در بر می گیرند. نرم‌افزار مقیاس‌پذیر و مجموعه معماری داده‌های بزرگ نیز می‌تواند یک مکمل عالی برای محاسبات فضای ابری باشد.معماری نرم‌افزار و ویژگی‌های کیفیتمعماری نرم‌افزار شامل معماری یک سیستم نرم‌افزاری مبتنی بر فضای ابری است که یک محصول، خدمات یا سیستم محاسباتی را به نمایش می‌گذارد. همچنین این امکان وجود دارد که شما از اصطلاحات معماری سیستم یا نرم‌افزار به صورت یکسان استفاده نمائید.بخشی از معماری نرم‌افزار به انتخاب زبان‌ها، فن‌آوری مناسب برنامه‌نویسی، مولفه‌ها، چهارچوب‌ها، سکوها و.... ارتباط دارد. این امر می‌تواند مورد توجه بسیاری از افراد خصوصا پیرامون سیستمی که هرگز تبادل انجام داده قرار گیرد. این جنبه از معماری نرم‌افزار نیاز به مهارت، دانش و تجربه به‌دست آمده توسط شخص مربوطه در گذر زمان دارد.یکی دیگر از جنبه‌های مهم سیستم‌ها و معماری و مهندسی نرم‌افزار به اصطلاح ویژگی‌های کیفی و یا الزامات غیرکاربردی آن است. این امر خصوصا در ایجاد راه‌حل‌های تولیدی در دنیای واقعی نیز صدق می‌کند.الزامات غیرکاربردی عبارتند از:دسترسیکارآییقابلیت اطمینانمقیاس‌پذیریقابلیت توسعهقابلیت استفادهمدولار بودنقابلیت استفاده مجدددر این مقاله شما به طور مختصر نسبت به چهار مورد از مهم‌ترین آنها یعنی در دسترس بودن، عملکرد، قابلیت اطمینان و مقیاس‌پذیری آشنا شدید. توجه داشته باشید که این بحث به معنای سطح بالایی بوده و به تعاریف مبتنی بر معیارها یا الزامات مربوط به این خصوصیات کیفیت ارتباطی ندارد.در دسترس بودن دقیقا سیستمی را تعریف می‌کند که به درستی در حال انجام کار است. این می‌تواند معانی زیادی را با خود به همراه داشته باشد زیرا با قابلیت اطمینان و مقیاس‌پذیری، وابستگی بسیار زیادی دارد. راه‌اندازی صحیح نیز این معنی را می‌دهد که سیستم مورد نظر در هر زمان که نیاز باشد مشغول به کار می‌شود که این کار می‌تواند توسط کاربر نهایی صورت گیرد که سعی در استفاده از سیستم مثلا Facebook یا Netflix دارد یا این که مجموعه‌ای از خدمات مبتنی بر فضای ابری مانند پردازش داده را استفاده می‌کند.قابلیت اطمینان اصطلاحی‌ست که بیانگر توانایی سیستم در اجرا و انجام درست کار بدون هیچ‌گونه خرابی و خطاست. هر چقدر که سیستم بتواند در انجام کار خود، عملکرد خوبی از خود در مقابله با خطاهای احتمالی به جای بگذارد، قابلیت اطمینان سیستم بالاتر است. با توجه به این‌که فکر کردن در رابطه با تمام خطاهای ممکن دشوار است، دستیابی به قابلیت اطمینان 100٪ نیز امکان‌پذیر نیست. همچنین خرابی‌ها و خطاها نیز می‌تواند به دلایل مختلفی از جمله وجود مشکل در کد، مشکلات محیطی و منابع محدود ( CPU,RAM ، حافظه دیسک و...) رخ دهد.کارآیی اصطلاحی است که برای توصیف سرعتی که سیستم به انجام کار در یک زمان خاص می‌پردازند مورد استفاده قرار می‌گیرد. به عنوان مثال به YouTube نگاه کنید، انتظار دارید وقتی به تماشای یک فیلم می‌روید، در مدت زمانی معقول بارگذاری و شروع به پخش شود. هر چه عملکرد گوگل در بهبود سرعت آن بهتر باشد، سرعت پخش فیلم بیش‌تر شده و زودتر پخش آن آغاز خواهد شد و در نتیجه کاربران از این روند شاد می‌شوند و درصد امکان ترک برنامه کمتر می‌شود.سرانجام مقیاس‌پذیری برای برخی از برنامه‌های کاربردی بسیار مهم است زیرا اصطلاحی‌ست که از آن برای نشان دادن توانایی سیستم در حفظ سطح معینی از عملکرد با وجود افزایش بار روی سیستم استفاده می‌شود. بار اصطلاحی‌ به معنای تعداد درخواست‌های همزمان به یک سیستم است.یک مثال عالی که در آن میزان مقیاس‌پذیری مورد سنجش قرار می‌گیرد بلیط‌های فروش رفته برای یک تیم ورزشی یا اجرای موسیقی است. با توجه به محبوبیت، تعداد درخواست‌های همزمان برای خرید بلیط در یک برنامه وب مانند Ticketmaster می‌تواند در اولین فروش بلیط‌ها به صدها هزار نفر برسد. با توجه به توانایی سیستم در مقیاس، این می‌تواند عملکرد برنامه را به شدت کاهش دهد و حتی سیستم را خاموش نماید. که مطمئنا این سناریو به هیچ عنوان قابل قبول نیست.برای برطرف کردن این نیاز، از تکنیک‌هایی برای مقیاس کردن سیستم یا مقیاس‌پذیری آن استفاده می‌شود. مقیاس‌کردن درست زمانی رخ می‌دهد که دستگاه محاسباتی موجود در سیستم با دستگا‌ه‌های قدرتمند مانند (cpu و هسته‌های بیشتر و...) و دستگاه‌های قابل اعتماد با منابع بزرگ‌تر مانند حافظه سیستم یا RAM جایگزین شوند. انجام این کار اغلب هزینه سنگینی را به دنبال دارد.از طرف دیگر مقیاس‌پذیری دقیقا زمانی مورد استفاده قرار می‌گیرد که از برنامه‌هایی کم‌هزینه‌تر بهره‌ گیرند. برنامه‌هایی که به صورت جداگانه از هیچ قدرت خاصی بهره‌مند نیستند اما وقتی به عنوان یک گروه مورد استفاده قرار می‌گیرند توانایی تحمل بار بر روی سیستم را دارند. از آنجا که راه‌حل‌های موجود به چندین رایانه احتیاج دارد این مسئله بسیار مهم است که سیستم‌های راه‌اندازی شده نیز به صورت خودکار به کنترل سناریو‌های یک یا چند کامپیوتر (گره) خرابی و.... بپردازند.نتیجه‌گیریامیدواریم در این مقاله نکات مطرح شده در رابطه با جنبه‌های مهم علوم داده فراتر از توسعه محلی در چهارچوب راه‌حل‌های تولیدی مناسب دنیای واقعی کمک شایانی در برطرف کردن مشکلات شما کرده باشد. باید بدانید رایانش ابری و معماری مبتنی بر ابر، نیاز به قدرت و منابع محاسباتی اضافی را کاملا برطرف می‌کند.