Pada tulisan Integrasi Data, Aplikasi, dan Proses Bisnis: Meningkatkan Efisiensi dan Efektivitas Operasi kita telah membahas terkait integrasi baik itu data, aplikasi, dan proses bisnis beserta permasalahan. Salah satu yang menjadi perhatian adalah bagaimana cara komunikasi baik itu antar data, aplikasi, ataupun proses bisnis untuk mencapai integrasi. Metode komunikasi dalam integrasi sangat penting untuk memungkinkan interaksi yang mulus antara sistem dan aplikasi yang berbeda dalam suatu perusahaan. Metode-metode ini memastikan bahwa data mengalir dengan efisien dan akurat di berbagai komponen, meningkatkan efisiensi operasional dan memungkinkan pengambilan keputusan yang lebih baik. Tulisan ini akan berfokus pada WEB SERVICE sebagai salah satu metode komunikasi dalam integrasi sekaligus menjabarkan karakteristik, fungsi, tipe, dan penggunaannya.
Tulisan ini akan membahas:
- Apa itu Web Service?
- Karakteristik Web Service
- Fungsi Esensial Web Service
- Membungkus Aplikasi Legacy dengan Web Service
- Web Service dan Proses Bisnis yang Kompleks
- Tipe Web Service
- Perbedaan Web Service dengan API
- Perbedaan REST Web Service, REST API, dan RESTful API
- Referensi
- Tulisan Terkait
APA ITU WEB SERVICE?
Web service adalah cara standar untuk mengintegrasikan aplikasi berbasis web menggunakan standar terbuka melalui backbone protokol internet. Web service memungkinkan berbagai aplikasi dari berbagai sumber untuk berkomunikasi satu sama lain tanpa perlu pengkodean khusus yang memakan waktu.
KARAKTERISTIK WEB SERVICE
Karakteristik dari web service adalah sebagai berikut.
- Interoperabilitas: Web service memungkinkan berbagai aplikasi dari berbagai sumber untuk berkomunikasi satu sama lain.
- Loose Coupling: Web service dirancang agar loose coupled, yang berarti setiap layanan dapat berfungsi secara independen.
- Protokol Standar: Web service menggunakan protokol standar seperti HTTP yang memastikan kompatibilitas dan interoperabilitas.
- Platform Independen: Web service dapat digunakan di berbagai platform dan bahasa pemrograman.
FUNGSI ESENSIAL WEB SERVICE
Fungsi esensial dari web service adalah mendukung komunikasi dan pertukaran data antara berbagai sistem dan aplikasi. Web service memungkinkan berbagai fungsi seperti mengakses basis data, memproses logika bisnis, dan melakukan transaksi melalui internet.
MEMBUNGKUS APLIKASI LEGACY DENGAN WEB SERVICE
Aplikasi legacy sering kali kurang fleksibilitas dan interoperabilitas yang dibutuhkan untuk integrasi modern. Dengan membungkus aplikasi ini dengan web service, mereka dapat diakses dan digunakan dengan cara yang lebih fleksibel dan standar, memungkinkan integrasi yang lebih mudah dengan sistem yang lebih baru (TechTarget, 2024).
Contoh yang sangat baik adalah kasus Dollar Rent-A-Car (Cohen, 2017), salah satu perusahaan rental mobil terbesar di dunia. Dollar ingin menciptakan cara bagi mitra bisnis baru untuk mengakses Quick Keys, sebuah sistem reservasi legacy perusahaan. Sebelumnya, Dollar bekerja sama dengan pihak ketiga untuk memberikan akses ke sistem reservasi ini, namun dikenakan biaya setiap kali melakukan reservasi. Dollar juga memiliki antarmuka berbasis web yang terbatas untuk reservasi yang ingin mereka kembangkan.
Setelah meneliti opsi mereka, Dollar menyadari bahwa mereka bisa menghilangkan biaya transaksi, baik untuk mitra bisnis baru maupun saat ini. Caranya adalah dengan membangun antarmuka web service berbasis SOAP untuk aplikasi legacy mereka yang memuat informasi transaksi tersebut. Selain itu, mereka mengubah antarmuka berbasis web baru mereka untuk mengeksekusi permintaan SOAP ini. Solusi web service ini juga memungkinkan Dollar untuk merespons peluang tambahan dengan cepat. Dollar memutuskan bahwa mereka ingin memungkinkan pelanggan untuk membuat reservasi menggunakan perangkat mobile. Perusahaan mampu dengan cepat menciptakan beberapa aplikasi front-end untuk berbagai perangkat mobile yang akan mengubah permintaan menjadi sebuah pesan standar berbasis SOAP untuk Dollar, sehingga terintegrasi dengan mulus dengan web service reservasi yang ada. Dollar mampu dengan cepat mengembangkan satu set aplikasi yang kuat pada berbagai mobile platform.
WEB SERVICE DAN PROSES BISNIS YANG KOMPLEKS
Web service dapat mengelola proses bisnis yang kompleks dengan mengorkestrasikan beberapa layanan untuk melakukan tugas yang terkoordinasi. Pendekatan ini sering digunakan dalam sistem manajemen alur kerja dan proses bisnis, di mana beberapa langkah perlu dieksekusi dalam urutan tertentu (AltexSoft, n.d.).
Negosiasi antara individu adalah proses yang kompleks. Mereka melibatkan proses yang terjadi secara timbal-balik hingga solusi tercapai. Contohnya, interaksi pengguna dengan online shopping jarang dilakukan dalam satu langkah. Interaksi ini dapat melibatkan penjelajahan, membuat sejumlah pilihan, masing-masing dengan opsi terkait (merah atau biru, besar atau kecil, jenis layanan garansi), membuat pilihan akhir dari keranjang belanja, memutuskan pengiriman, dan lain-lain. Ketika “pengguna” yang melakukan interaksi tersebut digantikan oleh aplikasi, urutan permintaan dan tanggapan yang panjang tadi tetap ada. Hanya saja ini akan menjadi bagian dari proses web service. Pengelolaan proses bisnis yang kompleks tersebut dikenal sebagai manajemen alur kerja (workflow management), atau manajemen proses bisnis (business process management). Saat pengelolaan itu diterapkan pada arsitektur web service, maka bisa disebut sebagai orkestrasi web service (web service orchestration) (Cohen, 2017).
TIPE WEB SERVICE
Tipe-tipe web service yang akan diulas pada tulisan ini adalah SOAP, REST, UDDI, dan XML-RPC. Berikut adalah penjabaran dari masing-masing tipe web service.
SOAP (SIMPLE OBJECT ACCESS PROTOCOL)
SOAP (Simple Object Access Protocol) adalah protokol untuk pertukaran informasi yang terstruktur untuk implementasi web service dalam jaringan komputer.
FUNGSI SOAP
SOAP memungkinkan aplikasi yang berbeda untuk berkomunikasi satu sama lain melalui internet, menggunakan XML untuk memformat pesan, dan menggunakan HTTP atau SMTP untuk bernegosiasi dan mentransmisi pesan.
KARAKTERISTIK SOAP
Karakteristik dari SOAP adalah sebagai berikut.
- Platform dan bahasa yang independen: SOAP dapat digunakan dengan bahasa pemrograman dan platform apa pun.
- Standardisasi: Menggunakan XML untuk memformat pesan sehingga memastikan interoperabilitas.
- Ekstensibilitas: Fitur tambahan seperti keamanan dan manajemen transaksi dapat diintegrasikan.
- Dukungan protokol: Bekerja melalui HTTP, SMTP, dan protokol lainnya.
PENERAPAN SOAP
SOAP sering digunakan dalam aplikasi tingkat perusahaan di mana keamanan, transaksi, dan kepatuhan ACID (Atomicity, Consistency, Isolation, Durability) sangat penting. Misalnya, SOAP banyak digunakan dalam layanan keuangan untuk transaksi yang aman (Cleo, n.d.).
REST (REPRESENTATIONAL STATE TRANSFER)
REST (Representational State Transfer) adalah gaya arsitektur yang menggunakan protokol komunikasi tanpa status untuk web service (biasanya HTTP).
FUNGSI REST
REST memungkinkan aplikasi untuk berkomunikasi melalui web menggunakan metode HTTP standar. REST dirancang agar sederhana, ringan, dan skalabel.
KARAKTERISTIK REST
Karakteristik dari REST adalah sebagai berikut.
- Tanpa Status: Setiap permintaan dari klien berisi semua informasi yang diperlukan server untuk memenuhi permintaan tersebut.
- Operasi CRUD: Menggunakan metode HTTP standar (GET, POST, PUT, DELETE) untuk operasi CRUD (Create, Read, Update, Delete).
- Skalabilitas dan Kinerja: REST ringan dan mudah diskalakan.
- Berbasis Sumber Daya: Setiap sumber daya diidentifikasi oleh URI. URI (Uniform Resource Identifier) adalah sekumpulan karakter yang digunakan untuk mengidentifikasi suatu sumber daya tertentu di internet atau jaringan lainnya. URI biasanya mengandung informasi yang dapat dipecah menjadi beberapa bagian seperti skema, lokasi, path, query, dan fragmen. URI sering digunakan untuk mengakses sumber daya melalui URL (Uniform Resource Locator) atau URN (Uniform Resource Name).
PERINTAH HTTP UTAMA REST
Perintah HTTP utama REST adalah sebagai berikut.
- GET: Mengambil data dari server.
- POST: Mengirim data untuk diproses ke server.
- PUT: Memperbarui data di server.
- DELETE: Menghapus data dari server.
PENERAPAN REST
REST ideal untuk aplikasi web dan mobile karena kesederhanaannya dan skalabilitasnya. Misalnya, REST API sering digunakan di platform media sosial untuk memungkinkan pengembang pihak ketiga mengakses data pengguna dan berinteraksi dengan platform tersebut (Cleo, n.d.).
UDDI (UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION)
UDDI (Universal Description, Discovery, and Integration) adalah platform independen berupa registri berbasis XML yang diperuntukkan agar bisnis di seluruh dunia dapat mencantumkan diri mereka di internet.
ELEMEN UDDI
Elemen dari UDDI adalah sebagai berikut.
- Business Registrations: Mencantumkan deskripsi tentang bisnis dan layanan mereka.
- Service Type Registrations: Mencantumkan deskripsi tentang web service dan spesifikasinya .
PENERAPAN UDDI
UDDI digunakan untuk mendaftarkan dan menemukan web service. UDDI menyediakan platform bagi penyedia layanan untuk mempublikasikan layanan mereka dan bagi konsumen layanan untuk menemukan layanan tersebut (Cleo, n.d.).
XML-RPC (EXTENSIBLE MARKUP LANGUAGE-REMOTE PROCEDURE CALLS)
XML-RPC adalah protokol panggilan prosedur jarak jauh (RPC) yang menggunakan XML untuk meng-encode panggilannya dan menggunakan HTTP sebagai mekanisme transportasinya.
FUNGSI XML-RPC
XML-RPC memungkinkan aplikasi yang berbeda untuk melakukan panggilan prosedur melalui internet, menggunakan XML untuk meng-encode panggilan dan menggunakan HTTP untuk mentransportasikannya.
KARAKTERISTIK XML-RPC
Karakteristik dari XML-RPC adalah sebagai berikut.
- Kesederhanaan: Mudah diimplementasikan dan digunakan.
- Platform independen: Dapat digunakan di berbagai platform dan bahasa pemrograman.
- Standardisasi: RMenggunakan XML dan HTTP untuk komunikasi.
PENERAPAN XML-RPC
XML-RPC sering digunakan dalam aplikasi yang lebih sederhana di mana overhead dari protokol yang lebih kompleks seperti SOAP tidak diperlukan. Misalnya, XML-RPC dapat digunakan untuk mengintegrasikan web service ringan dalam proyek skala kecil (GeeksforGeeks, n.d.).
PERBEDAAN WEB SERVICE DENGAN API
Web service adalah jenis khusus dari API yang beroperasi melalui jaringan. Web service sering menggunakan protokol seperti HTTP dan standar seperti XML atau JSON untuk komunikasi. API (Application Programming Interface) sendiri adalah antarmuka yang memungkinkan berbagai perangkat lunak untuk berkomunikasi satu sama lain. API bisa diimplementasikan dalam berbagai cara dan tidak selalu harus menggunakan protokol HTTP atau diakses melalui jaringan.
Sementara semua web service adalah API, tidak semua API adalah web service. Berdasarkan GeeksforGeeks (2021), API dapat diimplementasikan dengan berbagai cara, termasuk:
- Library API. API yang disediakan oleh software library, yang digunakan dalam aplikasi yang berjalan pada local system tanpa memerlukan komunikasi jaringan. Contoh: Math library dalam bahasa pemrograman.
- OS API. API yang disediakan oleh sistem operasi untuk memungkinkan aplikasi berinteraksi dengan sumber daya sistem seperti file system, hardware, dan lainnya. Contoh: Windows API.
- Database API. API yang digunakan untuk berinteraksi dengan database, sering kali menggunakan protokol khusus yang tidak harus HTTP. Contoh: JDBC (Java Database Connectivity).
PERBEDAAN REST WEB SERVICE, REST API, DAN RESTFUL API
REST Web Service, REST API, dan RESTful API pada dasarnya mengacu pada konsep yang sama yaitu menggunakan prinsip-prinsip arsitektur REST (Representational State Transfer) untuk menyediakan layanan yang dapat diakses. Namun, masing-masing istilah menekankan aspek yang sedikit berbeda, yaitu.
- REST Web Service menekankan bahwa layanan tersebut dapat diakses melalui protokol HTTP dan mengikuti prinsip-prinsip REST. Ini sering digunakan untuk menggambarkan layanan yang menyediakan data atau fungsionalitas melalui web.
- REST API menekankan pada antarmuka pemrograman aplikasi (API) yang mematuhi prinsip-prinsip REST. Ini memungkinkan berbagai operasi seperti CRUD (Create, Read, Update, Delete) menggunakan metode HTTP standar.
- RESTful API menekankan pada kepatuhan penuh dan konsisten terhadap semua prinsip REST. Ini menunjukkan bahwa API tersebut dirancang dan diimplementasikan dengan mengikuti praktik terbaik REST secara ketat.
Jadi, pada saat menyebutkan REST API, itu dapat mencakup keseluruhan aspek tersebut, yaitu (1) layanan tersebut dapat diakses melalui HTTP (REST Web Service), (2) API tersebut memungkinkan operasi CRUD dan mengikuti prinsip-prinsip REST (REST API), dan (3) API tersebut dirancang dan diimplementasikan dengan kepatuhan penuh terhadap prinsip-prinsip REST (RESTful API).
PENERAPAN REST API, REST WEB SERVICE, DAN RESTFUL API
Bayangkan kita memiliki sebuah sistem manajemen perpustakaan yang memiliki fungsi untuk mengelola buku dan anggota perpustakaan. Perusahaan menggunaakan REST API yang juga menerapkan REST Web Service dan RESTful API. Berikut ilustrasi beserta contoh yang mencoba menggambarkan perbedaannya.
REST WEB SERVICE
Endpoint: http://libraryexample.com/service/booksOperasi: Mendapatkan Daftar Buku
Request
GET http://libraryexample.com/service/books Accept: application/jsonResponse
[ { "id": 1, "title": "Panduan Pengelolaan PDN", "author": "Budi Ari", "publishedYear": 2020 }, { "id": 2, "title": "Tutorial Ransomware LockBit", "author": "Bren Chiper", "publishedYear": 2021 } ]
REST API
Endpoint: http://libraryexample.com/api/membersOperasi: Membuat Anggota
Request
POST http://libraryexample.com/api/members Content-Type: application/jsonJSON Payload
{ "name": "Budi Ari", "email": "budiari@contoh.com", "membershipType": "Standard" }Response
{ "id": 1, "name": "Budi Ari", "email": "budiari@contoh.com", "membershipType": "Standard", "createdAt": "2023-01-01T12:00:00Z" }
Operasi: Melihat Anggota
Request
GET http://libraryexample.com/api/members Accept: application/jsonResponse
[ { "id": 1, "name": "Budi Ari", "email": "budiari@contoh.com", "membershipType": "Standard", "createdAt": "2023-01-01T12:00:00Z" }, { "id": 2, "name": "Bren Chiper", "email": "brenchiper@example.com", "membershipType": "Premium", "createdAt": "2023-02-01T12:00:00Z" } ]
Operasi: Memutakhirkan Anggota
Request
PUT http://libraryexample.com/api/members/1 Content-Type: application/jsonJSON Payload
{ "name": "Budhi Arie", "email": "budhiarie@contoh.com", "membershipType": "Premium" }Response
{ "id": 1, "name": "Budhi Arie", "email": "budhiarie@contoh.com", "membershipType": "Premium", "updatedAt": "2023-03-01T12:00:00Z" }
Operasi: Menghapus Anggota
Request
DELETE http://libraryexample.com/api/members/1Response
{ "message": "Member with ID 1 has been deleted." }
RESTFUL API
Endpoint: http://libraryexample.com/api/v1/booksOperasi: Membuat Buku
Request
POST http://libraryexample.com/api/v1/books Content-Type: application/jsonJSON Payload
{ "title": "Pembayaran Merana", "author": "Arbu Idi", "publishedYear": 2022 }Response
{ "id": 1, "title": "Pembayaran Merana", "author": "Arbu Idi", "publishedYear": 2022, "createdAt": "2023-01-01T12:00:00Z" }
Operasi: Melihat Buku
Request
GET http://libraryexample.com/api/v1/books Accept: application/jsonResponse
[ { "id": 1, "title": "Pembayaran Merana", "author": "Arbu Idi", "publishedYear": 2022, "createdAt": "2023-01-01T12:00:00Z" }, { "id": 2, "title": "Cara Membayar Tuntutan Ransomware", "author": "Bua Diri", "publishedYear": 2021, "createdAt": "2023-02-01T12:00:00Z" } ]
Operasi: Memutakhirkan Buku
Request
PUT http://libraryexample.com/api/v1/books/1 Content-Type: application/jsonJSON Payload
{ "title": "Pembayaran Merana (Updated)", "author": "Arbu Idi", "publishedYear": 2023 }Response
{ "id": 1, "title": "Pembayaran Merana (Updated)", "author": "Arbu Idi", "publishedYear": 2023, "updatedAt": "2023-03-01T12:00:00Z" }
Operasi: Menghapus Buku
Request
DELETE http://libraryexample.com/api/v1/books/1Response
{ "message": "Book with ID 1 has been deleted." }
PENERAPAN REST API TANPA PENERAPAN REST WEB SERVICE
Terkadang, suatu penggunaan REST API tidak disertai penerapan REST Web Service sehingga akses tidak dilakukan melalui HTTP. Jika suatu REST API tidak dapat diakses melalui HTTP, maka ia tidak mengikuti prinsip REST secara penuh dan tidak dapat disebut sebagai REST Web Service. Dalam konteks REST, penggunaan HTTP adalah elemen kunci untuk memastikan komunikasi yang seragam dan interoperabilitas antara klien dan server.
Misalkan kita memiliki dua API untuk mengakses data buku:
REST API DENGAN HTTP (REST Web Service)
Endpoint: http://library.com/api/booksMetode: GET, POST, PUT, DELETE
Deskripsi: Menggunakan HTTP untuk mengakses dan mengelola data buku.
GET http://library.com/api/books
API TANPA HTTP (Bukan REST Web Service)
Endpoint: tcp://library:8080/api/booksMetode: Tidak menggunakan HTTP
Deskripsi: Menggunakan protokol lain selain HTTP untuk komunikasi.
GET tcp://library:8080/api/books
PENERAPAN REST API TETAPI TIDAK RESTFUL API
Bayangkan kita memiliki sistem manajemen perpustakaan yang memungkinkan operasi CRUD pada data buku. Akan tetapi, sistem ini tetapi tidak sepenuhnya mengikuti prinsip-prinsip REST seperti penggunaan status kode HTTP yang benar, dokumentasi yang baik, dan desain berbasis sumber daya. Hal ini dapat dikatakan bahwa REST API tersebut tidak sepenuhnya RESTful API.
Endpoint: http://libraryexample.com/api/booksOperasi: Membuat Buku
POST http://libraryexample.com/api/books Content-Type: application/json { "title": "New Book", "author": "Author Name" }Operasi: Melihat Buku
GET http://libraryexample.com/api/booksOperasi: Memutakhirkan Buku
PUT http://libraryexample.com/api/books Content-Type: application/json { "id": 1, "title": "Updated Book Title", "author": "Updated Author Name" }Operasi: Menghapus Buku
DELETE http://libraryexample.com/api/books/1
MENGAPA INI REST API TETAPI TIDAK SEPENUHNYA RESTFUL API?
- Tidak Menggunakan Status Kode HTTP yang Benar
Respon terhadap operasi mungkin tidak menggunakan status kode HTTP yang benar untuk menunjukkan keberhasilan atau kegagalan operasi. Sebagai contoh, setiap respon mungkin hanya menggunakan kode 200 OK tanpa memperhatikan konteks, seperti 201 Created untuk POST sukses, 404 Not Found jika buku tidak ditemukan, dan lain-lain. - Desain Tidak Berbasis Sumber Daya
Endpoint untuk memperbarui buku (PUT http://libraryexample.com/api/books) tidak menyertakan ID buku dalam URL, yang seharusnya PUT http://libraryexample.com/api/books/1 untuk meng-update buku dengan ID 1. - Kurangnya Dokumentasi yang Baik
API ini mungkin tidak menyediakan dokumentasi yang memadai untuk pengembang yang ingin menggunakan API. Hal ini akan membuat pengembang untuk sulit memahami bagaimana cara berinteraksi dengan API ini. - Ketidakkonsistenan dalam Penamaan dan Struktur
Penamaan endpoint mungkin tidak konsisten atau tidak sesuai dengan praktik terbaik REST. Misalnya, tidak ada versi kontrol dalam URL (/v1/), yang penting untuk mengelola perubahan API di masa depan.
REFERENSI
- Altexsoft. (n.d.). Web Services: Use Cases and Key Architectures Explained. Diakses pada 30 Juni 2024.
- Cleo. (n.d.). Blog: What Are Web Services? Easy-to-Learn Concepts with Examples. Diakses pada 30 Juni 2024.
- Cohen, E. (2007). Boston University MET CS 782 Module. Modified by Arakelian, M. A., 2019.
- GeeksforGeeks. (2021). What are Web Services?. Diakses pada 30 Juni 2024.
- TechTarget. (2024). web services. Diakses pada 30 Juni 2024.
Tulisan Terkait
- A. Integrasi / Integration
- B. Metode Komunikasi dalam Integrasi - Web Service / Communication Method in Integration - Web Service
- C. Kerangka Kerja Arsitektural / Architectural Frameworks
- D. Sistem Bisnis Perusahaan / Enteprise Business System (EBS)
- E. Intelijen Bisnis / Business Intelligence
Tidak ada komentar: