Secara bahasa Message Queue atau Message Broker dapat diartikan sebagai pesan terputus. Tujuannya, memecah proses pengiriman pesan dari aplikasi kita. Terdapat beberapa platform pendukung fitur ini yakni RabbitMQ, Apache Kafka, dan ActiveMQ (JMS). Dengan fitur ini, pengiriman pesan ke user tidak lagi menjadi synchronous. Artinya pengiriman pesan tidak perlu menunggu proses sebelumnya selesai.
Pentingnya Message Broker
Message broker akan mengubah skema business logic menjadi ‘asynchronous process’. Sebenarnya jika kita ingin menjalankan proses bussines logic dalam aplikasi secara synchronous tidaklah akan menjadi masalah, aplikasi akan tetap berjalan selama coding kita tidak error.
Contoh Kasus
Pada artikel ini, kita akan menggunakan contoh kasus pada suatu marketplace. Gambar berikut ini menunjukkan business logic dari suatu marketplace
Proses Order terdiri Authorization, Transaction (Insert Table Order, OrderItem, etc), kemudian send email & send notification. Setiap process berjalan secara berurutan, artinya proses harus menunggu proses sebelumnya selesai. Sayangnya, send email kerap kali memakan waktu yang lama sebab send email menggunakan protokol seperti SMTP/ POP3 dan perlu memanggil service yang lain.
Untuk mengurangi response time, kita dapat memecah proses ketiga dan keempat menjadi satu proses sendiri. Dengan hal ini, waktu pemanggilan service send email dan transaction dapat terjadi dalam waktu yang sama. Artinya, setelah transaction selesai, program hanya perlu mengirim message queue ke message broker. Kemudian Subscriber akan menangkap pesan tersebut dan melanjutkan ke proses selanjutnya. Dengan hal ini, waktu response time dapat meningkat.
Message broker bukan sebatas untuk send email saja. Masih banyak implementasi lain dari fitur ini. Dengan fitur ini, repsonse time akan menjadi lebih bagus. Namun, tetaplah berhati-hati dalam memecah business logic ya. Memecah pada proses yang salah, akan menyebabkan data dalam database kita tidak reliable.
Setelah mengenal fitur ini, semoga fitur ini juga dapat bertengger di aplikasimu ya. Cara menggunakan message broker dengan RabbitMQ akan diupload di artikel berikutnya ya!
Web development semakin berkembang dari waktu ke waktu. Teknologi baru selalu bermunculan setiap harinya. Dari sisi back-end, terdapat dua bahasa pemrograman yang cukup mendominasi yaitu NodeJS dan PHP. PHP yang menjadi tulang punggung duni per-website-an diprediksi akan tergerus NodeJS yang merupakan pemain baru. Mampukah PHP tertap bertahan? Atau justru NodeJs akan berhasil menggantikan PHP?
Pembahasan ini sebenarnya cukup “keramat” untuk diperbincangkan. Meskipun, pada awal kemunculannya Javascript hanya pada sisi front end,lambat laun merambah ke back-end dan menjadi kompetitor tangguh bagi PHP. Terlebih beberapa artikel pergeseran teknologi dari PHP ke NodeJS beberapa kali ter-blow up. Bukan hanya dalam negeri, artikel seperti “Which is better for back-end – PHP or Node js?” , “Is Node js killing PHP?” atau “Is NodeJS eating PHP Market?” sering menjadi topik perbincangan developer luar negeri.
Sebagian orang akan mengganggap hal ini sebagai keuntungan. Tipe-tipe ini biasanya vendor besar yang sering mendapat ‘jatah’ project dari pemerintahan. Namun, tentu saja tidak sedikit yang akan menganggap hal ini menjadi malapetaka, karena project mereka akan otomatis berpindah tangan ke vendor yang lebih mampu. Jelas hal ini sebenarnya konsep yang salah kaprah. Jika ada teknologi baru yang lebih baik, mengapa tidak memilih yang lebih mudah?. Namun, benarkan NodeJS lebih baik dari PHP? Dan apakah PHP akan terus tergerus NodeJS? Sampai-sampai WordPresspun akan berpindah haluan ke NodeJS.
NodeJS VS PHP
PHP merupakan bahasa pemrograman paling umum yang dalam pengembangan webiste. Bahasa pemrograman ini dapat berperan sebagai compiler sekaligus interpreter. PHP pertama kali rilis pada tahun 1995. Saat ini versi terbaru PHP adalah 7.0.16 dan 7.1.2 yang resmi rilis pada tanggal 17 Februari 2017.
Nah, NodeJS sebenarnya bukan merupakan bahasa pemrograman. Jadi, salah jika seseorang mengatakan bahasa pemrograman NodeJs. NodeJS merupakan suatu framework yang akan membawa bahasa pemrograman JavaScript ke sisi back-end. Untuk dapat menggunakan NodeJs kita harus paham bahasa pemrograman.
Dari segi popularitas, NodeJS lebih unggul dari PHP. Sejak 2014 Framework NodeJS merajai kepopuleran bahasa pemrograman dengan angka 49,6% jauh melebihi PHP. Apa keuntungannya? Semakin populer suatu framework maka semakin dokumentasi akan semakin banyak. Hal ini akan mempermudah kita ketika mengalami kendala pengembangan proyek.
Sebaliknya, tingkat pengguna bahasa pemrograman PHP semakin berkurang dari waktu ke waktu. Tingkat penurunan yang terjadipun cukup signifikan yakni mencapai 7% . Di sisi lain , pengguna NodeJS meningkat tajam 18% selama 4 tahun. Dengan ini, terbukti bahwa developer-developer website mulai beralih ke NodeJS
Selama proses development, PHP memerlukan web server. Meskipun server ini merupakan bawaan, namun hal ini akan memakan banyak resource server. Penggunaan servertambahan seperti nginx tetap diperlukan untuk meningkatkan performa kecepatan PHP. Sebaliknya, NodeJS merupakan tipe single-fighter yang mampu berdiri sendiri tanpa memerlukan web server lain. NodeJS memiliki waktu eksekusi yang lebih baik dari PHP terutama dalam penambahan angka. Namun PHP memiliki waktu eksekusi yang lebih baik dalam hal operasi string, pengisian array, MySQL, dan membaca file.
Untuk kasus multi-tasking, NodeJS jauh lebih handal daripada PHP. Misal kita memiliki dua task yakni mengambil data dari database, dan menghapus file. Jika kita menggunakan PHP, proses ini akan dilakukan berurutan. Hapus file akan dilakukan setelah pengambilan data selesai. Namun, jika kita menggunakan NodeJS kedua hal ini dapat dilakukan bersamaan. Hasilnya, bisa jadi file terhapus duluan sebelum pengambilan data selesai.
Hal ini tidak berlaku untuk multithread. NodeJS menggunakan konsep single thread, artinya hanya akan ada satu proses yang berjalan sepanjang waktu, berbeda dengan PHP yang berbasis multi-threaded. Misal terdapat empat orang mengunjungi web kita. Dalam PHP, proses ini dibuat empat thread dimana setiap pengunjung dilayani oleh 1 thread khusus. Setiap thread akan diproses dengan sistem antrian seperti sebelumnya. Sedangkan di Node.js, empat pengunjung itu akan di layani oleh 1 thread saja. Thread secara bergantian berpindah dari satu proses ke proses lain tanpa harus menunggu proses yang satu selesai.
Sampai saat ini, kita belum bisa menyimpulkan bahwa NodeJS akan menggantikan PHP. Penggunaan NodeJS dan PHP sangat bergantung pada jenis aplikasi yang akan kita kembangkan. Pada akhirnya yang terjadi antara NodeJS dan PHP bukanlah kompetisi melainkan sinergi. Sebagai contoh, untuk project yang bersifat real-time, NodeJS lebih cocok untuk dipakai. Sebaliknya, tidak semua hosting mendukung NodeJs, saat itulah kita harus memilih menggunakan PHP.
Unit Testing adalah tes terkecil dalam serangkaian test untuk menguji sebuah fungsi atau kelas pada kode kita. Sebenarnya, beberapa tahapan testing dalam pengembangan aplikasi. Lebih lanjut, pengujian meliputi Unit Testing, Integration Test, Acceptance test, Performance Test, dsb. Unit testing memegang peranan penting pengujian ini. Tujuannya agar software yang telah rilis memiliki kualitas yang lebih baik. Untuk alasan ini, biasanya pengembang library selalu menyertakan unit test. Artikel ini akan membahas bagaimana cara membuat unit testing di PHP dengan PHPUnit.
Unit test akan menjadi kompas dalam pengujian (base case, edge case hingga corner case) . Tanpa adanya unit test, proses pengujian akan memakan banyak waktu. Pada perusahaan besar seperti Gojek dan Grab, unit test adalah suatu kewajiban. Tak jarang mereka merekrut tenaga khusus untuk melakukan pengujian software sehingga aplikasi menjadi lebih secure & reliable
Unit Test ini memiliki kemiripan dengan Integration Test. Keduanya menggunakan tools yang sama, hanya saja pada unit test tidak memperkenankan service-service dari luar. Setiap bahasa pemrograman atau framework memiliki tools berbeda untuk melakukan unit testing ini. Di PHP, salah satu tools yang populer untuk pengujian unit testing menggunakan PHPUnit.
Instalasi PHPUnit
Sebelum anda menginstall PHPunit anda harus menginstall composer terlebih dahulu. Composer ini tidak built-in di PHP, karena itu instalasi dilakukan terpisah. Composer merupakan dependency manager pada bahasa pemrograman PHP. File instalasi dan dokumentasi composer tersedia pada website resminya, https://getcomposer.org/. Proses instalasi composer sama seperti software pada umumnya. Kita hanya perlu double klik pada master instalasi kemudian next sampai finish.
Selanjutnya, buat sebuah folder kosong beri nama “belajar-php-unit”. Kemudian jalankan perintah ini pada Terminal atau CMD bagi pengguna OS windows
composer require phpunit/phpunit
Setelah perintah selesai dijalankan, buka folder belajar-php-unit. Dalam folder tersebut akan muncul tiga file baru yakni composer.json, composer.lock & folder vendor. Nah pada tahapan ini kita sudah berhasil menginstall phpunit.
Membuat Class Baru
Pada tutorial ini kita akan mencoba membuat unit-test pada kelas baru bernama class Matematika. Class Matematika ini adalah library yang kita buat dan akan dipakai oleh kita sendiri atau sendiri atau tim. Kita akan membuat unit test terhadap method yang ada pada class matematika ini.
Buat sebuah file bernama Matematika.php kemudian isikan source code berikut
<?php
class Matematika
{
/**
* @param integer $bilanganBasic
* @param integer $bilanganExponen
*
* @return integer
*/
public static function pangkatBilangan($bilanganBasic, $bilanganExponen)
{
$nilaiSekarang = 1;
for ($i = 1; $i <= $bilanganExponen; $i++) {
$nilaiSekarang = $nilaiSekarang * $bilanganBasic;
}
return $nilaiSekarang;
}
}
Method ini bertujuan untuk mencari hasil perpangkatan dua bilangan. Dalam method ini terdapat empat case yang mungkin terjadi, yakni: 1. Bilangan basic positif, bilangan exponen positif 2. Bilangan basic negatif, bilangan exponen positif 3. Bilangan basic Positif, exponen negatif 4. Inputan berupa string
Selanjutnya buat file test dengan nama MatematikaTest.php, dengan code seperti berikut:
<?php
use PHPUnit\Framework\TestCase;
require_once "./Matematika.php";
class MatematikaTest extends TestCase
{
/*
* Menguji pangkat bilangan positif, positif
*
*/
public function testPositifSemua()
{
$hasilPangkat = Matematika::pangkatBilangan(2, 3);
$this->assertEquals(8, $hasilPangkat);
}
/*
* Menguji pangkat bilangan negatif, positif
*
*/
public function testNegatifPositif()
{
$hasilPangkat = Matematika::pangkatBilangan(-3, 2);
$this->assertEquals(9, $hasilPangkat);
}
/*
* Menguji pangkat bilangan positif, negatif
*
*/
public function testPositifNegatif()
{
$hasilPangkat = Matematika::pangkatBilangan(4, -2);
$this->assertEquals(1 / 16, $hasilPangkat);
}
/*
* Menguji pangkat bilangan input tidak sesuai
*
*/
public function testInputNgawur()
{
$hasilPangkat = Matematika::pangkatBilangan("a", 4);
$this->assertEquals(10, $hasilPangkat);
}
}
Jalankan unit test dengan command:
vendor/bin/phpunit MatematikaTest.php
Hasil eksekusi unit test ini adalah sebagai berikut
PHPUnit 8.5.8 by Sebastian Bergmann and contributors.
..FE 4 / 4 (100%)
Time: 79 ms, Memory: 4.00 MB
There was 1 error:
1) MatematikaTest::testInputNgawur
A non-numeric value encountered
{FOLDER ANDA}/Matematika.php:16
{FOLDER ANDA}/MatematikaTest.php:52
--
There was 1 failure:
1) MatematikaTest::testPositifNegatif
Failed asserting that 1 matches expected 0.0625.
{FOLDER ANDA}/MatematikaTest.php:42
ERRORS!
Tests: 4, Assertions: 4, Errors: 1, Failures: 1.
Kita melihat dari response tersebut, terdapat 4 test dengan 4 assertions, terdapat 1 error dan 1 failure. 1) MatematikaTest::testInputNgawur A non-numeric value encountered
Error ini terjadi karena memberi inputan string pada inputan yang seharusnya integer.
Sedangkan 1 Failure terjadi karena hasil yang salah saat melakukan testPositifNegatif. Dalam kasus 2 pangkat -4, seharusnya menghasilkan 0.0625. Ini tidak sesuai dengan kenyataan dari pemanggilan method tersebut yakni 1. Dengan demikian method tersebut gagal untuk case bilangan positif pangkat negatif.
Contoh kasus diatas merupakan contoh kasus sederhana yang sangat lumrah terjadi dalam pengembangan aplikasi.
Meskipun kode yang dibuat sesuai requirement, terdapat case-case yang tidak berjalan pada proses bisnis yang akan terjadi. Itulah dia, cara membuat unit Testing di PHP dengan PHPUnit
Ketika kamu memilih menjadi seorang programmer, saat itu pula berarti kamu siap mendedikasikan jiwa dan raga untuk menulis kode program selama sisa hidupmu. Kode program akan menjadi bagian terbesar yang mendominasi pikiranmu. Pagi, siang, maupun malam kamu akan menghabiskan waktumu bersama kode program. Biasanya, programmer harus melanjutkan kode program dari programmer lain. Sebuah keberuntungan, ketika kita menemukan kode yang jelas dan terstruktur. Sebaliknya, ketika program yang kita temui “kurang bersahabat”, tentu kita akan kesulitan dalam melanjutkan project tersebut. Menyusahkan bukan? Itulah sedikit alasan mengapa kita harus mengetahui sebuah seni menerapkan “Clean Code”.
Bad Code VS Clean Code
Setiap programmer memiliki ciri khas programnya masing-masing. Ada programmer yang suka menulis kode program dengan jelas. Namun, ada juga tipe programmer yang “penting jalan” tanpa memperhatikan bentuk penulisan kodenya. Kode program seperti inilah yang disebut dengan istilah bad code. Bad code ini akan menjadi nightmare bagi programmer yang akan melanjutkan kode program sebelumnya.
Bad code akan sering ditemui atau bahkan diproduksi sendiri, apalagi ketika sudah mendekati deadline. Tipe menulis asal-asalan ini akan menjerumuskan kita pada bugs yang meningkat. Tak jarang juga kita akan bingung sendiri melihat kode program buatan sendiri. Akhirnya banyak waktu yang akan terbuang untuk fixing bugs ini dan waktu akan makin molor.
Kebalikan bad code disebut clean code. Sebagai seorang programmer baik junior ataupun experienced, cobalah untuk menjadi good programmer. Programmer harus bertanggungjawab atas kode yang ditulisnya. Clean code inilah bentuk pertanggungjawaban ini. Selain kode yang lebih jelas dan terarah, clean code juga mampu mengurangi produksi bugs dan mempercepat software development. Jadi, lebih pilih mana?
Perbandingan Clean Code VS Bad Code (Sumber : Geeks For Geeks)
Clean code akan sangat berguna untuk membut kode kita lebih readable. Potongan kode akan menjadi jelas dan lebih terbaca. Terlebih ketika mengerjakan project secara tim, clean code ini hukumnya menjadi “wajib ‘ain fardhu kifayah”. Percayalah, bad code akan membuat silaturahmi dengan programmer lain menjadi renggang!
Seni Menulis Clean Code
Ada 7 aturan paling umum untuk menulis clean code yang harus kita ketahui
1. Aturan Penamaan
Kesalahan ini adalah kesalahan paling umum terjadi. Biasakan menulis nama variable, fungsi, maupun method secara jelas dan deskriptif. Penamaan ini harus memiliki arti yang sesuai dengan tujuan pembuatan.
2. Aturan komentar
Seringkali kita mengabaikan pemberian komentar pada header program maupun awal fungsi/method. Padahal komentar ini adalah satu-satunya kompas saat kita harus melanjutkan project lama loh. Tuliskan komentar dengan jelas
3. Single Responsibility Principle (SRP)
Setiap fungsi, method, ataupun variable harus secara spesifik bertanggungjawab atas satu pekerjaan. Hindari penggunaan nestedstructure atau maksimal memiliki dua level indent. Jika suatu fungsi dapat melakukan lebih dari satu pekerjaan, fixing bugs akan lebih sulit karena kita akan berhadapan dengan banyak step. Selain itu, usahakan satu fungsi maksimal hanya 3 parameter saja.
4. Readability
Buat kode program menyenangkan untuk dibaca, bahkan untuk beginner programmer. Indentation, whitespace, dan line breaks adalah hal-hal yang harus diperhatikan agar kode program kita selalu terlihat rapi.
5. If
Tuliskan percabangan pada if dengan jelas. Perhatikan contoh berikut
Pada kolom bad code program (kanan) akan mengecek terus menerus walaupun kondisi sudah terpenuhi, sedangkan untuk clean code program (kiri) akan berhenti mengecek jika kondisi sudah dipenuhi.
6. Well-Organized Project
Aturan keenam ini juga merupakan aturan yang tidak boleh terlewatkan. Selama proses pengembangan, kita seringkali menambahkan file ataupun folder ke project yang kita buat. Penataan file yang berantakan seringkali membuat programmer lain kebingungan dengan project kita. Well-Organized Project akan membuat semuanya menjadi jelas dan updating lebih mudah.
7. Hapus kode yang Tidak diperlukan
Selama trial project, tentu kita menambahkan banyak kode untuk mencapai keberhasilan. Mungkin kita akan merasa “sayang” untuk menghapus sisa-sisa perang ini. Biasanya kita hanya akan meng-comment potongan kode ini. Jika hanya sekali dua kali masih tidak begitu terasa, namun bagaimana jika ternyata kita tidak sadar melakukan hal ini pada 300 kelas? Mengerikan bukan? Oleh karena itu, biasakan menghapus kode-kode tidak berguan ini ya. Tapi jangan sampai menghapus potongan kode ini membuat error ya..
Nah, itu dia Sebuah Seni Menerapkan “Clean Code”. Semoga setelah membaca ini kalian hijrah ke jalan yang benar yaa !
Kuliah IT Tapi Gasuka Coding ? Ini Dia Pekerjaan Buat Kamu ! – IT merupakan jurusan yang cukup menjanjikan bagi pelajar yang ingin melanjutkan pendidikan baik dalam jenjang S1 maupun S2. Dengan prospek kerja yang menjanjikan, peminat jurusan ini semakin meningkat dari tahun ke tahun. Jurusan IT tidak terlepas dari kegiatan coding, yakni sebuah kegiatan pengembangan aplikasi dengan menuliskan bahasa pemrograman tertentu. Coding menjadi jiwa sekaligus pintu masuk jurusan IT.
Namun, faktanya banyak loh lulusan IT yang nggak bisa coding. Banyak dari mereka yang kebingungan saat melihat ratusan baris kode. Terlebih banyak sarjana IT yang merasa cukup lelah jika harus ngoding tiap hari. Mereka akan bosan jika setiap hari harus memandang kode pemrograman. Kamu salah satunya? ((Excatly I’am Huhu))
Nah, kabar baiknya ternyata banyak pilihan pekerjaan IT yang tidak membutuhkan skill coding loh. Meskipun minim atau sama sekali tidak memerlukan skill coding, pekerjaan ini masih sangat linear dengan jurusan IT. Apa saja? Check this out!
Kunci aplikasi adalah kemudahan bagi pengguna. Karenanya antarmuka pengguna adalah hal yang sangat penting dalam pengembangan aplikasi. Nah, pekerjaan yang bertanggungjawab atas hal itu adalah UI/UX designer. UI Designer akan membuat tampilan aplikasi yang memudahkan penggunanya, sedangkan UX designer akan membuat pengguna Kembali menggunakan aplikasi yang telah dikembangkan. Sederhananya UI/UX designer hanya bertugas merancang suatu aplikasi, sedangkan bagian pemrograman akan dieksekusi oleh orang lain. Gaji seorang UI/UX Designer bekisar antara 3.5 juta hingga tujuh juta. Tertarik?
Project manager merupakan orang yang bertanggungjawab atas sebuah project. Seorang project manager bertanggungjawab untuk merancang, memantau, dan mengawasi jalannya suatu project. Pekerjaan ini akan ‘menyelamatkanmu’ dari pengkodean teknis. Meskipun demikian, project manager memerlukan pengalaman pengelolaan produk yang cukup substansial. Pekerjaan ini adalah pekerjaan minim code dengan gaji yang fantastis dengan rata-rata Rp 9.5 juta. Bahkan gaji Project Manager ada yang mencapai Rp 55.4 juta. Wow!
Nah, pekerjaan ketiga ini sangat cocok untuk kalian yang memiliki sense of art tinggi. Desainer bertanggungjawab untuk memvisualisasikan informasi dalam bentuk desain. Desainer tidak memerlukan kemampuan coding, namun memerlukan kemampuan Beberapa pekerjaan desainer adalah merancang logo, protoype, hingga desain end-user seperti banner promo. FYI, rata-rata gaji desainer web adalah Rp 4,5 juta. Cukup tinggi bukan?
Kemunculan covid-19 memicu banyak startup berubah haluan pada dunia online. Hal ini membuat business analyst sangat dibutuhkan. Business analyst adalah seseorang yang bertanggung jawa untuk memetakan business problem, kemudian menganalisis informasi penting didalamnya sehingga dapat dimengerti oleh programmer. Business Analyst juga bertanggungjawab untuk mengalinis pasar dan strategi pemasaran product. Meskipun minim coding, pekerjaan ini memerlukan keterampilan coding untuk memudahkan pekerjaannya. Nah, rata-rata gaji seorang business analyst adalah Rp 5.8 juta.
System administrator merupakan pekerjaan yang paling umum diimpikan oleh lulusan IT tapi gasuka coding. Bagaimana tidak, pekerjaan ini hanya berkutat pada setting servers, mencipatkan firewall, atau sekadar membuat dokumentasi dan backup dokumen. Lalu berapa besaran gaji System Administrator? Kaskus.id menyebutkan besaran gaji Rp 10-15 juta
Software Quality Tester (SQT) atau penguji kualitas aplikasi adalah seseorang yang bertanggungjawab atas kualitas aplikasi yang dihasilkan. SQT akan menguji seluruh fitur yang ada dalam suatu aplikasi dan mencari celah bug dalam aplikasi. SQT harus memiliki kemampuan analisis yang baik untuk memperkirakan skenario end-user. Berita baiknya gaji seorang Software Quality Tester berkisar di 6-15juta. Namun, berita buruknya kamu akan di’musuhi’ teman-teman programmer wkwkw
SEO (Search Engine Optimization) specialist bertanggungjawab untuk meningkatkan tingkat visibilitas web pada berbagai platform search engine seperti Google dan Yahoo. Semakin tinggi tingkat visibilitas web maka semakin tinggi pula traffic pengunjung pada web. SEO bertugas riset kata kunci, bekerja dengan tim penulisan konten untuk emastika mereka mengikuti standar SE, sampai melakukan analisis analitik. Gaji SEO specialist bisa mencapai RP 4-7 juta
Technical Writer adalah bentuk ‘pelarian’ programmer yang sudah bosan coding tiap hari. Pekerjaan ini menggabungkan kemampuan writing dan pengalaman coding. Tugas seorang technical writer adalah membuat konten mengenai pengembangan perangkat lunak. Namun, technical writer juga dapat bertugas untuk menulis dokumentasi sebuah project. Technical writer biasanya memiliki gaji Rp 3.8 juta perbulan
Nah itulah pekerjaan IT bagi kalian yang gasuka coding. Kamu pilih yang mana? Meskipun demikian, skill coding tetaplah penting bagi lulusan IT yaa. Sampai jumpa pada artikel selanjutnya. Salam#HappyEnjoyneering !
Note :
Besaran gaji tetap bergantung pada daerah masing2 ya.
Kami menggunakan cookie untuk memastikan bahwa kami memberi Anda pengalaman terbaik di situs web kami. Jika Anda terus menggunakan situs ini, kami menganggap Anda puas dengan situs ini.Ok