2, JUNI 2022
Abstrak
Aplikasi Perpustakaan Open Library Universitas Telkom merupakan sebuah website yang dikembangkan sebagai
sarana informasi terbuka untuk setiap buku, karya ilmiah, dan jurnal dengan beberapa fitur seperti pencarian, katalog,
dan reservasi buku. Berdasarkan pengumpulan data yang peneliti lakukan berupa non-functional software testing, aplikasi
existing membutuhkan peningkatan pada scalability dan performance dikarenakan sistem tidak dapat melayani request
pada jumlah dan waktu tertentu sesuai dengan skenario yang ditentukan. Penelitian ini bertujuan untuk
mengimplementasikan arsitektur perangkat lunak dengan gaya arsitektur Microservices. Teknik yang digunakan untuk
melakukan evaluasi dari penelitian ini dengan melakukan non-functional software testing untuk mengukur batas user yang
bisa mengakses pada waktu bersamaan. Peneliti melakukan migrasi perangkat lunak dimulai dengan mengumpulkan
setiap fungsi dan proses dari existing sistem dan memisahkan setiap proses bisnis ke domain independen dengan
menerapkan konsep domain driven design. Setelah dilakukan penguraian proses bisnis, peneliti melakukan migrasi
arsitektur perangkat lunak monolitik ke microservices dengan menerapkan konsep strangler pattern serta pengembangan
sampai tahap functional testing pada setiap modul dan non-functional testing skenario yang telah ditentukan. Hasil dari
pengembangan arsitektur perangkat lunak menggunakan microservices, organisasi dapat meningkatkan performa dan
kebebasan dalam memilih teknologi tertentu sesuai dengan masalah yang sedang dihadapi.
Abstract
Universitas Telkom Open Library application is a website developed as an open information facility for every book, scientific
work, and journal with several features. Based on the data collection that the researcher did in the form of non-functional
software testing. Existing applications require improvements in scalability and performance, the system cannot serve requests
at a certain amount and time according to the specified scenario. This research aims to implement a software architecture with
a Microservices architectural style. The technique used to evaluate this research is to perform non-functional software testing
to measure the limit of users who can access it at the same time. Researchers do software migration starting by collecting every
function and process from the existing system and separating each business process into an independent domain by applying
the concept of domain-driven design. After describing the business process, the researcher migrated the monolithic software
architecture to microservices by applying the strangler pattern concept as well as development to the functional testing stage
for each module and non-functional testing scenarios that have been determined. As a result of developing software architecture
using microservices, organizations can improve performance and freedom in choosing certain technologies according to the
problems at hand.
dan performance yang baik guna melayani berbagai request dampak secara langsung terhadap arah bisnis terutama
dari user. traffic, conversion ratio, dan, index kepuasan pelanggan.
Terdapat beberapa cara untuk melakukan komunikasi Dengan menjamurnya perangkat dan platform seluler di
antara layanan dalam distributed systems khususnya mana-mana, kecepatan web menjadi lebih relevan dari
microservices, salah satunya menggunakan gRPC yang sebelumnya [1].
terkenal dengan kecepatan dalam memproses suatu data
secara synchronous blocking. B. Arsitektur Microservices
Berdasarkan permasalahan yang ada, peneliti Merupakan sebuah gaya arsitektur pada perangkat lunak
mengusulkan pengembangan arsitektur dengan konsep dengan kumpulan antar layanan yang mudah di-maintain dan
microservices dengan menggunakan gRPC sebagai di-test, loosely coupled, di-deploy independen, terorganisir
komunikasi antar services guna meningkatkan Scalability, berdasarkan kapabilitas bisnis, dan dapat dimiliki oleh tim
Availability, dan Stability sebuah sistem. kecil. Setiap layanan yang ada pada arsitektur Microservices
Adapun tujuan penelitian ini adalah untuk mengetahui dapat menggunakan teknologi yang sesuai dengan kebutuhan
dampak penggunaan arsitektur perangkat lunak dengan gaya tanpa mengetahui teknologi yang digunakan sebelumnya.
arsitektur Microservices dengan menggunakan gRPC Microservices memperkuat struktur modular yang sangat
sebagai pertukaran data atau informasi dari services yang penting bagi tim yang sangat besar. Menurut Martin Fowler,
dimiliki oleh aplikasi Open Library Universitas Telkom guna ini adalah key benefit yang juga aneh jika dikatakan
meningkatkan atau menerapkan Scalability, Availability, & kelebihan, karena tidak ada alasan apapun mengapa
Stability Pattern dari sebuah sistem yang dirancang. Microservices memiliki struktur modular yang lebih kuat
daripada monolitik.
II. KAJIAN TEORI
A. Scalability, Availability, & Performance Patterns
Scalability dalam sebuah sistem merupakan hal yang
sangat krusial dalam kesuksesan sebuah organisasi,
organisasi memerlukan platform yang scalable untuk
menangani baik pertumbuhan traffic dan pertumbuhan
volume data. Scalability merupakan kapabilitas sebuah
aplikasi enterprise dan komponen ekosistemnya untuk
menangani peningkatan beban dan permintaan tanpa
mengorbankan efisiensi keseluruhannya [1] .
Availability aplikasi yang berkesinambungan dan
maksimum sangat penting untuk kelangsungan dan
kesuksesan bisnis. High availability tinggi merupakan faktor
penting untuk aplikasi critical, real-time, dan perdagangan
karena secara langsung mempengaruhi pendapatan sebuah
bisnis dan traffic sebuah situs. Availability perangkat lunak
selalu menjadi aspek penting dari proses arsitektur. High
availability merupakan kemampuan sistem untuk terus
tersedia bagi pengguna tanpa kehilangan sebuah layanan.
GAMBAR 1
Availability menunjukkan keseluruhan waktu aplikasi atau ARSITEKTUR MICROSERVICES
layanan tersedia untuk memenuhi kebutuhan pengguna. High
availability sangat penting untuk operasi dan kelangsungan C. Migrasi Perangkat Lunak dengan Strangler Pattern
bisnis serta untuk mencapai tujuan akhir dari aplikasi Strangler Pattern merupakan cara untuk melakukan
perangkat lunak seperti pendapatan online dan kepuasan refactor microservices dengan cara melakukan modernisasi
pelanggan. Untuk mencapai ketersediaan lima sembilan di aplikasi baru dan menghapus aplikasi lama secara
(99,999%), downtime maksimum yang ditoleransi adalah bertahap. Strangler application terdiri dari 2 tipe services.
300 detik per tahun. Karena faktor-faktor ini, ketersediaan Pertama, ada layanan yang mengimplementasikan
tinggi sekarang menjadi persyaratan penting dan "harus fungsionalitas yang sebelumnya berada di monolit. Kedua,
dimiliki" untuk sebagian besar aplikasi perusahaan. Hal ada layanan yang mengimplementasikan fitur baru [2].
tersebut juga berdampak pada loyalitas pelanggan dan
meningkatkan keunggulan kompetitif [1]. D. gRPC
Kecepatan dan keresponsifan sebuah halaman web gRPC merupakan bagian remote procedure yang open
merupakan hal yang sangat penting sebagai faktor source dan dikembangkan oleh Google pada tahun 2015.
keberhasilan sebuah website. Web yang optimal memberikan gRPC menggunakan HTTP/2, Protocol Buffer sebagai
keunggulan terhadap kompetitor dan meningkatkan user transportasi interface setiap pertukaran data. gRPC
experiences secara keseluruhan. Hal tersebut memberikan
ISSN : 2828-0075
73 TELKATIKA, VOL. 1, NO. 2, JUNI 2022
menyediakan fitur untuk autentikasi, bidirectional pada setiap fungsi dari perangkat lunak dengan memberikan
streaming, dan flow control. gRPC mendukung berbagai sebuah input atau masukan, dan melakukan verifikasi dengan
bahasa sebagai klien dan peladen untuk komunikasi data. output yang diberikan yang akan dibandingkan dengan
Menurut benchmark yang telah dilakukan, Protocol Buffers spesifikasi dan kebutuhan yang telah ditentukan di awal.
dengan gRPC lebih unggul dari segi kecepatan dan performa Functional Test terdiri dari Unit Test dan Integration Test.
karena metode serialisasi biner cepat dan sangat disarankan 2. Non Functional Test / Performance Testing
jika kecepatan dan performa menjadi pertimbangan dalam Williams mengemukakan: “Dalam konteks web
organisasi [3]. development, performance testing memerlukan sebuah tools
Pada implementasinya dalam gRPC, aplikasi klien dapat software untuk mensimulasikan bagaimana aplikasi bekerja
dengan langsung memanggil method yang ada di peladen di dalam keadaan tertentu. Kuantitatif performance testing
mesin yang berbeda sama seperti ketika melihat dari sebuah metrik berupa response time
komunikasi/pemanggilan method tersebut berada pada mesin dibandingkan pengujian kualitatif mengukur skalabilitas,
yang sama. kestabilan, dan interoperabilitas[6]. Performance testing
lebih menekankan kepada ketahanan sebuah perangkat lunak
pada kondisi tertentu terutama ketika perangkat lunak
E. Software Development Life Cycle (SDLC) mendapatkan traffic dalam jumlah banyak ketimbang
Software Development Life Cycle (SDLC) adalah sebuah menguji fungsionalitas sebuah perangkat lunak.
tahapan atau siklus dalam industri pengembangan perangkat Performance testing terdiri dari Load Test, Stress Test, Spike
lunak untuk melakukan design, pengembangan, dan Test, Endurance Test, Scalability Test dan Volume Test.
pengujian dari perangkat lunak dengan kualitas yang baik
[4]. Dalam pengertian lain, Dora dan Dubey mengatakan, III. METODE
“Software Development Life Cycle (SDLC) merupakan Untuk mencapai penelitian yang efisien, dan terstruktur,
kerangka kerja yang digunakan untuk merencanakan, penyusun menggunakan kerangka kerja penelitian dalam
mengatur, dan melakukan kontrol proses untuk menyusun penelitian ini. Kerangka kerja ini merupakan
mengembangkan sistem informasi” [5]. langkah-langkah yang dilakukan dalam penyelesaian
masalah yang diteliti.
GAMBAR 2
TAHAPAN PADA SDLC
E. Software Testing
Software Testing merupakan metode untuk memeriksa
kelayakan sebuah produk perangkat lunak dengan kebutuhan
yang telah ditentukan sebelumnya, dan untuk memastikan GAMBAR 3
tidak ada kecacatan dalam produk. Software Testing KERANGKA KERJA PENELITIAN
melibatkan eksekusi manual dan otomatis. Tujuan dari
software testing adalah untuk mengidentifikasi error, celah, Pada tahap identifikasi masalah, peneliti melakukan
dan kebutuhan yang belum terpenuhi dari kebutuhan awal observasi terhadap sistem yang saat ini digunakan dengan
yang telah ditentukan. Dalam implementasinya, melakukan melakukan sebuah pengujian berupa non-functional test
testing untuk perangkat lunak dibagi menjadi beberapa jenis, terhadap Aplikasi Open Library Universitas Telkom. Dalam
diantara lainnya yang terkait dengan penelitian ini adalah tahap studi literatur, dilakukan teknik penyusunan sistematis
sebagai berikut: untuk memudahkan langkah-langkah yang diambil. Dengan
1. Functional Test melakukan studi literatur pada buku, jurnal dengan topik
Functional Testing merupakan tipe testing untuk melakukan Software Architecture & Design, Scalability, Availability, &
validasi sistem dari perangkat lunak dengan dengan Perfromance Patterns, Microservices, Migrating Monolith
spesifikasi dan kebutuhan yang telah ditentukan di awal. to Microservices, gRPC, serta penelitian terdahulu yang
Tujuan dari functional test adalah untuk melakukan validasi berkaitan dengan Software. Data yang didapatkan dari studi
ISSN : 2828-0075
74 TELKATIKA, VOL. 1, NO. 2, JUNI 2022
literatur digunakan sebagai acuan pada penelitian yang Application. Merujuk pada migrasi perangkat lunak dengan
peneliti lakukan. Pada tahapan pengumpulan data, peneliti pola Strangler Application, peneliti melakukan migrasi /
mengumpulkan data dengan penelitian lapangan berupa modernisasi aplikasi dengan cara menambahkan layanan
pengujian data terhadap sistem dengan sumber dari data baru dengan penerapan microservices secara bertahap sering
Aplikasi Open Library Universitas Telkom, serta penelitian pengembangan waktu. Layanan arsitektur monolitik Aplikasi
pustaka lewat dokumentasi teknologi terkait yang digunakan. Monolith Open Library Universitas Telkom akan berkurang
Dalam tahap pengembangan sistem terdiri dari dan services-services baru dengan penerapan microservices
dekomposisi layanan, migrasi arsitektur perangkat lunak dan akan bertambah seiring berjalannya waktu.
implementasi pengembangan. Pada tahap dekomposisi Kebutuhan perangkat lunak yang digunakan pada migrasi
layanan, untuk beralih ke arsitektur Microservices, layanan arsitektur perangkat lunak Open Library Universitas
Monolith existing system dipecah menjadi layanan kecil yang Telkom, kategori perangkat lunak yang digunakan antara
independen. Peneliti menggunakan prinsip dan pola Domain lain sistem operasi, web server, bahasa pemrograman, basis
Driven Design (DDD) untuk memudahkan menentukan data, dan cache. Untuk merealisasikan pengembangan,
batas dan memecah layanan berdasarkan domain. Pada tahap dibutuhkan bahasa pemrograman, peneliti menggunakan
migrasi arsitektur perangkat lunak, peneliti melakukan beberapa bahasa pemrograman seperti Go (untuk layanan
migrasi arsitektur perangkat lunak dengan pola / pattern pencarian buku dan transaksi), NodeJs (untuk layanan
Strangler Application. Pada tahap implementasi katalog buku) dan PHP (untuk layanan autentikasi). Bahasa
pengembangan, peneliti melakukan implementasi pemrograman digunakan pada penelitian ini digunakan
pengembangan sistem sesuai dengan metode pengembangan untuk merealisasikan program ke dalam bentuk backend
yang telah ditentukan yaitu Software Development Life Cycle sistem yang didalamnya terdapat proses sesuai requirement
(SDLC). Setelah melakukan identifikasi dari permasalahan, yang telah ditentukan. Basis data digunakan sebagai wadah
riset dengan studi literatur, mengumpulkan data, dan informasi pada sistem yang dikembangkan. Bahasa
melakukan pengembangan sistem, peneliti membuat sebuah pemrograman dan basis data pada penelitian ini ditentukan
laporan penelitian. berdasarkan kelebihan suatu bahasa pemrograman atau basis
Untuk melakukan pengembangan arsitektur perangkat data dan permasalahan yang ingin dipecahkan pada
lunak dengan usulan baru, peneliti menggunakan Software penelitian ini.
Development Life Cycle (SDLC) sebagai acuan tahapan Setiap layanan yang dibangun dalam pengembangan,
untuk pengembangan backend Aplikasi Perpustakaan Open dibutuhkan perangkat keras untuk menjalankan sistem.
Library Universitas Telkom. Peneliti juga menggunakan Daftar perangkat keras yang digunakan adalah 2 Core 2GB
strategi strangler pattern untuk melakukan migrasi arsitektur RAM dan 120GB SSD dari provider AWS (untuk layanan
perangkat lunak, strategi tersebut dirasa cocok dengan studi aplikasi backend), 4GB RAM dan 120GB SSD dari provider
kasus backend Aplikasi Perpustakaan Open Library AWS (untuk layanan basis data dan tembolok / cache).
Universitas Telkom saat ini dengan bertahapnya Setiap server memiliki masing masing layanan dan teknologi
pengembangan layanan baru guna melancarkan migrasi mengacu pada konsep Microservices. Spesifikasi RAM dan
arsitektur perangkat lunak. SSD pada basis data ditentukan berdasarkan rata-rata
minimum dan recomended spesification yang dianjurkan
pada laman situs basis data dan cache. Untuk aplikasi
IV. HASIL DAN PEMBAHASAN backend, spesifikasi core dan RAM ditentukan berdasarkan
Analisis dan perancangan pada backend sistem Aplikasi beratnya proses yang ingin diselesaikan pada masing-masing
Perpustakaan Open Library Universitas Telkom dilakukan layanan.
dengan menganalisis masalah, solusi, dan kebutuhan fitur,
dekomposisi layanan, migrasi arsitektur perangkat lunak, B. Perancangan Desain Perangkat Lunak
desain perangkat lunak berupa UML Diagram Use Case Diagram merupakan diagram yang
A. Perancangan Migrasi Perangkat Lunak menggambarkan fungsionalitas sistem serta kebutuhan yang
Untuk mengembangkan migrasi arsitektur perangkat diinginkan atau dikehendaki oleh pengguna. Pada Gambar 2
lunak dari arsitektur monolitik ke arsitektur microservices, secara keseluruhan pada sistem Aplikasi Open Library
diperlukan dekomposisi pada proses bisnis utama dan Universitas Telkom. Fitur terdiri dari login yang merupakan
memecahnya menjadi bagian kecil. Setiap layanan kecil proses authentication antar request user dan sistem, fitur
seharusnya mengimplementasikan sebuah proses sesuai peminjaman buku untuk melakukan peminjaman dan
dengan fungsi proses bisnis yang terkait dalam bagian- pengembalian buku oleh user, fitur katalog buku untuk
bagian kecil (cohesive), dan dirancang secara bebas dan menampilkan katalog yang ada pada perpustakaan berupa list
independen dan mudah dimodifikasi tanpa mengganggu dan detail, Fitur Pencarian yang akan menampilkan list
komponen lain (loosely coupled). Setelah peneliti melakukan katalog buku paling mirip dengan masing masing buku
dekomposisi layanan pada arsitektur perangkat lunak, dengan keyword yang dimasukan oleh user.
selanjutnya peneliti melakukan migrasi perangkat lunak dari
arsitektur Monolith ke Microservices dengan pola Strangler
ISSN : 2828-0075
75 TELKATIKA, VOL. 1, NO. 2, JUNI 2022
TABEL 1
SKENARIO TEST
No Fungsi Ekspektasi
1 List Katalog Buku Fungsi menampilkan list katalog buku Return status code 200 30 detik
200
2 Detail Buku Fungsi menampilkan detail buku Return status code 200 30 detik
200
3 Proses Pengembalian Fungsi melakukan proses pengembalian Return status code 200 30 detik
Buku buku 200
4 Proses Peminjaman Fungsi melakukan update peminjaman Return status code 200 30 detik
Buku buku 201
5 Autentikasi (Login) Fungsi menampilkan autentikasi Return status code 200 30 detik
200
6 Pencarian Buku Fungsi menampilkan data hasil pencarian Return status code 200 30 detik
200
ISSN : 2828-0075
76 TELKATIKA, VOL. 1, NO. 2, JUNI 2022
E. Pembanding Backend Aplikasi Perpustakaan Open dengan jumlah user konstan secara maksimal selama 30
Library Universitas Telkom dengan Arsitektur Monolitik detik dari aplikasi monolitik yang dibangun serta spike test
Pada Tabel 2, dihasilkan pengujian dari performance & untuk mengukur kemampuan keandalan dengan pengujian
load test untuk mengukur kemampuan keandalan dan dengan jumlah user yang meningkat dan menurun secara
kecepatan aplikasi monolitik yang dibangun, stress test dinamis selama 30 detik dari aplikasi monolitik yang
untuk mengukur kemampuan keandalan dengan pengujian dibangun.
TABEL 2 HASIL TEST
1 List 31.62 detik 117 5883 139 0.5 detik 200 0.5 detik 6000 0 200
Katalog
Buku
2 Detail 32.26 detik 122 5878 135 0.3 detik 200 0.3 detik 6000 0 200
Buku
3 Proses 30.26 detik 102 5898 147 0.8 detik 200 0.8 detik 6000 0 200
Pengemba
lian Buku
4 Proses 30.26 detik 102 5898 147 0.8 detik 200 0.8 detik 6000 0 200
Peminjam
an Buku
5 Autentikas 25.99 detik 80 5920 164 0.6 detik 200 0.34 detik 6000 0 200
i (Login)
6 Pencarian 23.18 detik 137 5863 150 0.3 detik 200 0.3 detik 6000 0 200
Buku
F. Backend Aplikasi Perpustakaan Open Library Universitas skenario yang telah ditentukan pada Tabel 3, hasil dari
Telkom dengan Arsitektur Microservices pengujian pada modul ini menunjukkan test passed atau
Pengujian dilakukan terhadap modul katalog buku, detail sesuai dengan skenario dan ekspektasi.
katalog buku, pencarian buku dan integration test dengan
TABEL 3
NON-FUNCTIONAL TEST
N Nama Proses Performance & Load Test Spike Test Stress Test
o
Average Jumlah Failure Jumlah Average Jumlah Average Jumlah Failure Jumlah
Response Request Request User Response User Response Request Request User
Time Maksimal Time Maksimal Time Maksimal
1 List Katalog Buku 0.5 detik 6000 0 200 0.5 detik 200 0.5 detik 6000 0 200
2 Detail Buku 0.3 detik 6000 0 200 0.4 detik 200 0.3 detik 6000 0 200
3 Proses 0.8 detik 6000 0 200 0.8 detik 200 0.8 detik 6000 0 200
Pengembalian
Buku
4 Proses Peminjaman 0.8 detik 6000 0 200 0.8 detik 200 0.8 detik 6000 0 200
Buku
5 Autentikasi (Login) 0.6 detik 6000 0 200 0.6 detik 200 0.6 detik 6000 0 200
6 Pencarian Buku 0.3 detik 6000 0 200 0.3 detik 200 0.3 detik 6000 0 200
ISSN : 2828-0075
77 TELKATIKA, VOL. 1, NO. 2, JUNI 2022
Dengan pengujian non-functional test yang telah skalabilitas sistem, pada penelitian ini, peneliti menerapkan
dilakukan, dapat disimpulkan bahwa proses pengujian konsep distributed systems yang diaplikasikan ke arsitektur
setelah dilakukan migrasi perangkat lunak, performa sistem perangkat lunak microservices, dengan kebebasan pemilihan
meningkat terlihat dari Average Response Time yang teknologi, pembagian layanan secara independen
berkurang dan jumlah user maksimal yang meningkat. menghasilkan performa yang lebih optimal dibandingkan
Average Response Time merupakan satuan kecepatan rata- dengan existing sistem dan pembanding arsitektur perangkat
rata sistem dalam melayani suatu proses. Jumlah user lunak monolitik. Penerapan gRPC pada penelitian ini
maksimal merupakan satuan waktu user yang bisa dilayani dilakukan disetiap layanan yang berkomunikasi terhadap
oleh sistem dalam satu waktu. Gambar 3 menunjukan layanan lainnya menerapkan konsep arsitektur perangkat
peningkatan signifikan response time yang kecil pada lunak microservices. Pada penerapannya, layanan yang
microservices dan peningkatan jumlah peak user atau user membutuhkan data akan berkomunikasi dengan gRPC server
yang bisa mengakses sistem secara bersamaan. lewat gRPC client yang dipasang pada setiap layanan.
REFERENSI
[1] Shivakumar S. K. Architecting High Performing,
Scalable and Available Enterprise Web Applications.
Massachusetts: Elsevier, 2014, pp. 1-57.
doi.org/10.1016/C2013-0-14272-9
[2] Richardson C. Microservices Patterns. New York:
Manning Publications, 2018, pp. 129.
[3] Kiraly S., dan Szekely S. “Analysing RPC and Testing
the Performance of Solutions”. Informatica, vol. 42, pp.
555-561, Sep. 2018. doi.org/10.31449/inf.v42i4.1510
GAMBAR 3
BAGAN PENGUJIAN [4] Dora, S. K., dan Dubey, P. “Software Development Life
Cycle (SDLC) Analytical Comparison and Survey on
V. KESIMPULAN Traditional and Agile Methodology”. National Monthly
Berdasarkan penelitian yang dilakukan mengenai Refereed Journal of Research in Science & Technology,
implementasi arsitektur perangkat lunak microservices pada vol. 2, pp. 22-30, Aug. 2013.
aplikasi Open Library Universitas Telkom menggunakan [5] Surya L. “Systems Development Life Cycle Models”.
gRPC, kesimpulan yang dapat ditarik yaitu terdapat International Journal of Creative Research Thoughts
beberapa cara untuk meningkatkan kecepatan dan (IJRT), vol. 5, pp. 200-204, Oct.
ISSN : 2828-0075