راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز
ساخت اولین زنجیره DevOps خود در پنج مرحله برای مبتدیان.

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

معرفی من به DevOps

من قبلاً در Citi Group با ابرها کار می کردم و یک برنامه وب IaaS برای مدیریت زیرساخت ابری Citi توسعه می دادم، اما همیشه به چگونگی بهینه سازی زنجیره توسعه و بهبود فرهنگ در بین توسعه دهندگان علاقه داشتم. گرگ لاوندر، مدیر ارشد فناوری ما برای معماری و زیرساخت ابری، این کتاب را به من توصیه کرد. پروژه "ققنوس". اصول DevOps را به زیبایی توضیح می دهد و مانند یک رمان خوانده می شود.

جدول پشتی نشان می دهد که شرکت ها هر چند وقت یک بار نسخه های جدید را ارائه می کنند:

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

چگونه آمازون، گوگل و نتفلیکس موفق می شوند تا این حد عرضه شوند؟ و ساده است: آنها متوجه شدند که چگونه یک زنجیره DevOps تقریباً عالی ایجاد کنند.

اوضاع برای ما در Citi بسیار متفاوت بود تا زمانی که به DevOps تغییر مکان دادیم. سپس تیم من محیط های مختلفی داشت، اما ما به صورت دستی تحویل به سرور توسعه را انجام دادیم. همه توسعه دهندگان تنها به یک سرور توسعه مبتنی بر IBM WebSphere Application Server Community Edition دسترسی داشتند. با تلاش همزمان برای تحویل، سرور "سقوط" کرد و هر بار مجبور شدیم "دردناک" بین خود مذاکره کنیم. همچنین پوشش کد کافی با آزمایش‌ها، فرآیند تحویل دستی زمان‌بر، و هیچ راهی برای ردیابی تحویل کد با کمک برخی کارها یا نیازهای مشتری نداشتیم.

مشخص بود که باید فوراً کاری انجام شود و من همکار همفکری پیدا کردم. ما تصمیم گرفتیم اولین زنجیره DevOps را با هم ایجاد کنیم - او یک ماشین مجازی و یک سرور برنامه کاربردی Tomcat راه اندازی کرد، و من از Jenkins، ادغام با Atlassian Jira و BitBucket و همچنین پوشش کد با آزمایش مراقبت کردم. این پروژه موفقیت آمیز بود: ما زنجیره توسعه را کاملاً خودکار کردیم، تقریباً 100٪ آپتایم در سرور توسعه به دست آوردیم، توانستیم پوشش کد را با آزمایش‌ها نظارت و بهبود دهیم، و یک شاخه Git می‌توانست به یک تحویل و مشکل Jira مرتبط شود. و تقریباً تمام ابزارهایی که برای ساختن زنجیره DevOps استفاده کردیم منبع باز بودند.

در واقع، زنجیره ساده شد، زیرا ما حتی تنظیمات پیشرفته را با استفاده از Jenkins یا Ansible اعمال نکردیم. اما ما موفق شدیم. شاید این نتیجه اصل باشد پارتو (معروف به قانون 80/20).

شرح مختصری از DevOps و زنجیره CI/CD

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

در حالی که ابزارها به تنهایی برای ایجاد یک محیط DevOps کافی نیستند، اما ضروری هستند. مهمترین آنها یکپارچه سازی مداوم و تحویل مداوم (CI/CD) است. مراحل مختلفی در زنجیره برای هر محیط وجود دارد (مانند DEV (توسعه)، INT (ادغام)، TST (تست)، QA (تضمین کیفیت)، UAT (تست پذیرش کاربر)، STG (آماده‌سازی)، PROD (استفاده)) ، وظایف دستی خودکار هستند، توسعه دهندگان می توانند کد با کیفیت تولید کنند، آن را تحویل دهند و به راحتی می توانند دوباره بسازند.

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

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

بریم به کسب و کار برسیم.

مرحله 1: پلت فرم CI/CD

اول از همه، به یک ابزار CI/CD نیاز دارید. جنکینز یک ابزار CI/CD منبع باز و دارای مجوز MIT است که به زبان جاوا نوشته شده است که جنبش DevOps را رایج کرد و به استاندارد واقعی CICD تبدیل شده است.

جنکینز چیست؟ تصور کنید که یک کنترل پنل جادویی برای انواع خدمات و ابزار دارید. ابزار CI/CD مانند جنکینز به خودی خود بی فایده است، اما با ابزارها و خدمات مختلف، همه کاره می شود.

