CursosEmpresasBlogLiveConfPrecios

Creando Feed Service

Clase 14 de 22 • Curso de Go Avanzado: Arquitectura de Eventos y CQRS

Clase anteriorSiguiente clase
    Fabricio Rodríguez Aguirre

    Fabricio Rodríguez Aguirre

    student•
    hace un año

    Carpe diem:

    Muy buenos los comentarios que me preceden, me gustaría añadir algo más. Mi interés ha sido ver temas de arquitectura aplicada, este curso en particular es de los pocos pero siento que aquí se intenta hacer lucir al presentador sobre la explicación, algo recurrente en casi todos los cursos de Platzi.

    Go es casi el peor lenguaje para explicar temas de arquitectura, en su lugar convierte al presentador en una suerte de presti-digitador (entiéndase la ironía), oculta todo el tinglado detrás de un 'go get ..', es decir, si no tienes el paquete de turno, a menudo creado por google, pues ya valiste. El código se transforma en un mero .config, o sea se hace, carpintería.

    Saluti,

    Fabricio

    Àlex Grau Roca

    Àlex Grau Roca

    student•
    hace 3 años

    No me termina de convencer el tener tanta lógica de tecnologías específicas en los archivos del servicio. Por ejemplo, todo el tema de la configuración y el conector yo lo quitaría de aquí, dejando toda esta lógica a nivel del propio repositorio de Postgres, de modo que en este código la única vinculación con la tecnología sería el constructor. . Con esto no solamente ganamos una mayor abstracción, sino que además queda todo mejor organizado y este código se puede aprovechar en cualquier servicio que lo requiera.

      Àlex Grau Roca

      Àlex Grau Roca

      student•
      hace 3 años

      Por ejemplo algo así:

      func NewPostgresRepository(url string) (*PostgresRepository, error) { if len(url) == 0 { var err error url, err = loadServerUrl() if err != nil { return nil, err } } db, err := sql.Open("postgres", url) if err != nil { return nil, err } return &PostgresRepository{db}, nil } func (repo *PostgresRepository) Close() { repo.db.Close() } func loadServerUrl() (string, error) { var cfg Config err := envconfig.Process("", &cfg) if err != nil { return "", err } return fmt.Sprintf( "postgres://%s:%s@postgres/%s?sslmode=disable", cfg.PostgresUser, cfg.PostgresPassword, cfg.PostgresDB, ), nil }

      De modo que siempre hay la opción de enviar una dirección personalizada, pero si se deja la url vacía, se utilizará la por defecto, que es la que se obtiene a partir de las variables de entorno.

      Gerardo Andres Gutierrez Rodriguez

      Gerardo Andres Gutierrez Rodriguez

      student•
      hace 3 años

      De acuerdo, deberían tener un curso de golang packaging ya que para ser un curso "++avanzado++" solo estamos viendo implementaciones de un par de tecnologías y el concepto CQRS hasta el momento quedó solo mencionado al inicio del curso.

    Cristóbal Contreras

    Cristóbal Contreras

    student•
    hace 3 años
    go get github.com/gorilla/mux go get github.com/kelseyhightower/envconfig