Ответ
Деплой (развертывание) — это комплексный процесс, который делает ваше приложение доступным для конечных пользователей. Он включает в себя перенос кода с машины разработчика в целевую среду (например, staging
или production
), его запуск и проверку работоспособности.
Современный деплой, как правило, автоматизирован с помощью CI/CD (Continuous Integration/Continuous Deployment) пайплайнов.
Ключевые этапы деплоя Go-приложения:
-
Сборка (Build):
- Исходный код компилируется в один статически скомпонованный бинарный файл. Это одно из ключевых преимуществ Go, так как не требует установки зависимостей (runtime) на сервере.
go build -o myapp ./cmd/main.go
-
Упаковка (Package):
- Собранный бинарник вместе с конфигурационными файлами и другими необходимыми ассетами упаковывается в артефакт. Самый популярный формат сегодня — Docker-контейнер.
- Использование многостадийных сборок (multi-stage builds) в Dockerfile является лучшей практикой для Go, так как позволяет создать минималистичный образ на основе
scratch
илиalpine
.
# Стадия сборки FROM golang:1.19-alpine AS builder WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 GOOS=linux go build -o /app/main ./cmd/main.go # Финальная стадия FROM scratch WORKDIR /app COPY --from=builder /app/main . # Копируем конфиги, если нужно # COPY --from=builder /app/config.yml . CMD ["/app/main"]
-
Доставка и развертывание (Deliver & Deploy):
- Готовый Docker-образ загружается в репозиторий (Docker Hub, GCR, ECR) и развертывается в целевой среде (например, в кластере Kubernetes, на виртуальных машинах или в Serverless-окружении).
- Существуют разные стратегии развертывания:
Rolling Update
,Blue-Green
,Canary
.
-
Запуск и валидация (Run & Validate):
- После запуска контейнера система (например, Kubernetes) проверяет его работоспособность через
health checks
(liveness и readiness probes). - Если приложение успешно прошло проверки, на него начинает направляться пользовательский трафик.
- После запуска контейнера система (например, Kubernetes) проверяет его работоспособность через