• Tidak ada hasil yang ditemukan

Pembuatan API Account Interest Rate untuk Modul Microservice Perhitungan Bunga pada PT Anabatic Technologies Tbk

N/A
N/A
Protected

Academic year: 2024

Membagikan "Pembuatan API Account Interest Rate untuk Modul Microservice Perhitungan Bunga pada PT Anabatic Technologies Tbk"

Copied!
23
0
0

Teks penuh

(1)

         

Hak cipta dan penggunaan kembali:

Lisensi ini mengizinkan setiap orang untuk menggubah, memperbaiki, dan membuat ciptaan turunan bukan untuk kepentingan komersial, selama anda mencantumkan nama penulis dan melisensikan ciptaan turunan dengan syarat yang serupa dengan ciptaan asli.

Copyright and reuse:

This license lets you remix, tweak, and build upon work

non-commercially, as long as you credit the origin creator

and license it on your new creations under the identical

terms.

(2)

BAB III

PELAKSANAAN KERJA MAGANG 3.1 Kedudukan dan Koordinasi

Sesuai dengan Gambar 2.2, kedudukan yang diberikan pada saat magang adalah sebagai back-end developer di bawah departemen Product Research &

Development Center dalam divisi System Development Center dan sub-divisi System Development bersama dengan 3 mahasiswa magang lain. Proyek modul microservice perhitungan bunga berada dalam pengawasan Bapak Trias Fikriansyah selaku Head of System Development serta pembimbing magang dan Ibu Rahajeng Iga Titisari selaku Project Manager. Pengerjaan project dibimbing oleh Bapak Heri Purwanto dan Bapak Taufik Muliahadi sebagai Team Lead serta mentor. Quality Control dilakukan oleh Ibu Dhani Fatima Rahmawati selaku Tester dalam proyek ini.

Dilakukan beberapa cara koordinasi saat mengerjakan proyek sebagai berikut.

1. Pertemuan tatap muka terhadap semua anggota terlibat pada awal memulai proyek untuk menjelaskan target-target dalam proyek ini.

2. Komunikasi melalui Skype untuk Daily Scrum meeting dan untuk berkomunikasi.

3. Pemberian Task dilakukan melalui aplikasi Redmine.

4. Rapat dalam ruang rapat untuk melakukan Sprint Review.

(3)

3.2 Tugas dan Uraian Kerja Magang 3.2.1 Tugas Kerja Magang

Dalam pelaksanaan praktik kerja magang, tugas utama yang dilakukan adalah membuat API Account Interest Rate pada microservice perhitungan bunga menggunakan bahasa pemrograman Java. Tabel 3.1 menunjukkan pekerjaan mingguan yang dilakukan selama pelaksanaan praktik kerja magang berlangsung.

Tabel 3.1 Pekerjaan Mingguan Minggu

ke-

Jenis Pekerjaan yang Dilakukan

1 Mempelajari Spring, Spring Boot, PostgreSQL, Spring Security, Hibernate JPA, JPA Annotation, Hibernate Query Language

2 Membuat RESTful web service menggunakan semua yang telah dipelajari

3 Menambahkan Hibernate JPA Entity Manager Configuration dan Spring AOP

4 - Mempelajari MongoDB, Apache Karaf, Morphia.

- Mengubah Repository menjadi DAO, Konfigurasi Blueprint agar dapat diakses.

- Mencoba Log4j dan Log4j2

5 -Merapihkan kode dengan SonarLint -Start Development Interest Management

6 - Membuat Basic CRUD RESTful web service untuk Interest 7 - Membuat Blueprint untuk di deploy pada Apache Karaf 8 - Membuat Metode getClientId dan CodeAccount

- Membuat Custom Update 9 - Membuat Junit testing

- Bug fixing 10 - Bug fixing

- Dokumentasi Field Matrix dan Data Dictionary

3.2.2 Uraian Kerja Magang

Praktik kerja magang dimulai dengan pelatihan bahasa pemrograman dan tools yang akan digunakan selama praktik kerja magang berlangsung. Pelatihan

