Middleware

Definisi Middleware


Software that enables communication and management of data in distributed applications. Middleware also defined as "those services found above

the transport (i.e., over TCP/IP) layer set of services but below the application environment (i.e., below application-level APIs).[2] In this more specific sense middleware can be described as the dash (“-”) in client-server, or the -to- in peer- to-peer.[citation needed] Middleware includes web servers, application servers, content management systems, and similar tools that support application development and delivery.


Distributed computing system middleware can loosely be divided into two categories – those that provide human-time services (such as web request servicing) and those that perform in machine-time. This latter middleware is somewhat standardized through the Service Availability Forum and is commonly used in complex, embedded systems within telecom, defense and aerospace industries.


Definisi sendiri, middleware mungkin kurang lebih-nya spt ini:


Software yang difungsikan untuk menjembatani komunikasi antar sistem atau antar human dan sistem. Antar sistem bisa diartikan sebagai suatu lingkungan sistem IT dalam organisasi yang yang terdiri dari banyak sistem yang saling terhubung satu dengan lainnya. 


Sebagai contoh seperti di Sakti ada sistem aplikasi Desktop, sistem aplikasi backend application server. Atau yang sudah model konversi ke Web ada sistem aplikasi web menggunakan Angular, sistem aplikasi ESB dengan Fuse, termasuk sistem aplikasi backend nya. Atau juga contoh kasus sistem aplikasi BKKBN, ada sistem aplikasi PWA utk mobile, sistem CouchDB, sistem aplikasi ESB dg Fuse, sistem aplikasi API dengan Spring Boot, sistem aplikasi queueing dengan AMQ.


Dapat dilihat beberapa sistem yg fungsinya sebagai 'penghubung' diantaranya sistem backend Sakti, Fuse, AMQ dan Spring Boot. Mekanisme komunikasi antar sistem itu yang disebut 'distributed computing'. Inilah yang dimaksud middleware. Begitu juga dengan WebMethod, namun dalam kasus yang kita pelajari lebih spesifik yaitu WebMethod Integration krn WebMethod juga ada beberapa varian lainnya.


Industri software membuat suatu product software yang menjadikan middleware 'mudah' digunakan yaitu dengan fitur-fitur dan model-model solusi yang telah distandarisasi diantaranya dengan automasi dalam bentuk teknologi, framework, pattern, dan template. 


Sebagai contoh teman2 sudah mencoba, misalnya untuk bikin koneksi ke DB tinggal klik - drag dari fitur adapter DB-nya, ngga perlu coding seperti misalnya pake Java. Tentunya masih banyak lagi contoh fitur2 lainnya yg belum dipelajari. Bedakan dengan misalnya pake SpringBoot, yg sebagaian mungkin sdh diautomasi dengan framework-nya tapi mostly tentu coding manual dengan Java.


Lanjut ke definisi Middleware. Setelah dijelaskan secara konsep sekarang secara praktis nya. Seperti sudah dijelaskan implementasi middleware dalam industri software memiliki beberapa kategori, hal ini disesuaikan dengan fungsi dimana fungsi ini memiliki arti luas lebih pada kebutuhan secara arsitektur.


Kenapa kita bicaranya arsitektur? Kembali lagi, kalau kita bicara middleware maka kita bicara lingkungan yang kompleks terdiri dari beberapa sistem yang saling terhubung satu dengan yang lain, dimana sistem-sistem tersebut memiliki karakteristik yang berbeda-beda. Misalnya ada sistem yang berjalan secara transaksional synchronous, ada juga yang secara asynchronous (misalnya untuk sistem notifikasi), ada yg mekanismenya batch berjalan secara skedul, ada yg sifatnya lebih ke data (antar Database), ada yg mekanismenya bulk dg berbasis file, ada yang mekanismenya melalui human interaction (workflow), yg zaman now di era big data muncul istilah data streaming dan event processing (seperti contohnya anda tiba2 data SMS promo paket data gara2 habis transaksi online), dsb.


Kemudian juga bicara protokol komunikasinya, ada yang berbasis Http dengan Rest, ada yg Http SOAP atau Object streaming (binary), ada JDBC, berbasis file FTP, socket, dsb.


Maka kemudian munculah standard industry middleware, berikut beberapa contoh:

1. Enterprise Service Bus yang difungsikan lebih untuk integrasi antar sistem dan sifatnya data transactional one by one

2. Data Integration (ETL) yang difungsikan lebih untuk integrasi data ke database dan sifatnya datanya memiliki volume yang besar dan biasanya memakai mekanisme skedul/penjadwalan misalnya setiap malam hari

3. Business Process Management yang difungsikan untuk menangani interaksi human dengan tingkatan2 dan tahapan2 (workflow)

