بخش سوم: ارتباط دو مخزن و معماری یکپارچه پروژه
۱. چرا پروژه به دو مخزن جداگانه تقسیم شده است؟
یکی از ویژگیهای مهم این پروژه، جدا بودن کد برنامه از فایلهای مربوط به استقرار آن است. در مخزن اول، تمرکز بر منطق برنامه و قابلیتهای شبکه اجتماعی است. در مخزن دوم، تمرکز بر زیرساخت مورد نیاز برای اجرای همان برنامه قرار دارد.
این جداسازی از نظر مهندسی نرمافزار و DevOps اهمیت دارد؛ زیرا توسعهدهندگان میتوانند منطق برنامه را تغییر دهند، بدون اینکه لزوماً تمام تنظیمات زیرساخت را تغییر دهند. از طرف دیگر، مسئولیت مدیریت سرور و کانتینرها را میتوان تا حد زیادی مستقل از توسعه قابلیتهای برنامه بررسی کرد.
برای مثال، اگر یک قابلیت جدید به شبکه اجتماعی اضافه شود، احتمالاً تغییرات اصلی در مخزن برنامه انجام میشوند. اما اگر قرار باشد روش مسیریابی درخواستها تغییر کند یا تنظیمات TLS بهروزرسانی شوند، تغییرات عمدتاً به مخزن زیرساخت مربوط خواهند بود.
البته این جداسازی کامل نیست؛ زیرا تغییر در برنامه ممکن است نیازمند تغییراتی در Dockerfile، تنظیمات محیطی، متغیرهای Compose یا پیکربندی استقرار نیز باشد.
۲. ارتباط مستقیم دو مخزن با یکدیگر
برای روشن شدن ارتباط این دو مخزن، باید به تفاوت میان کد منبع برنامه و محیط اجرای برنامه توجه کنیم. مخزن app-devops-project کد منبع برنامه را در اختیار توسعهدهنده قرار میدهد. این کد شامل مدلها، Viewها، Serializerها، Serviceها، Selectorها و تنظیمات برنامه Django است.
مخزن infrastructure-devops-project محیطی را فراهم میکند که برنامه بتواند در آن اجرا شود. این محیط شامل تنظیمات کانتینرها، شبکه ارتباطی، پایگاه داده، کش، پروکسی معکوس و مخزن تصاویر است.