Promosi

    nfi kreatif

    Solusi Integrasi & Software Development

    • System & Web Architecture • Mobile App Development
    • Branding & Identity Strategy • Commercial Photography
    085156886259 LinkedIn: nfi kreatif
    Hubungi Kami
    BLANTERORBITv102

    6. Migrasi REST API Brook Framework dari LCL GUI ke Console Application untuk Performa Maksimal

    Juni 22, 2026

    bukti berhasil

    Sebagai developer Lazarus Pascal, saya sering memulai pengembangan REST API menggunakan aplikasi berbasis LCL Form. Cara ini sangat nyaman untuk proses debugging karena kita dapat menampilkan log, status koneksi database, dan aktivitas server langsung pada form.

    Namun ketika aplikasi masuk ke tahap produksi dan harus berjalan di VPS Linux atau server cloud tanpa antarmuka grafis (headless server), pendekatan tersebut mulai menunjukkan keterbatasannya.

    Dalam artikel ini saya akan membahas bagaimana melakukan migrasi REST API Brook Framework (Tardigrade) dari aplikasi GUI menjadi Console Application yang lebih ringan, lebih cepat, dan lebih cocok untuk kebutuhan deployment skala produksi.


    Mengapa Beralih ke Console Application?

    Perubahan ini bukan hanya soal gaya coding, tetapi juga menyangkut efisiensi sumber daya server dan kemudahan maintenance.

    1. Konsumsi RAM Lebih Rendah

    Aplikasi LCL tetap memuat library grafis meskipun tidak digunakan oleh backend REST API.

    Perbandingan umum:

    Tipe AplikasiKonsumsi RAM
    LCL GUI30–80 MB
    Console Application4–10 MB

    Jika Anda menjalankan beberapa service sekaligus dalam satu VPS, penghematan ini sangat terasa.


    2. Mudah Menjadi Service Linux

    Console Application dapat langsung dijalankan sebagai:

    • Systemd Service

    • Docker Container

    • Background Daemon

    Ketika server restart, service dapat aktif kembali secara otomatis tanpa perlu login ke desktop.


    3. Performa Lebih Baik

    Tanpa komponen visual, CPU dapat fokus pada:

    • HTTP Request Processing

    • Database Access

    • JSON Serialization

    • Redis Caching

    Tidak ada overhead rendering form atau update komponen visual.


    4. Lebih Sesuai dengan Arsitektur Modern

    Dengan memisahkan:

    • Business Logic

    • Routing

    • Database Layer

    • Authentication

    aplikasi menjadi lebih mudah dikembangkan menjadi:

    • REST API

    • Microservices

    • Docker Deployment

    • Kubernetes Service


    Arsitektur yang Direkomendasikan

    Struktur proyek yang saya gunakan:

    rest_api_sqlite
    │
    ├── db
    │   └── database.db
    │
    └── console
        ├── RestApiConsole.lpr
        ├── uhandlerapi.pas
        └── uMinimalRedis.pas
    

    Keuntungan pendekatan ini:

    ✅ Mudah dipelihara

    ✅ Mudah dikompilasi di Windows maupun Linux

    ✅ Tidak bergantung pada komponen visual Lazarus

    ✅ Siap untuk deployment cloud


    Langkah Refactoring

    1. Pisahkan Business Logic

    Semua endpoint REST API dipindahkan ke unit tersendiri, misalnya:

    uhandlerapi.pas
    

    Unit ini hanya berisi:

    • Routing

    • Validasi

    • Query Database

    • JSON Response

    Tanpa dependency terhadap:

    Forms
    Controls
    Graphics
    Dialogs
    

    Dengan cara ini kode menjadi portable dan dapat digunakan kembali baik oleh aplikasi desktop maupun backend service.


    2. Buat Entry Point Console

    File utama:

    RestApiConsole.lpr
    

    bertugas untuk:

    • Membuat koneksi database

    • Menjalankan HTTP Server

    • Registrasi seluruh route Brook

    • Menangani lifecycle aplikasi

    Contoh startup server:

    vServer := TConsoleServer.Create(nil);
    vServer.Port := 8888;
    vServer.Open;
    

    Output terminal:

    =====================================================
     NFI KREATIF - BROOK REST API CONSOLE SERVER
    =====================================================
    
    -> Database Connection Pool Aktif
    -> HTTP Server berjalan di port 8888
    

    3. Aktifkan Connection Pooling

    Salah satu optimasi penting adalah memanfaatkan fitur pooling Zeos.

    gZConnectiondb.Properties.Values['pooled'] := 'true';
    gZConnectiondb.Properties.Values['maxconnections'] := '50';
    

    Keuntungan:

    • Mengurangi overhead koneksi database

    • Meningkatkan throughput

    • Cocok untuk ratusan request simultan


    4. Tambahkan Redis Cache

    Untuk endpoint yang sering diakses:

    • Master Barang

    • Master Pasien

    • Dashboard Statistik

    • Referensi Data

    gunakan Redis sebagai cache layer.

    Alur kerjanya:

    Client
       ↓
    Brook API
       ↓
    Redis Cache
       ↓ (jika miss)
    Database
    

    Hasilnya:

    • Response lebih cepat

    • Beban database berkurang

    • Skalabilitas meningkat


    5. Implementasikan Rate Limiting

    Rate Limiting sangat penting untuk:

    • Menghindari spam request

    • Mencegah brute force

    • Mengurangi beban server

    Contoh kebijakan:

    100 request / menit / IP
    

    Implementasi sederhana dapat menggunakan:

    TStringList
    

    sedangkan untuk skala produksi lebih disarankan menggunakan:

    Redis Counter
    

    Kompilasi Tanpa IDE Lazarus

    Jika terjadi konflik package Lazarus atau OPM, proses build dapat dilakukan langsung menggunakan compiler Free Pascal.

    fpc RestApiConsole.lpr
    

    Metode ini sangat membantu saat melakukan:

    • CI/CD

    • Build Server

    • Docker Build

    • GitHub Actions


    Pengujian API

    Jalankan server:

    RestApiConsole.exe --port=8888
    

    Kemudian uji menggunakan:

    • Postman

    • Insomnia

    • Curl

    Contoh endpoint:

    GET http://localhost:8888/barang
    

    Response:

    [
      {
        "id":1,
        "nama":"Paracetamol"
      }
    ]
    

    Hasil yang Saya Rasakan

    Setelah memindahkan beberapa layanan backend ke Console Application, saya mendapatkan beberapa manfaat:

    Sebagai Developer

    • Debugging tetap mudah

    • Struktur kode lebih rapi

    • Build lebih cepat

    Sebagai IT Manager

    • Biaya VPS lebih hemat

    • Resource server lebih efisien

    • Deployment lebih sederhana

    Sebagai Software House

    • Lebih siap menangani banyak klien

    • Mudah dibuat Docker Image

    • Siap menuju arsitektur microservices


    Kesimpulan

    Migrasi REST API Brook Framework dari LCL GUI ke Console Application merupakan langkah yang sangat layak dilakukan ketika aplikasi mulai masuk ke lingkungan produksi.

    Dengan pendekatan ini kita memperoleh:

    ✅ Konsumsi RAM lebih kecil

    ✅ Performa lebih tinggi

    ✅ Deployment lebih mudah

    ✅ Siap dijalankan sebagai Linux Service

    ✅ Mudah diintegrasikan dengan Redis dan Connection Pool

    ✅ Lebih cocok untuk arsitektur cloud modern

    Bagi developer Lazarus Pascal yang ingin membangun backend profesional untuk aplikasi klinik, SIMRS, inventory, maupun sistem enterprise lainnya, saya sangat merekomendasikan pendekatan Console Application + Brook Framework + Zeos Connection Pool + Redis Cache sebagai fondasi backend yang ringan dan scalable.