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

وقت آن رسیده تا کسب‌وکار خود را به بستر ابری منتقل کنید

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

انتقال به بستر ابری باعث می‌شه نیازی به حفظ و نگهداری data centerهای قدیمی که مصرف انرژی بالا دارند، نداشته باشین.
و مهم‌تر از همه، با مهاجرت و استفاده از سیستم Cloud Native، در بازارها رقابتی بمونین.
و با پاسخگویی و ارائه‌ی خدمات سریع به مشتری، رضایت مشتری رو جلب کنین.

چند نکته برای انتقال موفق کسب‌وکار به بستر ابری 

شروع کار با Cloud Native ‌ممکنه آسون به نظر برسه.

هر کسی که تجربه‌ی کافی کار با Cloud Native رو نداشته باشه، می‌تونه به سادگی به اینترنت مراجعه کنه.
و بعد با دسترسی به یک ارائه‌دهنده‌ی ابر عمومی در مدت زمان کوتاهی از امکانات‌شون از جمله کانتینر‌ها استفاده کنه.

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

چالش‌های پیش‌رو

با پیشروی بیش‌تر، چالش‌های پیش‌رو هم پیچیده‌تر می‌شه:
چگونگی نظارت، ذخیره‌سازی و نحوه‌ی تعامل مولفه‌های مختلف، تعریف ارتباطات، امنیت شبکه و… .

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

پروژه‌ی پرهزینه‌ای راه‌اندازی شده و راهی برای بازگشت وجود نداره.
و علاوه بر این، هنوزهم تصویر ذهنی روشنی برای حل این مسائل وجود نداره.

در واقع شرکت، مرحله‌ی اول تحولات به سمت توسعه‌‌ی ابری یا cloud native development، رو کاملا نادیده گرفته، یعنی مرحله‌ی Think:
شرکت باید با ارزیابی وضعیت فعلی و اهداف خودش، یک استراتژی واقع بینانه برای رسیدن به اون اهداف ایجاد می‌کرد.

و بعد از این‌که این مرحله رو به نحو درستی انجام می‌داد، باید سه مرحله‌ی بعدی تحول Cloud Native، رو به ترتیب دنبال می‌کرد:

Design، که در این مرحله درباره‌ی فرآیندها، محصولات و سرویس‌ها تصمیم‌گیری می‌شه.

مرحلهٔ Build، که در این مرحله سیستم‌های فناوری‌محور ایجاد می‌شه.
و مرحلهٔ Run‌،  که مهندسان آموزش می‌بینن تا سیستم جدید Cloud Native رو حفظ کرده و با افزایش نیازهای تجاری، اون رو مقیاس‌پذیرتر کنن.

بنابراین وقتی سازمانی بخواد به سمت سیستم Cloud Native مهاجرت کنه، باید این تحولات رو کاملا درک کنه.

در ادامه‌ی این پست ضمن معرفی سیستم Cloud Native، بررسی می‌کنیم چرا این سیستم‌ها اینقدر مهم هستن.

برنامه‌های Cloud Native چیست؟

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

Cloud Native، رویکرد جامعی برای ایجاد و اجرای برنامه‌های کاربردیه که از مدل محاسبات ابری برای این کار بهره می‌بره.
این مدل ابری برای ابرهای عمومی و خصوصی مناسبه.
امکان ارائه‌ی قدرت محاسباتی بی حد و مرزی رو برای توسعه‌دهنده‌ها فراهم می‌کنه.
زمانی که شرکت‌ها، برنامه‌هاشون رو با روش ابری ایجاد و اجرا می‌کنن، می‌تونن ایده‌های جدیدی رو به بازار عرضه کنن.
و با این‌کار می‌تونن به خواسته‌های مشتری با سرعت بالایی پاسخ بدن.

Cloud Native، "رویکردی است برای طراحی، اجرا، استقرار و بهره‌برداری از برنامه‌ها، ضمن بهره گیری کامل از محصولات و خدمات ارائه شده توسط ارائه دهند‌گان خدمات ابری (CSP).

استفاده از رویکرد Cloud Native به معنی ایجاد برنامه‌هایی ا‌ست که: 

میکروسرویس‌گرا هستن:

برنامه‌های Cloud Native‌ از سرویس‌های مجزایی تشکیل شدند به نام میکروسرویس؛
که این میکروسرویس‌ها حفظ و نگهداری برنامه‌ها رو چابک‌تر و راحت‌تر می‌کنن.

کانتینری شدن:

کانتینرها می‌تونن میکروسرویس‌ها رو بسته‌بندی کنن تا در هر شرایطی عملکرد مشابهی داشته باشن.
کانتینری شدن برنامه‌ها این امکان رو فراهم می‌کنه تا بتونین یک سرویس رو در هر شرایطی به راحتی دوباره تولید، تحلیل و ایزوله کنین.

