Perbandingan Web Service SOAP antara Java EE vs PHP


Pada artikel Membuat Web Service SOAP dengan PHP Dan Memanggilnya Di Client Java, saya membuat web service dengan menggunakan PHP di  Zend Server Developer Edition.

Pada artikel Memanggil web service dari server Java EE di client PHP, saya membuat web service dengan menggunakan Java EE di GlashFish.

Kedua artikel tersebut membuat sebuah operasi yang sama sederhananya, yaitu operasi penjumlahan.   Hal ini menimbulkan sebuah rasa penasaran, mana yang lebih ‘baik‘ diantara keduanya?  Pengertian lebih ‘baik‘ disini bisa menjadi rancu bila tidak didefinisikan dengan jelas, apakah mengacu pada kecepatan, konsumsi sumber daya, stabilitas, kemudahan pengembangan atau yang lainnya?  Selain itu, walaupun terlihat seperti membandingkan Java dan PHP, tetapi banyak faktor lain yang terlibat, seperti sumber daya (CPU & memori) di komputer pengujian dan server (web server & application server) yang dipakai.   Misalnya, pada server produksi, banyak yang memakai PHP bersama dengan server NGIX yang cepat, sementara pada dunia akademis & pembelajaran, banyak yang lebih suka memakai PHP bersamaan dengan Apache HTTP Server (XAMPP, misalnya).

Untuk melakukan perbandingan, saya akan memakai Apache JMeter (http://jmeter.apache.org/).  Test plan yang saya buat dapat dilihat pada gambar berikut ini:

Test Plan JMeter

Test Plan JMeter

Pada konfigurasi tersebut saya membuat dua thread group yang berbeda, untuk pengujian PHP dan untuk pengujian Java.  Setiap thread group memiliki sebuah sampler yang sama yaitu WebService (SOAP) Request.  Walaupun mengakses server yang berbeda, kedua sampler tersebut akan mengirimkan SOAP Request yang sama, yaitu:

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Header/>
  <S:Body>
    <ns2:tambah xmlns:ns2="http://webservice.jocki.id.co/">
      <angka1>12</angka1>
      <angka2>12</angka2>
    </ns2:tambah>
  </S:Body>
</S:Envelope>

Agar tidak membebani kedua server, saya menambahkan sebuah constant timer dengan delay sebesar 100 ms pada setiap thread group, sehingga akan ada delay sebelum setiap request dikerjakan.

Saya akan  mulai dengan mensimulasikan 1 user yang melakukan 500 kali setiap request di setiap thread group.  Agar lebih akurat, saya mencoba pengujian yang sama sebanyak tiga kali.  Hasilnya adalah:

1 user thread 500 request – Pengujian 1
Label #Samples Average Min Max Std.Dev. Throughput KB/sec
WebService Java Request 500 5 3 742 33,16 9,0/sec 0,77
WebService PHP Request 500 34 25 2288 101,05 7,5/sec 0,64

1 user thread 500 request – Pengujian 2
Label #Samples Average Min Max Std.Dev. Throughput KB/sec
WebService Java Request 500 3 2 10 0,71 9,2/sec 0,78
WebService PHP Request 500 27 25 60 4,54 7,9/sec 0,67

1 user thread 500 request – Pengujian 3
Label #Samples Average Min Max Std.Dev. Throughput KB/sec
WebService Java Request 500 3 2 8 0,61 9,2/sec 0,78
WebService PHP Request 500 26 24 58 4,56 8,0/sec 0,68

Hasil percobaan ini menunjukkan bahwa server GlassFish (Java)  memiliki kecepatan yang lebih stabil bila dibandingkan dengan Zend Server Developer Edition (PHP).  Hal ini bisa dilihat dari nilai standard deviation.  Semakin kecil nilainya menunjukkan bahwa variasi kecepatan semakin sedikit (sampel yang ada semakin mendekati nilai rata-rata/average, tidak banyak yang melenceng jauh).  Selain itu, GlassFish memiliki transaksi per detik (TPS) atau throughput yang lebih besar dibanding Zend Server Developer Edition.

Pada percobaan berikutnya, saya akan mencoba mensimulasikan 2 user  yang mencoba mengakses server secara hampir bersamaan (concurrent).  Hasil pengujian dapat dilihat di tabel berikut ini:

2 user thread 500 request – Pengujian 1
Label #Samples Average Min Max Std.Dev. Throughput KB/sec
WebService Java Request 1000 5 3 661 21,20 17,9/sec 1,52
WebService PHP Request 1000 43 25 6048 250,76 13,6/sec 1,16

2 user thread 500 request – Pengujian 2
Label #Samples Average Min Max Std.Dev. Throughput KB/sec
WebService Java Request 1000 3 2 27 2,53 17,9/sec 1,53
WebService PHP Request 1000 30 25 59 5,49 14,9/sec 1,27

2 user thread 500 request – Pengujian 3
Label #Samples Average Min Max Std.Dev. Throughput KB/sec
WebService Java Request 1000 3 2 29 2,69 17,9/sec 1,52
WebService PHP Request 1000 30 25 71 4,97 15,0/sec 1,27

Hasil ini tidak berbeda jauh dengan pengujian sebelumnya dimana GlassFish (Java) memiliki nilai stabilitas dan throughput yang lebih besar dibanding dengan Zend Server Developer Edition (PHP).

Perihal Solid Snake
I'm nothing...

8 Responses to Perbandingan Web Service SOAP antara Java EE vs PHP

  1. Gabriel Purba mengatakan:

    Wow.. pak sepertinya sangat memahami SOA ya.

    • Solid Snake mengatakan:

      Tidak, selama ini saya tidak pernah terlibat dengan SOA dan artikel yang ada tidak membahas SOA, hanya web services sebagai “remoting service”. Kebetulan saat awal mempelajari Java, saya tertarik dengan bidang “pemanggilan jarak jauh” (saat itu RMI, CORBA, EJB, dsb).

  2. Gabriel Purba mengatakan:

    Masi mahasiwa kah?

  3. Gabriel Purba mengatakan:

    Kok gak ada profil nya mas?

  4. Ping-balik: Mengakses Web Services Dari Aplikasi Java Micro Edition (Mobile) « The Solid Snake

  5. Vikar Adie mengatakan:

    mohon info nya untuk cara akses webservice tanpa wsdl menggunakan java bagaimana?
    thanks.

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: