تو این مقاله سعی میکنم خیلی ساده و روان در مورد اینکه DevOps چیه و کاری که انجام میده توضیح میدیم ولی قبل از اینکه به مفهوم DevOps بپردازیم بهتره مفاهیم پایه رو متوجه بشیم.
به طور کلی به زمانی گفته میشود که ایده اولیه برنامه به ذهن ما میرسد تا زمانی که برنامه را پیاده سازی میکنیم که طی چندین مرحله انجام میشود.
به طور کلی یک Application Life Cycle توسط دو تیم مجزا اجرا میشود:
مراحل یک Application Life Cycle به شرح زیر میباشد:
مراحل 1 تا 5 وظایف تیم Development هستند و مراحل 6 تا 8 توسط تیم Operation انجام میشود.
مفهوم CD/CD را میتوان روشی خودکار برای ارائه مستمر نرمافزار در حال توسعه به کاربران نهایی دانست. درک این تعریف در ابتدای کار سخت است اما پس از آشنا شدن با مفاهیمی مانند continuous integration، continuous delivery و continuous deployment بسیار راحتتر از قبل میتوانید بُعدهای مختلف این روش را درک کنید.
به طور کل CI فرایندی است که در آن نرمافزار ما build شده و تستهای نرمافزاری اعم از unit و integration test ها بهصورت خودکار اجرا میشوند.
پس از CI، نوبت به Continuous delivery (CD) میرسد. طی این فرایند، release نرمافزار نهایی بهصورت خودکار انجام میشود. هدف از continuous delivery این است که همیشه کدهایی داشته باشیم که قابلیت استقرار در حالت Production را داشته باشند.
حالا در این فرایند چه نیازی به DevOps هست؟
طی این فرایند ها یک سری مشکلات عمده وجود دارن که باعث اختلال در عملکرد برنامه میشن و ممکنه برنامه برای ساعاتی به طور کل Down بشه. عمده مشکل ارتباط بین تیم Development و تیم Operation هستش، چرا که تیم Development بیشتر به فکر توسعه برنامه هستن ولی تیم Operation هدفشون یک برنامه بدون ایراد و Uptime خوبه.
یکی دیگه از مشکلات اینه که زمانی که تیم Operation در مرحله CD قرار داشته باشن و بخوان برنامه رو به محیط Production ببرن و تست رو انجام بدن ممکنه زمان زیادی رو صرف این کار بکنن و به همین خاطر تو این زمان ممکنه تیم Develop فقط منتظر نتیجه باشه.
همین مشکلات و مسائل دیگه باعث به وجود اومدن یک پوزیشن در شرکت ها به اسم DevOps شده که کار اصلیش ارتباط و هماهنگی بین دو تیم Develop و Operation هستش.
هدف نهایی یک مهندس DevOps کوتاه کردن چرخه توسعه نرمافزار، افزایش دفعات بهروزرسانیها و برنامهریزی برای دستیابی به نسخههای قابل اعتمادتر است
دوآپس در مورد یکسانسازی و اتوماسیون فرایندها است و مهندسان داوپس در ترکیب کد، نگهداری برنامهها و مدیریت برنامهها نقش اساسی دارند. همه این وظایف به درک چرخههای عمر توسعه، فرهنگ DevOps و فلسفه، شیوهها و ابزارهای آن متکی هستند. بنابراین یک مهندس دواپس نهتنها باید بر تمام این موارد تسلط داشته باشد بلکه باید مهارتهای بینفردی داشته باشد تا بتواند دو تیم توسعه و عملیات را در یک محیط مشارکتی، مدیریت کند.