(4)

diminta untuk membuat sebuah program sederhana dengan menggunakan materi yang sudah diberikan oleh pembimbing magang. Lalu diberikan lagi sebuah tantangan untuk melihat apakah peserta benar-benar menguasai apa yang sudah dipelajari. Tantangan berdurasi satu minggu. Pada minggu keempat, diberikan tugas untuk melakukan bug fixing untuk proyek microservice Audit Aktifitas User dengan menggunakan MongoDB, Apache Karaf dan Morphia. Ketika menggunakan Apache Karaf. Pada minggu kelima dimulai proyek untuk membuat microservice untuk Perhitungan Bunga yang dimana menjadi proyek utama yang dikerjakan dengan menggunakan Java sebagai bahasa pemrogramman. Apache Karaf sebagai runtime environment, Postgres SQL sebagai database dan Hibernate 5 sebagai framework. Pembuatan CRUD RESTful webservice sederhana dilakukan sesuai dengan database yang diberikan. Konfigurasi blueprint dilakukan untuk menghubungkan satu java package ke package yang lain. Materi yang diberikan untuk pelatihan magang adalah sebagai berikut.

Tabel 3.2 Materi Pembelajaran Installation

Installation development environment (JDK, Tomcat, Eclipse)

- Member can install JDK

- Member can install and running Apache Tomcat

- Member can configure java configuration (heap size) on tomcat environment

- Member can install Eclipse

- Member can create one simple web archetype project

- Member can add new tomcat server - Member can cofigure jvm configuration and running simple web project

(5)

Tabel 3.2 Materi Pembelajaran (Lanjutan) (maven sysntax)

- Member can install Git Repository Tools

- Member understand how to use git tools Postgres installation (Connect to

DB, DDL execute)

- Member can install Postgres SQL tools - Member understand how to use

pgAdmin

- Member can execute simple DDL sysntax

JAVA Component

Java fundamental example - Member understand about Class, variable, and method on JAVA - Member undestand about data types, and operators on JAVA

- Member understand abour conditional and looping on JAVA

Spring Framework (Spring 4)

Simple project using spring - Member can develop one project using spring framework

- Member understand about context configuration using XML

- Member understand about context configuration using Java code Advance with spring - Member understand about Spring

depedencies injection

- Member undestand about Spring bean - Member understand about Spring AOP Spring Security - Member understand about how spring

security works

- Member can develop simple application using spring security using XML confing - Member can develop simple application using spring security using JAVA config RESTful Web service - Member understand about web service

- Member can develop simple project using rest

Hibernate Framework (Hibernate 5)

Simple project using hibernate - Member can develop one simple project using hibernate

- Member understand about configuration hibernate using XML

- Member understand about configuration hibernate using JAVA

(6)

Tabel 3.2 Materi Pembelajaran (Lanjutan)

Hibernate JPA - Member understand concept about Hibernate JPA

- Member can configure entityManager for Hibernate JPA

- Member understand abour data accessing using Hibernate JPA - Member understand how JPA Annotation work (ex @OneToMany,

@ManyToOne, etc) (develop simple case using them)

Hibernate Query - Member understand about Hibernate Query Language

- Member undestand how SQL native work on Hibernate framework

- Member can develop some report using SQL Native

Proyek dikembangkan dengan kerangka kerja scrum dimana peserta magang diberikan batasan waktu yakni dua minggu untuk pengembangan proyek yang disebut sprint. Pada akhir sprint akan dilakukan sprint review dimana peserta magang akan mempresentasikan pekerjaan yang telah dilakukan dan merencanakan pekerjaan yang akan dilakukan pada sprint berikutnya. Daily scrum meeting dilakukan setiap pukul 10.00 pagi dimana peserta magang melaporkan target peserta setiap hari. Daily scrum meeting dilakukan melalui aplikasi Skype.

