Sobes.tech
Junior — Middle

Milyen szerverarchitektúrát alkalmaznak a projektjeidben?

sobes.tech MI

Válasz az MI-től

A Go projektekben általában mikroservice architektúrát vagy moduláris monolit architektúrát alkalmazok, a skálázástól és az igényektől függően.

Alapelvek:

  • Világos felelősségmegosztás a komponensek között.
  • REST vagy gRPC használata a szolgáltatások közötti kommunikációhoz.
  • Dependency injection a könnyű tesztelés és bővíthetőség érdekében.
  • A kérés életciklusának kezelése (context.Context) az időtartamok menedzseléséhez és az műveletek megszakításához.

Egyszerű szerverarchitektúra példája Go-ban:

package main

import (
    "context"
    "net/http"
)

// Üzleti logikával rendelkező szolgáltatás
type UserService struct {}

func (s *UserService) GetUser(ctx context.Context, id string) (string, error) {
    // felhasználó lekérdezési logika
    return "Felhasználó " + id, nil
}

// HTTP kezelő
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)
}

Ez a megközelítés lehetővé teszi a szerver rész könnyű skálázását és karbantartását.