Go aplikacije mogu kombinirati mnoge različite vrste datoteka izvornog koda, tako da upotreba čvrste, konvencionalne strukture ima mnoge prednosti.

Heksagonalna (ili "priključci i adapteri") arhitektura popularan je obrazac softverske arhitekture koji možete primijeniti dok izrađujete svoje Go aplikacije. Koristeći ga, možete poboljšati skalabilnost, mogućnost održavanja i testiranja svoje aplikacije.

Ova arhitektura pomaže odvojiti poslovnu logiku od vanjskih ovisnosti i infrastrukture, čineći vašu aplikaciju fleksibilnom i lakšom za održavanje.

Što je heksagonalna arhitektura?

Heksagonalna arhitektura dijeli aplikacije u tri glavna sloja:

  1. TheAplikacijski sloj sadrži temeljnu logiku aplikacije neovisno o bilo kakvim ovisnostima trećih strana. Aplikacijski sloj trebao bi sadržavati vašu poslovnu logiku, modele domene i aplikacijske usluge.
  2. TheSloj portova i adaptera sadrži adaptere u interakciji s postojećim aplikacijama. Portovi su sučelja koja definiraju operacije za vašu aplikaciju, dok su adapteri implementacije sučelja. Adapteri mogu biti baze podataka, HTTP API-ji, brokeri poruka ili bilo koji drugi vanjski sustav.
  3. Infrastrukturni sloj sadrži implementaciju adaptera. Infrastrukturni sloj trebao bi uključivati ​​baze podataka, brokere poruka i druge vanjske sustave.

Prednosti korištenja heksagonalne arhitekture

Heksagonalna arhitektura popularna je zbog sljedećih prednosti koje nudi.

Skalabilnost i održivost projekta

Podjela vaših aplikacija omogućuje modularnu i razdvojenu bazu kodova koja olakšava skaliranje i održavanje vaše aplikacije.

Možete ukloniti adaptere bez utjecaja na logiku jezgre i modificirati logiku jezgre bez utjecaja na adaptere. To znači da možete jednostavno zamijeniti adaptere bez ponovnog pisanja cijele aplikacije.

Mogućnost testiranja i jednostavnost integracije

Heksagonalna arhitektura promiče mogućnost testiranja budući da možete pisati jedinične testove za temeljnu logiku bez lažnih vanjskih ovisnosti. Možete upotrijebiti probne dvojnike, kao što su krivotvorine ili zaglavci, bez potrebe postaviti bazu podataka ili posrednik poruka.

Heksagonalna arhitektura također olakšava integraciju vaše aplikacije s drugim sustavima. Budući da su adapteri odvojeni od jezgrene logike, možete ih ponovno koristiti u drugim aplikacijama ili za mikroservise. Također možete izložiti API-je priključka svoje aplikacije za upotrebu u drugim sustavima.

Fleksibilnost i prilagodljivost promjenjivim zahtjevima

Heksagonalna arhitektura pruža fleksibilnost i prilagodljivost promjenjivim zahtjevima. Budući da je temeljna logika neovisna o adapterima, možete jednostavno izmijeniti ili proširiti funkcionalnost aplikacije bez utjecaja na adaptere.

Svoju aplikaciju možete razvijati tijekom vremena, držeći se određenih vanjskih sustava.

Idi i Heksagonalna arhitektura

U srži, heksagonalna arhitektura odnosi se na odvajanje temeljne poslovne logike aplikacije od infrastrukture tako da možete zamijeniti ovisnosti bez utjecaja na temeljnu logiku aplikacije, što olakšava održavanje i testiranje primjena.

Tipična šesterokutna Go aplikacija koristi četiri glavna direktorija: cmd, unutarnje, pakiranje, i prodavač.

The cmd direktorij sadrži glavne aplikacije za projekt. Kod koji ovdje napišete obično će pozivati ​​funkcije iz datoteka u pkg i internim direktorijima.

The unutarnje imenik treba sadržavati kod privatne aplikacije za koji ne želite da ga korisnici uvoze u svoju aplikaciju. Go kompajler provodi interni obrazac rasporeda i možete imati koliko god želite internih direktorija u drugim direktorijima. Niste ograničeni na interni imenik najviše razine.

