Aplikacje Go mogą łączyć wiele różnych typów plików kodu źródłowego, więc używanie solidnej, konwencjonalnej struktury ma wiele zalet.

Architektura heksagonalna (lub „porty i adaptery”) to popularny wzorzec architektury oprogramowania, który można zastosować podczas tworzenia aplikacji Go. Korzystając z niej, możesz poprawić skalowalność, łatwość konserwacji i testowalność swojej aplikacji.

Ta architektura pomaga oddzielić logikę biznesową od zewnętrznych zależności i infrastruktury, czyniąc aplikację elastyczną i łatwiejszą w utrzymaniu.

Co to jest architektura heksagonalna?

Architektura heksagonalna dzieli aplikacje na trzy główne warstwy:

  1. TheWarstwa aplikacji zawiera podstawową logikę aplikacji niezależną od jakichkolwiek zależności stron trzecich. Warstwa aplikacji powinna zawierać logikę biznesową, modele domen i usługi aplikacji.
  2. TheWarstwa portów i adapterów mieści adaptery współpracujące z istniejącymi aplikacjami. Porty to interfejsy, które definiują operacje aplikacji, podczas gdy adaptery to implementacje interfejsów. Adapterami mogą być bazy danych, interfejsy API protokołu HTTP, brokerzy komunikatów lub dowolny inny system zewnętrzny.
    instagram viewer
  3. Warstwa infrastruktury zawiera implementację adapterów. Warstwa infrastruktury powinna obejmować bazy danych, brokerów komunikatów i inne systemy zewnętrzne.

Zalety korzystania z architektury heksagonalnej

Sześciokątna architektura jest popularna ze względu na następujące zalety, jakie oferuje.

Skalowalność i łatwość utrzymania projektu

Podział aplikacji pozwala na modułową i oddzieloną bazę kodu, która ułatwia skalowanie i konserwację aplikacji.

Adaptery można usuwać bez wpływu na logikę rdzenia i modyfikować logikę rdzenia bez wpływu na adaptery. Oznacza to, że możesz łatwo wymieniać adaptery bez konieczności przepisywania całej aplikacji.

Testowalność i łatwość integracji

Architektura heksagonalna sprzyja testowalności, ponieważ można pisać testy jednostkowe dla podstawowej logiki bez udawania zewnętrznych zależności. Możesz używać podwójnych testów, takich jak podróbki lub kody pośredniczące, bez konieczności założyć bazę danych lub broker komunikatów.

Sześciokątna architektura ułatwia również integrację aplikacji z innymi systemami. Ponieważ adaptery są oddzielone od podstawowej logiki, można ich ponownie używać w innych aplikacjach lub w mikrousługach. Możesz także udostępnić interfejsy API portu swojej aplikacji do wykorzystania w innych systemach.

Elastyczność i zdolność adaptacji do zmieniających się wymagań

Sześciokątna architektura zapewnia elastyczność i możliwość dostosowania do zmieniających się wymagań. Ponieważ podstawowa logika jest niezależna od adapterów, można łatwo modyfikować lub rozszerzać funkcjonalność aplikacji bez wpływu na adaptery.

Możesz rozwijać swoją aplikację w czasie, trzymając się określonych systemów zewnętrznych.

Idź i architektura heksagonalna

W istocie architektura heksagonalna polega na oddzieleniu podstawowej logiki biznesowej aplikacji od infrastruktury możesz wymieniać zależności bez wpływu na podstawową logikę aplikacji, co ułatwia konserwację i testowanie aplikacja.

Typowa sześciokątna aplikacja Go używa czterech głównych katalogów: cmd, wewnętrzny, opak, I sprzedawca.

The cmd katalog zawiera główne aplikacje dla projektu. Kod, który tu napisałeś, będzie zazwyczaj wywoływał funkcje z plików w pkg i katalogach wewnętrznych.

The wewnętrzny katalog powinien zawierać prywatny kod aplikacji, którego użytkownicy nie powinni importować do swojej aplikacji. Kompilator Go wymusza wewnętrzny wzorzec układu i możesz mieć dowolną liczbę wewnętrznych katalogów w innych katalogach. Nie jesteś ograniczony do wewnętrznego katalogu najwyższego poziomu.

The opak katalog powinien zawierać kod biblioteki, który ma być importowany i używany przez zewnętrzne aplikacje. Chociaż korzystając z opak katalog jest powszechną praktyką, nie jest powszechnie akceptowany ani egzekwowany.

