چرا اصلاً DevOps به وجود اومد؟ 🤔 ریشهیابی مشکلات دنیای قدیم نرمافزار
سلام به همه دوستان اهل تکنولوژی و یادگیری! 👋
امروز میخوایم یه سفر کوتاه به گذشته داشته باشیم و ببینیم اصلاً چی شد که مفهومی به اسم DevOps شکل گرفت. قصدمون اینه که اول مشکل رو خوب درک کنیم تا بعداً بتونیم راه حل (یعنی خود DevOps) رو بهتر بفهمیم.
قدم اول: مشکل کجا بود؟ درک معمای قدیمی! 🤔
تصور کنید در یک شرکت نرمافزاری هستیم که به روشهای سنتی کار میکنه. اینجا معمولاً دو تا تیم اصلی داریم که نقشهای کلیدی بازی میکنن:
1️⃣ تیم توسعه (Development یا همون Dev خودمون):
کارشون چیه؟ این بچهها برنامهنویسها و مهندسهای خلاقی هستن که کد میزنن، قابلیتهای جدید به نرمافزار اضافه میکنن و خلاصه، محصول رو میسازن. 💻
هدف اصلیشون چیه؟ سرعت! عاشق اینن که زود به زود ورژنهای جدید و باحال بدن بیرون و بازار رو بگیرن دستشون. 🚀
2️⃣ تیم عملیات (Operations یا Ops):
کارشون چیه؟ این دوستان مسئولیت نگهداری از زیرساختها، سرورها، دیتابیسها و کلاً هر چیزی که لازمه تا نرمافزار همیشه بالا و پایدار باشه رو دارن. ⚙️
هدف اصلیشون چیه؟ پایداری و ثبات! دوست دارن همه چیز آروم و بدون تغییرات ناگهانی پیش بره تا خدای نکرده نرمافزار از دسترس خارج نشه. 🛡️
خب، مشکل از کجا شروع میشد؟ از "دیوار بزرگ" بین این دو تیم! 🧱
توی مدل سنتی، یه جور دیوار نامرئی (و گاهی هم کاملاً مرئی!) بین Dev و Ops وجود داشت:
تیم Dev: کد رو مینوشت، تستهای خودش رو انجام میداد و بعد مثل یه بسته، پرتابش میکرد اونور دیوار برای تیم Ops. ("بفرمایید، اینم کد جدید!")
تیم Ops: بسته رو میگرفت و سعی میکرد روی سرورهای واقعی (Production) اجراش کنه. اما اغلب میدید که ای دل غافل! کدی که روی سیستم توسعهدهنده کار میکرده، اینجا کلی مشکل داره (مثلاً به یه کتابخونه خاص نیاز داره که نصب نیست، تنظیماتش فرق میکنه و...). 😨
نتیجه این دیوار چی بود؟ یه عالمه دردسر! 😫
انتشارهای کند و پردردسر: هر بار که قرار بود نسخه جدید منتشر بشه، کلی زمان صرف هماهنگی (یا ناهماهنگی!) و رفع مشکلات لحظه آخری میشد.
کیفیت پایین و باگهای زیاد: خیلی از مشکلات تازه بعد از انتشار خودشون رو نشون میدادن و صدای کاربرا در میومد.
جنگ و دعوای همیشگی: تیم Dev تیم Ops رو مقصر میدونست که نمیتونه کد رو درست اجرا کنه، تیم Ops هم تیم Dev رو مقصر میدونست که کدی پر از مشکل تحویل داده. یه چرخه معیوب از سرزنش و بیاعتمادی! 😠➡️😤
تمرکز روی سیلوهای کاری: هر تیم فقط به فکر وظایف خودش بود و دید جامعی نسبت به کل فرآیند تولید و تحویل نرمافزار وجود نداشت.
خلاصه که اوضاع خیلی خوب نبود! سرعت کم، کیفیت پایین، و تیمهایی که به جای همکاری، روبروی هم قرار میگرفتن. این مشکلات بزرگ و اساسی، زمینهساز یه تغییر بزرگ شد... تغییری که اسمش رو گذاشتن DevOps! (که در پستهای بعدی بیشتر در موردش حرف میزنیم.)
حالا نوبت شماست! 👇
شما توی تیمها یا سازمانهای خودتون با چنین مشکلاتی (دیوار بین تیمها، انتشارهای سخت، تقصیر انداختن گردن همدیگه) روبرو بودین یا هستین؟ تجربهتون چی بوده؟ توی کامنتها برامون بنویسید!