Proyek yang dikerjakan selama masa magang merupakan sebuah modul microservice untuk Perhitungan Bunga pada API Account Interest Rate. Proyek dikembangkan dengan metode RESTful web service yang bertujuan agar modul ini dapat diakses oleh platform manapun. Modul microservice untuk Perhitungan Bunga terdiri dari tiga API yaitu Base Interest, Interest Parameter dan Account Interest Rate. Modul microservice untuk Perhitungan Bunga adalah sebuah bundle yang terdiri dari tiga proyek Java yaitu persistence, service, dan end-point.

(7)

A. Struktur Tabel

Tabel 3.3 menunjukkan struktur dari tabel dari entity Account Interest Rate.

Kolom id merupakan primary key yang dimiliki oleh tabel Account Interest Rate.

Kolom client_id merupakan id dari client yang akan di auto-generate ketika data di input_code_account merupakan kode dari akun client dan akan di auto-generate dari sistem. Kolom interest_parameter_id merupakan foreign key dari tabel Interest Parameter yang dikerjakan oleh peserta magang lain dan memiliki relasi many to one dimana satu Interest Parameter dapat memiliki beberapa Account Interest Rate.

Kolom minimum level merupakan jumlah uang minimum yang boleh di input dan kolom maximum sebaliknya. Sign digunakan untuk membedakan apakah client mendapatkan potongan atau tambahan dari rate. Spread merupakan rate dari bunga client.

Tabel 3.3 Struktur Tabel entity Account Interest Rate

No. Nama Field Tipe Data Keterangan

1 id bigint PK ID tabel

2 client_id varchar2 ID client

3 code_account varchar2 kode akun

4 interest_parameter_id bigint FK interest_parameter

5 minimum_level bigint batas level minimum

6 maximum_level bigint batas level maximum

7 sign varchar2 tanda(+/-)

8 spread numeric decimal(5,2)

(8)

B. Flowchart

Gambar 3.1 menggambarkan flowchart dari API Account Interest Rate.

Dimulai ketika program menerima input HTTP request dari client. Terdapat dua tipe request method yang diterima oleh program yaitu method GET dan POST.

Method GET digunakkan hanya untuk mengambil semua data yang ada pada tabel accountInterestRate melalui fungsi getAllData. Method POST digunakan untuk fungsi insert, update, getById dan getData.

Gambar 3.1 Flowchart API Account Interest Rate

Pada fungsi insert dan update terdapat validation check untuk mencegah adanya input yang tidak sesuai dengan persyaratan validasi. Persyaratan yang diperlukan dalam validasi adalah semua field input harus lengkap, format penulisan

(9)

input, dan apakah input berada dalam database. Jika fungsi tidak berhasil melewati validation check maka sistem akan mengembalikan error message berupa message, status code dan status text dari masalah yang didapat. Pada fungsi getById dan getData jika data tidak ditemukan, maka sistem akan mengembalikan error message.

C. Implementasi C.1 Pembuatan Kode

API Account Interest Rate adalah salah satu dari tiga API yang berada dalam modul microservice Perhitungan Bunga. API ini dikembangkan dengan menggunakan bahasa pemrograman Java. Diimplementasikan menggunakan RESTful web service yang menggunakan database PostgreSQL dan menggunakan framework Hibernate 5. Hibernate 5 digunakan untuk mempermudah pemetaan model object-oriented ke dalam database. Apache Maven 4.0.10 digunakan sebagai runtime environment dimana tiap java package akan di compile menjadi file bertipe data .jar, dan tiap jar akan dihubungkan melalui blueprint. Blueprint merupakan sebuah file XML yang bertujuan untuk mengarahkan alur program agar saling terhubung. Kode disimpan dalam git agar proyek dapat dikerjakan secara bersamaan dengan peserta lain. Unit testing menggunakan JUnit 4.11 dilakukan untuk menguji apakah code dapat digunakan semua ketika program berjalan.

Manajemen proyek dilakukan menggunakan Redmine. API Account Interest Rate memiliki tiga bagian yaitu persistence, service dan end-point.

(10)

Persistence merupakan tempat dimana model object-oriented berada, dan juga DAO. DAO merupakan singkatan dari Data Access Object dimana proses database dilakukan. Bagian persistence juga memiliki proses enumeration dimana syarat-syarat validasi dibuat.

