> Какие виды уведомлений используются в системах (SMS, push, email и т.д.) (Go)

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

Компании: Моторика

Стек: Go

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

В современных системах на Go обычно используются три основных типа уведомлений: SMS, Push и Email. Каждый из них имеет свои особенности реализации и сценарии применения.

SMS - наиболее надежный способ доставки, но дорогой и с ограничением по длине (160 символов). В Go для интеграции с SMS-провайдерами (например, Twilio, Vonage) используют HTTP-клиенты или SDK. Пример отправки через Twilio:

GO
func SendSMS(to, body string) error {
client := &http.Client{}
req, _ := http.NewRequest("POST", twilioURL, strings.NewReader(fmt.Sprintf("To=%s&Body=%s", to, body)))
req.SetBasicAuth(accountSID, authToken)
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
return err
}

Push-уведомления - для мобильных приложений (iOS/Android) и веба (Web Push). В Go часто используют Firebase Cloud Messaging (FCM) через библиотеку firebase.google.com/go/v4/messaging. Пример:

GO
func SendPush(token, title, body string) error {
msg := &messaging.Message{
Token: token,
Notification: &messaging.Notification{Title: title, Body: body},
}
_, err := client.Send(ctx, msg)
return err
}

Email - для формальных уведомлений (подтверждения, отчеты). В Go популярна библиотека gomail или net/smtp. Пример с gomail:

GO
func SendEmail(to, subject, body string) error {
m := gomail.NewMessage()
m.SetHeader("From", "noreply@example.com")
m.SetHeader("To", to)
m.SetHeader("Subject", subject)
m.SetBody("text/html", body)
d := gomail.NewDialer("smtp.example.com", 587, "user", "pass")
return d.DialAndSend(m)
}

Дополнительно в системах на Go часто используют:

  • WebSocket для real-time уведомлений (например, через gorilla/websocket).

  • Очереди (RabbitMQ, Kafka) для асинхронной отправки, чтобы не блокировать основной поток.

  • Шаблонизацию (например, html/template) для генерации содержимого писем и push-уведомлений.

Выбор типа зависит от срочности, стоимости и канала связи с пользователем. В production-системах все три обычно комбинируются с приоритизацией: сначала push, затем email, и только при критических событиях - SMS.

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

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