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.