دقیقاً چه کاری باید انجام شود؟
استخدام فریلنسر DevOps / Backend برای ساخت سیستم Deploy اختصاصی
ما برای شرکت به دنبال یک فریلنسر مسلط به DevOps و Backend هستیم تا روی سرورهای شخصی شرکت، یک سیستم اختصاصی برای CI/CD و Deploy خودکار پروژهها پیادهسازی کند.
هدف، ساخت یک سیستم داخلی مشابه Render، Liara یا Railway است؛ البته در مقیاس موردنیاز شرکت و روی سرورهای خودمان.
کاری که سیستم باید انجام دهد
پروژههای تیم ما روی GitLab قرار دارند.
میخواهیم پس از Push یا Merge شدن تغییرات روی Branch مشخص، سیستم بهصورت خودکار:
- تغییر جدید را از GitLab دریافت و تشخیص دهد.
- سورس پروژه را دریافت کند.
- Pipeline تعریفشده برای پروژه را اجرا کند.
- مراحل نصب Dependencies، Build و Migration را انجام دهد.
- Environment Variables و Secretهای هر پروژه را مدیریت کند.
- نسخه جدید را Deploy کند.
- Health Check انجام دهد.
- در صورت موفق بودن Deploy، نسخه جدید را روی Domain یا Subdomain مربوطه در دسترس قرار دهد.
- در صورت خطا، نسخه قبلی از دسترس خارج نشود.
- امکان Redeploy و ترجیحاً Rollback به نسخه قبلی وجود داشته باشد.
در حالت نهایی، Developer فقط کد را روی GitLab Push یا Merge میکند و باقی مراحل بدون نیاز به ورود دستی به سرور انجام میشود.
قابلیتهای موردنیاز
سیستم باید قابلیت مدیریت چند پروژه را داشته باشد و بتوان برای هر پروژه موارد زیر را جداگانه تنظیم کرد:
- GitLab Repository
- Branch
- Environment Variables
- Build Command
- Start Command
- Port
- Domain / Subdomain
- Docker Configuration
- Health Check
- Deployment History
- Logs
پروژههای ما ممکن است با تکنولوژیهایی مانند Next.js، Node.js، NestJS، React، Python/FastAPI، Go و Docker توسعه داده شده باشند.
پنل مدیریت
نیاز داریم یک پنل مدیریتی ساده نیز وجود داشته باشد تا بتوانیم:
- پروژهها را اضافه و مدیریت کنیم.
- وضعیت Deploy را مشاهده کنیم.
- Build و Application Logs را ببینیم.
- Environment Variables را مدیریت کنیم.
- Domain و تنظیمات پروژه را تغییر دهیم.
- پروژه را Start، Stop یا Restart کنیم.
- Deploy مجدد انجام دهیم.
- تاریخچه Deployها را مشاهده کنیم.
- در صورت امکان Rollback انجام دهیم.
زیرساخت
ترجیح ما استفاده از Docker / Docker Compose برای اجرای پروژهها است.
برای مدیریت Domainها و SSL نیز میتوان از ابزارهایی مانند Nginx، Traefik یا Caddy و Let's Encrypt استفاده کرد.
سیستم باید به GitLab از طریق Webhook / API / Deploy Key متصل شود تا Deployها بهصورت خودکار اجرا شوند.
امنیت
موارد زیر باید در طراحی در نظر گرفته شوند:
- نگهداری امن Secretها و Environment Variables
- اعتبارسنجی GitLab Webhook
- مدیریت سطح دسترسی
- ایزوله بودن پروژهها و Containerها
- جلوگیری از اجرای دستورات غیرمجاز
- Backup و امکان بازیابی تنظیمات
مهارتهای موردنیاز
فریلنسر باید تجربه عملی مناسبی در موارد زیر داشته باشد:
- Linux Server Administration
- DevOps و CI/CD
- GitLab
- Docker و Docker Compose
- Nginx / Traefik / Caddy
- Backend Development
- Networking و DNS
- SSL
- Deployment Automation
- Environment و Secret Management
- Logging
- Security
آشنایی با GitLab Runner، Redis، PostgreSQL، Zero-Downtime Deployment، Rollback، Monitoring و Container Registry مزیت محسوب میشود.
خروجی مورد انتظار
در پایان پروژه باید فرآیند کلی به این صورت باشد:
Developer → GitLab Push/Merge → اجرای Pipeline → Build → Deploy → Health Check → فعال شدن نسخه جدید
بدون اینکه برای هر آپدیت نیاز باشد شخصی وارد سرور شود و پروژه را بهصورت دستی Deploy کند.
تمام سورسکد، تنظیمات، مستندات و راهنمای نصب سیستم نیز باید در اختیار شرکت قرار بگیرد.
نکته: هدف ما صرفاً نصب GitLab Runner یا نوشتن چند Bash Script نیست؛ ما یک سیستم Deploy داخلی، قابل مدیریت و قابل توسعه برای پروژههای شرکت میخواهیم.
پی نوشت: نیاز است که برای گفتگو با ما گوگل میت یا سرویس های مشابه داشته باشید