به طور پویا orchestrate شدن:

میکروسرویس‌ها در کانتینرها مستقر می‌شن و کانتینرها به صورت یک سیستم یا یک stack با هم کار می‌کنن؛
تا از این طریق بتونن برنامه‌ی کاملی رو شکل بدن.
یک سیستم orchestration پویا، به طور خودکار روی هر کانتینر نظارت می‌کنه.
و فقط در صورت نیاز کاربر، اون رو راه‌اندازی می‌کنه و این‌کار باعث مقیاس‌پذیری و کارایی بیش‌تری می‌شه.

چرا برنامه‌های Cloud Native مهم هستند؟ 

برنامه‌های Cloud Native با هدف ساخت مدل‌های ابری ایجاد می‌شن.
این برنامه‌ها می‌تونن چابکی، انعطاف‌پذیری و قابلیت حمل بیش‌تر در محیط های ابری رو در اختیار سازمان‌ها قرار بدن.  

ابر به عنوان یک مزیت رقابتی:

Cloud Native یعنی کاهش هزینه‌های IT و حرکت به سمت رشد بیش‌تر تجارت.
در عصر نرم‌افزار، مشاغلی که بتونن برای پاسخ به نیازهای مشتری، برنامه‌های کاربردی‌شون رو با سرعت بالاتری ایجاد کرده و تحویل مشتری بدن، می‌تونن به موفقیت پایدارتری هم برسن. 

تمرکز تیم‌ها روی پایداری بیش‌تر:

وقتی زیرساختی با خرابی‌های کوچیکی مواجه بشه، خدمات قابل ارائه به مشتری هم با مشکلات تدریجی رو به رو می‌شه.
در دنیای Cloud Native، تیم‌ها برای این‌که بتونن خدمات پایدار بیش‌تری داشته باشن، روی معماری و زیرساخت‌ها تمرکز بیش‌تری می‌کنن.
رویکرد Cloud Native‌، به توسعه‌دهنده‌ کمک می‌کنه سیستمی طراحی کنه که با وجود مشکلات پیش‌رو، همچنان پاسخگوی مشتریان باشه.

رسیدن به انعطاف‌پذیری بیش‌تر: 

با استفاده از این رویکرد، توسعه‌دهنده می‌تونه برنامه‌ای بسازه که روی ابر عمومی/خصوصی و بدون تغییر خاصی اجرا بشه.

تا این‌جا فهمیدیم که Cloud Native، یک فناوری قدرتمند، نوید دهنده و بسیار درآمدزاست.
کاملا واضحه که بنگاه‌های اقتصادی مشتاقند هر چه سریع‌تر، به سمت اون مهاجرت کنند.

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

برای درک این معماری، لازمه که از شرکت‌های ارائه‌دهنده‌ی خدمات ابری کمک بگیرین.

شرکت‌های ارائه‌دهنده‌ی خدمات ابری‌ برای رسیدن به این هدف (انتقال به Cloud Native)، مراحلی رو به شما پیشنهاد می‌کنن: 

در واقع می‌تونیم بگیم که فرآیند انتقال به Cloud Native، به چهار مرحله تقسیم می‌شه:‌ 

Build ،Design ،Think و Run.

آشنایی با مراحل مختلف مهاجرت به Cloud Native

همون‌طور که گفتیم ممکنه شرکت‌ها موقع مهاجرت به سیستم Cloud Native به دلیل عدم آشنایی کافی با این رویکرد، با چالش‌های مختلفی رو به رو بشن، از جمله: هزینه‌های بالا، اتلاف وقت و از دست دادن فرصت‌ها.

شرکت‌های ارائه‌دهنده‌ی خدمات ابری، با ارائه‌ی راهکارهای لازم جهت مهاجرت به Cloud Native از بروز این مشکلات جلوگیری می‌کنن.
به همین دلیل برای استفاده از سیستم‌های Cloud Native لازمه که از شرکت‌های ارائه‌دهنده‌ی خدمات ابری، کمک بگیرین.

حالا در قسمت بعدی مراحلی هست که شما باید به کمک شرکت‌های ارائه‌دهنده‌ی خدمات ابری انجام بدین تا بتونین به راحتی به Cloud Native مهاجرت کنین: 

مرحله‌ی ۱: اول فکر کنید (Think) 

قبل از مهاجرت به Cloud Native و توسعه‌ی برنامه‌ها با پلتفرم ابری، مرحله فکر کردن ضروریه و غالبا ازش چشم‌پوشی می‌شه.

