این مقاله برای تیم فینگرکدر و به مناسبت رویدادهایی با موضوع دوآپس نوشته شده. امیدوارم برای شما هم مفید باشه. ^^
اگر در حوزهی نرم افزار کار میکنید، حتما نام دوآپس به گوشتان خورده و آگهیهای استخدام آن را دیدهاید. ممکن است برایتان سوال پیش بیاید که دقیقا چه کاری از مهندسان دوآپس میخواهند؟ چون اگر مهارتهای کلیدی آگهیها را ببینید، در ظاهر بیربط به یکدیگر هستند.
در رویکرد سنتی توسعهی نرم افزار که با نام توسعهی خطی یا توسعهی آبشاری هم شناخته میشود، فرآیند مرحله به مرحله و بدون بازگشت است. در این مدل، تیم توسعه، تست و عملیات بهصورت جداگانه و گاهی بیارتباط با هم کار میکنند، هر مرحله بعد از اتمام مرحلهی قبلی شروع میشود و برگشت به مرحلهی قبل زمانبر، پرهزینه و حتی غیرممکن است. از این رو، مدل توسعهی جدیدی به دنیای توسعهی نرم افزار معرفی شد تا این مشکل را حل کند، دوآپس.
به طور کلی دوآپس یک مدل و فرآیند توسعهی نرم افزار است که روی ارتباطات، همکاری و یکپارچگی بین بخشهای مختلف پروژه تاکید میکند. در این مدل، دو بخش سابقا مجزای عملیات (OPerationS) و توسعه (DEVelopment)، با یکدیگر ادغام شدهاند و با یکدیگر همکاری میکنند. در نهایت یک تیم چندتخصصی ساخته میشود و محصول نهایی را با مهارتها و روشها و ابزار یکپارچه منتشر میکنند. نام دوآپس هم از همین مدل میآید. در این مدل،
به دلیل ماهیت پیوستهی توسعه و دواپس، متخصصان از حلقه بینهایت برای نشان دادن فرآیند کار استفاده میکنند. شاید به نظر برسد این مراحل حتما پشت سر هم هستند ولی این حلقه نشان دهندهی چرخهی توسعه و فرآیند است نه لزوما ترتیب مراحل. همچنین دوآپس بیشتر به فرآیند و فلسفهی کلی این کار اشاره دارد نه یک بخش. همچنین این مفهوم را میشود به عنوان پلی در نظر گرفت که خلاء بین تیم توسعه نرم افزار و تیم اجرایی را پر میکند.
در ادامه با توجه به شکل معروف فرآیند، مراحل دوآپس را توضیح دادهام:
1. برنامه ریزی/plan: برنامهریزی برای ویژگیها، نیازمندیها، اهداف و زمانبندی پروژه. در این مرحله تیمها با همکاری یکدیگر، اهداف توسعه را مشخص میکنند. در این مرحله از ابزارهای مستند سازی و برنامه ریزی استفاده میشود.
2. برنامه نویسی/code: توسعهی واقعی نرمافزار. برنامهنویسها کدها را بر اساس نیازمندیها مینویسند و در ابزارهای کنترل نسخه مانند gitذخیره میکنند.
3. ساخت/ build: ترکیب و ساخت کدهای نوشتهشده به شکل یک نرمافزار اجرایی. در این مرحله اولین فایل اجرایی ساخته میشود. در این مرحله بسته به نوع برنامه از ابزارهایی مثل Gradle، webpack، gitlab و Docker استفاده میکنند.
4. تست/Test: برنامههای ساخته شده با استفاده از تستهای خودکار و دستی بررسی میشوند تا باگها و اشکالات پیدا و رفع بشوند. ابزارهای این مرحله، Postman، Selenium، PyTest و TestNG هستند.
5. انتشار/release: نسخهی تأییدشده آمادهی انتشار میشود. این مرحله شامل مدیریت نسخه، بررسی نهایی و آمادهسازی برای استقرار است. در این مرحله از ابزارهایی مانند GitHub Actions و Dockerhub استفاده میکنند.
6. استقرار/deploy: نرمافزار روی محیط واقعی یا محیط تست منتشر میشود. در محیطهای DevOps این کار به صورت خودکار و مکرر انجام میشود (CI/CD). ابزار کار این مرحله Azure DevOps و شبیه به آن است.
7. عملیات/operate: در این مرحله، نرمافزار در حال اجرا و سرویسدهی به کاربران است. این مرحله شامل مدیریت منابع، زیرساخت، و اطمینان از در دسترس بودن سیستم میشود. در این مرحله از Docker Swarm و شبیه به آن استفاده میکنند.
8. نظارت/monitor: در آخرین مرحله از این فرآیند، بر عملکرد سیستم نظارت میشود و خطاها، مشکلات کاربران، لاگها و دادههای سیستم برای بهبود عملکرد به تیم توسعه منتقل میشود.
این چرخه به طور مداوم تکرار میشود تا نرم افزار بهینهتر و باکیفیتتری توسعه داده شود.