علاوه بر جنکینز، بسیاری از ابزارهای منبع باز دیگر وجود دارد، هر کدام را انتخاب کنید.

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

در اینجا فرآیند DevOps با ابزار CI/CD چگونه به نظر می رسد

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

شما یک ابزار CI/CD در لوکال هاست دارید، اما هنوز کار زیادی برای انجام دادن وجود ندارد. بیایید به مرحله بعدی برویم.

مرحله 2: نسخه سازی

بهترین (و مسلماً ساده‌ترین) راه برای آزمایش جادوی یک ابزار CI/CD، ادغام آن با ابزار مدیریت کنترل منبع (SCM) است. چرا به کنترل نسخه نیاز دارید؟ فرض کنید در حال ایجاد یک برنامه هستید. شما آن را در جاوا، پایتون، سی پلاس پلاس، برو، روبی، جاوا اسکریپت یا هر زبان دیگری که یک واگن و یک گاری کوچک است بنویسید. آنچه می نویسید کد منبع نامیده می شود. در ابتدا، به خصوص اگر به تنهایی کار می کنید، می توانید همه چیز را در یک فهرست محلی ذخیره کنید. اما با رشد پروژه و ملحق شدن افراد بیشتر، شما به راهی برای به اشتراک گذاشتن تغییرات کد نیاز دارید، اما هنگام ادغام تغییرات از تضاد جلوگیری کنید. و همچنین باید به نوعی نسخه های قبلی را بدون استفاده از پشتیبان گیری و استفاده از روش کپی پیست برای فایل های کد بازیابی کنید.

و اینجا بدون SCM در هر جایی. SCM کد را در مخازن ذخیره می کند، نسخه های آن را مدیریت می کند و آن را بین توسعه دهندگان هماهنگ می کند.

ابزارهای SCM زیادی وجود دارد، اما Git با شایستگی به استاندارد واقعی تبدیل شده است. من به شما توصیه می کنم از آن استفاده کنید، اما گزینه های دیگری نیز وجود دارد.

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

در اینجا خط لوله DevOps پس از افزودن SCM به نظر می رسد.

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

ابزار CI/CD می تواند آپلود و دانلود کد منبع و همکاری تیمی را خودکار کند. بد نیست؟ اما اکنون چگونه می توان یک برنامه کاربردی از این مورد ساخت که مورد علاقه میلیاردها کاربر است؟

مرحله 3: ابزار اتوماسیون بسازید

همه چیز همانطور که باید پیش می رود. می توانید کد را آپلود کنید و تغییراتی را در کنترل منبع انجام دهید و دوستان را دعوت کنید تا با شما همکاری کنند. اما شما هنوز برنامه ای ندارید. برای اینکه این یک برنامه وب باشد، باید برای توزیع کامپایل و بسته بندی شود یا به عنوان یک فایل اجرایی اجرا شود. (یک زبان برنامه نویسی تفسیر شده مانند جاوا اسکریپت یا PHP نیازی به کامپایل ندارد.)

از ابزار اتوماسیون ساخت استفاده کنید. هر ابزاری را که انتخاب کنید، کد را در قالب مناسب جمع‌آوری می‌کند و پاکسازی، جمع‌آوری، آزمایش و تحویل را به‌طور خودکار انجام می‌دهد. ابزارهای ساخت بسته به زبان متفاوت هستند، اما معمولاً از گزینه های منبع باز زیر استفاده می شود.

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

کامل! حالا بیایید فایل های پیکربندی ابزار اتوماسیون ساخت را به کنترل منبع وارد کنیم تا ابزار CI/CD آنها را بسازد.

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

حس خوبی داره اما همه اینها اکنون کجاست؟

مرحله 4: وب سرور برنامه

بنابراین، شما یک فایل بسته بندی شده دارید که می تواند اجرا یا منتشر شود. برای اینکه یک برنامه واقعا مفید باشد، باید نوعی سرویس یا رابط داشته باشد، اما باید همه آن را در جایی قرار دهید.

یک برنامه وب می تواند بر روی یک سرور برنامه وب میزبانی شود. سرور برنامه محیطی را فراهم می کند که در آن می توانید منطق بسته بندی شده را اجرا کنید، رابط ها را رندر کنید و خدمات وب را از طریق یک سوکت در معرض دید قرار دهید. برای نصب سرور برنامه به یک سرور HTTP و چند محیط دیگر (مثلاً یک ماشین مجازی) نیاز دارید. در حال حاضر، بیایید وانمود کنیم که در حین حرکت با همه اینها سر و کار دارید (اگرچه در زیر در مورد ظروف صحبت خواهم کرد).

