زمانیکه تصمیم می گیرید برنامه خود را به فضای ابری منتقل کنید تا از مزایایی مانند مقیاس پذیری، قابلیت اطمینان و بهرمندی از پتانسیل صرفه جویی در هزینه استفاده کنید، لازم است درمورد چگونگی این انتقال تصمیم گیری کنید.دو گزینه اصلی پیش روی شما قرار دارد:
- Cloud Migration
- Cloud Modernization
اگرچه نتیجه هر دو رویکرد منجر به برنامه ای می شود که در فضای ابری میزبانی می شود، فرآیندهای مهاجرت ابر و نوسازی ابر به طور قابل توجهی متفاوت می باشند. همچنین انواع محیطهای ابری که پس از تکمیل مهاجرت ابری یا مدرنسازی ابر با آنها مواجه خواهید شد نیز متفاوت خواهند بود. بسته به اهداف و اولویت های شما، احتمالاً یک رویکرد نسبت به دیگری برای نیازهای شما مناسبتر خواهد بود.
تصمیم گیری صحیح در مورد نحوه انتقال یک برنامه به فضای ابری از این جهت اهمیت دارد که بر بخش های مختلف کار از جمله میزان زمان و کار صرف شده و همچنین هزینه های مورد نیاز جهت تکمیل فرآیند مهاجرت تاثیر گذار است. همچنین تعیین می کند که برنامه شما به کدام نوع از سرویس های ابری بستگی دارد، برنامه شما چقدر منابع مصرف می کند و چگونه برنامه مبتنی بر ابر خود را به طور پیوسته مدیریت خواهید کرد.
این مقاله تفاوت های بین مهاجرت ابر و مدرن سازی ابر را توضیح می دهد، و همچنین مزایا و معایب هر تکنیک را برمیشمارد. به این ترتیب می توانید تصمیم بگیرید کدام استراتژی برای موارد استفاده مختلف بهترین است و زمانی که فرآیند را تکمیل کردید چه انتظاری می توانید از آن داشته باشید.
Cloud Migration
بهتر است ابتدا روشن کنیم مهاجرت ابری به چه معنا است؟ به زبان ساده، این فرآیند انتقال یک برنامه اجرا شده در فضای داخلی به فضای ابری بدون ایجاد تغییر در معماری برنامه است.
شما ممکن است به عنوان گامی در فرآیند مهاجرت ابری نیاز به ایجاد برخی تغییرات پیکربندی در برنامه خود داشته باشید، مانند ایجاد تغییر برای اجرا در یک نسخه سیستم عامل دیگر. اما در این فرآیند شما در ماهیت اساسی برنامه تغییری ایجاد نمی کنید. برای مثال نیازی نیست برنامه را به زبان برنامه نویسی دیگری بازنویسی کنید، یا پایگاه کد آن را به شکل عمده بازسازی کنید.
مهاجرت ابر به عنوان”برداشتن و جابجایی” شناخته می شود چراکه شامل” برداشتن” برنامه ای که در حال حاضر در محیط داخلی اجرا شده است و “بالا بردن” آن به یک محیط مبتنی بر ابر می شود .
انواع مهاجرت ابری
انواع مختلفی از مهاجرت ابر وجود دارد، از جمله:
- مهاجرت ابر عمومی، این اتفاق زمانی می افتد که یک برنامه اولیه را به ابر عمومی منتقل می کنید.
- مهاجرت ابر خصوصی،که شامل انتقال یک برنامه به یک ابر خصوصی است. ابر خصوصی شما (و حتی برنامه مهاجرت شده) ممکن است همچنان در محل میزبانی شود .اما پس از مهاجرت برنامه در یک محیط ابر است.
- مهاجرت ابری ترکیبی، که در آن برنامه خود را به نوعی محیط ابری ترکیبی منتقل می کنید.
بنابراین، نوع انتقال ابری که انجام می دهید بستگی به نوع ابری دارد که برنامه شما در نهایت وارد آن می شود.
همچنین امکان انتقال یک برنامه از یک ابر به ابر دیگر وجود دارد، به عنوان مثال انتقال از AWS به Microsoft Azure . این فرآیند به عنوان مهاجرت ابر به ابر شناخته می شود، و گونه ای از انتقال ابر می باشد. با این حال، وقتی در مورد مهاجرت ابری صحبت می شود، معمولاً به انتقال یک برنامه به ابر برای اولین بار اشاره می شود، و منظور انتقال از یک ابر به ابر دیگر نیست.
مثال مهاجرت ابری
برای نشان دادن اینکه مهاجرت ابری ممکن است در عمل چگونه باشد، برنامه ای با ویژگی های زیر در نظر بگیرید:
- برنامه یکپارچه است که با اجرای دستور /usr/bin/my-app اجرا می شود.
- برنامه با استفاده از ماشین مجازی اوبونتو ۲۰.۰۴ در محل میزبانی می شود.
اکنون، بیایید تصور کنیم که می خواهیم این برنامه را به ابر AWS منتقل کنیم .برای انجام این کار، ما باید مراحل زیر را تکمیل کنیم:
- مشخص کنید که می خواهید از کدام سرویس AWS برای میزبانی برنامه استفاده کنید. معمولا AWS EC2 یک انتخاب مناسب است چراکه EC2 به شما امکان می دهد ماشین های مجازی را در ابر AWS اجرا کنید .از آنجایی که برنامه در حال حاضر در VM on-prem اجرا می شود، انتقال آن به یک VM مبتنی بر ابر ساده ترین رویکرد برای دستیابی به مهاجرت ابری است.
- محیط ابری را تنظیم کنید .برای انجام این کار، ما یک حساب AWS ایجاد می کنیم و یک نمونه EC2 را تنظیم می کنیم که از آن برای میزبانی VM که میزبان برنامه است استفاده می کنیم.
- برنامه را انتقال دهید. مهاجرت مرحله انتقال اپلیکیشن به فضای ابری است .در این سناریو دو راه اساسی برای مهاجرت وجود دارد. یکی از آنها ایجاد تصویری از on-prem VM و وارد کردن تصویر به AWS است. این رویکرد در صورتی بهترین است که جزئیات پیکربندی زیادی در VM میزبان وجود داشته باشد که میخواهیم آنها را حفظ کنیم. در غیر اینصورت، ما به سادگی می توانیم برنامه را در یک VM جدید کپی کنیم. این رویکرد سریعتر است زیرا نیازی به ایجاد و وارد کردن تصویر VM ندارد. با این حال، ممکن است لازم باشد زمان بیشتری را برای پیکربندی VM جدید برای میزبانی برنامه صرف کنیم.
- پیکربندی قوانین: IAM در ابر، ما از قوانین مدیریت هویت و دسترسی (IAM) برای تعیین اینکه چه کسی می تواند با منابع ما چه کاری انجام دهد استفاده می کنیم. بنابراین، ما باید قوانین IAM را پیکربندی کنیم که مشخص کند چه کسی میتواند ماشین مجازی (VM) را که برای میزبانی برنامه ابری خود استفاده میکنیم، اجرا و تغییر دهد.
- پیکربندی پشتیبانگیری: احتمالاً میخواهیم پشتیبانگیری از VM خود راهاندازی کنیم، تا در صورت بروز مشکل بتوانیم آن را بازیابی کنیم. ما می توانیم این کار را با استفاده از اسنپ شات های EC2 انجام دهیم.
- برنامه را راه اندازی و آزمایش کنید: هنگامی که برنامه (و VM مرتبط با آن، در صورت وجود) به ابر منتقل شده و به درستی پیکربندی شده است، ما آن را اجرا می کنیم و اعتبار آن را تأیید می کنیم تا مطمئن شویم که مطابق انتظار عمل می کند.
- برنامه را در مرحله اجرایی قرار دهید: اگر همه چیز تا این مرحله به خوبی پیش رفته باشد، ما میتوانیم با هدایت درخواستهای برنامه از نمونه اولیه به برنامه جدید، برنامه را در مرحله اجرایی قرار دهیم. در این زمان می توانیم نمونه اولیه را از حالت اجرایی خارج کنیم چرا که دیگر به آن نیازی نداریم.
در پایان این فرآیند، ما یک برنامه مبتنی بر ابر خواهیم داشت که از بسیاری جهات به برنامه اولیه بسیار شبیه است. احتمالاً اختلافات جزئی وجود خواهد داشت، برای مثال، اگر یک VM جدید در EC2 برای میزبانی برنامه راه اندازی کنیم، آن VM می تواند سیستم عامل متفاوتی را اجرا کند و با متغیرهای محیطی متفاوتی نسبت به ماشین مجازی on-prem پیکربندی شود .قوانین IAM و فرآیند پشتیبانگیری برای VM مبتنی بر ابر (و برنامهای که میزبان آن است) نیز متفاوت از مواردی است که در حالت اولیه استفاده می شده است.
اگرچه تا آنجا که به خود برنامه مربوط می شود، نتیجه باید با برنامه on-prem کاملا یکسان باشد. برنامه در طول فرآیند مهاجرت تغییر داده نشده است و فقط شیوه میزبانی آن تغییر کرده است.
مدرنیزاسیون ابری چیست؟
مدرنیزاسیون ابر فرآیند به روز رسانی یا قالب بندی مجدد برنامه ها برای استفاده کامل از معماری ها و خدمات ابری است.
به عنوان مثال، وقتی نوسازی ابر را انجام می دهید، شما ممکن است یک برنامه یکپارچه (مونولیتیک) را انتخاب کنید و آن را برای استفاده از معماری میکروسرویس بازسازی کنید .هنگامی که برنامه به عنوان میکروسرویس اجرا می شود، می تواند منابع میزبانی ابری را به طور موثرتری مصرف کند .همچنین مقیاسبندی و بهروزرسانی میکروسرویسها آسانتر است و همچنین مدیریت آنها با استفاده از ارکستراتوری مانند Kubernetesهم آسان تر است. در هر یک از این جهات، یک برنامه مدرن میتواند از مزایای بیشتری از فضای ابری استفاده کند تا برنامهای که به سادگی به ابر منتقل میشود، بدون اینکه تغییری در خود برنامه ایجاد شود.
انواع نوسازی ابری
سه نوع اصلی نوسازی ابری وجود دارد:
- مدرن سازی یک برنامه اولیه با بازنگری آن برای استفاده کامل از ابر، و سپس انتقال آن به ابر.
- مدرن کردن برنامه ای که قبلاً در فضای ابری میزبانی شده است، اما هنوز برای ابر بهینه نشده است.
- مدرن کردن یک برنامه قدیمی on-prem و نگه داشتن آن در prem، اما میزبانی آن در یک ابر در محیط on-prem مانند یک شاخه kubernetes
بنابراین، مدرنسازی ابر لزوماً به این معنی نیست که برنامهها به فضای ابری منتقل شده اند. ممکن است این اتفاق بیفتد، اما برنامه ها می توانند در ابتدا در فضای ابری باشند، یا می توانند پس از تکمیل نوسازی در on-premis باقی بمانند. ویژگی تعیین کننده مهاجرت ابر این است که برنامه ها برای ابر بهینه شده باشند، به جای اینکه فقط به ابر منتقل شوند.
مثال نوسازی ابر
به عنوان نمونه ای از نوسازی ابر در عمل، برنامه یکپارچه ای را که در بالا در زمینه مهاجرت ابری مورد بحث قرار دادیم در نظر بگیرید .بعنوان یادآوری، یک برنامه یکپارچه (مونولیتی) که در داخل یک ماشین مجازی اوبونتو ۲۰.۰۴ در محل (on-premis) اجرا می شود.
برای مدرن کردن برنامه، ما فرآیندی را دنبال می کنیم که به این صورت است:
- یک معماری برنامه جدید را برنامه ریزی کنید: ما تصمیم می گیریم که چگونه برنامه را بازسازی کنیم تا به عنوان مجموعه ای از میکروسرویس های توزیع شده اجرا شود . باید تصمیم بگیریم که چه تعداد میکروسرویس ایجاد کنیم و چگونه آنها را ساختار و سازماندهی کنیم تا عملکرد کامل برنامه را در بر گیرند.
- ریفکتور کردن برنامه: refactoring درواقع فرآیند بازنگری اساسی کد منبع برنامه است به طوری که برنامه به عنوان میکروسرویس اجرا شود. این معمولا زمانبرترین و پر تلاشترین بخش مدرنسازی ابر است.
- ایجاد یک محیط میزبانی جدید: از آنجا که یک برنامه مبتنی بر میکروسرویس از معماری استقرار متفاوتی نسبت به یکپارچه (مونولیتی) استفاده می کند، باید تصمیم بگیریم که چگونه برنامه مدرن را میزبانی کنیم. متداول ترین رویکرد، استقرار هر میکروسرویس در یک کانتینر و مدیریت همه آنها با استفاده از Kubernetes است. اما میتوانید از توابع بدون سرور برای میزبانی برخی از بخشهای برنامه نیز استفاده کنید.
- پیکربندی :IAM ما به سیاست های IAM برای محافظت از برنامه بازسازی شده خود نیاز داریم.
- طرح پشتیبان: تهیه نسخه پشتیبان از میکروسرویس ها پیچیده است و بستگی به نحوه میزبانی آنها دارد. در یک خوشه Kubernetes، شما می توانید تصاویر پشتیبان از هر گره ایجاد کنید، و همچنین امکان پشتیبان گیری از اجزای میزبانی اصلی Kubernetesمانند etcd را هم دارید.
- باز استقرار و آزمایش برنامه: با کامل شدن محیط استقرار به روز شده، ما می توانیم برنامه خود را در آن مستقر کنیم. سپس میتوانیم آن را آزمایش کنیم تا مطمئن شویم همانطور که باید کار میکند.
- برنامه را در مرحله اجرایی قرار دهید: اگر برنامه آزمایش ها را با موفقیت پشت سر بگذارد، ما میتوانیم آن را با ارسال درخواستها به آن وارد مرحله اجرایی کنیم و نسخه اصلی برنامه مونولیتی را از حالت فعال خارج کنیم.
در این مرحله، ما برنامهای خواهیم داشت که احتمالاً با استفاده از معماری ابری در مقایسه با نسخه مونولیتی بصورت مطمئنتر و کارآمدتر اجرا میشود.
مدرنیزاسیون ابری در مقابل مهاجرت ابری: تفاوت های کلیدی
به طور خلاصه، تفاوتهای اصلی بین مهاجرت ابر و مدرنسازی ابر به موارد زیر خلاصه میشود:
- زمان و کار حرفه ای مورد نیاز: مهاجرت ابر فرآیند سادهتری است که به زمان کمتر و منابع کمتری نیاز دارد.
- تخصص مورد نیاز: مهاجرت ابری به منابع توسعه نیاز ندارد زیرا هیچ تغییری در برنامه ایجاد نمی کند. در مقابل، نوسازی ابری نیازمند تغییرات عمده در کد منبع برنامه در طول فرآیند قالب بندی مجدد است.
- مزایای حاصل: به طور کلی، نوسازی ابر مزایای بیشتری را به همراه دارد، زیرا منجر به ایجاد برنامههایی میشود که با اطمینان بیشتر و مقرون به صرفهتر در فضای ابری کار میکنند. انتقال یک برنامه به فضای ابری نیز ممکن است مزایایی داشته باشد، اما برنامه آنقدر آماده نیست که از یک مدل میزبانی ابری یا یک معماری توزیع شده استفاده حداکثری را ببرد.
پس، در نهایت، مهاجرت ابری ساده تر است، اما نوسازی ابر نتایج بلندمدت بهتری ارائه می دهد .اگر زمان و منابع لازم برای انجام نوسازی ابر را دارید، احتمالاً ارزش تلاش را دارد. اما اگر فقط نیاز دارید برنامه خود را به فضای ابری وارد کنید، مهاجرت ابری سریعترین راه برای انجام این کار است.