![]() |
| 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 Aplikasi | Konsumsi RAM |
|---|---|
| LCL GUI | 30–80 MB |
| Console Application | 4–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.

0 komentar