Go-sovellukset voivat yhdistää monenlaisia ​​lähdekooditiedostoja, joten vankan, perinteisen rakenteen käyttämisellä on monia etuja.

Kuusikulmainen (tai "portit ja sovittimet") arkkitehtuuri on suosittu ohjelmistoarkkitehtuurimalli, jota voit käyttää rakentaessasi Go-sovelluksiasi. Sen avulla voit parantaa sovelluksesi skaalautuvuutta, ylläpidettävyyttä ja testattavuutta.

Tämä arkkitehtuuri auttaa erottamaan liiketoimintalogiikan ulkoisista riippuvuuksista ja infrastruktuurista tehden sovelluksestasi joustavan ja helpompia ylläpitää.

Mikä on kuusikulmainen arkkitehtuuri?

Kuusikulmainen arkkitehtuuri jakaa sovellukset kolmeen pääkerrokseen:

  1. TheSovelluskerros sisältää sovelluksen ydinlogiikan riippumatta kolmannen osapuolen riippuvuuksista. Sovelluskerroksen tulee sisältää liiketoimintalogiikkasi, toimialuemallisi ja sovelluspalvelut.
  2. ThePortit ja sovittimet -taso sisältää sovittimet, jotka ovat vuorovaikutuksessa olemassa olevien sovellusten kanssa. Portit ovat rajapintoja, jotka määrittävät sovelluksesi toiminnot, kun taas sovittimet ovat rajapintojen toteutuksia. Sovittimet voivat olla tietokantoja, HTTP API: ita, viestivälittäjiä tai mitä tahansa muuta ulkoista järjestelmää.
  3. Infrastruktuuri-kerros sisältää sovittimien toteutuksen. Infrastruktuurikerroksen tulee sisältää tietokannat, viestivälittäjät ja muut ulkoiset järjestelmät.

Kuusikulmaisen arkkitehtuurin käytön edut

Kuusikulmainen arkkitehtuuri on suosittu seuraavien sen tarjoamien etujen vuoksi.

Projektin skaalautuvuus ja ylläpidettävyys

Sovellustesi jako mahdollistaa modulaarisen ja irrotetun koodikannan, joka helpottaa sovelluksesi skaalaamista ja ylläpitoa.

Voit poistaa sovittimia vaikuttamatta ydinlogiikkaan ja muokata ydinlogiikkaa vaikuttamatta sovittimiin. Tämä tarkoittaa, että voit helposti vaihtaa sovittimet kirjoittamatta koko sovellustasi uudelleen.

Testattavuus ja integroinnin helppous

Kuusikulmainen arkkitehtuuri edistää testattavuutta, koska voit kirjoittaa ydinlogiikkaa varten yksikkötestejä ilman näennäisiä ulkoisia riippuvuuksia. Voit käyttää testituplaa, kuten väärennöksiä tai tynkkiä, ilman tarvetta perustaa tietokanta tai viestivälittäjä.

Kuusikulmainen arkkitehtuuri tekee myös sovelluksesi integroimisesta muihin järjestelmiin helppoa. Koska sovittimet ovat erillisiä ydinlogiikasta, voit käyttää niitä uudelleen muissa sovelluksissa tai mikropalveluissa. Voit myös paljastaa sovelluksesi portin API: t käytettäväksi muissa järjestelmissä.

Joustavuus ja mukautuvuus muuttuviin vaatimuksiin

Kuusikulmainen arkkitehtuuri tarjoaa joustavuutta ja mukautumiskykyä muuttuviin vaatimuksiin. Koska ydinlogiikka on sovittimista riippumaton, voit helposti muokata tai laajentaa sovelluksen toimintoja vaikuttamatta sovittimiin.

Voit kehittää sovellustasi ajan myötä kiinnittyen tiettyihin ulkoisiin järjestelmiin.

Mene ja kuusikulmainen arkkitehtuuri

Kuusikulmainen arkkitehtuuri on pohjimmiltaan sovelluksen ydinliiketoiminnan logiikan erottamista infrastruktuurista niin, että voit vaihtaa riippuvuuksia vaikuttamatta sovelluksen ydinlogiikkaan, mikä helpottaa sovelluksen ylläpitoa ja testausta. sovellus.

Tyypillinen kuusikulmainen Go-sovellus käyttää neljää päähakemistoa: cmd, sisäinen, pkg, ja myyjä.

The cmd hakemisto sisältää projektin tärkeimmät sovellukset. Tänne kirjoittamasi koodi kutsuu tyypillisesti toimintoja pkg-tiedostoista ja sisäisistä hakemistoista.

The sisäinen hakemiston tulee sisältää yksityinen sovelluskoodi, jota et halua käyttäjien tuovan sovellukseensa. Go-kääntäjä pakottaa sisäisen asettelumallin, ja sinulla voi olla niin monta sisäistä hakemistoa muissa hakemistoissa kuin haluat. Et ole rajoittunut ylätason sisäiseen hakemistoon.

