Aplikasi Go dapat menggabungkan berbagai jenis file kode sumber, jadi menggunakan struktur konvensional yang solid memiliki banyak manfaat.

Arsitektur heksagonal (atau "port dan adaptor") adalah pola arsitektur perangkat lunak populer yang dapat Anda terapkan saat membuat aplikasi Go. Dengan menggunakannya, Anda dapat meningkatkan skalabilitas, pemeliharaan, dan pengujian aplikasi Anda.

Arsitektur ini membantu memisahkan logika bisnis dari dependensi dan infrastruktur eksternal, membuat aplikasi Anda fleksibel dan lebih mudah dipelihara.

Apa itu Arsitektur Heksagonal?

Arsitektur heksagonal membagi aplikasi menjadi tiga lapisan utama:

  1. ItuLapisan aplikasi menampung logika inti aplikasi yang terlepas dari ketergantungan pihak ketiga mana pun. Lapisan aplikasi harus berisi logika bisnis, model domain, dan layanan aplikasi Anda.
  2. ItuLapisan Port dan Adaptor menampung adaptor yang berinteraksi dengan aplikasi yang ada. Port adalah antarmuka yang menentukan operasi untuk aplikasi Anda, sedangkan adaptor adalah implementasi antarmuka. Adaptor dapat berupa basis data, API HTTP, perantara pesan, atau sistem eksternal lainnya.
    instagram viewer
  3. Lapisan Infrastruktur menampung implementasi adaptor. Lapisan infrastruktur harus mencakup database, perantara pesan, dan sistem eksternal lainnya.

Keuntungan Menggunakan Arsitektur Hexagonal

Arsitektur heksagonal populer untuk keuntungan berikut yang ditawarkannya.

Skalabilitas dan Pemeliharaan Proyek

Pembagian aplikasi Anda memungkinkan basis kode modular dan terpisah yang memudahkan penskalaan dan pemeliharaan aplikasi Anda.

Anda dapat menghapus adaptor tanpa memengaruhi logika inti dan memodifikasi logika inti tanpa memengaruhi adaptor. Ini berarti Anda dapat dengan mudah mengganti adaptor tanpa menulis ulang seluruh aplikasi Anda.

Testabilitas dan Kemudahan Integrasi

Arsitektur heksagonal meningkatkan kemampuan pengujian karena Anda dapat menulis pengujian unit untuk logika inti tanpa ketergantungan eksternal pura-pura. Anda dapat menggunakan tes ganda, seperti palsu atau bertopik, tanpa harus menyiapkan basis data atau perantara pesan.

Arsitektur heksagonal juga memudahkan pengintegrasian aplikasi Anda dengan sistem lain. Karena adaptor terpisah dari logika inti, Anda dapat menggunakannya kembali di aplikasi lain atau untuk layanan mikro. Anda juga dapat mengekspos API port aplikasi Anda untuk digunakan di sistem lain.

Fleksibilitas dan Kemampuan Beradaptasi untuk Mengubah Persyaratan

Arsitektur heksagonal memberikan fleksibilitas dan kemampuan beradaptasi terhadap perubahan kebutuhan. Karena logika inti tidak bergantung pada adaptor, Anda dapat dengan mudah mengubah atau memperluas fungsionalitas aplikasi tanpa memengaruhi adaptor.

Anda dapat mengembangkan aplikasi Anda dari waktu ke waktu, tetap berpegang pada sistem eksternal tertentu.

Pergi dan Arsitektur Heksagonal

Pada intinya, arsitektur heksagonal adalah tentang memisahkan logika bisnis inti aplikasi dari infrastruktur Anda dapat menukar dependensi tanpa memengaruhi logika inti aplikasi, membuatnya lebih mudah untuk mempertahankan dan mengujinya aplikasi.

Aplikasi Go heksagonal tipikal menggunakan empat direktori utama: cmd, intern, pkg, Dan penjual.

Itu cmd direktori berisi aplikasi utama untuk proyek tersebut. Kode yang Anda tulis di sini biasanya akan memanggil fungsi dari file di direktori pkg dan internal.

Itu intern direktori harus berisi kode aplikasi pribadi yang Anda tidak ingin pengguna mengimpor ke aplikasi mereka. Kompiler Go menjalankan pola tata letak internal, dan Anda dapat memiliki sebanyak mungkin direktori internal di direktori lain sesuka Anda. Anda tidak terbatas pada direktori internal tingkat atas.

Itu pkg direktori harus berisi kode perpustakaan yang Anda inginkan untuk diimpor dan digunakan oleh aplikasi eksternal. Meskipun menggunakan pkg direktori adalah praktik umum, tidak diterima atau ditegakkan secara universal.

Itu penjual direktori harus berisi dependensi aplikasi (dikelola secara manual atau otomatis). Anda dapat menggunakan pergi penjual mod perintah untuk membuat a /vendor direktori untuk meningkatkan fungsionalitas yang disediakan Go untuk vendor.

Menerapkan Arsitektur Heksagonal di Go

Struktur file proyek Anda penting saat mengimplementasikan arsitektur heksagonal dalam bahasa apa pun, termasuk Go.

Berikut adalah contoh struktur file untuk mengimplementasikan Arsitektur Heksagonal di Go:

.
├── cmd
│ └── http
│ └── main.go
├── internal
│ ├── adaptor
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── basis data
│ │ └── db_adapter.go
│ ├── aplikasi
│ │ ├── domain
│ │ │ ├── entitas1.go
│ │ │ └── entitas2.go
│ │ ├── port
│ │ │ ├── masukan
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── keluaran
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── kasus penggunaan
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── pkg
│ ├── masukan
│ │ ├── input1.go
│ │ └── input2.go
│ └── keluaran
│ ├── output1.go
│ └── output2.go
└── penjual
├── modul1
│ ├── file1.go
│ └── file2.go
└── modul2
├── file1.go
└── file2.go

Itu pkg direktori berisi port input dan output aplikasi Anda dalam contoh ini. Anda akan menentukan antarmuka untuk port input dan output dalam file ini.

Itu intern direktori berisi domain aplikasi dan use case. Anda akan menulis logika bisnis aplikasi Anda di file ini.

Itu adapter direktori berisi kode infrastruktur yang menghubungkan aplikasi Anda ke database dan API.

Menyiapkan Struktur File Arsitektur Heksagonal

Menyiapkan struktur file arsitektur heksagonal proyek Anda bisa merepotkan, tetapi Anda dapat menulis skrip bash untuk mengotomatiskan proses pembuatan direktori.

Jalankan perintah ini di direktori kerja proyek Anda ke buat skrip bash, hexagonal.sh, dan berikan izin baca, tulis, dan jalankan untuk itu:

sentuh hexagonal.sh && chmod 777 hexagonal.sh

Masukkan kode bash ini hexagonal.sh untuk membuat struktur file di direktori kerja Anda saat ini:

#!/bin/bash

# buat direktori tingkat atas
mkdir cmd vendor pkg internal

# buat direktori cmd/http
mkdir cmd/http

# buat direktori internal
mkdir internal/adaptor internal/aplikasi internal/aplikasi/domain internal/aplikasi/port internal/aplikasi/porta/masukan internal/aplikasi/porta/keluaran internal/aplikasi/kasus penggunaan

# buat direktori internal/adapter
mkdir internal/adapters/api internal/adapters/database

# buat direktori internal/app/ports
mkdir internal/app/ports/input internal/app/ports/output

# buat direktori vendor
mkdir vendor/module1 vendor/module2

# cetak pesan sukses
gema"Struktur direktori berhasil dibuat."

Anda dapat menjalankan skrip bash ini dengan perintah berikut:

./hexagonal.sh

Program bash membuat folder dan subfolder sehingga Anda dapat melanjutkan membuat file dan menulis logika bisnis untuk aplikasi Anda.

Arsitektur Heksagonal Berguna untuk Membangun Aplikasi Kompleks

Menerapkan arsitektur heksagonal bisa memakan waktu, tetapi manfaatnya lebih besar daripada biayanya dalam jangka panjang. Dengan memisahkan masalah dan membuat kode Anda lebih modular, Anda dapat dengan mudah memelihara dan menguji aplikasi Anda.

Ada banyak pola arsitektur lainnya, masing-masing dengan pro dan kontra untuk membangun aplikasi yang fleksibel dan berperforma baik. Ini termasuk arsitektur MVC (model, view, controller) yang populer untuk membuat aplikasi web.