Farih.co.id
Home Programming Memahami Struktur Arsitektur Heksagonal Konvensional untuk Aplikasi Go

Memahami Struktur Arsitektur Heksagonal Konvensional untuk Aplikasi Go

go lang 2

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:

Ilustrasi arsitektur heksagonal yang khas.

  1. 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.
  2. 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.
  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 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.

struktur direktori yang dibuat dengan skrip bash

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.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

beli jitu https://167.71.217.241/ https://188.166.210.27/ https://103.253.147.8/ https://139.59.194.132/ https://152.42.192.54/ https://152.42.187.123/ https://188.166.196.248/ https://163.47.9.78/ https://157.230.245.144/ http://68.183.96.87/ http://147.182.210.122/ http://147.182.128.234/ http://167.172.1.184/ http://157.245.5.74/ http://139.59.217.59/ http://163.47.9.16/ http://144.126.251.215/ http://139.59.217.128/ http://103.186.0.254/ http://161.35.251.176/ http://157.245.29.71/ https://170.64.254.102/ https://www.markas303.ac.id/ https://www.markas303.or.id/ https://www.markas303.sch.id/ http://103.172.205.75/ http://103.245.38.119/ http://138.197.224.231/ http://138.197.224.231/

Ad

BIJI18 BIJI18 https://goremekoop.com/ AGEN77 3DBET OBOR138 GACOR168JP YING77 RUMAH258 POHONHOKI99 ASALBET88 PARIS128 66KBET LONG111 DESA333 DEWAGACOR89 YING77
https://146.190.200.68/ https://188.166.204.36/