بسیاری از مدیران بدون درک کامل پیچیدگی‌ها به سمت سیستم Cloud Native مهاجرت می‌کنن؛
ولی هنوز نمیدونن هدفشون چیه که در نتیجه، طی کردن این فرآیند بدون دانش کافی منجر به هدر رفتن وقت و از دست دادن پول می‌شه.
اما با پاسخگویی به سوالات استراتژی کسب‌وکار و اندکی درنگ در این مرحله، موفقیت بیش‌تر کسب‌وکار تضمین می‌شه.

 تو این مرحله با مهندسین و سایر کارکنان مصاحبه می‌شه و نحوه‌ی انجام کارها بررسی می‌شه تا به دو سوال  اصلی پاسخ داده بشه:

  • شرکت به دنبال رسیدن به چه هدفیه؟
  •  وضعیت فعلی اون چیه؟

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

مرحله‌ی ۲: بعد طراحی کنید (Design)

شرکت‌های ارائه‌دهنده‌ی خدمات ابری در مرحله‌ی دوم که بهش مرحله‌ی طراحی گفته می‌شه، در مورد کاهش خطرات پیش روی کسب‌وکارها راه‌حل‌هایی رو ارائه می‌دن.
این مرحله از فرآیند Cloud Native می‌تونه یک هفته یا حتی ۱۲ هفته طول بکشه. حالا ببینیم کلا این مرحله یعنی چی؟

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

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

از اون‌جایی که معماری ابری یک معماری مبتنی بر سرویس هست، برنامه‌های Cloud Native باید به عنوان مجموعه‌ای از خدمات ابری یا API مستقر بشن.
توسعه‌دهنده‌ی برنامه به بهترین وجه وابستگی‌های برنامه رو درک و شناسایی می‌کنه، به عبارت دیگه تصمیم می‌گیره از چه کتابخانه‌هایی باید استفاده کنه و این‌که در نهایت این کتابخانه‌ها چطوری در یک نسخه‌ی غیر قابل تغییر، bundle بشن.

بنابراین در این مرحله، مشاوره‌های لازم در مورد آزمایش محصولات به شرکت شما ارائه می‌شه.
تمام اون چیزی که در توی مرحله در نظر گرفته می‌شه آزمایشه: 

تو این مرحله به همراه مهندسان، آزمایش‌هایی در مقیاس کوچیک انجام می‌شه.
گزینه‌هایی که به درستی کار نمی‌کنن، حذف شده تا به feature‌هایی رسید که عملکرد درستی داشته باشن.  

مرحله‌ی طراحی همه چیو سرعت می‌بخشه. ممکنه انعطاف‌پذیر نباشه و حتی پر خطر هم به نظر بیاد، اما امتحان کردن در مقیاس کوچیک قبل از سرمایه‌گذاری بالا در یک تغییر و تحول Cloud Native، در واقع به کاهش خطرات پیش‌رو کمک می‌کنه.   

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

و در نهایت نتایج حاصل از تمام این آزمایش‌های کوچیک، معماری سیستم جدید رو شکل می‌ده.

مرحله‌ی ۳ و۴: Build‌ کنید، Run کنید- و موفق شوید

مرحله‌ی‌ Build

بعد از پایان مرحله‌ی قبل، وارد مرحله‌ی Build‌ می‌شیم.
در این مرحله شرکت می‌دونه به کجا داره میره و آزمایش‌ها مسیرهای اشتباه رو از بین بردن. با توجه به تمام این موارد، سیستم جدیدی پیاده‌سازی و ایجاد می‌شه. 

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

مرحله‌ی‌ Run

ارائه‌دهنده‌های خدمات ابری، در این مرحله به شرکت شما کمک زیادی می‌کنن (گرچه توسعه‌دهنده‌ها باید بتونن برنامه‌های local رو اجرا کنن).
جزئیات مربوط به راه‌اندازی می‌تونه در بین ارائه‌دهنده‌ها متفاوت باشه، اما الگوی کلی اینه که برنامه‌ی شما در نوعی کانتینر (مثل Docker ،Garden ،Warden‌و…)، قرار می‌گیره و بعد فرآیندی برای راه‌اندازی برنامه‌ی شما آغاز می‌شه.

موفقیت واقعی Cloud Native، زمانی اتفاق میوفته که تیم‌ها بتونن سیستم جدید Cloud Native رو به تنهایی اجرا بکنن.
ممکنه این شرکت به محض ساخت سیستم جدید، به کمک جزئی یا کامل ارائه‌دهندهای خدمات ابری، نیاز داشته باشه که این ارائه‌دهنده‌ها در هر لحظه، آماده‌ی ارائه‌ی خدمت به شرکت هستن.

نتیجه گیری 

فرآیندهای Run‌ ،Build ،Design ،Think کمک می‌کنن بفهمین جایگاه شرکت شرکت شما در حال حاضر کجاست، در آینده در چه جایگاهی باید قرار بگیرین و این‌که اصلا چطوری می‌تونین به سمت اون جایگاه مورد نظرتون حرکت کنین.

برای آشنایی با اتوماسیون ابر و سیستم‌های ابری پیشنهاد می‌کنم این پست سکو رو هم مطالعه کنین.

منبع:
container-solutions