Skip to content

Latest commit

 

History

History
39 lines (23 loc) · 5.64 KB

File metadata and controls

39 lines (23 loc) · 5.64 KB

Sistem sosial media ini dibangun menggunakan pendekatan arsitektur microservices terdistribusi dan Polyglot Persistence (penggunaan berbagai jenis basis data sesuai fungsionalitas spesifik). Pemilihan tumpukan teknologi ( tech stack ) didasarkan pada kebutuhan akan performa tinggi, skalabilitas horizontal, efisiensi komputasi, dan konsistensi pengembangan.

1. Lapisan Antarmuka Pengguna (Frontend Presentation Layer)

  • Vite, ReactJS, & React Router v7: Sistem frontend dibangun menggunakan pustaka ReactJS yang berjalan di atas build tool Vite. Pemilihan Vite ditujukan untuk mempercepat waktu kompilasi modul ( Hot Module Replacement ) selama fase pengembangan. React Router v7 diimplementasikan untuk menangani navigasi Client-Side Routing , yang secara signifikan mereduksi beban pemrosesan pada server dengan menghindari full-page reload , serta menekan biaya komputasi.
  • Tailwind CSS v4: Diimplementasikan sebagai kerangka kerja CSS berbasis utility-first . Pendekatan ini memungkinkan pengembangan antarmuka (UI) yang adaptif dan kompleks secara terpusat di dalam komponen, sekaligus mengoptimalkan performa pemuatan halaman melalui eliminasi kode CSS yang tidak terpakai ( dead-code elimination ).

2. Lapisan Komputasi & API (Backend & Orchestration Layer)

  • NestJS: Berperan sebagai kerangka kerja backend utama. NestJS dipilih karena arsitektur modularnya yang secara native mendukung implementasi microservices . Penggunaan bahasa TypeScript menjaga konsistensi ekosistem secara isomorphic dengan frontend . Pendekatan stateful dari Node.js ini memitigasi isu kebocoran memori ( memory leak ) dan menekan overhead siklus komputasi yang sering ditemukan pada infrastruktur stateless konvensional.
  • GraphQL: Digunakan sebagai orkestrator API ( Backend for Frontend ) untuk menggantikan arsitektur REST konvensional. GraphQL memberikan fleksibilitas bagi client untuk mendikte struktur data secara spesifik, sehingga secara efektif mengeliminasi anomali efisiensi jaringan berupa over-fetching (pengiriman beban data berlebih) dan under-fetching (kebutuhan pemanggilan endpoint berulang).

3. Lapisan Komunikasi Asinkron (Event & Message Broker Layer)

  • RabbitMQ: Difungsikan sebagai Message Broker untuk menangani antrean tugas asinkron ( task queuing ). Operasi komputasi berat, seperti kompresi media (video/gambar) dan pengiriman email notifikasi, didelegasikan ke RabbitMQ agar tidak memblokir respon utas utama ( main thread ) pada API Gateway.

    #(Belum digunakan biar ga repot, tapi bisa dipakai sewaktu-waktu

  • Apache Kafka: Diimplementasikan sebagai platform Event Streaming terdistribusi. Kafka bertugas menelan log kejadian bervolume masif ( high-throughput event logs ) secara real-time , seperti riwayat klik pengguna, pelacakan navigasi, dan distribusi News Feed . Data dari Kafka ini menjadi fondasi bagi analitik sistem dan algoritma distribusi konten.

    #(Belum digunakan biar ga repot, tapi bisa dipakai sewaktu-waktu)

  • BullMQ: Bawaan dari Redis

4. Lapisan Persistensi Data (Storage & Polyglot Database Layer)

  • PostgreSQL: Bertindak sebagai basis data relasional (RDBMS) utama untuk menangani data terstruktur yang membutuhkan kepatuhan integritas ACID (Atomicity, Consistency, Isolation, Durability). PostgreSQL secara eksklusif mengelola entitas kritikal seperti kredensial autentikasi, profil pengguna, relasi pertemanan inti, dan data transaksional.
  • ScyllaDB: Diadopsi sebagai basis data NoSQL berarsitektur wide-column . ScyllaDB mengeksploitasi efisiensi thread-per-core berdasar bahasa C++, menjadikannya mampu memberikan throughput tulis/baca masif dengan latensi sub-milidetik. Database ini difokuskan untuk menangani data bervolume ekstrem dan tidak terstruktur, seperti matriks interaksi (jumlah likes ), riwayat kolom komentar, dan log percakapan langsung ( chat ).
  • Redis: Digunakan sebagai penyimpanan struktur data in-memory (berjalan di atas RAM). Redis bertugas sebagai lapisan caching untuk mereduksi beban kueri repetitif pada basis data primer (PostgreSQL/ScyllaDB) dan mengelola manajemen sesi pengguna dengan waktu respons sub-milidetik.
  • MinIO: Diimplementasikan sebagai arsitektur Object Storage hibrida yang kompatibel dengan protokol Amazon S3. MinIO bertanggung jawab atas penyimpanan persisten objek media tidak terstruktur (gambar profil, unggahan video pengguna) dan menjaga paritas konfigurasi antara lingkungan lokal dan cloud .

5. Lapisan Manajemen Trafik (Gateway & Proxy Layer)

  • Nginx: Difungsikan sebagai Reverse Proxy dan penyedia aset statis tingkat tepi ( edge ). Nginx bertindak sebagai gerbang pembatas (Layer 7) yang mengisolasi port arsitektur internal dari paparan jaringan publik internet. Selain itu, Nginx memfasilitasi terminasi SSL (HTTPS) dan mencegah komunikasi jaringan langsung antara klien dan microservices internal demi keamanan.

6. Lapisan Infrastruktur & Penyebaran (DevOps & Cloud Infrastructure)

  • Docker: Platform kontainerisasi utama yang mengenkapsulasi setiap servis komputasi beserta dependensinya. Docker mengamankan paritas lingkungan ( environment parity ), mengeliminasi anomali "bekerja di mesin lokal namun gagal di produksi", dan menyatukan ekosistem pengembangan lintas kolaborator.
  • Oracle Cloud Infrastructure (OCI): Pada fase awal pengembangan hingga staging , arsitektur di- deploy di atas infrastruktur Oracle Cloud. OCI menyediakan instans komputasi fleksibel yang ramah secara operasional ( cost-effective Dalam artian gratis) untuk menguji skalabilitas awal dari ekosistem kontainer dan basis data sebelum sistem mencapai traksi beban lalu lintas penuh.