ساختار سازمانی بر اساس DevOps

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

نکته ای که در مدل سازمانی Devops مکررا تکرار شده است، تشکیل تیم‎ها بر اساس محصولات و خدمات است. جمله معروفی از Melvin E. Conway اشاره به همین نکته دارد: سازمانها فقط میتوانند محصولی ایجاد کنند که کپی ساختار ارتباطی آن سازمان است.

اصلی ترین مشکل سازمان که DevOps قصد به حل آن دارد، بهتر کردن ارتباط افراد و از بین بردن دیوار سردرگمی بین گروه تولید (Dev) و عملیات (Ops) است. معمولا گروه تولید در حال تغییر دادن محصول و ساختار سرویس‎هاست به همین دلیل متمایل به روش‎های چابک (Agile) است تا تغییرات را در کمترین زمان ممکن انجام دهد. در مقابل هدف عملیات ایجاد حالت قابل اعتماد در سرویس‎ها و کم کردن ریسک تغییرات است به همین دلیل معمولا متمایل به روشهای پایدار (Stable) هستند و می‎خواهند حالت فعلی را حفظ کنند. این تقابل باعث بوجود آمدن مشکلات هماهنگی بین این دو گروه می‎شود. که با راه حل‎های DevOps سعی در کم کردن این مشکلات می‎شود. پیشنهاد DevOps استفاده از متدولوژی‎های Agile همراه با متدولوژی Lean (برای برقراری حالت پایدار) است.

روش عملی جداسازی تولید و عملیات

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

سوال مهم این است که مرز بین تولید و عملیات چگونه مشخص می‎شود؟ آیا نصب و پشتیبانی بطور کامل باید به تیم‎ها سپرده شود؟ آیا نگهداری پایگاه داده‎ها و سرورهای آن هم بر عهده تیم است؟ آیا نوع کسب و کار در مشخص کردن خط مرز بین تولید و عملیات نقشی دارد؟ و ...

درابتدای تقسیم‌بندی وظایف، بایستی کلیه خدمات و نیازهای موجود استخراج گردند. مواردی مانند: مدیریت بانک اطلاعاتی، مدیریت دسترسی به منابع، مدیریت منابع انسانی، ارتباطات شبکه، نگهداری سرورها، مانیتورینگ، ساخت نسخه، نصب نسخه، امنیت، مدیریت وظایف و مدیریت پروژه و سایر فعالیتهای مورد نیاز در زمان تولید و پشتیبانی یک محصول مشخص می‌شوند. سپس کلیه خدماتی که قابلیت ارایه سرویس بصورت مستقل (Self-service) را دارند، به شرط امکان ارایه سرویس بصورت خودکار و سیستمی، برعهده تیم Platform قرار می‎گیرند. این سرویس‌ها معمولا توسط تیم‌های توسعه مورد استفاده پیوسته قرار می‌گیرند. مابقی وظایف برعهده تیم‌های Business System قرار دارند که بصورت تیم‎های مستقل مدیریت می‌شوند.

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

جداسازی تیم های تولید و عملیات در DevOps

تمرکز بر محصول بجای تمرکز بر پروژه

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

در زیر تفاوت‎های اصلی این دو نشان داده شده است:

تمرکز بر پروژه

تمرکز بر محصول

تمرکز بر تخصص

تمرکز بر کار

تمرکز بر فعالیت‎ها

تمرکز و سازماندهی روی تیم

پروژه محور

محصول محور

تمرکز روی شخص حقیقی

تمرکز بر روی تیم

بهبود برای سود و بهره برداری از منابع

بهینه سازی و افزایش سرعت کار

 

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

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