Назад к вопросам
Junior — Middle
86
Какая архитектура серверной части применяется в твоих проектах?
Компании, где спрашивали
Астрал-Софт
Ответ от нейросети
sobes.tech AI
В моих проектах на Go обычно применяется архитектура микросервисов или модульная монолитная архитектура, в зависимости от масштаба и требований.
Основные принципы:
- Четкое разделение ответственности между компонентами.
- Использование REST или gRPC для взаимодействия между сервисами.
- Внедрение зависимостей (dependency injection) для удобства тестирования и расширяемости.
- Использование контекста (
context.Context) для управления временем жизни запросов и отмены операций.
Пример простой архитектуры сервера на Go:
package main
import (
"context"
"net/http"
)
// Сервис с бизнес-логикой
type UserService struct {}
func (s *UserService) GetUser(ctx context.Context, id string) (string, error) {
// логика получения пользователя
return "User " + id, nil
}
// HTTP обработчик
func userHandler(s *UserService) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
id := r.URL.Query().Get("id")
user, err := s.GetUser(r.Context(), id)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Write([]byte(user))
}
}
func main() {
userService := &UserService{}
http.HandleFunc("/user", userHandler(userService))
http.ListenAndServe(":8080", nil)
}
Такой подход позволяет легко масштабировать и поддерживать серверную часть.