Memahami Arsitektur Framework Frappe dan Bench

Rio Pramana

Setelah menginstal Frappe Framework, penting untuk memahami arsitektur dasar sebelum memulai pengembangan aplikasi. Di episode ini, kita akan menjelajahi arsitektur Frappe Framework yang akan diakhiri dengan cara membuat instansi bench Frappe baru.

Arsitektur Frappe Framework

Frappe Framework dibangun dengan struktur yang efisien dan modular. Struktur-struktur ini memudahkan Anda dalam membangun aplikasi web yang kompleks dan modern dengan mudah. Struktur ini mencakup beberapa komponen utama:

1. Model-View-Controller (MVC): Frappe mengikuti pola MVC, yang memisahkan data aplikasi (Model), antarmuka pengguna (View), dan logika bisnis (Controller), memudahkan pengembangan dan pemeliharaan aplikasi.

sumber picture: www.interviewbit.com

2. Object Relational Mapping (ORM): Frappe menggunakan ORM untuk memudahkan developer untuk berinteraksi dengan database. Dengan ORM ini, developer cukup menggunakan objek-objek Python untuk mengakses dan memodifikasi database tanpa harus menulis query SQL.

3. REST API: Frappe menyediakan API REST yang memungkinkan integrasi mudah dengan aplikasi dan layanan lain.

4. Desain Modular: Frappe dirancang secara modular, memungkinkan developer untuk membuat dan menggunakan aplikasi dan modul secara independen.

5. Sistem Permission: Frappe memiliki sistem permission yang lengkap dan fleksibel sehingga memungkinkan Anda untuk mengelola akses setiap pengguna dengan detail dan mudah.

Struktur Bench 
sumber: frappeframework.com

Dalam setiap instansi Frappe Bench, terdapat struktur/hierarki seperti gambar diatas.

1. Situs (Sites): Lapisan ini mewakili instansi atau tenant yang berbeda dari Frappe Framework yang dapat di-hosting dalam satu ‘bench’. Setiap site memiliki database dan alamat web yang terpisah. Contohnya pada gambar diatas, kita dapat memiliki dan meluncurkan 2 site yang berbeda (site1.local & mysite.com) dalam 1 instansi frappe bench yang sama.

2. Aplikasi (Apps): Lapisan ini mewakili berbagai aplikasi yang dapat kita gunakan dalam 1 instansi bench yang sama. Dalam lingkungan Frappe, beberapa aplikasi dapat diinstal dan dikelola. Pada gambar diatas, terdapat contoh dimana kita dapat memiliki beberapa app bawaan Frappe (frappe erpnext) maupun app buatan kita sendiri (custom app) dalam bench yang sama.

Lingkup apps berada dibawah lingkup sites, artinya setiap site dapat menggunakan app apapun yang ada pada bench tersebut. Contohnya, site1.local dapat menggunakan app frappe dan erpnext, sedangkan mysite.com hanya menggunakan app frappe dan custom_app. App frappe adalah aplikasi yang akan selalu ter-instal setiap kali Anda membuat bench dan site. Aplikasi tersebut adalah aplikasi yang memiliki fungsi-fungsi dasar (permissionroles, dll) dari setiap aplikasi web yang akan Anda buat.


3. Services dan Environment:

    • Node: Ini adalah lingkungan Node.js, yang digunakan untuk menangani aspek JavaScript, termasuk untuk scripting sisi server dan membangun aset frontend.
    • Werkzeug: Sebuah library utilitas untuk Python, digunakan sebagai library aplikasi web WSGI (Web Server Gateway Interface).
    • Redis: Sebuah penyimpanan struktur data di memori, digunakan sebagai databasecache, dan broker pesan. Frappe menggunakan Redis untuk caching dan queueing.
    • Background Jobs: Ini adalah proses yang berjalan di ‘belakang layar’, terpisah dari proses server web utama. Mereka digunakan untuk job yang tidak harus langsung selesai dijalankan dan dapat dijadwalkan untuk berjalan secara asinkron.
    • Virtual Environment Python: Ini adalah lingkungan terisolasi yang memungkinkan Anda menjalankan aplikasi dengan packages Python yang independen, terpisah dari yang terpasang pada sistem.

4. Database: MariaDB/Postgres, yang merupakan sistem database yang dapat digunakan dengan Frappe. Keduanya didukung oleh Frappe untuk menyimpan semua data terkait dengan situs dan aplikasi.

Diagram arsitektur diatas adalah gambaran tingkat tinggi yang menjelaskan bagaimana sistem Frappe disusun dan bagaimana berbagai komponen berinteraksi satu sama lain untuk menyediakan lingkungan aplikasi web full stack.

Membangun Bench Baru

Setelah memahami arsitektur Frappe, langkah selanjutnya adalah membuat instansi Bench baru. Bench adalah alat manajemen yang memudahkan instalasi dan pengelolaan aplikasi Frappe.

1. Aktifkan virtual environment Python:

Pastikan Anda berada di directory yang Anda inginkan untuk menyimpan seluruh files bench Frappe yang akan dibuat.

cd path_directory_untuk_menyimpan_bench
source path_venv_python/bin/activate

2. Membuat Instance Bench:

Untuk membuat instance bench baru, jalankan:

bench init nama_bench_anda

Setelah menjalankan command diatas, Anda telah berhasil membuat instansi bench baru. Anda dapat melihat struktur file dan folder yang ada pada bench Anda. Selengkapnya mengenai struktur direktori dari Frappe Bench akan dibahas pada episode selanjutnya.

Kesimpulan

Pemahaman yang baik tentang arsitektur Frappe Framework sangat penting untuk pengembangan aplikasi yang efektif. Dengan langkah-langkah di atas, Anda telah berhasil membuat instansi Frappe Bench baru, membuka jalan untuk pengembangan aplikasi Frappe yang lebih lanjut.

Referensi:

Architecture (frappeframework.com)

Share this article

Photo of author

About the author

Rio Pramana