در پاسخ به این پرسش که چرا خودکارسازی برای دواپس حیاتی است، ابتدا باید اشاره کنیم که هدف دواپس برقراری تعامل مؤثر میان تیم توسعه و تیم عملیات است. چون، تا پیش از دواپس، دیوار حائل بین این دو تیم سبب میشد تحویل ارزش به مشتری سرعت و چابکی لازم را نداشته باشد. اما دواپس ارزشهای ایجادشده در نرمافزار را هرچه سریعتر به دست مشتری میرساند. البته که دواپس شیوهی برآوردن نیازهای عملیاتی کسبوکار از طریق فناوری اطلاعات (IT) را تغییر داده است؛ از طراحی محصول گرفته تا مرحله ارائه خدمت. اما چالش اجتناب از تضادهای میان دواپس و مدیریت خدمات فناوری اطلاعات (ITSM) کماکان باقی است.
اساساً یکی از جنبههای اصلی توسعهی دواپس (DevOps) و چابک (Agile) خودکارسازی است. درواقع، خودکارسازی در بسیاری از موارد، مهمترین و کلیدیترین جنبهی فرآیند دواپس و چابک است. چراکه هرچه تیم عملیات و برنامهنویسها زمان بیشتری را صرف کارهای تکراری و طوطیوار بکنند، محیط کُندتر میشود و انعطافپذیریاش کاهش پیدا میکند.
اما خودکارسازی برای افراد حرفهای، بهویژه در اکوسیستمهای بسیار پیچیده، میتواند بغرنج و چالشبرانگیز باشد. گذشته از انتخاب خودِ پلتفرم خودکارسازی، سؤالات بسیاری دربارۀ چیستی و چگونگی خودکارسازی وجود دارد. یکی دیگر از پرسشها دربارۀ خودکارسازی این است که تا کجا باید در زیرساختهای طبقهبندیشده را خودکارسازی کرد.
اهمیت خودکارسازی برای دواپس
به نظر دیپاک گیریدهاراگوپال (Deepak Giridharagopal)، مدیر ارشد فناوری پاپت (Puppet) خودکارسازی برای دواپس حیاتی است. چون دیگر یک چیز لوکس در سازمانهای مدرن نیست. صرفنظر از اینکه در آینده، دواپس تا کجا پیشرفت خواهد کرد، خودکارسازی برای سازمانها یک ضرورت است.
از علل اهمیت خودکارسازی برای دواپس این است که وقتی پای دواپس به میان میآید، خودکارسازی راهی برای توسعه و استقرار سریعتر و در عین حال حفظ کیفیت و حتی بهبود کیفیت است. راهِ رسیدن به این اهداف، جایگزین کردن نیروی انسانی نیست، بلکه تقویت کارآیی افراد است که توسعه و استقرار را سرعت میبخشد و به حفظ و بهبود کیفیت میانجامد. اما برای تقویت کارآیی افراد، باید کارهای کسلکننده و تکراری و وقتگیر را از وظایف روزانهی آنها حذف کرد. خودکارسازی کمک میکند که در انجام وظایف و کارهای کلیدی و وابسته بههم ـ که به درستی با هم هماهنگ نشدهاند ـ اصطکاک کاهش پیدا کند. با این حال، هنگام تعیین بهترین راه برای هماهنگ کردن خودکارسازی با اکوسیستمهای پیچیده، این مشکل خود را نشان میدهد.
خودکارسازی را باید از کجا آغاز کرد؟
در هر سیستمی، ضعیفترین پیوندِ زنجیره، عملکرد را محدود میکند. در این موارد، این گام در چارچوب دواپس خودکارسازی نمیشود. اما تلاش برای یکباره خودکارکردنِ همهچیز هم میتواند به همان اندازه مشکلآفرین باشد. چون میتواند باعث ایجاد ناسازگاری و سردرگمی بین وظایفِ تازه خودکارسازیشده بشود.
به همین علت، هاراگوپال پیشنهاد میکند پیش از تصمیمگیری برای شروع خودکارسازی، محیط توسعه و عملیات سازمان را دقیق و کامل بررسی کنید. فقط به شرطی میتوانید فرآیند بهبود را آغاز کنید که از قبل بدانید چه چیزهایی دارید، و آن چیزها چگونه کار میکنند.
دیپاک میگوید: «اغلب افراد تصور میکنند که گام اول در خودکارسازی، یافتن کُندترین عملیات و سرعت بخشیدن به آن است، اما پیش از آن یک گام صِفر (0) هم وجود دارد که اجرای آن غالباً ضروری است. چون این افراد در مورد چیزهایی که در اختیارشان است، درک درستی ندارند. ممکن است یک نفر به لایههای فیزیکیِ کار اشراف داشته باشد یا یکی دیگر با سیستمهای مجازی آشنا باشد، اما هیچکس درک اصولی و منطقی و ثابتی از آنها ندارد. برای اینکه بتوانید بهترین کار ممکن را انجام بدهید باید درک اولیهی درستی از چشماندازتان داشته باشید و به سطوح پایهی سازمانتان آگاه باشید.»
از اینجا به بعد، میتوانید چرخهی حیات ارائهی نرمافزار را بررسی کنید ـ از تعهد اولیه به ساخت نرمافزارِ خودکارسازی و تست اولیه گرفته تا مرحلهی بتا و انتشار نسخهی نهایی ـ و ببینید از کدام منابع میتوان به عنوان کد استفاده کرد و کدام را میتوان مستقر کرد. سپس، آن به مسئلهی نسبتاً سادهای بدل میشود که زمان و هزینه را روی یک خط تولید دیجیتالی پوشش میدهد.
پروژه فونیکس از مهمترین کتابهایی است که اساس و شالودهی دواپس را به زبانی ساده و خواندنی شرح داده است.
بسیار مهم است که درست تشخیص بدهید که کدامیک از بسترهای IT، پیش از این، بیشتر خودکارسازی شده بودهاند. در گذار به این راهکارها برای توسعه چابک (Agile)، عمدتاً این عملکردها به وظایفی قابل اجرا تبدیل میشوند که میتوانند در مقیاس، تکرار شوند.
به گفتهی مدیر ارشد فناوری پاپت: «یک نقطهی خوب و کمضرر برای شروع، این است که ببینیم چه چیزهایی پیشتر خودکارسازی شده بود و در حال خودکار است. اینها فرصتهایی هستند که وجود دارند. شما دارید بعضی از این کارها را انجام میدهید، اما این موقتی است _ این قابل مقایسه نیست. شما دارید هزینهاش را میپردازید، اما آنطور که باید از آن منتفع نمیشوید.»
در آخر، این سیستمها نیستند که برای دواپس خودکارسازی میشوند، بلکه وظایف و فرآیندها هستند که در دواپس خودکارسازی میشوند.
اگر یک قانون دیگر وجود داشته باشد که ملزم به رعایت کردنش باشید، این است که خودکارسازی را در هر نوبت، روی یک گردش کار، از ابتدا تا انتها مستقر کنید. این کار ضعیفترین پیوندهای این فرآیند را حذف میکند، در حالی که همچنان دارد به صورت غیرمخرب، به تدریج گسترده میشود.
در ادامه به برخی از ابزارهای خودکارسازی در محیطهای دواپس اشاره میکنیم.
ابزارهای خودکارسازی در محیط دواپس
Ansible
اَنسیبل از یک داشبورد بصری و کنترل دسترسی مبتنی بر نقش (role-based)، برای خودکارسازی محیطهای پیچیده استفاده میکند. این سیستم بلادرنگ وضعیت شغلی را بهروزرسانی میکند و گردش کار را سازماندهی و هماهنگ میکند تا دید عمیقی را به وضعیت پایپلایهای دواپس ایجاد کند. اخیراً قابلیتهای [در یک تعریف کلی، میتوان گفت انسیبل نوعی ابزار مدیریت از راه دور است. مدیر یک شبکه میتواند با استفاده از این ابزار، سِرورهای لینوکسی را کاملاً مدیریت و کنترل کند. یکی از اهداف ساخت انسیبل، افزایش امنیت و اعتمادپذیری نسبت به سرورهای لینوکسی است. انسیبل قادر است با خودکارسازی، کاری کند که فقط با یک کلیک همهی مشکلات بهوجودآمده حل شوند.
Apache Ant
اپچ آنت یک کتابخانهی جاوا و ابزار command-line است که وظایف داخلی را برای تست و مونتاژ و استقرار، در اپلیکیشنهای جاوایی و غیرجاوایی ارائه میکند. آنت نیازی به قراردادهای کدنویسی دقیق یا لِیاوتهای مستقیم ندارد و میتواند با پروژهی Apache Ivy ترکیب شود تا در همان گردش کار، مدیریت وابستگی و ساخت (building and dependency management) را یکپارچه کند.
Capistrano
ابزاری برای خودکارسازی و استقرار از راه دور است که Rake DSL را، برای اجرای دستورات، روی سِرورها توسعه میدهد. کَپیسترانو میتواند برای استقرار برنامههای وِب در دستگاههای مختلف استفاده شود، ممیزیها را خودکارسازی کند، برای گردش کار دلخواه برنامهنویسی کند و خیلی کارهای دیگر. همچنین، این ابزار میتواند میزبانها و نقشها را، برای استقرار محدود، بهصورت سفارشی فیلتر کند.
CFEngine
یک سیستم پیکربندی و خودکارسازی است که میتواند تا پنجاه هزار گِره افزایش پیدا کند و سِرورها، منابع ابری و سایر عناصر را در خود جای بدهد. CFEngine ادعا میکند که میتواند ظرف پنج دقیقه زیرساختها را مجدد پیکربندی کند و همهچیز را، از پیکربندی و مدیریت فرآیندها گرفته تا گزارشگیری، انطباق و استقرار برنامهها را مدیریت کند.
Chef
با این ابزار میتوان عملکردهای اصلیِ فرآیند دواپس را مانند مدیریت پیکربندی، مدیریت سامانه، شبکهسازی و مدیریت فضای ابری را خودکارسازی کرد. Chef زیرساختها را به عنوان کُد تعریف میکند و پیوسته وضعیت سِرور را نسبت به وضعیت موردنظر خود پایش میکند تا به صورت خودکار، پیکربندی را اصلاح کند و مطمئن شود که تغییرات در تک تک موارد اعمال میشوند.
Jenkins
یکی از ابزارهای CI متن باز و مشهور جِنکینز نام دارد که پلاگینهای بسیاری برای ساخت، تست، تحلیل کد، نصب و … دارد و به راحتی می توانید ابزارهای مختلف را با آن هماهنگ کنید. بدین صورت کدها با یکدیگر ادغام شده و مشکلی برای همگردانی (compile) به وجود نمیآید.
Juju
یک ابزار مدلسازی برای نرمافزارهای کاربردی متن باز (open source) است که استقرار و پیکربندی نرمافزارها در فضای ابری عمومی و خصوصی را خودکارسازی میکند. این ابزار از charmهای اسکریپت، که میتوانند بهصورت خودکار با مدیریت زیرساختها پیوند بخورند، استفاده میکند. همچنین به عنوان یک service offering در دسترس است.
MCollective
چارچوبی است برای ساخت ابزارهای تنظیمکنندهی سِرورها و سامانههای موازی اجرای کار. استفادهی اصلی آن این است که به صورت برنامهریزیشدهای وظایف سرپرست (Admin) را، روی سِرورهای خوشهای، اجرا کند که این کار، عملکردهای شبکهایِ پیچیده را حذف میکند و امکان کنترل سِرورها را فراهم میکند. همچنین اجازه میدهد که ماژولهای کلیدی بتوانند با راهکارهای سایر شرکتها جایگزین شوند.
Puppet Enterprise
به سازمانها اجازه میدهد که وضعیت موردنظرشان در مورد هرگونه پیکربندی را اجرایی کنند و به صورت خودکار، هر تغییر غیرمنتظرهای را اصلاح کنند. همچنین، با پشتیبانی از مدیریت نودها (Node) و کُدها و وظایف، کمک میکند که برنامهها و زیرساختها به صورت هماهنگ اداره شوند.
SaltStack
این ابزار از سامانهی خودکارِ متن بازِ Salt استفاده میکند تا یک سامانهی IT هماهنگ و هوشمند ایجاد کند. با استفاده از یک رابط کاربری گرافیکی و API اختصاصی، ارتباطات Salt و قابلیتهای جذب دادهها را بهبود میبخشد تا قابلیت مقایسپذیری، امنیت و تواناییهای مدیریتمحوری را افزایش بدهد. این پلتفرم امکان کنترل یکپارچۀ هر فضای ابری یا هر بستری را برای شما فراهم میکند. با آن میتوانید شاهد استقرار و یکپارچگی کامل کُدها و هماهنگی کامل آنها باشید.
منبع: https://www.itbusinessedge.com