UTAMA
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Beragam Jenis Application Server
Beragam Jenis Application Server Noprianto Di dunia server, kita tidak hanya mengenal web server untuk melayani web, ftp server untuk melayani transfer file, atau database server untuk melayani kegiatan simpantampil data.
D
i level yang lebih tinggi, yang melibatkan banyak komponen dan lebih berhubungan dengan solusi ke pengguna, kita mengenal application server. Application server pada awalnya memang terkesan membingungkan, namun, memiliki peranan penting dalam penyelenggaraan solusi level enterprise di dunia TI. Bagaimana caranya ketika Anda ingin menghadirkan solusi enterprise untuk inventory perusahaan misalnya? Yang tidak hanya melibatkan pencatatan barang, barang masuk keluar, dan hal-hal sederhana lain yang bisa dikerjakan dari sistem operasi MS DOS dan hanya dapat pula dilihat dan dikerjakan dalam satu mesin? Anda ingin solusi yang lebih. Solusi berbasis web, lengkap dengan web service dan melibatkan penggunaan database yang lebih kapabel misalnya? Sebagian besar pengembang akan meluncurkan satu dua tenaga TI untuk membangun web server Apache, mengonfigurasi modul-modul yang diperlukan Apache untuk melayani berbagai embbeded engine yang diperlukan seperti PHP, Python, atau Perl. Setelah semuanya selesai dan Apache siap melayani, satu dua tenaga TI tersebut kemudian dikerahkan untuk membangun database system. Mungkin MySQL, atau post-
34
INFOLINUX 05/2005
greSQL. Berbagai pengaturan pun dilakukan, mulai dari sekedar penyimpanan data sampai pengaturan beberapa aspek keamanan. Setelah web server (plus modul) dan database server siap, pengembang kemudian meluncurkan aplikasi yang telah dikembangkan. Tidak ada yang salah dengan solusi seperti ini. Tidak juga ada yang bermasalah. Semua baik-baik saja. Namun, ketika kita ingin mengembangkan aplikasi lainnya (terutama deployment dilingkungan berbeda), kita akan mulai dihadapkan pada halhal rutin yang berulang seperti pengaturan kembali web server dan database server serta hal-hal low level lainnya. Ini semua pun hanya dari sisi infrastruktur. Bagaimana kalau dipandang dari sisi business logic aplikasi itu sendiri misalnya? Pengembang akan membuat rutin koneksi database sendiri, rutin untuk menghadirkan web service sendiri, serta berbagai hal tetek bengek lain yang seharusnya tidak berhubungan dengan business logic aplikasi itu sendiri. Pengembangan aplikasi akan menjadi terlalu kompleks. Dan, kita masih belum berbicara soal integrasi antaraplikasi. Di sinilah application server berperan. Application server adalah server software yang memungkinkan client untuk mengakses ap-
www.infolinux.web.id
likasi yang diinginkan. Application server akan mengurus semua operasi aplikasi, termasuk koneksi database atau web service. Dari sisi pengembang aplikasi, hal ini jelas memudahkan pengembangan aplikasi. Urusan integrasi antar aplikasi bisa dimungkinkan dengan bantuan application server. Urusan keamanan juga telah diurus oleh application server tersebut. Masalah koneksi database atau sekadar menghadirkan web service juga bukan lagi masalah. Pengembang aplikasi hanya perlu memfokuskan pada solusi yang diinginkan. Di dunia komputer, kita mengenal cukup banyak application server. Beberapa yang terkenal juga berasal dari dunia open source. Di artikel kali ini, kita akan membahas dua application server open source yaitu Jboss dan Zope, beserta beberapa application server lain. Lebih lanjut lagi, kita akan membahas beberapa dasar application server, termasuk keuntungan dan kerugian Anda membangun aplikasi di atas application server. Selamat membaca!
JBOSS APPLICATION SERVER JBoss, Inc adalah salah satu contoh perusahaan open source yang sukses. Dikepalai
UTAMA
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Beragam Jenis Application Server
oleh Marc Fleury, saat ini JBoss, Inc beranggotakan lebih dari 100 pengembang di seluruh dunia, yang memiliki satu tujuan: menghadirkan solusi berbasiskan J2EE (Java 2 Enterpise). Jboss sendiri adalah bagian dari Jboss Group, LLC, sebuah perseroan terbatas yang berbasis di Atlanta. Jboss, Inc sendiri, walaupun memiliki proyek-proyek lain, juga memiliki Application Server. Application Server Jboss adalah application server open source, standards-compliant, dan diimplementasikan sepenuhnya dengan 100% Java murni. Walaupun menawarkan solusi enterprise, Jboss dan pelengkapnya dirilis secara open source. Di kalangan programer Java, Jboss merupakan application server pilihan. Tak heran apabila dalam satu bulan, lebih dari 100.000 pengguna men-download proyek raksasa ini. Jboss tidaklah bekerja sendiri. Jboss sendiri menyediakan JbossServer, EJB (Enterprise Java Bean) Container dan infrastruktur Java Management Extension (JMX). Jboss juga menyediakan JbossMQ untuk messaging service, JbossTX untuk transaksi JTA, JbossCMP untuk CMP Persistance, JbossSX untuk keamanan berbasis JAAS, dan JbossCX untuk konektivitas JCA. Dukungan Jboss untuk komponen web (web component) seperti JSP dan servlet, disediakan melalui layer integrasi abstrak, melalui servlet engine pihak ketiga seperti Tomcat dan Jetty.
Komponen JBoss Elemen kunci di sini adalah JMX. Berkat adanya JMX, developer yang bermain di level infrastruktur bisa mengganti komponen yang tidak diinginkan dengan komponen lain yang JMX compliant. Apabila kita lihat dari apa yang disediakan oleh Jboss dalam arsitekturnya, apa yang diinginkan oleh pengembang Jboss adalah suatu sistem yang sangat modular, dimana para pengembang infrastruktur bahkan bisa membangun modul sendiri dan kemudian mengintegrasikannya dengan engine Jboss. Jboss dalam hal ini berhasil menyediakan J2EE stack. Dan, keberhasilan ini datang dimungkinkan dengan infrastruktur JMX yang luar biasa. Apabila dianalogikan dalam arsitek-
tur komputer, JMX dapat diibaratkan seperti bus data, yang menghubungkan antara CPU, RAM, perangkat IO dan lain sebagainya. Kita dapat mengganti prosesor (CPU) sesuka kita selama prosesor yang kita gunakan sesuai dengan arsitektur komputer tersebut. Kita juga bebas mengganti perangkat IO selama kompatibel dengan arsitektur komputer kita. Begitupun dengan komponen Jboss lainnya. Oleh karena itu, JMX adalah bagian terpenting dalam application server Jboss.
JMX Microkernel Skema arsitektur Jboss application server, yang sekaligus menggambarkan peran JMX disajikan di gambar 1. Bahwa arsitektur JMX menjadi hal yang sangat penting karena komponen harus menuruti standar arsitektur ini adalah benar. Namun, siapa saja bisa membaca standar tersebut sehingga dapat menulis komponen yang standard-compliant. Komponen JMX didefinisikan dalam Java Management Extensions Instrumentation and Agent Specification v1.0 yang tersedia di http://jcp.org/aboutJava/communityprocess/final/jsr003/. Bagi Anda yang ingin mengetahui lebih dalam tentang JMX, dapat membaca buku JMX: Managing J2EE with Java Management Extensions (Juha Lindfors, SAMS, 0672322889, 2002). Lebih jauh lagi, JMX tidaklah hanya menyediakan bus untuk software, namun juga berbagai jenis komponen hardware dan software. Tujuannya adalah integrasi dan interkonektivitas. Dalam bekerja, JMX berhadapan dengan tiga level komponen sebagai berikut: Instrumentation, merupakan resource yang akan diatur. Standar di level ini mendefinisikan apa yang dibutuhkan untuk mengimplementasikan resource yang dapat di-manage oleh JMX. User menyediakan instrumentasi mempergunakan satu atau lebih Mbean (managed bean). Level ini juga menspesifikasikan mekanisme notifikasi. Gunanya untuk mengizinkan Mbean untuk mengomunikasikan perubahan dengan lingkungannya. Level ini datang bersama komponen Mbean, Notification model element, dan Mbean Metadata class. Agent, berfungsi sebagai controller ob-
www.infolinux.web.id
jek-objek instrumentasi. Standar di level ini mendefinisikan kebutuhan untuk mengimplementasikan agent. Agent bertanggung jawab untuk mengontrol dan mengekspos resource yang terdaftar. JMX Agent dapat pula di-host di dalam hardware. Level ini datang bersama Mbean Server dan agent service (objek yang mendukung operasi standar Mbean yang terdaftar di Mbean Server). Distributed service, sebagai mekanisme kerja di mana aplikasi administratif berinteraksi dengan agen dan objek-objeknya. Lebih lanjut, standar di level ini mendefinisikan kegunaan untuk menyediakan interface, keamanan, dan konsolidasi antara agent dan objek-objek yang diatur. Penggambaran hubungan antarkomponen tersebut bisa dilihat lebih lengkap di gambar 2.
JNDI Naming Service Naming service memiliki peran penting dalam Jboss karena menyediakan naming service yang mengizinkan seorang user untuk melakukan pemetaan nama ke objek. Ini adalah maslaah fundamental dalam semua lingkungan pemrograman karena developer dan administrator sama-sama ingin merujuk ke suatu objek menggunakan nama yang umum, sementara lingkungan keduanya berbeda. Analogi naming service yang sangat baik adalah Domain Name System (DNS). Dengan menggunakan DNS, kita dapat mempergunakan hostname untuk merujuk ke host tertentu tanpa harus mengingat alamat IP-nya. JNDI adalah API standar Java yang dibundel ke dalam JDK 1.3 dan versi yang lebih tinggi (javax.naming). JNDI menyediakan interface untuk berbagai service: DNS, LDAP, Active Directory, RMI registry, COS registry, NIS, dan filesistem.
JTA Transaction Service Bicara transaksi, kita akan membicarakan syarat-syarat di dalam transaksi itu sendiri, yang meliputi: Atomic. Transaksi haruslah atomik. Tegasnya, Ya atau tidak. Apabila Ya, maka akan dikerjakan secara keseluruhan.
INFOLINUX 05/2005
35
UTAMA
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Beragam Jenis Application Server
Peran JMX dalam Jboss.
Apabila Tidak, maka tidak. Tidak boleh setengah-setengah. Consistency. Apabila transaksi selesai, maka sistem harus kembali ke status stabil dan konsisten. Isolasi. Transaksi-transaksi yang berbeda harus terisolasi satu sama lainnya. Artinya, detail dalam transaksi yang satu tidak akan tampak pada transaksi lain. Durability. Perubahan yang dibuat selama transaksi akan dibuat persistent pada saat transaksi di-commit. Konsep-konsep tersebut umumnya dikenal dengan singkatan ACID. Transaksi adalah hal yang sangat penting dalam aplikasi yang besar dan serius. Sebagai application server yang mungkin melayani aplikasi bisnis besar, transaksi adalah hal yang super-super penting. Contoh yang paling baik tentang transaksi barangkali adalah transaksi di perbankan. Bayangkan apabila proses transfer uang tidak dalam satu transaksi. Akan ada yang tiba-tiba kaya, dan ada yang tiba-tiba stress karena kehilangan sejumlah uang. Arsitektur JbossTX mengizinkan semua transaction manager yang menggunakan JTA (Java Transaction API) untuk diimplementasikan. Walau demikian, JbossTX sendiri datang bersama transaction manager yang cepat dan digunakan sebagai default.
EJB dan JBoss Arsitektur EJB pada Jboss adalah desain generasi keempat yang datang dengan kemampuan yang sangat modular dengan pendekatan plug-in. Setiap developer yang bekerja pada level infrastruktur bisa mengganti dengan EJB Container lain.
36
INFOLINUX 05/2005
Hubungan antar komponen JMX.
Dengan desain yang sangat teliti, para developer bean dapat mengandalkan Jboss untuk memberikan pelayanan terbaik kepada user.
JMS Messaging Baik di dalam kehidupan sosial ataupun di dalam kehidupan komputer, komunikasi adalah hal yang sangat penting. Tanpa berkomunikasi dengan pihak lain, manusia akan sangat susah untuk bertahan hidup. Sementara, di dunia komputer, komunikasi antaraplikasi kadang kala sangat diperlukan, terutama dalam aplikasi besar yang memiliki banyak komponen. Bisa ‘kan Anda bayangkan kalau Anda membangun aplikasi yang berdiri sendirisendiri dan harus saling bekerja sama? Akan sangat kompleks dan berada di luar konteks aplikasi itu sendiri. Menggunakan Jboss yang mengimplementasikan JMS (Java Message Service) API, aplikasi-aplikasi dapat mengirimkan pesan asinkron kualitas bisnis. Di dalam JMS, pesan tidak dikirimkan langsung ke aplikasi. Pesan akan dikirim ke dalam queue. Dengan demikian, pihak pengirim pesan tidak perlu khawatir apakah pihak tujuan sedang berjalan atau tidak. Demikian juga dengan pihak penerima. Pihak pengirim dan penerima hanya bekerja dengan queue processor. Jboss datang dengan JMS provider yang standard-compliant dengan nama Jboss Messaging, atau JbossMQ.
JCA Connector JCA (J2EE Connector Architecture) adalah API untuk integrasi resource manager yang bertujuan untuk menstandardisasi akses ke resource non-relasional seperti halnya
www.infolinux.web.id
JDBC API bekerja dengan data relasional. Luar biasa. Jboss datang dengan JbossCX framework, yang menyediakan application server architecture extension yang diperlukan untuk penggunaan JCA. Fungsi utamanya adalah sebagai connection pooling dan management extension Mbean untuk melakukan resource-loading ke Jboss Server.
Keamanan pada Jboss Keamanan adalah aspek umum dalam kehidupan, baik dalam kehidupan sosial ataupun dalam kehidupan komputer. Lebih lanjut lagi, sebagai application server untuk melayani dunia enterprise, keamanan adalah hal yang sangat-sangat penting. Dalam aplikasi Anda yang berjalan di Jboss, Anda tentu saja akan melakukan pembatasan resource, yang berbasiskan pada role-based security. Apa yang Anda perlukan tersebut telah disediakan oleh spesifikasi J2EE untuk EJB dan Web component. Jboss datang dengan extension JbossSX, yang menyediakan dukungan untuk rolebased security dan custom based security berdasarkan security proxy layer. Implementasi declarative security model dibangun berbasiskan Java Authentication and Authorization Service (JAAS) login modules and subjects. Singkatnya, Anda bisa membangun aplikasi dengan fokus utama pada business logic aplikasi Anda. Urusan sekuriti (yang sayangnya sering kali tidak menjadi fokus) telah ditangani oleh Application Server. Anda juga dapat mempergunakan SSL bersama Jboss. Jboss mempergunakan JSSE (Java Secure Socket Extension) yang dibundel bersama Jboss dan JDK 1.4.
UTAMA
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Beragam Jenis Application Server
CMP Engine
Catatan khusus: Jetty
Jboss datang dengan Container Managed Persistent (CMP) 2.0 manager dengan nama JbossCMP. JbossCMP sendiri adalah fitur inti dari Jboss.
Jetty adalah web container default untuk Jboss application server mulai dari versi 3.0 sampai 3.2.2. CVS Jboss mengandung fork dari kode Jetty, yang dipresentasikan dengan nama JbossWeb. Sayangnya, karena perbedaan komersial di antara Mort Bay Consulting (pembuat Jetty) dan Jboss Group, developer Jetty tidak dapat lagi memaintain Jetty di dalam Jboss. Sebagai gantinya, proyek Jetty memaintain integrator antara Jboss dan Jetty, sebagai bagian dari rilis Jetty. Demikianlah pembahasan mengenai Jboss application server, sebuah application server yang luar biasa, application server open source yang terbaik yang ada. Proyek ini sangat berharga untuk dipelajari, namun setiap pengguna harus tetap waspada.
Masa Depan Bagi developer yang bukan programer Java, Jboss bukanlah hal yang sederhana untuk dipelajari. Walau, pada dasarnya, jarang ada application server yang mudah untuk dipelajari. Untuk mempelajari Jboss, misalnya, tentu ada investasi yang harus dilakukan. Dan, ini tidaklah kecil. Bagi investor, masa depan adalah hal yang penting. Tentu tidak bijak untuk berinvestasi pada teknologi yang tidak memberikan keuntungan. Lebih lanjut, apakah Jboss cukup berharga untuk diinvestasikan? Apakah masa depan Jboss terjamin mengingat Jboss adalah perusahaan open source? Kita akan melihat satu per satu. Dari teknologi saja, Jboss sudah sangat matang dan saat ini, versi 4 Jboss telah dirilis. Hal ini membuktikan adanya konsistensi dan kontinuitas. Dengan demikian, dari sisi teknologi, Jboss pantas untuk dipelajari. Jboss 4 sudah siap digunakan dan menawarkan fitur-fitur sebagai berikut: Secara resmi sudah disertifikasi sebagai full-compliant terhadap spesifikasi J2EE 1.4. Dukungan penuh untuk J2EE Web Service dan Service Oriented Architecture (SOA). Mendukung Aspect Oriented Programming (AOP) untuk membangun middleware. Integrasi dengan Hibernate, object persistence framework. Dukungan lebih baik untuk clustering dan distributed caching support (datang dengan caching architecture internal yang baru). Dari sisi bisnis, rasa-rasanya kita tidak perlu meragukan Jboss Group. Perusahaan ini bahkan dipuji sebagai salah satu perusahaan open source yang luar biasa. Dari sisi lisensi, kita bahkan tidak perlu khawatir dengan kelangsungan dari proyek ini. Walau demikian, karena besarnya investasi, tentu kita harus tetap membuka mata terhadap proyek ini.
ZOPE APPLICATION SERVER Zope (Z Object Publishing Environment) adalah salah satu application server open source terbaik yang ada. Zope dirilis oleh Zope Corporation, di mana pernah menjadi tempat kerja Guido van Rossum, pencipta Python. Zope dibangun dengan hampir semuanya menggunakan Python dan bagian-bagian yang membutuhkan kecepatan tinggi dibangun dengan bahasa C. Cerita Zope diawali oleh Jim Fulton (Zope Corporation), yang pada tahun 1996 diminta untuk mengajar kelas pemrograman CGI, di mana beliau pada saat itu kurang menguasainya. Setelah mempelajari banyak tentang CGI, beliau menyadari bahwa CGI bukanlah cara yang nyaman untuk membangun aplikasi. Saat itu, CGI digunakan secara meluas karena belum banyaknya proyek yang memudahkan pengembangan aplikasi web. Dalam penerbangan pulang, Jim merancang dan menulis awal-awal dan cikal bakal Zope. Zope Corporation sendiri juga merilis tiga aplikasi open source yaitu Bobo (publishing facility), Document Template (text templating) dan BoboPOS (object database). Semua paket tersebut ditulis dengan Python. Dengan tiga aplikasi open source tersebut, Zope Corporation menulis application server komersial dengan nama Principia. Pada tahun 1998, salah satu investor Zope, Hadar Pedhazur meminta perusa-
www.infolinux.web.id
haan tersebut (yang masih bernama Digital Creations) untuk mengopen-source-kan Principia. Komponen-komponen tersebut menjadi cikal bakal dari Zope. Bagi pengguna application server pada awal-awal kehadiran Zope, Zope bagaikan air di padang gurun. Application server umumnya mahal minta ampun, dan zope yang open source dapat digunakan tanpa membayar biaya lisensi dapat digunakan sebagai alternatif. Sama seperti application server lain, Zope sendiri terdiri dari banyak komponen. Berikut ini adalah komponen-komponen dasar Zope: Zserver. Built-in Web Server yang datang bersama Zope. Web Server ini juga mampu melayani konten Zope melalui FTP, WebDAV, dan XML-RPC. Zope Core. Ini dari Zope. Object Database. Digunakan untuk menyimpan berbagai objek. Relational Database. Zope dapat pula digunakan bersama relational database seperti MySQL, PostgreSQL, Oracle, dan lain sebagainya. FileSystem. Zope dapat pula digunakan untuk bekerja dengan filesistem. Zclasses. Salah satu jenis objek di Zope. Product. Zope memberinama aplikasiaplikasi kecil atau objek-objek yang dibangun Zope sebagai product.
Objek-objek Zope Dalam bekerja, umumnya lebih banyak berurusan dengan objek-objek Zope yang dapat dibagi ke dalam kategori-kategori berikut: Content. Merupakan objek zope untuk menyimpan data, seperti dokumen, gambar dan file. Presentation. Digunakan untuk mengurus hal-hal yang berhubungan dengan tampilan. Zope menyediakan dua objek yang dibisa digunakan untuk mengurus masalah presentasi ini: DTML (Document Template Markup Language) dan ZPT (Zope Page Template). Dalam DTML, kita juga bisa menyertakan logic di samping presentasi. Sementara, menggunakan ZPT, kita hanya bisa mengurus presentasi. Logic. Digunakan untuk menyajikan alur logika aplikasi Anda. Zope mengizinkan
INFOLINUX 05/2005
37
UTAMA
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Beragam Jenis Application Server
developer untuk membangun logic dengan tiga cara: DTML, Python Script dan Perl (hanya sebagai add-on).
Content Objects Secara umum, kita mengenal tiga jenis content object: Folder, File, dan Images. Zope memang membedakan File dan Images. Pengertian folder di Zope sama seperti halnya Folder di filesistem: objek yang mengandung objek lain. Folder di Zope dapat mengandung berbagai objek, termasuk folder itu sendiri. Folder di dalam folder akan membangun struktur aplikasi Anda. Di Zope, struktur sangatlah penting mengingat keamanan sebagian ditentukan dari bagaimana struktur aplikasi Anda. Pengertian file di Zope sama seperti pengertian file di filesistem. File dapat mengandung berbagai jenis data, mulai dari teks sampai binary. Anda bisa menyimpan beraneka tipe file sebagai objek file di Zope. Sementara, Image adalah file gambar di Zope. Image hampir sama dengan objek File, hanya objek Image memiliki cara pengaturan tersendiri untuk mengatur isi gambar.
Pada awalnya, DTML adalah presentation objek utama bagi Zope. DTML sangat sukses ketika digunakan untuk membangun halaman web dinamis, namun gagal ketika kolaborasi dilakukan bersama desainer non teknis. Hal ini disebabkan karena isi dari DTML itu sendiri, yang bagi desainer akan tampak seperti benda aneh. Untuk mengatasi kekurangan ini, ZPT pun dilahirkan. Beberapa pengguna Zope, umumnya agak susah untuk memilih menggunakan DTML atau ZPT. ZPT tentulah lebih elegan, namun lebih susah digunakan oleh pemula. DTML lebih mudah digunakan dan sekaligus juga menyediakan kemampuan untuk membangun logic.Developer yang baru berpindah ke Zope akan mendapatkan betapa mudahnya membangun halaman dinamis dengan DTML. Anda juga bisa mempergunakan DTML untuk menulis HTML yang tidak standar, sementara ZPT mewajibkan standardisasi. Bagi yang ingin mendalami DTML atau ZPT, Anda bisa membaca referensi keduanya yang sangat lengkap.
Logic objecs Presentation Objects Zope sangat menganjurkan para pengembang aplikasi di atasnya untuk membedakan logic dan presentation. Presentation berhubungan dengan penampilan data dan layout. Penampilan umumnya akan dirender sebagai HTML (kadang kala ke XML atau WML). Umumnya, cara yang lebih mudah dalam menghasilkan presentasi adalah dengan mempergunakan DTML. DTML sendiri, seperti telah disebutkan sebelumnya, bisa mengandung presentasi dan logic. Menggunakan DTML, Anda bisa melakukan perulangan, seleksi, mengatur tampilan, dan lain sebagainya. Sintaks yang digunakan sangat mirip dengan HTML. Sementara, Zope Page template mengatur tampilan dan layout dinamis dengan memanfaatkan XML. DTML dan ZPT adalah bahasa-bahasa server side scripting seperti halnya PHP atau JSP. Oleh karena itu, objek DTML dan ZPT akan dijalankan oleh Zope dan dikembalikan ke user sesuai dengan hasil pemrosesan.
38
INFOLINUX 05/2005
Dalam konteks separasi logic dan presentation, objek-objek logic umumnya akan menghasilkan nilai yang dapat diformat oleh presentation object untuk ditampilkan. Pada dasarnya, hanyalah dua jenis logic object yang didukung oleh Zope. Yang pertama adalah Python Script, dan yang kedua adalah External Method. Namun, dengan adanya konsep product di Zope dan banyaknya product yang dibangun untuk bekerja sama dengan Zope, kita mengenal pula product Zope untuk bekerja dengan Perl, PHP dan JSP. Untuk Python Script dan External Method, kedua ditulis menggunakan bahasa Python. Satu catatan tentang Python Script. Nama aslinya bukanlah Python Script, melainkan Script (Python). Nama yang aneh ini disebabkan masalah legal yang tidak mengijinkan pihak Zope Corporation untuk mempergunakan nama Python Script. Namun, di komunitas dan di artikel ini, kita akan mempergunakan istilah Python Script. Bagi Anda yang sangat peduli dengan keamanan, tentunya penggunaan Script
www.infolinux.web.id
seperti Python akan berujung pada masalah keamanan karena memungkinkan akses pada modul-modul python dan filesistem. Untungnya, script python di sini merupakan object yang security-constrained. Semua dibatasi dengan security policy. Anda juga hanya dapat mengakses beberapa modul Python. Dan oleh karenanya, terdapat pembatasan untuk menjaga keamanan. Apabila membutuhkan modul-modul python dan akses ke filesistem, Anda bisa mempergunakan External Method, yang akan dianggap oleh Zope sebagai extension. Satu masalah yang sering sekali timbul adalah selalu mempergunakan external method. Dalam Zope, umumnya kita harus tahan mempelajari cara pemrograman Zope yang benar, sebisa mungkin dengan memisahkan logic dan presentation, serta sebisa mungkin tidak mempergunakan external method untuk sekadar memroses data. Cobalah terlebih dahulu mempergunakan Python Script. Sebenarnya, ada satu lagi logic object yang dapat dipergunakan untuk interaksi dengan relational database, yaitu SQL Method. Namun, objek yang satu ini tidak selalu diperlukan apabila Anda banyak mempergunakan Zope Object Database dan tidak mempergunakan relational database. Zope Object Database (ZODB) adalah object oriented database yang juga merupakan produk Zope Corporation dan digunakan dalam Zope.
Zope Enterprise: ZEO Ketika suatu sistem menerima request lebih banyak dari yang mampu ditangani, maka masalah pun akan terjadi. Server akan menjadi tidak responsif. Oleh karena itu, server yang kapabel haruslah diperhatikan. Kapabel dalam hal ini tidak harus selalu mesin yang super cepat. Kalaupun mesinnya super cepat, namun tidak didukung oleh kemampuan software, mesin tersebut juga akan percuma digunakan. Solusi yang lain adalah dengan mempergunakan banyak server. Namun, Anda harus memperhatikan bahwa server-server yang Anda gunakan harus memiliki informasi yang sama. Object FileStorage yang digunakan oleh Zope tidak dapat digunakan untuk banyak
UTAMA
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Beragam Jenis Application Server
server sekaligus. Data FileStorage Zope dilock oleh server Zope yang berjalan dan tidak dapat diakses oleh server Zope lain. Zope Corporation kemudian membuat tipe penyimpanan lain, yang disebut sebagai Zope Enterprise Object (ZEO). Dengan mempergunakan ZEO, menggunakan banyak server bukanlah masalah. ZEO adalah sistem yang mengijinkan pengguna untuk membagi objek ZODB pada beberapa server Zope. Anda dapat menjalankan beberapa server Zope pada satu sistem, atau pada beberapa komputer untuk mendapatkan fungsionalitas ZEO. ZEO bekerja dalam sistem client/server. Semua client Zope akan terhubung ke sebuah ZEO Storage Server yang tersentral. Semua client yang dimaksud di sini adalah semua Zope server yang akan memanfaatkan ZEO. Pengguna Zope tidak harus selalu mengatur ZEO di lingkungan kerja. Berikut ini adalah panduan-panduan kapan Anda perlu mengatur ZEO: Kecepatan akses yang sudah tidak dapat ditoleransi. Situs web Anda sangat kritikal dan harus nyala terus menerus. Menggunakan ZEO akan memberikan redundancy. Anda ingin mendistribusikan aplikasi Anda dalam lokasi geografis yang berbeda. Anda ingin melakukan debugging aplikasi Zope di server Zope yang lain.
Dengan mempergunakan ZEO, Anda dapat mengatasi masalah single point of failure. Dengan memanfaatkan ZEO, Anda bisa membagi titik kegagalan tersebut ke beberapa komputer. Apabila salah satu komputer gagal, proses dapat ditangani oleh komputer lain yang merupakan client ZEO.
Zope Management Interface Salah satu bagian dari Zope yang sangat berguna adalah hadirnya ZMI, atau Zope Management Interface. Dengan adanya ZMI, kita dapat melakukan browsing pada storage kita seperti halnya Windows Explorer. ZMI adalah bagian dari Zope yang sangat menarik. Selain berfungsi sebagai object explorer, ZMI juga dapat berfungsi sebagai control panel. Anda dapat melakukan banyak hal mempergunakan ZMI. Mulai dari membuat, menghapus, mengedit objek, mengatur product, mengatur keamanan sampai melakukan administrasi Zope. Tampilan ZMI yang menarik membuat mempelajari Zope menjadi semakin menyenangkan. Namun, ada satu kelemahan ZMI akibat dijalankannya dari web browser. Proses pengeditan file akan menjadi hal yang sangat menyedihkan. Sama seperti Anda mengedit mail mempergunakan webmail. Untungnya, kelemahan ini bisa diperbaiki dengan mengassign pengeditan file mempergunakan editor lokal kesayangan seperti Vim. Cara lain yang mudah adalah
ZEO.
www.infolinux.web.id
dengan mempergunakan editor yang FTP/ WebDAV enabled.
Extending Zope Anda dapat meningkatkan kerja Zope dengan membangun produk yang sesuai dengan kebutuhan Anda. Untuk membangun produk Zope, Anda bisa mempergunakan bahasa Python. Untuk contoh produk sederhana, Anda bisa membaca berbagai referensi di Internet. Salah satunya adalah membangun produk minimal yang dapat dibaca di URL
. Penulis menambahkan beberapa hal ke minimal product, yang dapat dibaca di . Anda juga mungkin tertarik untuk mengunjungi produk DebPackage penulis yang dapat digunakan untuk bekerja dengan paket Debian.
Masa Depan Zope Mempelajari Zope merupakan investasi yang tidak kecil. Bagi Anda yang tidak datang dari dunia Python, mempelajari Zope ibaratnya adalah mempalajari hal baru dari awal. Anda perlu memahami konsep Zope, lantas memahami DTML atau ZPT, atau keduanya, memahami python, dan lain sebagainya. Walaupun Python termasuk cukup mudah untuk dipelajari, Zope bukanlah hal yang terlalu mudah. Dari sisi ekonomi, mempelajari Zope tetap harus dipandang sebagai investasi. Apakah mempelajari Zope cukup berharga dari sisi teknologi dan bisnis? Kita akan lihat satu per satu. Dari sisi teknologi, Zope adalah produk yang telah matang. Teknologi didalamnya juga cukup dapat membantu Anda langsung fokus pada solusi. Pada awalnya, perubahan pada Zope cukuplah besar antar rilis. Namun, saat ini, Zope telah berjalan cukup matang dan perubahan yang terlalu radikal diharapkan tidak lagi terjadi. Python sendiri juga merupakan bahasa yang sangat matang (telah dirilis belasan tahun). Jadi, dari sisi teknologi, boleh dibilang aman. Dengan berbagai produk di Zope, Anda bisa mengintegrasikan berbagai komponen bahasa lain. Dengan mempergunakan web service, Anda dapat mengintegrasikan aplikasi Anda dengan subsistem lain.
INFOLINUX 05/2005
39
UTAMA
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Beragam Jenis Application Server
Arsitektur Zope.
Dari sisi bisnis, kita juga bisa mempercayai Zope Corporation. Dengan model lisensinya, kita juga harusnya tidak perlu terlalu khawatir akan kelangsungan produk. Namun, sekali lagi, developer atau perusahaan seharusnya tidak berinvestasi sambil menutup mata.
Catatan khusus: CMS dan produk Zope Zope sendiri memiliki Content Management Framework yang dapat digunakan untuk membangun Content Management System. Saat ini, berbagai CMS telah dibangun diatas Zope dan CMF-nya. Salah satu yang sukses dan sangat terkenal adalah Plone (www.plone.org). Saat ini, plone telah digunakan secara sangat meluas. Sementara, bagi Anda yang ingin membangun produk sendiri, pastikan Anda telah mengamati repository produk Zope. Saat ini, ratusan produk Zope siap Anda pakai atau ubah dan pergunakan sesuai lisensinya. Satu hal yang penting tentang produk: Anda tidak harus membangun produk di atas Zope untuk bekerja dengan Zope dan membangun solusi diatasnya. Anda bisa saja langsung fokus ke aplikasi dengan memanfaatkan produk yang telah tersedia. Demikianlah pembahasan mengenai Zope Application Server. Zope adalah application server yang cukup berharga untuk dipelajari.
APPLICATION SERVER LAINNYA Di dunia TI, kita mengenal sangat banyak application server. Mulai dari produk peru-
40
INFOLINUX 05/2005
sahaan besar sampai application server yang khusus untuk kebutuhan tertentu. Dari dunia open source, kita telah membahas dua yang sangat terkenal. Tentu saja Anda tidak harus menggunakan Jboss atau Zope dalam membangun application Anda. Anda bisa bebas memilih dari sekian banyak application server yang ada. Berikut ini ada beberapa application server lainnya (informasi: theserverside.com). Apache Tomcat. Dikembangkan oleh Apache Group, merupakan free/open source software. Apple WebObject. Dikembangkan oleh Apple Computer. Biaya lisensi adalah US$699 per server. ATG Dynamo. Application server ini sangat mahal: USD 15.000 per CPU. BEA WebLogic. Dikembangkan oleh BEA. Harganya bervariasi, mulai dari US$495 sampai US$17.000, tergantung pada kemampuannya. Borland Enterprise Server. Dikembangkan oleh Borland. Harganya juga sangat mahal: US$12.000 per CPU. Caucho Resin. Cukup populer. Harganya masuk akal: US$500 per server, dan bebas pakai untuk kegiatan nonkommersial. IBM Websphere. Sangat terkenal. Harganya juga sangat bervariasi. Mulai dari US$1778 per CPU sampai US$25.000 per CPU. Macromedia Jrun server. Full license-nya sekitar US$899 per CPU. Novell Extend. Harga untuk developer version-nya cukup masuk akal: US$495 per developer. Harga full license mulai US$5.000 sampai US$10.000. Oracle Application Server 10g. Harganya bervariasi, mulai dari US$5.000 sampai US$20.000. SAP AG Web Application Server. Harga berdasarkan kesepakatan dengan pihak SAP. Sun JS Application server. Harga mulai US$2.000 sampai US$10.000. Enhydra server. Merupakan open source/ free application server. Bisa kita lihat harga yang dibutuhkan untuk menggunakan application server. Di kalangan pengguna dan pengembang application server, terdapat debat yang cukup
www.infolinux.web.id
hangat tentang boleh atau tidaknya/layak atau tidaknya mempergunakan application server open source. Harus diakui, terkadang, proyek-proyek open source tidaklah siap rilis, dokumentasi kurang, lebih mudah berubah, dan lain sebagainya. Namun dari sisi mutu, application server seperti Jboss dan Zope tidaklah selalu kalah dari application server proprietary lainnya. Bahkan, beberapa fitur keduanya cukup inovatif dan kemampuannya juga bisa di andalkan. Keduanya juga dikembangkan oleh perusahaan yang bisa Anda pegang. Apapun pilihan Anda, proprietary ataupun open source, pastikan Anda membuka mata lebar-lebar tentang produk tersebut. Sekali Anda masuk dan berkutat didalamnya, praktis Anda membangun ketergantungan.
PERNAKPERNIK APPLICATION SERVER Sebagai penutup, kita akan membahas beberapa pernak-pernik dari application server, mulai dari apa yang harus diperhatikan sebelum memilih, sampai kerugian mempergunakan application server.
Memilih application server Anggap saja Anda ingin mulai memilih application server karena merasa butuh. Anda ingin menghasilkan aplikasi dan solusi yang lebih terintegrasi tanpa ingin capek-capek memikirkan masalah infrastruktur yang tidak berhubungan dengan business logic aplikasi Anda. Yang pertama harus diperhatikan adalah standar. Apalah application server tersebut mempergunakan teknologi yang tidak standar? Standar tidak harus open source. Sekali lagi, memilih dan masuk ke dalam application server berarti membangun ketergantungan. Application server yang menuruti standar akan lebih tenang untuk digunakan. Yang kedua adalah nama baik produk (dan sekaligus perusahaan). Perhatikanlah track record produk (dan sekaligus perusahaan). Anda tidak ingin menggunakan produk yang dalam lima tahun akan dihentikan, bukan? Yang ketiga adalah kelengkapan komponen. Pastikan setelah Anda membayar biaya
UTAMA
Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
Beragam Jenis Application Server
mahal-mahal (kalaupun open source: biaya training), Anda tidak usah lagi berurusan dengan hal-hal yang tidak penting. Fokus pada solusi yang ingin dihadirkan. Pastikan juga standar, nama baik, dan teknologi komponennya. Yang keempat, pastikan Anda mendapatkan dukungan dari vendor atau komunitas (termasuk dokumentasi dan contoh yang layak). Ini sebenarnya hampir pasti kalau Anda membeli software seharga US$10.000, misalnya. Yang kelima adalah teknologi yang digunakan. Ini berhubungan dengan yang pertama. Namun, di antara beberapa teknologi yang terbuka, yang satu mungkin memiliki masa depan atau kecocokan yang lebih tinggi. Sebisa mungkin, gunakan yang multi-platform. Tentu saja, selain kelima faktor tersebut, pastikan Anda telah mengukur kemampuan dan kapabilitas SDM Anda. Kelima faktor tersebut juga sangat relatif dengan kondisi Anda. Anda mungkin membutuhkan kurang, atau lebih faktor penentu. Pastikan Anda memilih application server setelah yakin betul Anda membutuhkannya. Tidak semua developer membutuhkannya.
umumnya menuntut cara pembuatan aplikasi yang menuruti standar pembuatnya. Dan, sebagian besar developer tidak cukup membaca dokumentasi. Tidak semua developer juga bersedia untuk belajar hal baru lagi. Training mungkin akan disediakan pada awalnya, namun, tidak selalu disediakan sampai waktu kapanpun (untuk perusahaan: tentunya perhatikan juga kalau terdapat karyawan baru, dan belum ada sistem training internal yang baik). Investasi utama tentunya biaya lisensi application server, biaya mesin, dan lain sebagainya. Yang ketiga adalah masalah migrasi. Tentunya Anda tidak langsung memutuskan untuk menggunakan application server ketika Anda ingin membangun solusi-solusi pertama Anda, bukan? Bagaimana migrasi dari application server lain (kalau salah
pilih) atau migrasi solusi-solusi yang selama ini telah Anda bangun? Bagi perusahaan, bagaimana dengan SDM Anda. Siapkan bermigrasi? Ketiga kerugian ini hanya beberapa dari kerugian keseluruhan akibat berpindah platform. Masalah Anda mungkin lebih sederhana, atau bahkan lebih kompleks. Tentu saja, semua kerugian ini tentunya bisa ditangani apabila yakin application server yang Anda pilih akan mampu meningkatkan kemampuan Anda dalam men-deliver solusi. Demikianlah pembahasan rubrik utama kita kali ini. Application server ibaratnya pisau bermata dua. Apabila digunakan dengan benar, akan dapat membantu Anda. Apabila digunakan dengan salah, Application server bisa pula menghambat Anda.
Apa kerugian menggunakan application server? Kerugiannya sebenarnya juga tidak kecil ketika Anda memutuskan untuk berpindah dari cara konvensional ke application server. Dibanding dengan keuntungannya, kerugiannya juga terbilang cukup besar. Yang pertama adalah Anda membangun ketergantungan Anda sendiri. Terutama kalau Anda mempergunakan application server yang tidak standar, atau application server yang mempergunakan teknologi yang cukup aneh (walaupun terkesan memudahkan misalnya). Anda secara otomatis akan menuruti cara memprogram dan lain sebagainya. Kalau versi baru keluar dan Anda tidak (mampu, mau) membeli/mempergunakan versi baru, maka bisa-bisa Anda mengalami kesulitan. Lebih buruk lagi, kalau produk dihentikan atau perusahaan pembuatnya mengalami masalah. Atau hal-hal lainnya. Bisa-bisa, solusi Anda akan susah dikembangkan/diubah lagi. Yang kedua tentunya investasi. Paling tidak, biaya training. Application server
IKLAN PAS FM
www.infolinux.web.id
INFOLINUX 05/2005
41