Memahami Struktur Arsitektur Heksagonal Konvensional untuk Aplikasi Go

Table of content:
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:
- Itu Lapisan 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.
- Itu Lapisan 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.
- 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 test double, seperti fakes atau stubs, tanpa harus menyiapkan database atau message broker.
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
Intinya, arsitektur heksagonal adalah tentang memisahkan logika bisnis inti aplikasi dari infrastruktur sehingga Anda dapat menukar dependensi tanpa memengaruhi logika inti aplikasi, membuatnya lebih mudah untuk memelihara dan menguji aplikasi.
Aplikasi Go heksagonal tipikal menggunakan empat direktori utama: cmd, intern, pkgDan 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 /penjual direktori untuk meningkatkan fungsionalitas yang disediakan Go untuk vendor.
Menerapkan Arsitektur Heksagonal di Go
Struktur file proyek Anda penting saat menerapkan arsitektur heksagonal dalam bahasa apa pun, termasuk Go.
Berikut adalah contoh struktur file untuk mengimplementasikan Arsitektur Heksagonal di Go:
.
├── cmd
│ └── http
│ └── main.go
├── internal
│ ├── adapters
│ │ ├── api
│ │ │ └── api_adapter.go
│ │ └── database
│ │ └── db_adapter.go
│ ├── app
│ │ ├── domain
│ │ │ ├── entity1.go
│ │ │ └── entity2.go
│ │ ├── ports
│ │ │ ├── input
│ │ │ │ ├── input_port1.go
│ │ │ │ └── input_port2.go
│ │ │ └── output
│ │ │ ├── output_port1.go
│ │ │ └── output_port2.go
│ │ └── usecases
│ │ ├── usecase1.go
│ │ └── usecase2.go
├── pkg
│ ├── input
│ │ ├── input1.go
│ │ └── input2.go
│ └── output
│ ├── output1.go
│ └── output2.go
└── vendor
├── module1
│ ├── file1.go
│ └── file2.go
└── module2
├── 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 untuk membuat skrip bash, hexagonal.shdan berikan izin baca, tulis, dan jalankan untuk itu:
touch hexagonal.sh && chmod 777 hexagonal.sh
Masukkan kode bash ini hexagonal.sh untuk membuat struktur file di direktori kerja Anda saat ini:
#!/bin/bash
mkdir cmd internal pkg vendor
mkdir cmd/http
mkdir internal/adapters internal/app internal/app/domain internal/app/ports internal/app/ports/input internal/app/ports/output internal/app/usecases
mkdir internal/adapters/api internal/adapters/database
mkdir internal/app/ports/input internal/app/ports/output
mkdir vendor/module1 vendor/module2
echo "Directory structure created successfully."
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.