Как деплоил сервисы

«Как деплоил сервисы» — вопрос из категории DevOps, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Обычно деплой Go-сервисов включает несколько этапов:

  1. Сборка:
GOOS=linux GOARCH=amd64 go build -o service main.go
  1. Докеризация (если используется):
FROM alpine:latest
COPY service /app/
CMD ["/app/service"]
  1. Деплой:
  • На сервер через CI/CD (GitHub Actions, GitLab CI)
  • В Kubernetes через Helm или kubectl
  • На облачные платформы (AWS ECS, GCP Cloud Run)

Для продакшена важно:

  • Использовать multi-stage Docker builds
  • Устанавливать минимальные базовые образы (scratch/alpine)
  • Настраивать health checks
  • Конфигурировать через environment variables

Пример CI/CD на GitHub Actions:

jobs:
  deploy:
    steps:
      - uses: actions/checkout@v3
      - run: go build -o service
      - run: docker build -t service .
      - run: kubectl apply -f k8s/