Cloud-Native Application

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

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

با  در نظرگرفتن این مهم، ظهور سرویس های ابری در لایه زیرساخت، و تولید و  توسعه نرم افزارهای ابرمحور (cloud-native app) از ارکان اصلی این دگردیسی و  نیازمندی های اساسی کسب و کارهای دیجیتال به شمار می رود. 

cloud-native  app در حقیقت یک رویکرد نوین در طراحی و توسعه نرم افزارهای ابری است که  از مزایای مدل تحویل محاسبات ابری (Cloud) بهره گرفته و با بکارگیری فناوری  هایی مانند کانتینر، دوآپس، مایکروسرویس باعث ارائه خدمات و تحویل سریع  ارزش به مشتری می گردد. چابکی، تطابق عملیاتی اجرایی با نیازمندی های  مشتری، بهره وری بیشتر و کاهش هزینه ها از منافع اصلی این تغییرات خواهد  بود. 

حال  برای درک بهتر از cloud-native app بهتر است ارکان اصلی آنرا بشناسیم. طبق  تصویر زیر، چهار اصل اساسی در تشکیل یک نرم افزار ابرمحور شامل استفاده از  فناوری کانتینر، معماری مایکروسرویس، متدولوژی دوآپس و تحویل/توسعه مستمر  وجود دارد:

  • فناوری  کانتینر به منظور بسته بندی نرم افزارها ارائه شده است. استفاده از  کانتینر در مراکز داده مدرن، چالش های مربوط به جابجایی و اجرای اپلیکشن ها  را از بین برده است و بدون درنظر گرفتن وابستگی های اپلیکشن ها، براحتی می  توان یک سرویس نرم افزاری را از محیط مبدا (development) به محید عملیاتی  (production) منتقل نمود. کانتینرها نسل جدیدی از مجازی سازی در لایه سیستم  عامل به شمار می روند. در حقیقت کانتینر یک پردازش روی سیستم عامل محسوب  می شوند که محیط ایزوله ای برای اجرا کردن یک نرم افزار را فراهم می نمایند  و هر سرویس با تمام وابستگی های نرم افزاریش و مستقل از سیستم عامل اجرا  می شود. سرعت زیاد در اجرا، عدم وابستگی به محیط اجرایی و استفاده بهینه تر  از منابع زیرساخت باعث ایجاد چابکی و امکان تکثیر سریع کانتینرها می گردد.
  • معماری  مایکروسرویس، یک نگرش جدید در طراحی نرم افزار محسوب می شود که یک سیستم  نرم افزاری سنتی و بزرگ را به زیرماژول های کوچک تحت عنوان مایکروسرویس  تقسیم می کند. این مایکروسرویس ها، بصورت مستقل و جداگانه قابل اجرا می  باشند. با توجه به مستقل بودن زیرماژولها، انجام چند برابری تغییرات در نرم  افزارها بدون نیاز به دستکاری در کل سیستم و بصورت بسیار سریع و منعطف  انجام خواهد شد. لذا، بهره گیری از مزایای مدل مایکروسرویس در طراحی  اپلیکشن ها با رویکرد تولید و توسعه نرم افزارهای ابری امری حیاتی به شمار  می رود.
  • متدولوژی دوآپس  (DevOps) ترکیبی از روش ها و فرآیندهایی است که با بکارگیری ابزارها و  تکنولوژی های مخصوص و با تمرکز بر ایجاد یک ارتباط یکپارچه و پویا بین تیم  های عملیات و توسعه نرم افزار، قصد چابک کردن سیستم را دارد تا بتواند ارزش  های تولید شده را بصورت مستمر و سریع به مشتری ارائه کند. لذا، از آن به  عنوان یک پل ارتباطی مناسب بین تیم های توسعه دهنده و تیم های عملیات نام  برده می شود تا با بهره گیری از فناوری های نوین، تولید و توسعه نرم  افزارها از هفته ها به ساعت و دقیقه کاهش دهد. پیاده سازی یک دوآپس موفق در  سازمان، مستلزم تغییرات فرهنگی در تیم ها و ساختار وظایف جدید می باشد.
  • تحویل/توسعه  مستمر با هدف ارائه یک چرخه مستمر و یکپارچه به منظور تولید، توسعه، به  روزرسانی و رفع مشکلات طراحی شده است. در این روش، توسعه دهندگان نرم افزار  بصورت مستمر کدهای خود را در مخزن کد نوشته و ادغام می کنند. پس از ثبت  کدها، فرآیند ساخت (build) و انجام آزمایش های مختلف نرم افزاری (testing)  بصورت خودکار انجام می شود. لذا خودکار بودن این مراحل، علاوه بر کاهش  خطاهای انسانی، رفع سریعتر مشکلات را بدنبال داشته که نهایتا بهبود کیفیت  نرم افزار و انتشار سریعتر نسخه های جدید را بدنبال خواهد داشت.