محمد مهدی خلعت بری بدون دیدگاه

سلام و درود بر همه همراهان همیشگی قبیله گیک ها. در این مطلب قصد دارم یکی از تجارب برنامه نویسی خودم را در اختیار شمار قرار بدم و امیدوارم برای شما مفید واقع بشود.

قبل از اینکه به سراغ مفاهیم اصلی برم، میخوام در مورد برخی از مفاهیم Cloud برای شما توضیحاتی را بدهم. تمامی دنیا یه سمت استفاده از Cloud رفته و این تکنولوژی در سال های اخیر پیشرفت بسیار زیادی داشته است. حال به توضیحات مختصری در مورد این تکنولوژی میپردازیم :

رایانش ابری(Cloud Computing)ﻳﻚ ﻭﺍژﻩ ﭘﺮ ﺯﺭﻕ ﻭ ﺑﺮﻕ ﺑﺎﺯﺍﺭﻳﺎﺑﻲ ﺍﺳﺖ ﻛﻪ این ﺭﻭﺯﻫﺎ ﺑﻪ ﺁﻥ ﺑﺴﻴﺎﺭ ﺑﻬﺎ ﺩﺍﺩﻩ میﺷﻮﺩ. ﻳﻚ ﺗﻌﺮﻳﻒ ﻣﺒﻬﻢ ﺍﻣﺎ ﻣﻔﻴﺪ ﺍﺯ ﻭﺍژﻩ ﻣﺬﻛﻮﺭ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﻣﺤﺎﺳﺒﺎﺕ ﺍﺑﺮﻱ، ﺩﺍﺩﻩﻫﺎ، ﭘـﺮﺩﺍﺯﺵ ﻳﺎ ﺗﺠـﺮﺑﻴﺎﺗﻲ ﺍﺳﺖ ﻛﻪ ﻳﻚ ﺟﺎﻳﻲ ﺩﺭ ﺍﺑﺮ که ﺍﻳﻨﺘﺮﻧﺖ ﻧﺎﻣﻴﺪﻩ میﺷـﻮﺩ، ﻭﺟﻮﺩ ﺩﺍﺭﻧﺪ. ﺍﻛﺜﺮ ﻛﺎﺭﺑﺮﺍﻥ، ﺍﻳﻦ ﺭﻭﺯﻫﺎ ﻛﺎﺭﻫﺎﻱ مانندﻛﻨﺎﺭ ﻫـﻢ ﻗﺮﺍﺭ ﺩﺍﺩﻥ ﻳﺎ میزبانی ﺍﺯ ﺳـﺮﻭﺭﻫﺎﻱ ﻭﺏ ﻳﺎ ﭘﺴﺖ الکترو نیکی ،شبکه‌های اجتماعی ،نرم‌افزارها به عنوان خدمت(SaaS) و تجهیزات به عنوان خدمات ،توسط محاسبات ابری انجام می‌شود. امروزه، به دلیل  مقرون به صرفه بودن محاسبات‌ابری، به شهرت آن افزوده می‌شود. ﺩﻟﻴﻞ ﻣﻘﺮﻭﻥ ﺑﻪ صرفه ﺑﻮﺩﻥ ﻣﺤﺎﺳﺒﺎﺕ ﺍﺑﺮﻱ ﺍﻳﻦ ﺍﺳـﺖ ﻛﻪ ﺧـﺪﻣﺎﺕ ﺁﻥ ﻧﻴﺎﺯﻱ ﺑﻪ سخت افزارها ﻭ نرم‌افزارهای ﮔﺮﺍﻥﻗﻴﻤﺖ ﺧﺎﻧـﮕﻲ ﻧﺪﺍﺭﻧـﺪ. ﻋﻼﻭ ﻩﺑﺮ ﺍﻳـﻦ، ﺭﻭﺵ ﻣـﺬﻛﻮﺭ ﺑﺎ ﭘـﺮﺩﺍﺧﺖ ﻳﻚ ﻣﺒﻠـﻎ ﻣﺎﻫﻴﺎﻧﻪ ﺩﺭ ﺩﺳـﺘﺮﺱ ﺍﺳـﺖ ﻭ ﺩﻳﮕﺮ ﻧﻴﺎﺯﻱ ﺑﻪ ﭘـﺮﺩﺍﺧﺖ هزینه های هنگفت نمی‌باشد ﻛﻪ ﻫﻤﻴﻦ ﻣﺴﺌﻠﻪ ﺍﺯ ﺩﻳﺪﮔﺎﻩ ﻣﺎﺩﻱ، ﺑﺮ ﺟﺬﺍﺑﻴﺖ ﺁﻥ می‌افزاید.

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