4. API Management yang difungsikan sebagai gerbang depan akses dari luar (eksternal) sehingga harus dikuatkan di security nya dan pengaturan akses ke internal, API mana yang akan di-call, jadi selain fungsi security juga ada fungsi proxy API. Misalnya yang akses dari external adalah aplikasi mobile atau dari partner, misalnya dari ecommerce Tokopedia mau eksekusi pembayaran melalui bank BCA, dsb.

5. Managed File Transfer yang difungsikan untuk menangani integrasi berbasis file yang tipikal berisi record data dalam volume besar, dan butuh pengolahan data per-record nya.


Perlu diingat lagi, semua contoh standard industri middleware diatas walaupun secara peruntukan atau fungsi arsitektur nya beda tetapi semua sama-sama middleware, artinya posisinya ada di middle atau tetap sebagai jembatan penghubung namun dengan fungsi yang diperuntukan pada area atau kasus yang berbeda. Jadi masing-masing punya solusi spesifik (teknologi, framework, pattern) yang juga beda. Inilah yang disebut dengan best practice, yaitu solusi yang pas sesuai dengan area atau kasusnya.


Namun karena sama2 middleware fitur2nya hampir semua memiliki kemiripan, misalnya masing2 punya fitur orchestration untuk membuat alur service berikut logic-nya, ada data mapping juga untuk modifikasi data yang dipertukarkan, ada adapter juga untuk memiliki protokol komunikasinya yang dipakai jenisnya apa.


Seperti halnya WebMethod juga punya beberapa sub product software nya sesuai standard diatas:

1. WebMethod Integration Server (ESB)

2. WebMethod BPM (Business Process Management)

3. Demikian jg yang lain2 lengkap spt API Management, Managed File Transfer dia namain B2B atau apa tuh.


Lanjut definisi Middleware. Dalam product software Middleware Kita bisa sebut adanya fitur2 atau pada penjelasan sebelumnya merupakan otomasi development yang berupa teknologi, pattern, template, framework sehingga lebih cepat. 


Kita bisa saja bikin software untuk otomasi seperti itu, ini merupakan proses panjang, jadi setiap kita mengerjakan suatu proyek kita buat template2 generik sehingga ketika mengerjakan proyek berikutnya template generik itu bisa dipakai lagi, demikian seterusnya template tersebut di-improve setiap kali mengerjakan proyek maka tentu akan jadi product software yang bisa meng-otomasi development shg jadi cepat.


Nah sekarang kalau di industri software middleware seperti apa kira2 fitur2 standard untuk mengotomasi tersebut? Berikut ini secara sekilas saja:


Mediation/Proxy Service - Untuk mengatur alur service, dari inbound sampai ke end-point terakhir, setiap service tersebut bisa jadi call service Aplikasi A, call service Aplikasi B, call Database utk CRUD atau lookup, Service Data Conversion, dst.


Orchestration - Mirip mediation tapi memiliki pengertian lebih luas karena bisa memasukkan unsur logic, seperti Loop, IF Condition, Sequence, misalnya untuk keperluan pengolahan data dan juga validasi2.


Adapter - Untuk interaksi dengan sistem spesifik seperti Mainframe, SAP, Oracle Finance, AS400. Dengan adapter ini keperluan call function ke sistem2 tersebut dimudahkan / diotomasi, misalnya call routine yg hanya tinggal passing value saja.


Connector - Untuk interaksi dengan protokol komunikasi yang variatif, misalnya Rest, SOAP, Http get/post, Java Object Streaming, berbagai macam Koneksi Database (Oracle, Postgre, MongoDB, dsb.), FTP/SFTP, SMPT, dst.


Conversion - Konversi berbagai macam format data seperti JSON, Object Java (POJO), XML, Swift, EDI, dsb. 


Management - Untuk keperluan admin seperti monitoring, pengaturan2 untuk keperluan tuning/optimisasi (seperti concurrent transaction & Throttling, Thread, Memory Usage), Pengaturan koneksi2 spt Datasource Database, URL FTP, URL SMPT berikut security-nya.


Fitur2 yg saya sebutkan diatas (Mediation/Proxy Service, Orchestration, Adapter, Connector, Management) sebenarnya agak spesifik lebih ke fitur2 standard Middleware dengan kategori ESB yaitu untuk keperluan application integration. Sedangkan yang lain2 spt MFT, BPM atau Data Integration sebagian memiliki fitur2 ESB juga tapi punya fitur2 lain yg tidak ada di ESB krn memang peruntukkannya yang beda2.



Seeburger vendor yang punya product MFT. Diatas ini list fitur2nya. Tapi itu fitur2 lama, dpt dilihat utk Communication nya dia belum punya Rest, tapi skrg sdh support.


Comments

Popular posts from this blog

Sistem Managed File Transfer (MFT) Part 1

User Guide GITLAB for Mandiri MFT