Junior — Middle
Que arquitetura de servidor é aplicada nos teus projetos?
sobes.tech IA
Resposta da IA
Nos projetos em Go, geralmente, aplica-se uma arquitetura de microserviços ou uma arquitetura monolítica modular, dependendo da escala e dos requisitos.
Princípios principais:
- Separação clara de responsabilidades entre componentes.
- Uso de REST ou gRPC para interação entre serviços.
- Injeção de dependências para facilitar testes e extensibilidade.
- Uso do contexto (
context.Context) para gerir o ciclo de vida das requisições e cancelar operações.
Exemplo de uma arquitetura simples de servidor em Go:
package main
import (
"context"
"net/http"
)
// Serviço com lógica de negócio
type UserService struct {}
func (s *UserService) GetUser(ctx context.Context, id string) (string, error) {
// lógica para obter um usuário
return "Utilizador " + id, nil
}
// Manipulador 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)
}
Este método permite escalar e manter facilmente a parte do servidor.