Back to IF4031 Arsitektur Aplikasi Terdistribusi

Topic

Questions/Cues

  • Bagaimana anatomi sistem terdistribusi?

  • Apa itu ‘Service’ dan ‘Adapter’?

  • Peran API dalam service?

  • Beda komunikasi sinkron vs. asinkron?

  • Apa fungsi Middleware?

  • Apa itu RPC & Serialisasi?

  • Beda pola ‘Queue’ vs ‘Topic’?

  • Fungsi ‘Application Server’?

Reference Points

  • Slides IF4031 Hal 14-29

Anatomi Sistem Terdistribusi

Sebuah sistem terdistribusi dapat dilihat dari tiga perspektif:

  1. Fisik: Kumpulan mesin/komputer yang terhubung melalui jaringan.

  2. Run-time: Sejumlah proses software yang berjalan di mesin-mesin tersebut dan berkomunikasi melalui mekanisme Inter-Process Communication (IPC) seperti HTTP.

  3. Implementasi: Kumpulan komponen yang loosely-coupled (tidak saling bergantung erat) yang disebut services. Services ini dapat di-deploy dan di-scale secara independen.

Service, Interface, dan Adapter

  • Service: Komponen utama yang mengimplementasikan kapabilitas tertentu dari sistem. Di dalamnya terdapat business logic. Setiap service yang berjalan disebut instance.

  • Interface: Service menyediakan “pintu” untuk berkomunikasi dengan dunia luar. Ada dua jenis:

    • Inbound Interface: Pintu masuk agar service lain bisa memanggilnya (misal: API endpoint).

    • Outbound Interface: Pintu keluar saat service ini perlu memanggil service lain.

  • Adapter: Komponen yang menerjemahkan komunikasi dari teknologi spesifik (misal: HTTP Controller, gRPC server, Kafka Consumer) menjadi panggilan yang dimengerti oleh business logic melalui interface.

API dan Pola Komunikasi

API (Application Programming Interface) adalah kontrak atau cara sebuah service menyediakan layanannya. Komunikasi antar service bisa terjadi secara:

  • Direct: Klien mengirim request langsung ke server dan menunggu response. Contoh: REST, gRPC.

  • Indirect: Komunikasi dilakukan melalui perantara (broker) seperti message queue.

Saat klien mengirim request dan harus menunggu balasan sebelum melanjutkan (terblok), ini disebut synchronous communication. Ini seringkali tidak efisien karena memblokir sumber daya (thread) yang bisa digunakan untuk hal lain.

Middleware dan Infrastruktur Komunikasi

Middleware adalah lapisan software yang bertindak sebagai “lem” atau perantara yang menghubungkan berbagai komponen software yang berbeda, bahkan yang berjalan di sistem yang berbeda. Tujuannya adalah menyembunyikan kompleksitas komunikasi jaringan.

Layanan umum yang disediakan Middleware:

  • Lokasi transparan (komponen tidak perlu tahu lokasi fisik komponen lain).

  • Komunikasi yang terstandarisasi.

  • Independen dari platform dan jaringan.

  • Menyediakan fitur reliabilitas, skalabilitas, dan ketersediaan.

Contoh Teknologi Middleware

Stack Protocol (e.g., Socket)

Menyediakan API level rendah untuk mengakses jaringan (TCP/IP). Memberikan kontrol penuh namun kompleks untuk digunakan.

Remote Procedure Call (RPC) & Serialization

Menyediakan abstraksi seolah-olah memanggil fungsi/method yang ada di mesin lain (remote). Framework RPC menyembunyikan detail komunikasi jaringan dan menangani serialisasi (mengubah data/objek menjadi format yang bisa dikirim lewat jaringan).

Message-Oriented Middleware (Messaging)

Komunikasi terjadi secara asinkron melalui pengiriman message ke sebuah channel. Klien tidak berkomunikasi langsung.

  • Point-to-Point (Queue): Sebuah pesan dikirim ke antrian (queue) dan hanya akan diproses oleh satu penerima/konsumen.

  • Publish-Subscribe (Topic): Sebuah pesan dikirim ke sebuah topik dan akan diterima oleh semua subscriber yang tertarik pada topik tersebut.

Application Server

Menyediakan sebuah lingkungan (runtime) untuk menjalankan aplikasi. Ia mengelola banyak hal kompleks seperti siklus hidup komponen, transaksi, dan persistensi data.

Database Access

Middleware yang menyediakan API untuk berinteraksi dengan database, seringkali dengan mengonversi model data (misal dari SQL ke model Objek).

Summary

Anatomi sistem terdistribusi terdiri dari services independen yang berjalan sebagai proses di berbagai mesin. Services ini berkomunikasi melalui API menggunakan adapter, dan interaksi ini difasilitasi oleh middleware yang menyembunyikan kompleksitas jaringan. Middleware menyediakan berbagai model komunikasi, mulai dari pemanggilan fungsi langsung seperti RPC hingga pengiriman pesan asinkron melalui queue atau topic, yang masing-masing memiliki kegunaan spesifik dalam arsitektur.