Service merupakan penghubung antara persistence dan end-point dan saat melewati bagian ini, semua data akan dimasukkan ke dalam Data Transfer Object(DTO). DTO merupakan fungsi untuk menampung input dari end-point dan input akan diperiksa validasinya. DTO akan memeriksa input satu per satu dan jika ada salah satu input dari pengguna tidak lulus validasi, maka tidak akan diteruskan ke dalam persistence dan akan mengembalikan error message kepada end-point.

End-point merupakan bagian dimana API berada. Pada bagian ini, API menerima input dari client berupa method GET atau POST, dan request body berupa JSON. Input akan dimasukkan ke dalam DTO untuk diperiksa validasinya.

Jika validasi tidak berhasil, maka bagian end-point akan meneruskan error message dari service ke client. Jika validasi berhasil dan proses pada persistence berhasil, maka bagian end-point akan mengirimkan data sesuai yang diminta dan status message 200 OK.

Ketika program dikerjakan, semua fungsi yang berada bagian persistence dan service dibuatkan unit testing. Unit testing dilakukan untuk untuk melihat apakah masing-masing fungsi akan berjalan sesuai dengan yang seharusnya bukan hanya ketika fungsi berhasil dijalankan, tetapi jika terjadi kesalahan pada format input dan apakah validasi berhasil dilakukan.

Ketika program telah selesai, dilakukannya dokumentasi menggunakan Javadoc untuk menjelaskan apa yang dilakukan dalam setiap class dan setiap

(11)

fungsi, apa saja parameter input dan output fungsi tersebut. Dokumentasi class ditulis pada bagian atas class, dan dokumentasi fungsi ditulis pada bagian atas fungsi dalam interface. Juga dilakukan code quality check dengan menggunakan SonarQube untuk memastikan bahwa program memiliki koding yang out of date.

C.2 Implementasi getAllData

API getAllData merupakan fungsi untuk menampilkan semua data dari database Account Interest Rate dalam bentuk JSON. Ketika menggunakan fungsi getAllData, pengguna tidak perlu untuk memasukan apapun ke dalam request body karena menggunakan method GET dimana sistem tidak akan membaca request body. Gambar 3.2 merupakan response dari sistem ketika method GET dipanggil.

(12)

C.3 Implementasi getById

API getById merupakan funsi untuk memanggil data sesuai dengan id yang dipanggil. Fungsi ini memiliki metode POST dan memiliki request body berupa id.

Ketika id yang dicari tidak ditemukan, maka sistem akan mengeluarkan error message. Jika berhasil, maka sistem akan mengembalikan JSON sesuai dengan id yang diminta. Gambar 3.3 menunjukkan request body dari metode getById.

Gambar 3.4 menunjukkan ketika id yang dicari tidak ditemukan. Gambar 3.5 menunjukkan ketika id berhasil dicari.

Gambar 3.3 Input Get by Id

(13)

Gambar 3.4 Error Message Get by Id

Gambar 3.5 Response Body Ketika Id Ditemukan

(14)

C.4 Implementasi getData

API getData merupakan fungsi untuk memanggil data sesuai dengan clientId dan codeAccount dimana clientId dan codeAccount yang sama dapat memiliki beberapa Account Interest Rate. Fungsi ini memiliki metode POST dan request body berupa clientId dan codeAccount. Gambar 3.6 menunjukkan request body dari getData. Gambar 3.7 menunjukkan ketika tidak ada data pada database yang sesuai dengan clientId dan codeAccount yang dicari. Gambar 3.8 menunjukkan response body ketika data yang sesuai dengan clientId dan codeAccount ditemukan dan dapat dilihat bahwa clientId dan codeAccount ini memiliki id dari Account Interest Rate yang lebih dari satu.

Gambar 3.6 Request Body Get Data

(15)

Gambar 3.7 Error Message Get Data

Gambar 3.8 Response Body Get Data

(16)

C.5 Implementasi Insert

API insert merupakan fungsi untuk memasukkan data yang baru ke dalam database menggunakan metode POST. Data yang dimasukkan berupa JSON dari semua parameter dari tabel Account Interest Rate. Pada Gambar 3.9 dapat terlihat bahwa ada sebuah array list dalam input. Ini merupakan pembeda antara 1 Account Interest Rate ke Account Interest Rate lainnya. List pertama akan memiliki id kesekian, sedangkan list kedua akan menjadi id kesekian + 1 dan seterusnya.

Gambar 3.10 menunjukkan error message ketika ada salah satu field yang tidak di input ke dalam JSON. Gambar 3.11 menunjukkan ketika id dari Interest Parameter yang di input tidak dapat ditemukan. Gambar 3.12 menunjukkan ketika array list dari rate tidak dimasukkan. Gambar 3.13 meunjukkan ketika data berhasil di input.

Gambar 3.9 Request Body Insert

(17)

Gambar 3.10 Error Message No Input Field

Gambar 3.11 Error Message Interest Parameter Doesn’t Exist

(18)

Gambar 3.12 Error Message Rate

Gambar 3.13 Response Body Insert

(19)

C.6 Implementasi Update

API update memiliki fungsi untuk mengubah data yang sudah ada dalam database. API update menggunakan metode POST dan memiliki JSON yang serupa dengan insert. Ketika update dilakukan, maka data yang sudah ada akan dihapus, lalu akan dibuat baru sesuai dengan request body. Gambar 3.14 menunjukkan request body untuk update. Gambar 3.15 menunjukkan error message ketika ada salah satu field yang tidak di input ke dalam JSON. Gambar 3.16 menunjukkan ketika id dari Interest Parameter yang di input tidak dapat ditemukan. Gambar 3.17 menunjukkan ketika array list dari rate tidak dimasukkan. Gambar 3.18 meunjukkan ketika data berhasil di update.

Gambar 3.14 Request Body Update

(20)

Gambar 3.15 Error Message No Input Field

Gambar 3.16 Error Message Interest Parameter Id Doesn’t Exist

(21)

Gambar 3.17 Error Message Client Id atau Code Account Tidak Sesuai

Gambar 3.18 Response Body Update

(22)

3.2.2 Kendala yang Ditemukan

Adapun kendala yang ditemukan ketika menjalani proses kerja magang di PT Anabatic Technologies Tbk. Kendala yang dimaksud adalah sebagai berikut.

1) Berhentinya proses pengerjaan proyek dikarenakan tidak menemukan dokumentasi atau tutorial yang tepat untuk mengkonfigurasi blueprint untuk di- deploy dalam Apache Karaf.

2) Terjadinya konflik ketika ada peserta magang yang meng-update git dengan menggunakan konfigurasi yang berbeda dari yang lain.

3) Terjadinya masalah ketika harus menampilkan getData dimana satu clientId dan codeAccount dapat memiliki banyak Account Interest Rate id.

3.2.3 Solusi Atas Kendala yang Ditemukan

Berdasarkan kendala yang ditemukan, solusi yang ditemukan adalah sebagai berikut.

1) Tim melakukan riset masing-masing mengenai Apache Karaf dan blueprint, dan membuat proyek individu dari tutorial yang ada dalam internet untuk memahami konsep konfigurasi blueprint, melakukan brainstorming bersama dengan tim dan mentor.

2) Dilakukannya rollback terhadap git yang menghilangkan progress pada hari itu, dan membuat peraturan untuk tidak meng-upload koding ke dalam git ketika masih ada error dalam koding dan mengumumkan kepada setiap anggota tim ketika hendak meng-update git.

(23)

3) Membuat DTO untuk menampung data yang diambil dari database. DTO terdiri dari dua bagian yaitu AccountInterestRateDto untuk menampung data clientId, codeAccount, interestParameterId dan rate level, dan AccountInterestRateDetailDto untuk menampung id dari Account Interest Rate, minimumLevel, maximumLevel, sign dan spread. Dimana AccountInterestRateDto memanggil AccountInterestRateDetailDto sebagai array list.

Referensi

Dokumen terkait