Implementasi Penggunaan Hexagonal Architecture pada Azure Function

Zaki Raihan
ecomindo-dev
Published in
4 min readFeb 27, 2020
Source: freeCodeCamp

Hexagonal Architecture merupakan salah satu design pattern yang banyak digunakan dalam pengembangan aplikasi microservice. Hexagonal Architecture berusaha memisahkan output dan input aplikasi dari logic yang berjalan pada aplikasi. Dengan demikian, interface (output dan input) dapat terpisah dengan core logic dari aplikasi. Kali ini saya akan memberikan contoh implementasi dari Hexagonal Architecture pada proyek Azure Function.

Contoh implementasi Hexagonal Architecture

Untuk mengimplementasikan Hexagonal Architecture, sebuah solution dari Visual Studio, akan dibagi menjadi 5 (lima) Project, yaitu FrontEndAPI, BackEndAPI, DAL (Data Access Layer), BLL (Business Logic Layer), dan External. Untuk BackEndAPI dan FrontEndAPI merupakan sebuah project Azure Function, sedangkan DAL, BLL, dan External berupa project Class Library.

Contoh struktur Solution pada Visual Studio yang mengimplementasikan Hexagonal Architecture

DAL (Data Access Layer)

DAL (Data Access Layer) merupakan bagian yang menghubungkan aplikasi dengan basis data yang digunakan. Data Access Layer ini mengandung Repository yang digunakan untuk membantu proses perpindahan data.

Struktur file pada project DAL

Pada project DAL, penempatan source code dibagi dua yaitu source code untuk model dan source code untuk repository. Buat sebuah folder bernama “model” untuk menampung seluruh model yang digunakan di dalam solution. Sedangkan repository tidak perlu dibuatkan folder, karena hanya berisi satu static class yang didalamnya mengandung Repository classes.

BLL (Business Logic Layer)

BLL (Business Logic Layer) menyimpan formulasi bisnis. Sebagai contoh, project ini dapat berisi algoritma untuk membuat User dan melakukan enkripsi password. File dapat langsung dibuat di root folder seperti pada gambar di bawah ini.

Struktur file pada project BLL

External

External mengelola komunikasi antara aplikasi dengan service yang dimiliki oleh pihak lain, seperti Facebook, Twitter, atau Microsoft Azure. Komunikasi bisa melalui API atau mekanisme lain semacam FTP. File dapat langsung ditempatkan pada root folder, seperti contoh pada gambar di bawah.

Struktur file pada project External

BackEndAPI

BackEndAPI merupakan mengelola komunikasi antara service yang ada di dalam Server. Umumnya otorisasi menggunakan menggunakan API Key. Dalam Azure Function key tersebut dilewatkan sebagai parameter “code”. API Key juga dapat ditentukan menggunakan API Management, umumnya diberi nama “subscription-key”.

Struktur file pada project BackEndAPI

File dapat ditempatkan di root folder atau dibuatkan folder khusus per-function. Data Transfer Object (DTO) Class, dapat dibuat di dalam source code azure function ataupun dibuat di file terpisah, dalam folder yang sama.

FrontEndAPI

FrontEndAPI atau yang sering disebut Back-end for Front-End menangani komunikasi langsung dengan bagian antar muka dari pengguna (Front End). Umumnya menggunakan tingkat otorisasi Anonymous (tanpa menggunakan key). Otorisasi FrontEndAPI dilakukan dengan menggunakan JWT (Json Web Token) yang berisi user id, roles, dan expiry date.

Struktur file pada project FrontEndAPI

Penempatan file pada FrontEndAPI sama seperti pada BackEndAPI. File dapat ditempatkan di root folder atau dibuatkan folder khusus per-function. Data Transfer Object (DTO) Class, dapat dibuat di dalam source code azure function ataupun dibuat di file terpisah, dalam folder yang sama.

Keterkaitan antar Project

Setelah membuat beberapa project di dalam solution, kita juga perlu melihat bagaimana kelima project tersebut terkait. Pada dasarnya FrontEndAPI akan memerlukan project DAL untuk mengakses ke basis data aplikasi, BLL untuk melakukan beberapa business logic yang diperlukan, serta External apabila memerlukan data dari pihak lain. Hal ini pun berlaku untuk BackEndAPI. Untuk itu kita perlu menambahkan DAL, BLL, dan External sebagai reference dari project FrontEndAPI dan BackEndAPI.

Contoh menambahkan DAL, BLL dan External sebagai Reference untuk FrontEndAPI

Demikianlah proses implementasi Hexagonal Architecture pada proyek Azure function. Penggunaan Hexagonal Architecture dapat mempermudah kita dalam melakukan pembangunan aplikasi karena struktur aplikasi menjadi lebih loosely coupled.

editor: AF

--

--