مقدمه از سیر تا پیاز دواپس (DevOps)
کلمه دواپس از دو بخش Dev + Opsتشکیل شده است. Dev مخفف توسعه و Ops مخفف عملیات است. حال دواپس، پلی است بین تیم توسعه و تیم عملیات فناوری اطلاعات که با روشهای جدید و اتومات نمودن عملیات، انجام کارها را سریعتر و محصول را به نیاز مشتری نزدیکتر میکند.
در فرآیند DevOps کار تیم توسعه با تولید و انتشار نرمافزار تمام نشده؛ بلکه بعد از اجرای نرمافزار توسط مشتری و بهکار گرفته شدن آن، کار تمام می شود؛ اما بهبود بصورت مستمر ادامه می یابد. حال در ادامه درباره از سیر تا پیاز دواپس (DevOps) صحبت خواهد شد.
فلسفه دواپس
دواپس (DevOps)، ترکیبی از فلسفهها، شیوهها و ابزارهای فرهنگی است که توانایی سازمان را برای ارائه برنامهها و خدمات با سرعت بالا افزایش میدهد. دواپس به سازمان ها برای تکامل و بهبود محصولات با سرعتی سریعتر از سازمانهایی که از فرآیندهای توسعه نرمافزار سنتی و مدیریت زیرساخت استفاده میکنند، کمک می کند. این سرعت، سازمان ها را قادر می سازد تا به مشتریان خود خدمات بهتری ارائه دهند و به طور مؤثرتری در بازار رقابت کنند.
شکل ۱: فرایند کلی پیاده سازی دواپس (DevOps) در عمل
DevOps چگونه کار می کند؟
در ادامه از سیر تا پیاز دواپس (DevOps) به این می پردازیم که دواپس چگونه کار می کند؟ قبلا بسیاری از شرکتهای نرمافزاری برای توسعه فرایندهای خود، تیم های جداگانهای تحت عنوان توسعه (Development) و عملیات (Operations) داشتند. هدف تیم توسعه ارتقای محصول و فیچرهای آن و هدف تیم عملیات، کنترل و مدیریت وضعیت محصولات ارائه شده به مشتری بود. اما این موضوع باعث ایجاد چالشهای ارتباطی بین این دو تیم میشد. برای حل این چالشها، مفهومی بهنام DevOps شکل گرفت تا با افزایش تعامل موثر، شکاف بین تیمها را از بین برده و سرعت انجام کارها را افزایش دهد.
دواپس نوعی فرایند تولید نرم افزار است که بر همکاری و ارتباط میان تیمهای توسعه نرم افزار و تیم اجرایی تمرکز دارد. دواپس تلاش میکند تا ارتباط موثرتری بین تیم توسعه و تیم عملیات برقرار کرده و بهدنبال راه حلی برای مدیریت ارتباطات کاری است تا فرایند انتشار نرمافزار را سریع و امن کند.
در فلسفه کاری چابک DevOps، تیمهای توسعه و عملیات دیگر جدا جدا نیستند. گاهی اوقات، این دو تیم در یک تیم واحد ادغام می شوند که در آن مهندسان در کل چرخه عمر محصول چابک، از توسعه و آزمایش گرفته تا استقرار و عملیات، کار می کنند و طیف وسیعی از مهارت ها را توسعه می دهند که محدود به یک عملکرد واحد نیز نمی باشد.
در برخی از مدلهای DevOps، تیمهای تضمین کیفیت و امنیت نیز ممکن است به شدت با توسعه و عملیات و در طول چرخه عمر محصول چابک همراه شوند. هنگامی که امنیت به تیم DevOps اضافه می شود، به این مدل همکاری DevSecOps می گویند.
تیم چابک دواپس، از شیوههایی برای خودکارسازی فرآیندهایی استفاده میکنند که قبلا دستی و کند بودهاند. آنها از فناوری استفاده می کنند که به آنها کمک می کند تا محصولات و خدمات را سریع تر و امن تر، تحویل مشتری دهند. این ابزارها همچنین به مهندسان دواپس کمک میکنند تا به طور مستقل وظایفی را انجام دهند و این باعث افزایش سرعت تیم میشود.
CI/CD Pipeline چیست؟
یکی از شیوههای متداول پیادهسازی نرمافزار در تیم های DevOps، استفاده از پایپ لاین CI/CD است که به ما کمک میکند تغییرات کدها را بهطور مداوم کنترل و ارزیابی کنیم. در ادامه، این سه موضوع را به تفکیک بررسی کنیم:
پایپ لاین یا خط لوله: فرایندی متشکل از ماژولهای ساخت، توسعه، تست و دیپلوی کردن کد است که هدف آن کاهش خطای انسانی در فرایند توسعه نرم افزار، اتومات کردن فرایندها و کنترل و نظارت بر فرایند توسعه است.
CI یا (Continuous Integration) یا یکپارچه سازی مداوم:
شامل اقداماتی است که به توسعهدهندگان کمک میکند به صورت مداوم تغییرات کوچک را روی کدها پیادهسازی کرده و تغییرات مختلف را رصد کنند. این کار فرایند یکپارچه سازی کدها و تایید (Validation) را تسهیل میکند.
CD یا (Continuous Delivery) یا تحویل مداوم:
شامل اقدماتی است که پس از اتمام هر مرحله از CI انجام میشود تا کدها وارد فرایند تست شده و برای دپلوی شدن روی سرور آماده شوند. به کمک CD شما میتوانید بهروزترین نسخه نرمافزار را در هر زمان در اختیار کاربر نهایی قرار بدهید.
بنابراین اصطلاح CI/CD Pipeline به معنای استفاده از مجموعه قواعدیست که به تیم توسعه کمک میکند کدها را به شکلی بهینه تغییر و توسعه داده و در سریعترین زمان به کاربر نهایی برسانند.
جایگاه CI/CD Pipeline در دواپس
همانطور که در شکل زیر ملاحظه می کنید، این متد در ادامه روش چابک یا Agile بوده و به توسعهدهندگان کمک میکند تا با اتومات کردن بسیاری از فرایندهای توسعه روی مواردی مانند کیفیت، امنیت کد و بهروزرسانیهای محصول تمرکز کنند و محصول با کیفیتی را به تیم عملیات تحویل دهند.
شکل ۲: جزئیات مراحل دواپس (DevOps)
مراحل چرخه دواپس در از سیر تا پیاز دواپس (DevOps)
مراحل چرخه دواپس شامل دو مرحله است. مراحل بخش توسعه یا Development و مراحل چرخه عملیات یا Operation این مراحل که در شکل زیر نشان داده شده است، در ادامه به تفصیل تشریح می گردد.
شکل۳: اجزای چرخه دواپس (DevOps)
چرخه Dev
در این چرخه چهار مرحله plan و code و build و test وجود داشت که به ترتیب ابزارهای موجود در هریک را نام میبرم و راجع به هریک توضیح مختصری میدهم.
مرحله برنامه ریزی (Plan) و مرحله کدنویسی(Code)
در این دو مرحله چون عمده کار (تقریبا همه کار) توسط تیم تحلیل کسب و کار و برنامه نویسان انجام میشود و از طرفی بدلیل تنوع در شیوه انجام کار و همچنین زبان برنامه نویسی، خیلی نیروی DevOps درگیر این مراحل نیست . فقط برای نگهداری کد از سرویس گیتلب (Gitlab) عمدتا استفاده میشود.
مرحله ساخت (Build)
در این مرحله بسته به زبانی که برنامه با آن نوشته شده، میتوان از ابزارهای مختلفی استفاده کرد . برای نمونه شیوه Build کردن یک برنامه با زبان nodeJS با ابزار npm صورت میگیرد. یا برای جاوا، ابزار maven مناسب هست و همچنین معمولا برای مشاهده نتیجه Build معمولا سورس کد را در قالب یک کانتینر Container با ابزار داکر Docker ارایه میدهند .
مرحله تست Test
این مرحله، یکی از مهمترین مراحل چرخه دواپس هست و لازم است با دقت انجام شود. انتخاب ابزار در این مرحله بستگی دارد به این که ما چه مدل تستی را انجام میدهیم و اینکه چه چیزی را قرار است تست کنیم. برای نمونه برای تست استرس و پرفورمنس http ابزارهای tsung و apache jmeter مناسب هست. یا برای اینکه فانکشنالیتی یک سرویس را تست کنیم، ابزار katakon studio و یا selenium مناسب هست و همچنین برای تست API هم میتوانید از این دو ابزار استفاده کنید که به صورت کامل رفتار یک کاربر در وبسایت شما را شبیه سازی میکنند.
چرخه Ops
مرحله انتشار (Release)
در این مرحله قرار است که پس از موفقیت آمیز بودن تست ها یک نسخه از نرمافزار و ارایه شود. معمولا این کار را در همان سرویس gitlab انجام میشود.
مرحله استقرار (Deploy)
در این مرحله از ابزارهای اتومیشن مانند Ansible و chef و puppet و … استفاده میشود.
مرحله عملیات (Operation)
این مرحله و مرحله قبل deploy اکثر جاها یکجا پیاده سازی میشوند و ابزارها یکسان هست.
مرحله مانیتور (Monitor)
در این مرحله هم معمولا از ابزارهای (ELK (Elasticsearch , Logstash , Kibana و zabbix و grafana استفاده میشود.
نکته مهم
برای اتوماتیک کردن تمامی این کارها و به اصطلاح پیوسته کردن کل فرآیند از ابزارهای Gitlab و Jenkins استفاده میشود.
۵ ارزش کلیدی در دواپس (CALMS)
در ادامه مباحث از سیر تا پیاز دواپس (DevOps) به CALM میرسیم. CALM از سرواژه کلمات Culture، Automation، Lean، Measurement و Sharing گرفته شده است و در واقع می توان گفت، ۵ ارزش کاربردی، برای مدیریت تمام جوانب DevOps است.
فرهنگ (Culture)
DevOps یک فرهنگ است. در این فرهنگ، بین افراد و تیمها دیواری وجود ندارد و همه چیز یکپارچه مدیریت میشود. در فرهنگ DevOps، هیچ هدفی با بقیه اهداف متضاد نیست؛ بلکه اهداف خُرد، در یک راستا به تحقق هدف اصلی کمک میکنند.
اتوماسیون (Automation)
DevOps در برگیرنده دو مفهوم «یکپارچگی مستمر» و «تحویل مستمر» است. وقتی که فعالیتی مستمر است، بهترین کار این است که فرآیند را خودکار (اتومات) کنیم. پس میشود گفت که اتوماسیون، بخش جدانشدنی DevOps است. با اتوماسیون، خطاهای انسانی کاهش پیدا کرده و سرعت انجام کارها چندین برابر میشود.
بهینه سازی فعالیتها و فرایندهای غیرضروری(Lean)
Lean در لغت به معنی ناب است؛ اما اگر بخواهیم در یک عبارت ملموستر آن را توصیف کنیم، میشود: هنر به حداقل رسیدن کارهای پیچیده، غیرضروری و اتلاف های ۸ گانه. در DevOps باید بدون تعارف، با هر فرآیندی که به تولید ارزش منتهی نمیشود، خداحافظی کنیم. مسلماً انجام این کار، نیازمند آموزش و توانمندسازی تیم و همچنین یکپارچگی آنها است.
اندازهگیری (Measurement)
در دواپس، همهچیز باید زیر نظر باشد. از سختافزارها و لایههای زیرساخت گرفته تا عمکلرد نرمافزارها. از نرخ تبدیل مشتریان گرفته تا تعداد باگهای هر نسخه. فقط با اندازهگیری مداوم است که میشود یک سیستم را چابک کرد. جمعآوری دادهها و تحلیل آنها، به تیمها کمک میکند که بهترین تصمیمها را بگیرند؛ مخصوصاً در مواقع حساس!
اشتراکگذاری (Sharing)
DevOps برای این بهوجود آمد که شکاف بین تیم توسعه و عملیات را پر کند. تیمهای چابکی که از روش DevOps استفاده میکنند، باید تجربیات خود را به یکدیگر منتقل کنند تا تمام تیم باهم، رشد کنند و به هدف برسند.
شرکت های موفق با دواپس (DevOps)
شرکت هایی مانند آمازون، نتفلیکس، گوگل و والمارت چه اشتراکاتی دارند؟ جدا از اینکه آنها شرکت های بسیار موفقی هستند، همه آنها از روش دواپس DevOps در فرآیندهای روزمره خود برای افزایش کارایی و بهبود محصولات و خدمات ارائه شده به مشتریان استفاده می کنند.
مزایای DevOps
سرعت
با سرعت بالا حرکت کنید تا بتوانید سریعتر برای مشتریان نوآوری کنید، بهتر با بازارهای در حال تغییر سازگار شوید و در ایجاد نتایج تجاری کارآمدتر شوید. مدل DevOps توسعه دهندگان و تیم های عملیاتی را قادر می سازد تا به این نتایج دست یابند. به عنوان مثال، میکروسرویسها و تحویل مستمر به تیمها اجازه میدهند تا مالکیت خدمات را در دست بگیرند و سپس سریعتر بهروزرسانیها را برای مشتری منتشر کنند.
تحویل سریع
فرکانس و سرعت انتشار را با دواپس افزایش دهید تا بتوانید محصول خود را سریعتر، نوآورانه تر و باکیفیت تر به مشتری تحویل دهید. هرچه سریعتر بتوانید ویژگی های جدید را منتشر و اشکالات را برطرف کنید، سریعتر می توانید به نیازهای مشتریان خود پاسخ دهید و مزیت رقابتی ایجاد کنید. یکپارچه سازی مستمر و تحویل مستمر شیوه هایی هستند که فرآیند انتشار نرم افزار را از ساخت تا استقرار خودکار می کنند.
قابلیت اطمینان
از کیفیت بهروزرسانیهای برنامه و تغییرات زیرساخت فناورانه اطمینان حاصل کنید تا بتوانید بهطور قابلاطمینانی با سرعت بیشتری محصولات و خدمات چابک ارائه دهید و در عین حال تجربه مثبتی را برای کاربران نهایی حفظ کنید. از روش هایی مانند یکپارچه سازی مداوم و تحویل مداوم برای آزمایش اینکه هر تغییری کاربردی و ایمن است استفاده کنید. روشهای نظارت و ثبت گزارش به شما کمک میکند از عملکرد واقعی محصولات و خدمات چابک، مطلع شوید.
مقیاس پذیری
زیرساخت ها و فرآیندهای توسعه خود را در مقیاس های مختلف، اجرا و مدیریت کنید. اتوماسیون و سازگاری دواپس به شما کمک می کند تا سیستم های پیچیده یا در حال تغییر را به طور موثر و با کاهش ریسک مدیریت کنید. به عنوان مثال، زیرساخت به عنوان کد به شما کمک می کند تا محیط های توسعه، آزمایش و تولید خود را به شیوه ای تکرارپذیر و کارآمدتر مدیریت کنید.
همکاری بهبود یافته
با بکارگیری دواپس، تیمهای مؤثرتری بسازید که بر ارزشهایی مانند مالکیت و مسئولیتپذیری تأکید دارند. توسعه دهندگان و تیم های عملیاتی از نزدیک با یکدیگر همکاری می کنند، مسئولیت های زیادی را به اشتراک می گذارند و گردش کار خود را ترکیب می کنند. این باعث کاهش ناکارآمدی و صرفه جویی در زمان می شود (به عنوان مثال کاهش دوره های تحویل بین توسعه دهندگان و عملیات، نوشتن کدی که محیطی که در آن اجرا می شود را در نظر می گیرد)
امنیت
با حفظ کنترل و حفظ انطباق، سریع حرکت کنید. با استفاده از خطمشیهای انطباق خودکار، کنترلهای دقیق و تکنیکهای مدیریت پیکربندی، میتوانید یک مدل DevOps را بدون به خطر انداختن امنیت اتخاذ کنید. به عنوان مثال، با استفاده از زیرساخت به عنوان کد و خط مشی به عنوان کد، می توانید انطباق را در مقیاس تعریف و سپس پیگیری کنید.
جمع بندی از سیر تا پیاز دواپس (DevOps): کاربرد دواپس (DevOps) برای شرکت های ایرانی
اگر دوست دارید که یک تیم خیلی چابک داشته باشید که خیلی سریع، بر اساس بازخورد کاربران و تغییرات بازار، خودش را بهروز میکند، DevOps به درد شما میخورد. برعکس، اگر همهچیز در تیم شما بهصورت دستی پیش میرود و سازمان اجازه اتومات کردن برخی فرآیندها را نمیدهد، DevOps کاربرد خاصی برایتان نخواهد داشت.
حتما نظر خودتون رو برامون بنویسید
نظرات