Sobes.tech
Back to questions
Junior — Middle
85

Какая архитектура серверной части применяется в твоих проектах?

Companies where asked
Астрал-Софт

Answer from AI

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)
}

Такой подход позволяет легко масштабировать и поддерживать серверную часть.