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

در این مقاله به معرفی و توضیح ویژگی های موثر در تحول معماری برنامه های کاربردی cloud-native می پردازیم.

Cloud-Native Applications

برنامه های کاربردی cloud-native، برنامه هایی هستند که نه تنها قابلیت اجرا بلکه امکان دیپلویمنت، مقیاس پذیری و نگهداری روی پلتفرم های رایانش ابری دارند. آنچه امکان تولید این نوع از برنامه های کاربردی را فراهم کرده، سه عامل زیر می باشد:

  • قابلیت دسترس بودن همیشگی پلتفرم های رایانش ابری
  • پیشرفت هایی در حوزه فناوری های مجازی سازی
  • ظهور ابزارهای Agile و DevOps و تمایل استفاده سازمان ها از آنها برای کاهش و بهبود چرخه تولید نسخه های برنامه کاربردی

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

cloud evolution - تحول معماری نرم افزار در عصر رایانش ابری

Cloud Computing Platforms

امکان دسترسی همیشگی به پلتفرم های رایانش ابری،  سازمان های نرم افزاری را به سوی استفاده بیشتر از خدمات PAAS (Platform as a service) سوق داده است. در این خدمت هر آنچه برای دیپلویمنت و نگهداری یک اپلیکیشن مورد نیاز است، با کمترین هزینه و صرف زمان در اختیار سازمان ها قرار می گیرد. همچنین مقیاس پذیری به صورت انعطاف پذیر بر حسب میزان تقاضا امکان پذیر می باشد.

از جمله پلتفرم های ابری محبوب برنامه نویسان می توان به Cloud Foundry، Google Cloud Platform و  Kubernetes که توسط شرکت گوگل ارائه شده است، اشاره نمود.

Virtualization Technologies

در فناوری های مجازی سازی، لایه ای انتزاعی روی سخت افزار یا سیستم عامل ماشین میزبان ایجاد می شود که امکان استفاده بهینه از منابع را فراهم می نماید. برای مثال روی سیستم میزبان چندین ماشین مجازی با سیستم عامل های مختلف راه اندازی می شوند که همگی به عنوان یک سیستم کاملا مستقل عمل کرده و دارای CPU، Memory و تجهیزات شبکه خواهند بود.

server virtualization for small business - تحول معماری نرم افزار در عصر رایانش ابری

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

برای مثال در مدل معماری میکروسرویس ها، باید هر یک از میکروسرویس ها dockerize شده و در یک docker registry رجیستر گردند تا امکان deploy/undeploy روی پلتفرمی مانند kubernetes فراهم گردد.

Agile & DevOps Improvements

در ابتدا Agile Methodologies فقط با رویکرد سرعت و کیفیت بخشیدن به تولید نرم افزار در میان تیم های توسعه محصول ظاهر گردید ولی رفته رفته ضرورت آن در بقیه تیم های تست و deployment نیز حس شد. با گسترش و انشعاب متدهای agile در سایر تیم های عملیاتی (DevOps)، سرعت و کیفیت در کل چرخه تولید محصول تا عرضه آن به بازار پدیدار گشت.  

به مرور زمان، توسعه ابزارهای DevOps نگرشی نو در انجام فرآیندهای رایج، همیشگی و تکراری در چرخه عمر محصول ایجاد کرد که سازمان ها را به استفاده هر چه بیشتر از این ابزارها ترغیب نمود. این ابزارها کلیه فرآیند تکراری از بیلد نسخه تا مانیتورینگ سرویس ها و … را  در بر می گیرد تا صحت و کیفیت هر فرآیند را تضمین نماید.

 در این مقاله به لیستی از ابزارهای DevOps محبوب در سال 2019 اشاره شده است.