Sobes.tech
Middle — Middle+

Czy masz doświadczenie w tworzeniu lub wdrażaniu aplikacji z wykorzystaniem architektury heksagonalnej?

sobes.tech AI

Odpowiedź od AI

Architektura heksagonalna, znana również jako architektura portów i adapterów, ma na celu oddzielenie logiki biznesowej od systemów zewnętrznych i infrastruktury.

W moim doświadczeniu z programowaniem w Go, stosowałem to podejście do tworzenia modułowych i łatwo testowalnych aplikacji. Główną ideą jest wyodrębnienie rdzenia aplikacji (logiki biznesowej) i komunikacja ze światem zewnętrznym przez porty (interfejsy), implementowane przez adaptery (np. bazy danych, serwisy internetowe, UI).

Przykład struktury:

  • Core (domena): logika biznesowa, interfejsy portów
  • Adaptery: implementacje portów (repozytoria, API, UI)
  • Aplikacja: łączy rdzeń z adapterami

Takie podejście ułatwia testowanie, wymianę komponentów i utrzymanie czystości kodu. W Go można to wygodnie zrealizować za pomocą interfejsów i kompozycji.

Przykład interfejsu portu i adaptera:

// Port
type UserRepository interface {
    GetUser(id string) (*User, error)
}

// Adapter
type PostgresUserRepo struct {
    db *sql.DB
}

func (r *PostgresUserRepo) GetUser(id string) (*User, error) {
    // implementacja dostępu do bazy danych
}

W ten sposób logika biznesowa zależy wyłącznie od interfejsów, a konkretne implementacje można zmieniać bez wpływu na rdzeń.