Container و Delivery زیرساخت Backend
Backend در محیط Development با Image تغییرناپذیر، Docker Compose و GitHub Actions منتشر میشود. این صفحه Design را توضیح میدهد؛ فرمانهای اجرایی در Runbookهای Backend قرار دارند.
Image و Runtime
- Build چندمرحلهای و Binary با
CGO_ENABLED=0؛ - Stage نهایی حداقلی و Process غیر Root با UID/GID برابر
65532؛ - Filesystem فقطخواندنی،
cap_drop: ALLوno-new-privileges؛ - PID، CPU، Memory و Logging Limit؛
- Healthcheck داخلی روی Readiness؛
- Version، Commit و Build Time در Metadata Image و API.
شبکه
- شبکه داخلی Compose فقط برای API و PostgreSQL؛
- شبکه خارجی
dong_frontendبرای Reverse Proxy با Alias پایدارtripylon-api؛ - عدم انتشار Port API یا PostgreSQL روی Host؛
- دسترسی عمومی فقط از Nginx روی
80و443.
Pipeline Development
flowchart LR
PR[Pull Request] --> Verify[Format, Vet, Test, Race, Build]
Verify --> Merge[Merge به main]
Merge --> Image[Build و Push Image]
Image --> Digest[انتخاب Digest تغییرناپذیر]
Digest --> Deploy[Pull و Deploy روی VPS]
Deploy --> Ready[Readiness و Smoke Test]
Ready -. شکست .-> Rollback[بازگشت به Digest قبلی]
Actionها با Commit SHA، Base Image با Digest و Dependencyها با نسخه دقیق Pin میشوند. GitHub Token حداقل Permission لازم دارد و Server فقط Token خواندن Package را نگه میدارد.
مرز Production
محیط فعلی Development است. پیش از Production باید Approval، Backup خارج از سرور، Restore Drill، Alert، Rotation، Patch Policy، Capacity و High Availability با ADR و Runbook تایید شوند.
معیار پذیرش
- Deploy فقط Digest منتشرشده را اجرا کند؛
- شکست Startup یا Smoke Test به نسخه سالم قبلی برگردد؛
- Stackهای دیگر VPS Restart یا Remove نشوند؛
- Secret در Workflow Log، Image، Compose Config یا Environment عمومی افشا نشود؛
- Domain عمومی پس از Deploy Health و Swagger معتبر داشته باشد.