> Что делать первым шагом внутри сервиса создания виртуальной машины (Go)

Уровень: middle · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Альфа-банк

Стек: Go

> Пример ответа

Первым шагом внутри сервиса создания виртуальной машины (VM) является валидация входящего запроса. Это критически важный этап, который предотвращает попадание некорректных или вредоносных данных в бизнес-логику.

На практике это включает:

  1. Проверка обязательных полей: имя VM, образ (image), тип (flavor), сеть, ключи доступа. Если поле отсутствует - возвращаем 400 Bad Request с описанием ошибки.
  2. Формат данных: например, имя VM должно соответствовать регулярному выражению (только буквы, цифры, дефисы, длина от 1 до 64 символов).
  3. Бизнес-валидация: существует ли указанный образ? Доступен ли выбранный тип? Не превышен ли лимит ресурсов пользователя? Здесь может потребоваться обращение к другим сервисам (каталог образов, квота-менеджер).
  4. Идемпотентность: если запрос уже обрабатывается (по request_id или имени VM), возвращаем статус 409 Conflict или игнорируем дубликат.

Пример на Go:

GO
type CreateVMRequest struct {
Name string `json:"name" validate:"required,min=1,max=64,vmname"`
ImageID string `json:"image_id" validate:"required,uuid"`
FlavorID string `json:"flavor_id" validate:"required,uuid"`
NetworkID string `json:"network_id" validate:"required,uuid"`
SSHKey string `json:"ssh_key" validate:"required"`
}
func (s *Service) CreateVM(ctx context.Context, req *CreateVMRequest) (*VM, error) {
// Шаг 1: Валидация
if err := s.validator.Struct(req); err != nil {
return nil, ErrInvalidRequest(err)
}
// Далее - проверка существования образа, квот и т.д.
}

Только после успешной валидации можно переходить к созданию VM: резервированию ресурсов, запуску процесса в оркестраторе (например, OpenStack или Kubernetes).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью