مفهوم DevOps چیست ؟ DevOps اقدامات و ابزارها را کنار هم قرار میدهد تا Siloهای بین تیمهای توسعه و عملیات را از بین ببرد. تیمهای DevOps توسعهی برنامههای کاربردی و خدمات را سریعتر میکنند و با یک رویکرد پاسخگو به مدیریت زیرساخت IT میتوانند محصولات IT را با سرعت بازارهای مدرن پیادهسازی و بهروزرسانی کنند.
DevOps روی شکاف بین Dev و Ops پلی میزند؛ بهعبارتدیگر توسعهی نرمافزار که کد پشت برنامههای کاربردی در آن ایجاد میشود و عملیات IT که برنامههای کاربردی در آن به تولید میرسند در دسترس کاربران نهایی قرار گرفته و حفظ میشوند. DevOps با استفاده از دو رویکرد قبل از خود یعنی توسعهی چابک و اصول تولیدی سبک یا Lean توانست ظهور نماید. مورد اول روی حرکت و تکرار سریع تمرکز میکند تا سازماندهی پاسخگوتری را برای توسعهی IT بسازد و مورد دوم در کارخانهها ضایعات را به حداقل رسانده و بهرهوری را به حداکثر میرساند. DevOps یکپارچهسازی کارآمد تیمهای توسعهی نرمافزار، تضمین کیفیت و عملیات IT بوده که قبلاً بهصورت Siloed بودند.
DevOps چیست؟ DevOps توانسته مشکل Bottleneck مربوط به توسعهی چابک را حل نماید، اگر توسعهدهندگان چابک، نرمافزار یا بهروزرسانیهای کد جدید را با سرعت بالاتری تولید کنند، تست کردن و راهاندازی نرمافزار برای تیمهای عملیات قدیمی دشوار خواهد شد و ارزش واقعی توسعهی سریع از بین خواهد رفت. نهایتاً با اینکه حرکت چابک، طراحی و ساخت نرمافزار را تکرارپذیر و منعطفتر کرد، آن رویکرد به کل چرخهی عمر توسعهی نرمافزار یا SDLC و بخش پیادهسازی گسترش پیدا نکرد.
هدف از DevOps بهعنوان یک فرهنگ یا رویکرد بهبود، همکاری و شفافیت مداوم می باشد، این رویکرد بهطور جامع به ارزش عملیات IT مینگرد. بایستی توجه نمود که هدف تمرکز روی Siloهای کاری مجزا نیست، بلکه قرار است روی کل جریان از ایدهی اولیه گرفته تا محصول یا عملکرد قابلدسترس نهایی تمرکز شود؛ همهچیز در این بین بهینهسازی میگردد و نیمنگاهی نیز به دستیابی به ارزش کسبوکار بالاتر با سرعتی بیشتر وجود دارد. تیمهای DevOps با عملکرد بالا نه تنها تکرارها و پیادهسازیهای سریعتری را از کد ارائه میدهند، بلکه برای رساندن ایدههای جدید به بازار نیز زمان کوتاهتری را سپری میکنند و همچنین Bugهای کمتر و زیرساخت باثباتتری دارند.
در ادامه به بررسی مفاهیم کلیدی DevOps پرداخته شده و نقاط شروع برای اتخاذ یک فرهنگ DevOps در سازمان بیان میگردد.
DevOps و چیست چگونه می توان آنرا توسعه داد؟
DevOps: توسعه و عملیات
توسعهی نرمافزار چابک با مقالهی «Manifesto for Agile Development» شروع شد؛ سند کوتاهی که در سال 2001 توسط 17 توسعهدهنده به چاپ رسید. این سند چهار اصل بنیادی را ابلاغ کرد:
- اشخاص و تعاملات بر فرایندها و ابزار ارجح هستند.
- نرمافزار کارآمد بر اسناد جامع ارجح است.
- همکاری با کاربر بر مذاکره روی قرارداد ارجح است.
- پاسخ به تغییر بر دنبال کردن یک برنامه ارجح است.
این اصول توسعهی آبشاری قدیمی را به چالش کشید؛ این نوع توسعه بهطور سفت و سختی ترتیبی بود و در آن همهچیز باید به ثبت میرسید و شامل نقشها، ابزار و فرایندهای دقیق می باشد. اما تیمهای توسعه چابک شروع کردند به توسعهی سریعتر محصولات نرمافزاری و با چابکی به تغییر الزامات و شرایط دیگر پاسخ دادند؛ درحالیکه تیمهای عملیات IT الزاماً آمادگی حرکت با این سرعت جدید را نداشتند.
سه اصل مبنایی DevOps چیست
این سه اصل که برای اولین بار توسط جین کیم، نویسنده و حامی DevOps مطرح شد، عبارتاند از:
- تفکر سیستمها:جامعترین رویکرد به IT که شامل توسعهدهندگان، تستکنندهها، مدیران زیرساخت و مصرفکنندگان کد یا نرمافزار بوده و روی عملکرد کل سیستم و نه عملکرد یک Silo یا دپارتمان بهخصوص تأکید دارد.
- تقویت Loopهای بازخورد:کیم میگوید که هدف از تقریباً هر ابتکاری برای بهبود فرآیند کوتاه کردن و تقویت کردن Loopهای بازخورد بوده تا اصلاحات ضروری را بتوان بهطور مداوم انجام داد.
- آزمایش و یادگیری مداوم:درحالیکه Agile Manifesto به پاسخگویی و همکاری ارزش میدهد، DevOps روی دنبال کردن بهبود مداوم و پیدا کردن راههای جدید و بهتر برای کار ارزشگذاری دارد. کیم مینویسد نیاز به ایجاد فرهنگی وجود دارد که دو چیز را پرورش دهد: آزمونوخطای مداوم، ریسکپذیری و یادگیری از شکستها و درک اینکه تکرار و تمرین پیشنیاز تسلط می باشد.
بیشتر بخوانید: آسیبپذیری برنامههایِ تحت وبِ بانکها و اهمیت استفاده از Secure DevOps
فرهنگ DevOps برمبنای تیمهای چندرشتهای بنا شده است که بهطور مداوم ویژگیها و خدمات جدید را میسازند و پیادهسازی میکنند. در DevOps، توسعهدهندگان مسئول حفظ کدی که مینویسند هستند، به این معنی که حوادث را بهطور کارآمدتری حل میکنند. بهعلاوه، یک تیم DevOps روی چرخهی عمر یک محصول مثل ساختن یک ویژگی جدید یا طراحی یک جزء وب جدید بهطور کامل تمرکز میکند، نه اینکه روی پروژههایی تمرکز کند که بهطور مجزا تخصیص داده شدهاند،. این دیدگاه که گاهی اوقات تحت عنوان محصولات نه پروژههاشناخته میشود به IT کمک میکند که بهتر با ارزش کسبوکار همسو شود، کاری که برای کسبوکار و کاربر نهایی مفید باشد را در اولویت قرار میدهد و موجب بهبود اتخاذ و استفاده، عمیقتر شدن وفاداری کاربر و افزایش درآمد کسبوکار میشود.
تفاوت بین DevOps و چابکی
DevOps ادامهی اصول چابکی از توسعهی نرمافزار گرفته تا پیادهسازی نرمافزار است. درحالیکه تکامل آغاز شده توسط Agile Manifesto به دنبال راههای بهتری برای ایجاد نرمافزار بود، DevOps اصول و فلسفههای مشابهی را برای چرخه عمر کامل نرمافزار ارائه میدهد و توسعهی نرمافزاری چابک را تا زمان انتشار پیش میبرد.
توسعهی مداوم در DevOps
توسعهی مداوم چندین مفهوم DevOps را در بر میگیرد: یکپارچهسازی و ارائهی CI/CD و پیادهسازی آن بطور مداوم. اگر تیمهای IT به جای اینکه خود را به یک انتشار بزرگ در سال (یا با تناوب کمتر) محدود کنند، بهبودهای کوچکی را به مرور منتشر کنند، خواهند توانست ارائههای خود را بهطور تدریجی بهبود ببخشند، فارغ از اینکه آن ارائه، محصول اصلی یک کسبوکار مبتنی بر نرمافزار مثل Netflix یا Instagram باشد یا بهبودی در وبسایت یا سرویس IT آن باشد، این رویکرد به کسبوکار اجازه میدهد که در رقابتی باقی بماند که در آن تازهواردان با نوآوری پیشروان بازار و کل بازار را دچار تغییر و تحول میکنند.
بیشتر بخوانید: منظور از NetDevOps چیست؟ چه مزایایی دارد و پیادهسازی آن چگونه صورت می گیرد؟
منظور از یکپارچهسازی مداوم در DevOps چیست
یکپارچهسازی مداوم اقدام به بکارگیری کدهای جدید در کد منبع اصلی، زمانی که Taskها تمام شدند می باشد، کدهای جدید در یک مخزن مشترک بررسی میشوند و یک Build خودکار این تغییرات را تست و تائید میکند. این امر باعث میشود مشکلات بهسرعت خود را نشان دهند، بازخورد سریعی به توسعهدهندگان میدهد و به آنها اجازه میدهد که بلافاصله تغییرات لازم را انجام دهند.
ارائه مداوم در DevOps
ارائهی مداوم عبارت است از تست کردن کدهای جدید درحالیکه یکپارچهسازی میشوند و افزایش سرعت یکپارچهسازی مداوم. ارائهی مداوم فرایند تست کردن و ارائهی کدهای جدید جهت آمادهسازی آنها برای پیادهسازی را خودکارسازی میکند.
این فرایند ممکن است شامل تست پسرفت، عملیاتی، یکپارچهسازی و واحد باشد. وقتیکه کد تائید شد، بهطور خودکار برای پیادهسازی آماده میشود. اما ارائهی نرمافزار بهصورت مداوم بهطور خودکار کد بررسیشده را پیادهسازی نمیکند. این مسئله در حوزهی پیادهسازی مداوم قرار میگیرد.
پیادهسازی مداوم در DevOps
پیادهسازی مداوم فرایند خودکارسازی انتشار کد جدید است، درحالیکه از طریق یکپارچهسازی مداوم و ارائهی مداوم یکپارچهسازی و تائید میگردد. کدی که با موفقیت از طریق فرایندهای ارائهی خودکارسازیشده تست میشود آماده شده و در محیط تولیدی منتشر میشود و اینگونه باعث میشود که ویژگی جدید بلافاصله در دسترس کاربران نهایی قرار بگیرد.
به این دلیل که کد بدون مداخله دستی از توسعهدهنده به کاربر نهایی منتقل میگردد، ریسکهای در پیادهسازی مداوم وجود دارد. عموماً پیادهسازی مداوم برای محصولات یا ویژگیهای کمریسک بهتر است. جایی که دادههای حساس، ریسک امنیتی بالا، الزامات قانونی یا ریسک مالی زیاد وجود داشته باشد، احتمالش کمتر است که تیمهای DevOps از پیادهسازی مداوم استفاده کنند. فارغ از این ملاحظات، پیادهسازی مداوم معمولاً یکی از اهداف کلیدی DevOps محسوب میشود، زیرا حداکثر سرعت و Time-To-Value را فراهم میکند.
پیادهسازی مداوم و ارائهی مداوم، هر دو بهصورت CD مختصرنویسی میشوند که ممکن است موجب سردرگمی شود. اما درحالیکه ارائهی مداوم نرمافزار آماده برای انتشار را ارائه میدهد، فقط پیادهسازی مداوم (یا پیادهسازی دستی) بهروزرسانیها را برای کاربران نهایی وارد تولید میکند.