Back to IF3130 Sistem Paralel dan Terdistribusi

Topic

Questions/Cues

  • Apa itu service-based architecture?

  • Apa ciri khasnya?

  • Apa topologi dasarnya?

  • 3 Varian UI?

  • 3 Varian Database?

  • Apa fungsi API Layer (Gateway)?

Reference Points

  • Slides 16-20 (10 - IF3130-09-Architecture-2022.pdf)

  • Kuliah Arsitektur Sistem Terdistribusi

1. Service-Based Architecture (Arsitektur Berbasis Layanan)

Ini adalah pola arsitektur di mana aplikasi besar (monolit) dipecah menjadi beberapa layanan (services) yang lebih kecil.

Ciri Khas:

  • Pengelompokan Domain: Layanan dikelompokkan berdasarkan domain bisnis. Contoh: Layanan User, Layanan Order, Layanan Payment.

  • Akses: Komunikasi antar layanan atau dari UI ke layanan biasanya menggunakan protokol standar seperti REST, RPC (gRPC), atau SOAP.

  • Shared Database: Ini adalah ciri penting. Seringkali, beberapa layanan domain yang berbeda masih berbagi database yang sama (lihat Slide 19, gambar kiri atas). Ini membedakannya dari microservices murni.

  • API Gateway: Sering menggunakan API Gateway sebagai perantara.

Topologi Dasar:

User Interface [Service 1, Service 2, … Service N] Database

2. Varian User Interface (UI)

Ada fleksibilitas dalam cara UI diatur:

  1. Single Monolithic User Interface:

    • Hanya ada satu aplikasi UI besar (monolit).

    • Aplikasi UI ini memanggil semua layanan domain yang berbeda sesuai kebutuhan.

    • Analogi: Sebuah dashboard besar yang memiliki semua menu dan fitur.

  2. Domain-Based User Interface:

    • Ada beberapa aplikasi UI yang terpisah.

    • Setiap aplikasi UI dikhususkan untuk domain bisnis tertentu.

    • Contoh: Aplikasi UI Admin, Aplikasi UI Customer, Aplikasi UI Finance. Masing-masing memanggil layanan yang relevan.

  3. Service-Based User Interface:

    • Setiap service bertanggung jawab atas UI-nya sendiri.

    • Ini mengarah ke konsep modern seperti Micro-Frontends, di mana UI “dirakit” dari potongan-potongan kecil yang independen.

3. Varian Database

Sama seperti UI, ada fleksibilitas dalam organisasi database:

  1. Single Monolithic Database:

    • Ini adalah pola paling umum untuk service-based architecture.

    • Semua service membaca dan menulis ke satu database fisik yang sama.

    • Pro: Mudah untuk transaksi data (misal: join tabel), konsistensi data terjamin.

    • Con: Coupling (keterikatan) tinggi. Jika skema DB berubah, banyak service bisa terdampak.

  2. Domain-Based Database:

    • Database dibagi per domain besar.

    • Contoh: Service A dan B (Domain Sales) menggunakan DB Sales. Service C dan D (Domain Support) menggunakan DB Support.

  3. Service-Based Database:

    • Setiap service memiliki database-nya sendiri.

    • Service lain tidak boleh mengakses database ini secara langsung; mereka harus melalui API service pemiliknya.

    • Ini adalah ciri khas Microservices.

4. API Layer (Proxy atau Gateway) (Slide 20)

Seringkali, sebuah lapisan (layer) tambahan ditempatkan di antara User Interface dan Domain Services.

Fungsi API Gateway:

  • Single Entry Point: UI hanya perlu tahu satu alamat (Gateway), tidak perlu tahu alamat setiap service.

  • Routing: Meneruskan request dari UI ke service yang tepat.

  • Authentication & Authorization: Menangani login dan cek hak akses secara terpusat.

  • Rate Limiting: Mencegah request berlebihan (abuse) ke service.

  • Agregation: Mengambil data dari beberapa service dan menggabungkannya menjadi satu response untuk UI.

Summary

Arsitektur Berbasis Layanan memecah aplikasi menjadi layanan-layanan per domain yang seringkali masih berbagi database yang sama (shared database). Pola ini menawarkan fleksibilitas tinggi dalam cara UI dan database diatur (bisa monolit, per domain, atau per service). Penambahan API Gateway berfungsi sebagai pintu masuk tunggal yang menyederhanakan routing, keamanan, dan komunikasi dari UI ke berbagai layanan.