6 اصل اساسی DevOps برای تولید نرم افزار

 

1- اقدام مشتری محور

ارزش‎های مشتری باید به محیط تولید نرم افزار انتقال یابد. نکته جالبی که DevOps برای تامین این اصل اشاره می‎کند، شاید به ظاهرکم اهمیت و نا مربوط به مشتری باشد: شکوفا کردن فرهنگ شفافی که ویژگی‎های زیر را داشته باشد:

  • بدون بروکراسی اداری
  • بدون ترس از سوال کردن
  • قبول ریسک
  • خلاقیت

در یک فرهنگ شفاف، تیم‎ها بصورت آزادانه بازخورد کارها را ارائه می‎دهند. شکی در طرح پرسش ندارند و با اشتیاق ریسک‎های محاسبه شده را قبول می‎کنند.

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

البته تمرکز روی مشتری همیشه آسان نیست. همه می‎دانیم که مشتری معمولا نیازهای دقیق خود را نمی‎داند. در تیم‎های DevOps ، این اختیار وجود دارد که تیم بتواند نیازهای مشتری را با تشخیص خود و با ارتباط مستقیم برآورده کند.

 

2- تولید با درک انتهای کار

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

شاید این سوال در ذهن افراد پیش بیاید که بسیاری از کارها قابلیت پیش بینی کمتری دارند یا کار تحقیقاتی هستند که امکان تغییر زیادی دارند. پاسخ این سوال در تعریف صحیح کار است. تیم‎ها همیشه باید بر روی کوچکترین بخش قابل ارائه محصول MVP)Minimum Viable Product)، کار کند. با تقسیم کارها به کارهای کوچکتر، سرعت و دقت بالا می‎رود و تولید چابکی خواهد شد.

 

3- مسئولیت پشت سر هم

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

در گذشته تمرکز شرکت‎های نرم افزاری بر روی نصب و نگهداری محصول بوده است، که بصورت دستی توسط واحد عملیات انجام می‎شده است، اما در راهکار DevOps ، با استفاده از سرویس‎های خودکاری که تیم عملیات در اختیار تیم توسعه قرار می‎دهد، تیم توسعه با سرعت و دقت بیشتری می‎تواند کار تولید و توسعه نرم افزار را انجام دهد، شایان ذکر می‎باشد که با توجه به خودکار سازی سرویس‎های ارائه شده توسط واحد عملیات، مسئولیت سرویس‎های هر تیم بر عهده خود آن تیم می‎باشد، در نتیجه تمامی اعضای تیم توسعه برای انجام بهتر آنها تلاش خواهند کرد .

 

4- تیم‎های خودمختار با قابلیت‎های بالا

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

نکته مهم در اختیار داشتن تیم است. تیم باید بتواند زمانبندی، ارتباط با مشتری، و اختیارات اجرایی داشته باشد. در غیر اینصورت و مخصوصا با اعمال فشار از سمت مدیریت، کارایی و خلاقیت خود را از دست می‎دهد. نقش مدیریتی سازمان عبارت است از: اعمال استانداردها به تیم‎ها، ارائه سرویس‎های زیر ساخت، خودکارسازی فعالیت‎های نگهداری کد و ادغام و تست و ساخت و نصب ، ارزیابی مستمر تیم‎ها و جایگزین کردن تیم‎ها در صورت نیاز (با توجه به کوچک بودن تیم براحتی میسر است)، آموزش و هماهنگ کردن تیم‎ها، و در نهایت رشد فرهنگ سازمان .

 

5- بهبود متناوب

بهبود متناوب روشی برای تشخیص فرصت‎ها و کم کردن هزینه‎ها است. نکات مهم در بهبود متناوب:

  • در صورت مشکل ساز شدن یک مسئله، باید وقت بیشتری صرف آن کرد.
  • شکست در سریعترین زمان.
  • استفاده از تجربیات
  • هر چیزی که قابل اندازه گیری نباشد، نمی‎تواند پیشرفت کند.

بهبود متناوب از متدولوژی Lean نشات گرفته است. هدف Lean ، کم کردن هزینه‎ها، سرعت بالا، حل کردن مسائل و خلاقیت است. در این متدولوژی نه تنها شکست امر نکوهیده‎ای نیست بلکه ارزش زیادی دارد. نکته مهم در تشخیص سریع شکست‎هاست (یک روش آن استفاده از MVP بود که قبلا توضیح دادیم). برای بهبود متناوب باید اندازه گیری متناوب هم داشت. ابزارها و روش‎های متنوعی برای اندازه گیری معیارهای مختلف محصول و سازمان وجود دارد. از جمله این معیارها عبارتند از: معیارهای Performance ، معیارهای فرآیند، معیارهای خلاقیت، معیارهای فرهنگ و معیارهای پشتیبانی.

 

6- خودکارسازی هر چیزی که می‎توانید

با هر زبان و تکنولوژی که توسعه نرم افزار صورت پذیرد، هر سازمانی برای خودش فرآیند ساخت و نصب محصول خودش را دارد. این فرآیند می‎تواند دستی یا خودکار صورت پذیرد. حرکت از سمت دستی به خودکارسازی فرآیند باعث بالا رفتن کیفیت و انجام کار بیشتر در فرآیند است. اینکار از چند جهت قابل بررسی است:

  • بهبود متناوب (کم کردن هزینه‎ها) با خودکارسازی قابل انجام است.
  • Continuous Delivery بر انتقال تغییرات کدنویسی به محصول نهایی با فرآیند کاملا خودکار تمرکز دارد که می‎تواند چندین بار در یک روز انجام پذیرد.
  • زیرساخت‎های ابری جایگزین دیتاسنترهای کنونی می‎شود.
  • ابزارهای زیرساخت امکان سرویس دهی زیر ساختی با اجرای کد را فراهم می‎کند (مثلا درخواست سرور تستی می‎تواند با اجرای کد انجام پذیرد).