Junior — Middle
Aká architektúra servera sa používa vo vašich projektoch?
sobes.tech AI
Odpoveď od AI
V mojich projektoch v Go zvyčajne používam architektúru mikroservisov alebo modulárnu monolitickú architektúru, v závislosti od rozsahu a požiadaviek.
Hlavné princípy:
- Jasné rozdelenie zodpovedností medzi komponentami.
- Použitie REST alebo gRPC na komunikáciu medzi službami.
- Injektáž závislostí pre uľahčenie testovania a rozšíriteľnosti.
- Použitie kontextu (
context.Context) na správu životnosti požiadaviek a zrušenie operácií.
Príklad jednoduchej architektúry servera v Go:
package main
import (
"context"
"net/http"
)
// Služba s podnikovou logikou
type UserService struct {}
func (s *UserService) GetUser(ctx context.Context, id string) (string, error) {
// logika na získanie používateľa
return "Používateľ " + id, nil
}
// HTTP handler
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)
}
Tento prístup umožňuje ľahké škálovanie a údržbu serverovej časti.