چندین سرور برنامه وب باز وجود دارد.

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

ما در حال حاضر یک زنجیره DevOps تقریباً در حال کار داریم. کارت عالی بود!

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

در اصل، می توانید اینجا متوقف شوید، سپس خودتان می توانید آن را مدیریت کنید، اما ارزش صحبت در مورد کیفیت کد را دارد.

مرحله 5: پوشش تست

آزمایش زمان و تلاش زیادی را می طلبد، اما بهتر است فورا اشکالات را پیدا کنید و کد را بهبود بخشید تا کاربران نهایی را خوشحال کنند. برای این منظور، ابزارهای باز زیادی وجود دارد که نه تنها کد را آزمایش می کنند، بلکه در مورد بهبود آن نیز توصیه می کنند. اکثر ابزارهای CI/CD می توانند به این ابزارها وصل شوند و فرآیند را خودکار کنند.

تست به دو بخش تقسیم می‌شود: چارچوب‌های تست برای نوشتن و اجرای تست‌ها و ابزارهایی با نکاتی برای بهبود کیفیت کد.

چارچوب های تست

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

ابزار با نکات با کیفیت

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

اکثر این ابزارها و چارچوب ها برای جاوا، پایتون و جاوا اسکریپت نوشته شده اند زیرا C++ و C# اختصاصی هستند (اگرچه GCC منبع باز است).

ما ابزارهای پوشش تست را اعمال کرده‌ایم و اکنون خط لوله DevOps باید مانند تصویر ابتدای آموزش باشد.

مراحل اضافی

ظروف

همانطور که قبلاً گفتم، یک سرور برنامه می تواند در یک ماشین مجازی یا یک سرور میزبانی شود، اما کانتینرها محبوبیت بیشتری دارند.

ظروف چیست? به طور خلاصه، در یک ماشین مجازی، سیستم عامل اغلب فضای بیشتری را نسبت به برنامه کاربردی اشغال می کند و یک کانتینر معمولاً با چند کتابخانه و پیکربندی کافی است. در برخی موارد، ماشین‌های مجازی ضروری هستند، اما کانتینر می‌تواند برنامه را همراه با سرور بدون هزینه اضافی در خود جای دهد.

برای کانتینرها، Docker و Kubernetes معمولا گرفته می شوند، اگرچه گزینه های دیگری نیز وجود دارد.

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

مقالاتی در مورد Docker و Kubernetes را بخوانید Opensource.com:

ابزارهای اتوماسیون میان افزار

زنجیره DevOps ما بر روی ساخت و ارائه یک برنامه مشترک متمرکز است، اما کارهای جالب دیگری وجود دارد که می توانید با ابزار DevOps انجام دهید. به عنوان مثال، از ابزارهای زیرساخت به عنوان کد (IaC) استفاده کنید که به عنوان ابزارهای اتوماسیون میان افزار نیز شناخته می شود. این ابزارها به خودکارسازی نصب، مدیریت و سایر وظایف میان افزار کمک می کنند. به عنوان مثال، یک ابزار اتوماسیون می تواند برنامه های کاربردی (سرور برنامه های کاربردی وب، پایگاه داده، ابزارهای نظارت) را با تنظیمات صحیح دریافت کند و آنها را به سرور برنامه فشار دهد.

در اینجا چند گزینه برای ابزارهای اتوماسیون میان افزار باز وجود دارد:

راهنمای Dummies: ساخت زنجیره‌های DevOps با ابزارهای منبع باز

جزئیات در مقالات Opensource.com:

حالا چی؟

این فقط نوک کوه یخ است. زنجیره DevOps می تواند کارهای بیشتری انجام دهد. با یک ابزار CI/CD شروع کنید و ببینید چه چیز دیگری را می‌توانید خودکار کنید تا کارتان آسان‌تر شود. در مورد را فراموش نکنید ابزارهای ارتباطی باز برای همکاری موثر

در اینجا چند مقاله خوب DevOps برای مبتدیان وجود دارد:

همچنین می‌توانید DevOps را با ابزارهای چابک باز ادغام کنید:

منبع: www.habr.com

اضافه کردن نظر