پردازش ابری چیست؟

در حال حاضر پردازش ابری یکی از پربحث‌ترین موضوعات در دنیای مجازی فناوری اطلاعات می‌باشد.اما پردازش ابری چیست؟

چون پردازش ابری هر روز در حال پیشرفت است،پس تعاریف آن نیز در حال توسعه و تغییر هستند.اما تعریفی که پیش از همه می‌توان از آن استفاده کرد،توسط موسسه ملی استاندارد و تکنولوژی NIST ارائه شده‌است:

((پردازش ابری،یک مدل فعال کردن بهینه بر حسب تقاضا برای دسترسی به منابع مشترکی است که برای پردازش اختصاص یافته‌اند (برای مثال شبکه، سرورها و سرویس های مختلف اینترنتی و … ) که می‌تواند به سرعت و با کمترین تلاش مدیریتی با تعامل یا تامین کننده سرویس، مهیا گردد.))

ساده ترین تعریف از رایانش ابری، به معنای توسعه و به کاربری فناوری کامپیوتر می‌باشد; در واقع قابلیت های کامپیوتری به صورتی که سرویس اینترنتی به کاربر ارائه می‌شود و فضای کاربر روی اطلاعات، از کامپیوترهای شخصی به ابر منتقل می‌شود. در ابر ارائه خدمات از طریق virtual service می‌باشد که امکان مدیریت پویای منابع فیزیکی را خواهیم داشت.

طبقه بندی رایانش ابری :

اولین فناوری ابر ( ابر 1.0) : از تجمیع لایه های Tcp/ip که در آن یک شبکه بوسیله پروتوکل Tcp/ip با شبکه ای دیگر که از جزئیات آن آگاهی ندارد،ارتباط دارد.

ابر 2.0 : داده‌های موجود در شبکه جهانی اینترنت که کاربران از اسناد و اطلاعاتی استفاده می‌کنند که نمی‌دانند از کجا آمده و توسط چه کسی انتشار یافته است.

ابر 3.0 : تجمیع و ترکیبی از زیرساخت های شامل سرورها، نرم‌افزارهای کاربردی،داده‌ها و سکوهای سخت‌افزاری است.

معماری و مدل‌های سرویس :

یک معماری مبتنی بر سرویس Multi-tenate (چند مستاجره) است.در این مدل مصرف‌کنندگان را به عنوان Front-End و تامین‌کننده ابر را به عنوان  Back-End که سرویس را برای چند مصرف کننده محیا می‌کند، مجزا می‌سازند.

3مدل سرویس اصلی در پردازش ابری:

مدل‌های خدمات ابری، به صورت نرم‌افزار به عنوان یک سرویس (Saas)، سکو به عنوان یک سرویس (Paas) و زیرساخت به عنوان یک سرویس (Iaas) طبقه بندی می‌شوند.

SaaS : استفاده از نرم‌افزارهای کاربردی است که به منظور ارائه خدمات به کاربران نهایی در یک زیرساخت ابری ایجاد می‌گردد.Saas می‌تواند نرم‌افزارهایی همچون مدیریت ارتباط بامشتری(CRM) ویا Microsof office365 باشد، برای مثال Microsof office365 یک بسته نرم‌افزاری است که به صورت انلاین در دسترس است و از طریق هر devive چه pc باشد و چه Mac و چه موبایل،می‌توان به راحتی به ابزار office دسترسی داشت.در سرویس SaaS دقدقه فروش نرم‌افزار و ارائه لایسنس را برای ارائه‌دهندگان نرم‌افزار از بین برده است.

Paas : استفاده از ابزارها و منابعی است که به منظور ارائه خدمات به کاربران نهایی در یک زیرساخت ابری اجرا می‌گردد. مشتری امکان دارد که برنامه‌کاربردی ساخته شده توسط خود را  بر روی  زیرساخت ابری قرار دهد. این برنامه  با استفاده از زبان‌های برنامه‌نویسی و ابزارهایی که توسط فراهم‌کننده پشتیبانی می‌شوند (مثل: جاوا، پایتون، دات‌نت) ساخته شده است.

Iaas : استفاده از منابع محاسباتی زیر ساختی از قبیل تجهیزات ذخیره سازی، شبکه‌ها و سرورهاست که به منظور ارائه خدمات به کاربران نهایی استفاده می‌شود.کاربران نهایی می‌توانند نرم افزار های دلخواه از قبیل سیستم عامل و نرم‌افزار های کاربردی را پیاده‌سازی و اجرا کنند.

اما تجارب شخصی من 

طی همکاری که من با سازمان های بزرگ و کوچک در ایران داشتم، با بسیاری از سیستم های برنامه نویسی شده این  سازمان ها همچون اتوماسیون اداری، اتوماسیون مالی و … آشنایی دارم.

در این سازمان ها سعی شده است که بسیاری از این Application های برنامه نویسی شده، کاملا بصورت مجزا از یکدیگر باشند، به اینصورت که هر کدام از Application ها دارای سروری مجزا، دیتا بیس مجزا و قابلیت ها مجزا نسبت به یکدیگر می باشند.

اما آیا این روش ساخت Application ها درست می باشد؟

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

تا حدی بسیار زیادی جواب شما درست است. اما من قصد دارم با ذکر یک مثال کمی بیشتر به جواب سوال بالا بپردازیم.

اتوماسیون اداری یک سازمان شامل چه اطلاعاتی و قابلیت هایی هستند؟

  • اطلاعات پرسنلی
  • اطلاعات و قوانین اداری
  • اطلاعات مشاغل سازمانی
  • اطلاعات کلیه فعالیت های بخش های مختلف سازمان
  • و …

اتوماسیون مالی یک سازمان شامل چه اطلاعاتی و قابلیت هایی هستند؟

  • اطلاعات پرسنلی
  • اطلاعات مالی (شامل پیش فاکتور ها، فرصت های تجاری، فاکتورهای نهایی و …)
  • اطلاعات کلیه تجهیزات و کالا های ورودی و خروجی به انبار شرکت
  • و …

اتوماسیون انبار یک سازمان شامل چه اطلاعاتی و قابلیت هایی هستند؟

  • اطلاعات مالی (شامل پیش فاکتور ها، فرصت های تجاری، فاکتورهای نهایی و …)
  • اطلاعات کلیه تجهیزات و کالا های ورودی و خروجی به انبار شرکت
  • کالاهای امانی
  • حواله های ورود و خروج کالاها
  • و …

در نهایت تمامی اتوماسیون های بالا قابلیت هایی همچون جستجو، تهیه گزارش و … را در بخش های مختلف را دارند.

همانطور که مشاهده می کنید بسیاری از قابلیت ها و اطلاعات بین سیستم های مختلف یکسان می باشد. بنابراین در هرکدام از این سیستم ها، در صورت مجزا بودن، باید کلیه اطلاعات آن ها در DataBase های هرکدام از این Application ها به صورت جداگانه ثبت گردد و باید تمامی قابلیت های مشترکی که برای هرکدام از قسمت ها میخواهیم، در هر برنامه جداگانه برنامه نویسی شوند.

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

که تمامی موارد بالا دارای هزینه های زمانی و مالی بسیار بالایی می باشند.

حال اینجاست که به اهمیت سرویس SaaS پی میبریم. سرویس نویسی یک از پایه های سیستم های CloudBase می باشد. اما مزیت استفاده از سرویس نویسی در چیست؟

برای مثال همان اطلاعات پرسنلی سازمان را فرض کنید. یک سرویس به عنوان Person Service می سازیم. اما این سرویس چه ویژگی هایی دارد؟

  • تمامی اطلاعات پرسنل یک بار و در DataBase این سرویس قرار می گیرد.
  • تمامی قابلیت های نرم افزاری در مورد که در مورد پرسنل نیاز است، در این Service قرار می گیرد. (همچون قابلیت های جستجو بر اساس فیلد های خاص، گزارش گیری، ثبت، حذف، ویرایش اطلاعات و …)
  • قابلیت انعطاف پذیری برنامه و اطلاعات و قابلیت های مورد نیاز در این حالت بسیار زیاد است و در زمان و هزینه نیز صرفه جویی می گردد.
  • بعد از آماده سازی این سرویس، بقیه سسیستم ها از این سرویس استفاده می نمایند. به این صورت که برای مثال اتوماسیون اداری کلیه درخواست های خود سمت پرسنل را برای Person Service ارسال می نماید و اطلاعات مورد نیاز خود را دریافت میکند.

ادامه مفاهیم برنامه نویسی سرویس مربوط به بخش تخصصی SaaS می باشد که در این مطلب نمی گنجد.

من الله توفیق

محمد مهدی خلعتبری

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *