پرش به محتویات

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 معتبر داشته باشد.