The sprzedawca katalog powinien zawierać zależności aplikacji (zarządzane ręcznie lub automatycznie). Możesz użyć idź do sprzedawcy modów polecenie utworzenia /vendor katalogu, aby wykorzystać funkcje, które Go zapewnia dostawcom.

Implementacja architektury heksagonalnej w Go

Struktura plików twojego projektu jest ważna przy wdrażaniu architektury heksagonalnej w dowolnym języku, w tym w Go.

Oto przykładowa struktura plików do implementacji architektury heksagonalnej w Go:

.
├── cmd
│ └── http
│ └── main.go
├── wewnętrzny
│ ├── adaptery
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── baza danych
│ │ └── db_adapter.go
│ ├── aplikacja
│ │ ├── domeny
│ │ │ ├── podmiot1.go
│ │ │ └── podmiot2.go
│ │ ├── porty
│ │ │ ├── wejście
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── wyjście
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── przypadków użycia
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── opak
│ ├── wejście
│ │ ├── input1.go
│ │ └── input2.go
│ └── wyjście
│ ├── wyjście1.go
│ └── wyjście2.go
└── sprzedawca
├── moduł1
│ ├── plik1.go
│ └── plik2.go
└── moduł2
├── plik1.go
└── plik2.go

The opak katalog zawiera porty wejściowe i wyjściowe aplikacji w tym przykładzie. W tych plikach zdefiniujesz interfejsy dla portów wejściowych i wyjściowych.

The wewnętrzny katalog zawiera domenę aplikacji i przypadki użycia. W tych plikach zapiszesz logikę biznesową swojej aplikacji.

The adaptery katalog zawiera kod infrastruktury, który łączy aplikację z bazą danych i interfejsem API.

Konfigurowanie struktury plików architektury sześciokątnej

Konfigurowanie sześciokątnej architektury plików projektu może być kłopotliwe, ale możesz napisać skrypt bash, aby zautomatyzować proces tworzenia katalogu.

Uruchom to polecenie w katalogu roboczym swojego projektu, aby utwórz skrypt basha, sześciokątny.shi nadaj mu uprawnienia do odczytu, zapisu i wykonywania:

dotknij hexagonal.sh && chmod 777 hexagonal.sh

Wprowadź ten kod basha sześciokątny.sh aby utworzyć strukturę plików w bieżącym katalogu roboczym:

#!/bin/bash

# tworzyć katalogi najwyższego poziomu
mkdir cmd wewnętrzny dostawca pkg

# utwórz katalog cmd/http
mkdir cmd/http

# tworzyć wewnętrzne katalogi
mkdir wewnętrzny/adaptery wewnętrzne/aplikacja wewnętrzna/aplikacja/domena wewnętrzna/aplikacja/porty wewnętrzne/aplikacja/porty/wejście wewnętrzne/aplikacja/porty/wyjście wewnętrzne/aplikacja/przypadki użycia

# utwórz katalogi wewnętrzne/adaptery
mkdir wewnętrzny/adaptery/api wewnętrzny/adaptery/baza danych

# utwórz katalogi internal/app/ports
mkdir wewnętrzny/aplikacja/porty/wejście wewnętrzne/aplikacja/porty/wyjście

# tworzyć katalogi dostawców
mkdir dostawca/moduł1 dostawca/moduł2

# wydrukuj komunikat o powodzeniu
Echo"Struktura katalogów została pomyślnie utworzona."

Możesz uruchomić ten skrypt bash za pomocą następującego polecenia:

./sześciokątny.sh

Program bash tworzy foldery i podfoldery, dzięki czemu możesz przystąpić do tworzenia plików i pisania logiki biznesowej dla swojej aplikacji.

Sześciokątna architektura jest przydatna do tworzenia złożonych aplikacji

Implementacja architektury heksagonalnej może być czasochłonna, ale w dłuższej perspektywie korzyści przewyższają koszty. Rozdzielając problemy i czyniąc kod bardziej modułowym, możesz łatwo utrzymywać i testować swoje aplikacje.

Istnieje wiele innych wzorców architektonicznych, z których każdy ma zalety i wady tworzenia elastycznych, wydajnych aplikacji. Należą do nich popularna architektura MVC (model, widok, kontroler) do tworzenia aplikacji internetowych.