بخش اول – معرفی Database DevOps

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

جهت آشنایی بیشتر با اصول اسکرام و دواپس می توانید به فیلم های آموزش رایگان Scrum و آموزش رایگان DevOps مراجعه بفرمایید.

البته Automation خیلی به ایجاد DevOps کمک می کنه ولی ما ابتدا نیاز به تفکر DevOps داریم. در نتیجه DevOps خریدنی نیست و زمان می بره تا سازمان خودش رو با اون هماهنگ کنه.

DevOps عموما شامل تیم های توسعه و زیرساخت میشه و سایر تیم ها مثل (دیتابیس و امنیت) رو شامل نمیشه.به عنوان مثال در فرایندی که تیم امنیت هم در نظر گرفته بشه DevSecOps نامیده میشه. 

DevOps به معنی ایجاد محیطی مناسب جهت همکاری موثر بین تیم های مختلف تولید و نگهداری نرم افزار است.

DevOps is about creating the right environment and the right kind of team to become collaborative and work towards a shared goal of delivering software effectively

جهت مشاهده و دانلود فیلم های آموزشی دواپس به بخش آموزش DevOps مراجعه بفرمایید.

در نظر نگرفتن تیم های دیتابیس و امنیت در مفهوم DevOps مشکلاتی رو برای تیم ها ایجاد میکنه که این باعث شد امروز بخوام درباره Database DevOps صحبت کنم که موضوع جدید و جذابیه.

هر فرآیندی برای پیاده سازی نیاز به ابزارهایی داره. ابزارهای این حوزه به تازگی به جایگاه مناسبی رسیدن، سوالی که مطرح میشه اینه که چرا قبل تر از این ابزارهای مرتبط با امنیت و دیتابیس در حوزه DevOps وجود نداشتند؟

سرعت و هماهنگی بین تیم های توسعه و زیرساخت به واسطه پذیرش DevOps بیشتر شد ولی تیم دیتابیس مثل گذشته در حال انجام کارهای خودش بود و سرعتش به مراتب کمتر از تیم های توسعه بود در نتیجه نیاز به ابزارهایی جهت اتومیشن فرآیندهای دیتابیس بیشتر و بیشتر احساس شد تا اینکه ابزارهایی که بتونن سطح مطلوبی از سرعت و کارایی رو ارائه بدن ایجاد شدن.

اگه بقیه کارهای تیمتون مرتب و منظم شده باشه ، کند بودن سرعت توسعه و پابلیش دیتابیس توجه شما و تیمتون رو به خودش جلب کرده.

فکر می کنم همه شما دوستان با شرکت Redgate آشنایی داشته باشید، به تازگی ابزارهای این شرکت در زمینه Database DevOps و Database Lifecycle Management به بلوغ مناسب رسیدن.

نکته ایی مهمی که باید در این زمینه بگم اینه که قبل از این هم ابزارهایی مثل SSDT, DBUP, Flyway, Liquibase وجود داشته ولی با توجه به سطح انتظارات تیم شما و میزان خودکار سازی فرآیندهاتون هیچکدوم تا حد ابزارهایی که جدیدا توسط شرکت Redgate ارائه شدن کارایی نداشتن .

درباره Database Delivery Best Practices و چگونگی استفاده از مجموعه ابزارهای Redgate در مقالات آینده صحبت می کنم. 

ابتدا بر اساس اولین مجله Shift Left منتشر شده توسط Redgate وضعیت موجود رو بررسی و صورت مساله رو تعریف کنیم:

 

جایگاه Database در DevOps کجاست؟

دیتابیس هم مثل سایر اجزای نرم افزار مهمه، مثل زیرساخت و وب سایت.

در واقع اینکه بپرسیم دیتابیس در DevOps از چه جایگاهی برخورداره مثل اینه که بپرسیم وب سایت از چه جایگاهی در DevOps برخورداره. در گذشته اینکه دیتابیس رو در این جایگاه در نظر بگیرم سخت بود .

در حال حاضر تیم های نرم افزاری از ابزارهایی برای Continuous Integration و Continuous Deployment استفاده می کنن ولی جالبه که تیم های دیتابیس هیچوقت وارد این موضوع نشدن، چرا؟

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

بررسی وضعیت واقعی Database DevOps

شرکت Redgate جدیدا نظرسنجی State of Database DevOps رو از ۱۰۰۰ متخصص نرم افزار صورت داده که شامل Developer ها، Database Administrator ها و افراد در سطح مدیریت میشه و بیش از نیمی از افراد شرکت کننده در این نظر سنجی در سازمان هایی که بیشتر از ۵۰۰ نفر نیرو در اختیار دارند فعالیت داشتند که نتایج این نظر سنجی شامل موارد زیر هست:

در دو سال آینده، ۸۰% از شرکت ها DevOps رو پیاده سازی میکنند
بزرگترین مشوق برای درج دیتابیس در DevOps افزایش سرعت پابلیش های دیتابیس است
بزرگترین موانع پیش روی DevOps کمبود نیروی متخصص و نبود هماهنگی بین تیم های توسعه و زیرساخت است.
موارد بالا هرکدوم به تنهایی جای توضیح مفصل داره، اما هرچقدر شما بیشتر وارد جزئیات این نظرسنجی بشید همه چیز جذاب تر میشه، در ادامه مهم ترین سوالات در این زمینه به همراه جوابهاشون رو بررسی میکنیم:

آیا تیم شما شامل برنامه نویسانی میشه که هم روی اپلیکیشن ها و هم روی دیتابیس کار میکنن؟

در تمام شرکت هایی که در نظر سنجی بررسی شدند جواب تقریبا یکی بود،۷۵% از برنامه نویس ها مسئول توسعه اپلیکیشن و دیتابیس هستن. پس برنامه نویس هایی که خیلی در زمینه دیتابیس تخصص ندارن نیاز دارن شرایط رو تغییر بدن.

۶۰% از برنامه نویس ها مسئول تهیه Database Deployment Script ( تغییرات دیتابیس مورد نیاز برای پابلیش نسخه جدید نرم افزار ) و ۳۹% مسئول اعمال این تغییرات در محیط عملیاتی هستن البته در سازمان هایی که پیش از این DevOps رو پیاده سازی کردن این اعداد تغییر می کنه سهم Database Deployment Script به ۷۴% و سهم اعمال تغییرات در محیط عملیاتی به ۴۵% افزایش پیدا می کنه.

غالبا تیم شما چه تعداد پابلیش دیتابیس انجام میده؟

یادتونه بزرگترین علت ما برای درج دیتابیس در DevOps افزایش سرعت اعمال تغییرات بود، علت این نیاز رو اینجا می تونید ببینید. در بین سازمان هایی که DevOps رو پیاده سازی کردن ۴۴% تغییرات دیتابیس رو به صورت روزانه یا حداقل یک بار در هفته به محیط عملیاتی منتقل می کنن در صورتی که بین سایر سازمان ها این عدد به ۲۸% کاهش پیدا می کنه. جواب سوال بعدی نشون میده سایر سازمان هایی که عضو این ۴۴% یا ۲۸% نبودن، وضع مناسبی ندارن و نتوستن اینکار رو انجام بدن و مشکل از عدم فشار روی تیم ها نیست بلکه تیم ها در حد توانشون دارن سعی خودشون رو انجام میدن.

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

مهم ترین مشکلی که بیان شده ریسک بالای پابلیش به روش های قدیمی و احتمال برگشت تغییرات و داشتن Downtime بیان شده. و موارد زیر در رده های بعدی قرار میگیرند:
 
  • slow development and release cycles
  • the inability to respond to changing business requirements
  • poor communication between development and operations teams

خب پس شرکت ها میدونن که در روش فعلی مشکل وجود داره ولی چه چیزی باعث شده اونها شرایط فعلی رو بپذیرن و تغییری ایجاد نکنن؟

پیاده سازی دیتابیس در DevOps چقدر زمان می بره؟

در بین شرکت هایی که هنوز DevOps رو پیاده سای نکردن ۴۳% برآورد کردن که نزدیک به دو سال برای پیاده سازی دیتا بیس در DevOps زمان لازم دارن، نکته جالب اینه که برآورد ، ۶۸% شرکت هایی که DevOps رو پیاده سازی کردن زیر یک سال بوده.

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

در قسمت بعدی بررسی نسخه اول مجله Shift Left به مقایسه Continuous Delivery در اپلیکیشن و دیتابیس می و روش های پیده سازی Database DevOps می پردازیم.