Aplikácie Go môžu kombinovať mnoho rôznych typov súborov zdrojového kódu, takže použitie pevnej, konvenčnej štruktúry má mnoho výhod.
Šesťhranná architektúra (alebo „porty a adaptéry“) je populárny vzor softvérovej architektúry, ktorý môžete použiť pri vytváraní aplikácií Go. Pomocou neho môžete zlepšiť škálovateľnosť, udržiavateľnosť a testovateľnosť svojej aplikácie.
Táto architektúra pomáha oddeliť obchodnú logiku od externých závislostí a infraštruktúry, vďaka čomu je vaša aplikácia flexibilná a ľahšie sa udržiava.
Čo je šesťuholníková architektúra?
Šesťhranná architektúra rozdeľuje aplikácie do troch hlavných vrstiev:
- TheAplikačná vrstva obsahuje základnú logiku aplikácie nezávislú od akýchkoľvek závislostí tretích strán. Aplikačná vrstva by mala obsahovať vašu obchodnú logiku, modely domén a aplikačné služby.
- TheVrstva portov a adaptérov obsahuje adaptéry interagujúce s existujúcimi aplikáciami. Porty sú rozhrania, ktoré definujú operácie pre vašu aplikáciu, zatiaľ čo adaptéry sú implementáciami rozhraní. Adaptéry môžu byť databázy, HTTP API, sprostredkovatelia správ alebo akýkoľvek iný externý systém.
- Vrstva infraštruktúry obsahuje implementáciu adaptérov. Vrstva infraštruktúry by mala zahŕňať databázy, sprostredkovateľov správ a ďalšie externé systémy.
Výhody použitia šesťuholníkovej architektúry
Šesťhranná architektúra je obľúbená pre nasledujúce výhody, ktoré ponúka.
Škálovateľnosť a udržiavateľnosť projektu
Rozdelenie vašich aplikácií umožňuje modulárnu a oddelenú kódovú základňu, ktorá uľahčuje škálovanie a údržbu vašej aplikácie.
Adaptéry môžete odstrániť bez ovplyvnenia logiky jadra a upraviť logiku jadra bez ovplyvnenia adaptérov. To znamená, že adaptéry môžete jednoducho vymeniť bez prepisovania celej aplikácie.
Testovateľnosť a jednoduchosť integrácie
Šesťhranná architektúra podporuje testovateľnosť, pretože môžete písať testy jednotiek pre základnú logiku bez falošných externých závislostí. Bez toho, aby ste museli použiť testovacie dvojky, ako sú falzifikáty alebo výrastky vytvoriť databázu alebo sprostredkovateľ správ.
Šesťhranná architektúra tiež uľahčuje integráciu vašej aplikácie s inými systémami. Keďže adaptéry sú oddelené od základnej logiky, môžete ich znova použiť v iných aplikáciách alebo pre mikroslužby. Rozhrania API portu vašej aplikácie môžete tiež vystaviť na použitie v iných systémoch.
Flexibilita a prispôsobivosť meniacim sa požiadavkám
Šesťhranná architektúra poskytuje flexibilitu a prispôsobivosť meniacim sa požiadavkám. Keďže základná logika je nezávislá od adaptérov, môžete jednoducho upraviť alebo rozšíriť funkčnosť aplikácie bez ovplyvnenia adaptérov.
Svoju aplikáciu môžete v priebehu času vyvíjať a držať sa konkrétnych externých systémov.
Go a Hexagonal Architecture
V jadre je šesťuholníková architektúra o oddelení hlavnej obchodnej logiky aplikácie od infraštruktúry môžete vymieňať závislosti bez ovplyvnenia základnej logiky aplikácie, čo uľahčuje údržbu a testovanie aplikácie.
Typická hexagonálna aplikácia Go používa štyri hlavné adresáre: cmd, interné, bal, a predajcu.
The cmd adresár obsahuje hlavné aplikácie pre projekt. Kód, ktorý tu napíšete, bude zvyčajne volať funkcie zo súborov v pkg a interných adresároch.
The interné adresár by mal obsahovať súkromný kód aplikácie, ktorý nechcete, aby používatelia importovali do svojej aplikácie. Kompilátor Go presadzuje interný vzor rozloženia a v iných adresároch môžete mať toľko interných adresárov, koľko chcete. Nie ste obmedzení na interný adresár najvyššej úrovne.
The bal adresár by mal obsahovať kód knižnice, ktorý chcete, aby externé aplikácie importovali a používali. Aj keď pomocou bal adresár je bežnou praxou, nie je všeobecne akceptovaný ani presadzovaný.
The predajcu adresár by mal obsahovať závislosti aplikácií (manuálne alebo automaticky spravované). Môžete použiť prejdite na predajcu modov príkaz na vytvorenie a /vendor adresár na využitie funkcií, ktoré Go poskytuje dodávateľom.
Implementácia Hexagonal Architecture in Go
Štruktúra súboru vášho projektu je dôležitá pri implementácii hexagonálnej architektúry v akomkoľvek jazyku vrátane Go.
Tu je príklad štruktúry súborov na implementáciu Hexagonal Architecture in Go:
.
├── cmd
│ └── http
│ └── main.go
├── vnútorné
│ ├── adaptéry
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── databázu
│ │ └── db_adapter.go
Aplikácia │ ├──
│ │ ├── doména
│ │ │ ├── entity1.go
│ │ │ └── entity2.go
│ │ ├── porty
│ │ │ ├── vstup
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── výstup
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── prípady použitia
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── bal
│ ├── vstup
│ │ ├── input1.go
│ │ └── input2.go
│ └── výstup
│ ├── výstup1.go
│ └── výstup2.go
└── predajca
├── modul 1
│ ├── súbor1.go
│ └── súbor2.go
└── modul 2
├── súbor1.go
└── súbor2.go
The bal adresár obsahuje v tomto príklade vstupné a výstupné porty vašej aplikácie. V týchto súboroch definujete rozhrania pre vstupné a výstupné porty.
The interné adresár obsahuje doménu aplikácie a prípady použitia. Do týchto súborov napíšete obchodnú logiku svojej aplikácie.
The adaptéry adresár obsahuje kód infraštruktúry, ktorý pripája vašu aplikáciu k databáze a API.
Nastavenie štruktúry súborov šesťuholníkovej architektúry
Nastavenie štruktúry súboru hexagonálnej architektúry vášho projektu môže byť ťažkopádne, ale môžete napísať bash skript na automatizáciu procesu vytvárania adresára.
Spustite tento príkaz v pracovnom adresári projektu vytvorte bash skript, šesťhranný.sha udeľte mu povolenia na čítanie, zápis a spúšťanie:
dotykový hexagonal.sh && chmod 777 hexagonal.sh
Zadajte tento bash kód šesťhranný.sh na vytvorenie štruktúry súboru vo vašom aktuálnom pracovnom adresári:
#!/bin/bash
# vytvorte adresáre najvyššej úrovne
mkdir cmd interný dodávateľ balíčkov# vytvorte adresár cmd/http
mkdir cmd/http# vytvorte interné adresáre
mkdir interné/adapters interne/app interne/app/domain internal/app/ports internal/app/ports/input internal/app/ports/output internal/app/usecases# vytvorte interné adresáre / adresáre adaptérov
mkdir internal/adapters/api internal/adapters/database# vytvorte interné adresáre/aplikácie/porty
mkdir internal/app/ports/input internal/app/ports/output# vytvorte adresáre dodávateľov
mkdir dodávateľ/modul1 dodávateľ/modul2
# správa o úspechu tlače
ozvena"Adresárová štruktúra bola úspešne vytvorená."
Tento bash skript môžete spustiť pomocou nasledujúceho príkazu:
./šesťhranný.sh
Program bash vytvára priečinky a podpriečinky, takže môžete pokračovať vo vytváraní súborov a písaní obchodnej logiky pre vašu aplikáciu.
Šesťhranná architektúra je užitočná pri budovaní zložitých aplikácií
Implementácia šesťuholníkovej architektúry môže byť časovo náročná, ale výhody z dlhodobého hľadiska prevažujú nad nákladmi. Oddelením problémov a modulárnejším kódom môžete jednoducho udržiavať a testovať svoje aplikácie.
Existuje mnoho ďalších architektonických vzorov, z ktorých každý má svoje výhody a nevýhody pre vytváranie flexibilných a výkonných aplikácií. Patrí medzi ne populárna architektúra MVC (model, view, controller) na vytváranie webových aplikácií.