Serverless Dashboard Architecture: Pola Desain & Real-time Data

Serverless dashboard architecture adalah pola desain sistem perangkat lunak untuk membangun dan menjalankan aplikasi pemantauan data (dashboard) tanpa perlu mengelola infrastruktur server fisik atau virtual (EC2). Arsitektur ini mengandalkan layanan berbasis Function-as-a-Service (FaaS), penyimpanan terkelola, dan layanan pesan terdistribusi yang memproses permintaan secara on-demand serta melakukan otomatisasi skala berdasarkan beban kerja.

Dalam implementasi nyatanya, sistem ini menggabungkan layanan cloud seperti AWS Lambda untuk komputasi backend, Amazon API Gateway untuk manajemen endpoint HTTP dan WebSocket, Amazon DynamoDB sebagai database NoSQL berperforma tinggi, serta frontend berbasis Single Page Application (SPA) yang dihosting di Amazon S3 dan didistribusikan melalui CDN seperti Amazon CloudFront. Pendekatan ini memangkas biaya operasional karena pengguna hanya membayar sumber daya komputasi saat fungsi dieksekusi.

Komponen Utama Arsitektur Serverless Dashboard

Membangun dashboard serverless yang handal memerlukan integrasi komponen yang terbagi menjadi tiga lapisan utama: Lapisan Klien (Frontend), Lapisan Layanan API (API Layer), dan Lapisan Pemrosesan & Penyimpanan (Backend & Storage). Tabel berikut merincikan fungsi dan layanan cloud standar yang digunakan dalam industri.

Lapisan Arsitektur Layanan Cloud (Contoh AWS) Fungsi Utama dalam Dashboard
Frontend / Klien Amazon S3 + CloudFront Menyimpan aset statis (HTML, JS, CSS) dan mendistribusikannya ke browser pengguna dengan latensi rendah.
API & Real-time Amazon API Gateway (HTTP & WebSocket) Menghandle routing HTTP REST request dan koneksi persisten WebSocket untuk pembaruan data real-time.
Komputasi Backend AWS Lambda Menjalankan logika bisnis, mengambil data dari database, dan memformat payload untuk dikirim ke klien.
Penyimpanan Data Amazon DynamoDB Menyimpan data metrik, status dashboard, dan tabel koneksi WebSocket dengan latensi baca-tulis milidetik.
Penyerap Event (Opsional) Amazon EventBridge / SQS Menerima event log atau telemetri dari berbagai sumber eksternal sebelum diproses oleh Lambda.

Alur Data (Data Flow) dan Mekanisme Real-time

Menampilkan data secara real-time pada arsitektur serverless memiliki tantangan tersendiri karena sifat FaaS yang stateless (tidak memiliki koneksi persisten secara default). Untuk mengatasi hal ini, arsitektur modern menggunakan protokol WebSocket melalui API Gateway terkelola.

  1. Koneksi Awal: Pengguna membuka dashboard di browser. Klien membuat koneksi WebSocket ke API Gateway. API Gateway menyimpan ID koneksi (Connection ID) ke dalam tabel DynamoDB.
  2. Permintaan Data (Polling/On-Demand): Saat pengguna mengubah rentang tanggal atau filter pada dashboard, HTTP GET request dikirim melalui API Gateway yang memicu AWS Lambda untuk melakukan kueri ke DynamoDB.
  3. Pembaruan Otomatis (Push Notification): Ketika ada data baru masuk (misalnya dari IoT sensor atau webhook pihak ketiga), data tersebut dikirim ke AWS Lambda atau EventBridge, yang kemudian mem-broadcast pembaruan ke semua klien yang terhubung melalui API Gateway WebSocket Management API.

Contoh Implementasi Kode AWS Lambda (Node.js)

Berikut adalah contoh fungsi AWS Lambda sederhana menggunakan Node.js untuk mengambil data metrik dari DynamoDB guna merespons permintaan REST API dari dashboard.

const { DynamoDBClient } = require("@aws-sdk/client-dynamodb");
const { DynamoDBDocumentClient, ScanCommand } = require("@aws-sdk/lib-dynamodb");

const client = new DynamoDBClient({ region: process.env.AWS_REGION });
const dynamodb = DynamoDBDocumentClient.from(client);

const TABLE_NAME = process.env.METRICS_TABLE_NAME;

exports.handler = async (event) => {
    try {
        const params = {
            TableName: TABLE_NAME,
            Limit: 100,
        };
        
        const command = new ScanCommand(params);
        const response = await dynamodb.send(command);
        
        return {
            statusCode: 200,
            headers: {
                "Content-Type": "application/json",
                "Access-Control-Allow-Origin": "*"
            },
            body: JSON.stringify({
                success: true,
                data: response.Items
            }),
        };
    } catch (error) {
        console.error("Error fetching dashboard metrics:", error);
        return {
            statusCode: 500,
            body: JSON.stringify({ success: false, message: error.message }),
        };
    }
};

Kelebihan dan Tantangan

Pola arsitektur ini menawarkan efisiensi tinggi namun juga membawa beberapa catatan teknis yang harus diperhitungkan oleh tim pengembang.

Kelebihan

  • Zero Server Management: Tidak perlu melakukan patching OS, konfigurasi web server (Nginx/Apache), atau mengatur load balancer manual.
  • Auto-scaling Otomatis: Mampu menangani lonjakan trafik mendadak (misalnya saat laporan akhir bulan dibuka bersamaan oleh ribuan karyawan) tanpa konfigurasi tambahan.
  • Cost-Efficiency: Biaya mendekati nol jika dashboard sedang tidak aktif digunakan, karena model penagihan berbasis jumlah eksekusi (pay-per-request).

Tantangan Teknis

  • Cold Start Latency: Keterlambatan sesaat (mili-detik hingga detik) ketika fungsi Lambda dipanggil pertama kali setelah periode idle.
  • Complex Debugging: Pelacakan error (tracing) lintas layanan memerlukan alat tambahan seperti AWS X-Ray atau distributed tracing pihak ketiga.
  • Vendor Lock-in: Ketergantungan tinggi pada ekosistem layanan cloud tertentu (misalnya AWS atau Google Cloud).

Tips Optimasi Performa Dashboard

Untuk memastikan dashboard tetap responsif, terapkan strategi caching menggunakan Amazon CloudFront untuk respons API yang bersifat statis atau jarang berubah. Manfaatkan fitur Provisioned Concurrency pada AWS Lambda kritis guna menghilangkan masalah cold start pada endpoint utama dashboard.