The pkg hakemiston tulee sisältää kirjastokoodi, jonka haluat ulkoisten sovellusten tuovan ja käyttävän. Vaikka käytät pkg hakemisto on yleinen käytäntö, se ei ole yleisesti hyväksytty tai pakotettu.

The myyjä hakemiston tulee sisältää sovellusriippuvuudet (manuaalisesti tai automaattisesti hallittavissa). Voit käyttää go mod myyjä komento luoda a /vendor hakemistosta Go: n toimittajille tarjoamien toimintojen hyödyntämiseksi.

Kuusikulmaisen arkkitehtuurin toteuttaminen Gossa

Projektisi tiedostorakenne on tärkeä, kun toteutat kuusikulmaista arkkitehtuuria millä tahansa kielellä, mukaan lukien Go.

Tässä on esimerkkitiedostorakenne kuusikulmaisen arkkitehtuurin toteuttamiseksi Go: ssa:

.
├── cmd
│ └── http
│ └── main.go
├── sisäinen
│ ├── sovittimet
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── tietokanta
│ │ └── db_adapter.go
│ ├── sovellus
│ │ ├── verkkotunnus
│ │ │ ├── entity1.go
│ │ │ └── entity2.go
│ │ ├── portit
│ │ │ ├── tulo
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── lähtö
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── käyttötapaukset
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── pkg
│ ├── tulo
│ │ ├── input1.go
│ │ └── input2.go
│ └── lähtö
│ ├── output1.go
│ └── output2.go
└── myyjä
├── moduuli1
│ ├── file1.go
│ └── file2.go
└── moduuli 2
├── file1.go
└── file2.go

The pkg hakemisto sisältää sovelluksesi tulo- ja lähtöportit tässä esimerkissä. Voit määrittää liitännät tulo- ja lähtöporteille näissä tiedostoissa.

The sisäinen hakemisto sisältää sovellusalueen ja käyttötapaukset. Kirjoitat näihin tiedostoihin sovelluksesi liiketoimintalogiikka.

The adapterit hakemisto sisältää infrastruktuurikoodin, joka yhdistää sovelluksesi tietokantaan ja sovellusliittymään.

Kuusikulmaisen arkkitehtuurin tiedostorakenteen määrittäminen

Projektin kuusikulmaisen arkkitehtuurin tiedostorakenteen määrittäminen voi olla hankalaa, mutta voit kirjoittaa bash-komentosarjan automatisoidaksesi hakemiston luontiprosessin.

Suorita tämä komento projektisi työhakemistossa kohteeseen luo bash-skripti, kuusikulmainen.shja myönnä sille luku-, kirjoitus- ja suoritusoikeudet:

kosketa hexagonal.sh && chmod 777 hexagonal.sh

Syötä tämä bash-koodi sisään kuusikulmainen.sh luodaksesi tiedostorakenteen nykyiseen työhakemistoosi:

#!/bin/bash

# luo huipputason hakemistoja
mkdir cmd sisäinen pkg-toimittaja

# luo cmd/http-hakemisto
mkdir cmd/http

# luo sisäisiä hakemistoja
mkdir sisäinen / sovittimet sisäinen / sovelluksen sisäinen / sovellus / verkkotunnuksen sisäinen / sovellus / portit sisäiset / sovellus / portit / syöttö sisäinen / sovellus / portit / ulostulo sisäinen / sovellus / käyttötapaukset

# luo sisäisiä/sovittimien hakemistoja
mkdir sisäinen/adapters/api internal/adapters/database

# luo sisäisiä/sovellus-/porttihakemistoja
mkdir sisäinen/app/ports/input interior/app/ports/output

# luo toimittajahakemistoja
mkdir vendor/module1 vendor/module2

# tulosta menestysviesti
kaiku"Hakemistorakenteen luominen onnistui."

Voit suorittaa tämän bash-skriptin seuraavalla komennolla:

./hexagonal.sh

Bash-ohjelma luo kansiot ja alikansiot, jotta voit jatkaa tiedostojen luomista ja liiketoimintalogiikan kirjoittamista sovelluksellesi.

Kuusikulmainen arkkitehtuuri on kätevä monimutkaisten sovellusten rakentamiseen

Kuusikulmaisen arkkitehtuurin toteuttaminen voi olla aikaa vievää, mutta hyödyt ovat pitkällä aikavälillä kustannuksia suuremmat. Erottelemalla huolenaiheet ja tekemällä koodistasi modulaarisemman voit helposti ylläpitää ja testata sovelluksiasi.

On monia muita arkkitehtonisia malleja, joista jokaisella on hyvät ja huonot puolensa joustavien, tehokkaiden sovellusten rakentamiseen. Näitä ovat suosittu MVC (malli, näkymä, ohjain) -arkkitehtuuri verkkosovellusten luomiseen.