The pakiranje direktorij treba sadržavati kod knjižnice koju želite da vanjske aplikacije uvezu i koriste. Iako korištenjem pakiranje imenik je uobičajena praksa, nije univerzalno prihvaćen niti se provodi.

The prodavač direktorij treba sadržavati ovisnosti o aplikaciji (ručno ili automatski upravljane). Možete koristiti go mod dobavljač naredba za stvaranje a /vendor imenik za iskorištavanje funkcionalnosti koje Go pruža dobavljačima.

Implementacija heksagonalne arhitekture u Go

Datotečna struktura vašeg projekta važna je pri implementaciji heksagonalne arhitekture u bilo kojem jeziku, uključujući Go.

Evo primjera strukture datoteke za implementaciju heksagonalne arhitekture u Go:

.
├── cmd
│ └── http
│ └── glavni.kreni
├── unutarnji
│ ├── adapteri
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── baza podataka
│ │ └── db_adapter.go
│ ├── pril
│ │ ├── domena
│ │ │ ├── entitet1.kreni
│ │ │ └── entitet2.kreni
│ │ ├── priključci
│ │ │ ├── unos
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── izlaz
│ │ │ ├── izlazni_port1.go
│ │ │ └── izlazni_port2.go
│ │ └── slučajevi upotrebe
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── pak
│ ├── unos
│ │ ├── input1.go
│ │ └── input2.go
│ └── izlaz
│ ├── output1.go
│ └── output2.go
└── dobavljač
├── modul1
│ ├── file1.go
│ └── file2.go
└── modul2
├── file1.go
└── file2.go

The pakiranje direktorij sadrži ulazne i izlazne portove vaše aplikacije u ovom primjeru. U ovim datotekama ćete definirati sučelja za ulazne i izlazne portove.

The unutarnje direktorij sadrži domenu aplikacije i slučajeve upotrebe. U ove datoteke ćete napisati poslovnu logiku svoje aplikacije.

The adapteri sadrži infrastrukturni kod koji povezuje vašu aplikaciju s bazom podataka i API-jem.

Postavljanje strukture datoteke heksagonalne arhitekture

Postavljanje strukture datoteke s heksagonalnom arhitekturom vašeg projekta može biti glomazno, ali možete napisati bash skriptu za automatizaciju procesa stvaranja imenika.

Pokrenite ovu naredbu u radnom direktoriju vašeg projekta za stvoriti bash skriptu, šesterokutan.š, i dodijelite mu dopuštenja za čitanje, pisanje i izvršavanje:

dodirni šesterokutni.sh && chmod 777 šesterokutni.sh

Unesite ovaj bash kod šesterokutan.š za stvaranje strukture datoteke u vašem trenutnom radnom direktoriju:

#!/bin/bash

# stvoriti direktorije najviše razine
mkdir cmd unutarnji pkg dobavljač

# stvoriti cmd/http imenik
mkdir cmd/http

# stvoriti interne imenike
mkdir interni/adapteri interni/app interni/aplikacija/domain interni/aplikacija/portovi interni/aplikacija/portovi/ulazni interni/aplikacija/portovi/izlazni interni/aplikacija/upotrebe

# kreirajte unutarnje/adapterske direktorije
mkdir interni/adapteri/api interni/adapteri/baza podataka

# kreirajte interne/app/portove direktorije
mkdir interni/aplikacija/portovi/ulazni interni/aplikacija/portovi/izlaz

# stvoriti imenike dobavljača
mkdir dobavljač/modul1 dobavljač/modul2

# poruka o uspješnom ispisu
jeka"Struktura imenika uspješno kreirana."

Ovu bash skriptu možete pokrenuti sljedećom naredbom:

./šesterokutni.sh

Program bash stvara mape i podmape tako da možete nastaviti sa stvaranjem datoteka i pisanjem poslovne logike za svoju aplikaciju.

Heksagonalna arhitektura praktična je za izgradnju složenih aplikacija

Implementacija heksagonalne arhitekture može biti dugotrajna, ali dugoročno gledano, koristi su veće od troškova. Odvajanjem problema i stvaranjem modularnijeg koda možete jednostavno održavati i testirati svoje aplikacije.

Postoje mnogi drugi arhitektonski obrasci, svaki s prednostima i manama za izgradnju fleksibilnih, učinkovitih aplikacija. To uključuje popularnu MVC (model, pogled, kontroler) arhitekturu za izradu web aplikacija.