version v0.7
Latar Belakang
Sistem sebelumnya yang berbasis Coda mengalami keterbatasan dalam hal kinerja, integrasi, dan evaluasi KPI. Kecepatan akses yang lambat serta kurangnya fleksibilitas dalam pengelolaan data menghambat efisiensi kerja dan proses penilaian kinerja.
Sebagai solusi, Jalan Kerja dikembangkan untuk menghadirkan sistem pengelolaan dokumen yang terpusat, dashboard real-time untuk monitoring progres kerja, serta evaluasi kinerja berbasis KPI yang lebih akurat. Dengan arsitektur yang terintegrasi dan efisien, sistem ini dirancang untuk meningkatkan produktivitas, transparansi, dan pengambilan keputusan yang lebih cepat dan berbasis data.
Ruang Lingkup
Proyek Jalan Kerja akan dikembangkan sebagai sistem manajemen kerja yang mencakup pengelolaan dokumen, monitoring progres kerja, serta evaluasi kinerja berbasis KPI. Sistem ini akan diterapkan secara bertahap dan fleksibel sesuai dengan kebutuhan organisasi.
Sistem ini akan diterapkan pada proyek baru dengan fokus pada efisiensi kerja, integrasi data, dan evaluasi berbasis KPI. Infrastruktur akan dibangun menggunakan Google Cloud Run untuk memastikan skala otomatis dan performa optimal. Manajemen Dokumen: Penyimpanan dan pengelolaan dokumen kerja secara terpusat, aman, dan mudah diakses. Dashboard Real-Time: Menampilkan progres kerja, status tugas, serta indikator performa karyawan secara visual dan interaktif. Evaluasi KPI: Sistem akan memungkinkan penilaian kinerja berdasarkan data terstruktur dan akurat. Integrasi Sistem: Menghubungkan berbagai proses kerja dan data antar divisi untuk memastikan kolaborasi yang lebih efektif. Pada tahap awal, sistem akan menggunakan CockroachDB Serverless untuk memaksimalkan efisiensi sebelum ditingkatkan sesuai kebutuhan. Deployment akan dibedakan antara lingkungan development dan production, dengan masing-masing memiliki infrastruktur tersendiri. Proyek ini akan terus berkembang dengan pendekatan fleksibel dan berbasis kebutuhan, sehingga dapat menyesuaikan dengan dinamika kerja yang ada.
Team Project
LEAD :
AUDITOR :
Agestya Rizki Pratama : STAFF :
Penjelasan Teknis
Penjelasan tentang arsitektur teknis sistem Jalan Kerja, mencakup platform, alat, dan teknologi yang digunakan. Penjelasan ini memberikan konteks penting dalam memahami interaksi antar komponen serta infrastruktur yang akan diterapkan.
1. Arsitektur Sistem
Sistem Jalan Kerja menggunakan arsitektur berbasis web dengan Fullstack Laravel serta framework Filament untuk pengelolaanya. Infrastruktur dijalankan di Google Cloud Run, memastikan skalabilitas otomatis dan manajemen beban yang optimal.
2. Platform & Teknologi yang Digunakan
Framework Laravel menggunakan Filament digunakan sebagai framework frontend berbasis Laravel yang menyederhanakan proses pengembangan antarmuka. Hosting & Deployment: Google Cloud Run untuk menjalankan aplikasi dalam container yang terkelola. CockroachDB → Digunakan sebagai database utama untuk operasi write/read data transaksi dan master data. Penyimpanan Media: Google Cloud Storage untuk menyimpan file dan aset media aplikasi. Dengan kombinasi teknologi ini, Jalan Kerja dirancang untuk memiliki performa yang cepat, skalabilitas tinggi, serta kemudahan integrasi dengan berbagai aspek.
Arsitektur
SCM (Source Code Management)
Source Code untuk proyek Jalan Kerja menggunakan layanan Bitbucket dengan detail berikut :
Branching Strategy :
Project ini memiliki dua branch utama:
Branch master → Untuk production (stabil dan siap digunakan oleh end-user). Branch development → Untuk testing & integrasi fitur baru sebelum masuk ke master. Git Flow (Branching Strategy)
Untuk memastikan pengelolaan kode yang rapi dan terstruktur, digunakan Git Flow, dengan aturan sebagai berikut:
Branch Utama:
master: Branch utama untuk lingkungan stable / production. Hanya LEAD yang dapat melakukan merge ke sini. development: Branch utama untuk pengembangan dan pengujian sebelum masuk ke master. Branch Pendukung:
feature/{nama-fitur} → Digunakan untuk pengembangan fitur baru. Dibuat dari development, lalu setelah selesai di-merge kembali ke development. bugfix/{nama-perbaikan} → Untuk memperbaiki bug yang ditemukan di development. Setelah diperbaiki, di-merge kembali ke development. hotfix/{nama-hotfix} → Untuk perbaikan darurat pada master. Setelah diperbaiki, di-merge ke master dan juga ke development. release/{versi} → Untuk persiapan rilis ke master. ℹ️ Aturan Utama:
STAFF hanya bisa membuat PR ke development, tapi tidak bisa merge. LEAD bertanggung jawab untuk melakukan review & approval merge ke development dan master. AUDITOR hanya memiliki akses read-only pada repository. Tidak ada yang bisa push langsung ke development atau master untuk menghindari perubahan yang tidak terkontrol.
Infrastruktur
Infrastruktur adalah kerangka fisik dan virtual yang mendukung seluruh operasi sistem Jalan Kerja. Sistem ini dirancang menggunakan Google Cloud Run untuk menjalankan komponen frontend dan backend secara terkelola, memungkinkan skalabilitas otomatis dan efisiensi dalam pengelolaan sumber daya.
Pada tahap awal, sistem akan diimplementasikan dengan spesifikasi minimum, memastikan efisiensi biaya sambil tetap mendukung kebutuhan dasar operasional. Seiring dengan peningkatan jumlah pengguna dan data, infrastruktur dapat diperluas secara fleksibel tanpa gangguan layanan.
Komponen Infrastruktur
Google Cloud Run → Menjalankan aplikasi Laravel berbasis Filament dalam container, dengan dukungan auto-scaling untuk menangani lonjakan trafik. 🌐 jalan-kerja-dev → Google Cloud Project untuk environment development. 🌐 jalan-kerja-prod → Google Cloud Project untuk environment production. Hak Akses Cloud Run - Development
Hak Akses Cloud Run (Development)
Hak Akses Cloud Run (Production)
Dengan pemisahan ini, pengembangan dapat dilakukan secara lebih aman dan fleksibel tanpa mengganggu sistem yang sedang berjalan di production.
CockroachDB Cloud → Digunakan sebagai database utama, dikelola langsung oleh CockroachDB Cloud untuk memastikan high availability, scalability, dan fault tolerance. Google Cloud Storage → Menyimpan file dan aset media aplikasi, seperti gambar, dokumen, dan data lainnya yang tidak termasuk dalam database utama.
Development :
Production :
4. Firebase
Firebase akan digunakan dalam project Jalan Kerja untuk kebutuhan push notification melalui Firebase Cloud Messaging (FCM), yang memungkinkan sistem mengirim notifikasi real-time ke pengguna.
Development :
Production :
Spesifikasi Minimum untuk Tahap Awal
Pada tahap awal, sistem akan berjalan dengan spesifikasi berikut, yang dapat di-upgrade secara fleksibel sesuai kebutuhan:
Google Cloud Run → 1 vCPU, 512MB RAM. CockroachDB → Untuk tahap awal proyek Jalan Kerja, kita akan memanfaatkan CockroachDB Serverless Free Cluster, yang memungkinkan penggunaan gratis dengan kapasitas yang cukup untuk pengembangan dan deployment awal. Strategi Skalabilitas
Pada tahap awal, sistem akan menggunakan resource minimum untuk menekan biaya operasional. Seiring dengan pertumbuhan penggunaan, peningkatan spesifikasi akan dilakukan dengan menambah instance Google Cloud Run dan memperbesar kapasitas CockroachDB Dengan infrastruktur ini, sistem Jalan Kerja akan tetap efisien, scalable, dan aman, memastikan performa optimal dalam jangka panjang.
Database
Basis data yang digunakan dalam sistem Jalan Kerja, mencakup metode penyimpanan data, sistem pencadangan, serta fungsi spesifik dari setiap teknologi database dan cache yang diadopsi. Infrastruktur basis data dirancang untuk memastikan keamanan, integritas, dan ketersediaan data, sekaligus mempertahankan performa tinggi dalam pengolahan informasi.
1. CockroachDB (Database Utama)
Digunakan untuk menyimpan data kritis seperti informasi pengguna, transaksi, dan entitas utama dalam sistem. Dijalankan di CockroachDB Cloud, yang menawarkan high availability dan automatic failover untuk memastikan sistem tetap berjalan meskipun terjadi kegagalan node. Mekanisme backup otomatis diterapkan untuk menjaga integritas data serta memungkinkan pemulihan data jika terjadi insiden yang tidak diinginkan.
Hak Akses
Dokumen ini menjelaskan hak akses dalam database development, dan database production untuk memastikan keamanan dan kelancaran workflow pengembangan.
Hak Akses Database (Development)
ℹ️ Penjelasan:
STAFF memiliki akses penuh untuk pengembangan dan testing. LEAD memiliki akses penuh untuk keperluan review dan validasi. AUDITOR memiliki akses penuh untuk auditing selama tahap development.
Hak Akses Database (Production)
ℹ️ Penjelasan:
STAFF tidak memiliki akses ke production untuk menjaga keamanan data. LEAD memiliki akses penuh karena bertanggung jawab atas sistem yang berjalan. AUDITOR hanya memiliki akses read-only untuk keperluan audit tanpa bisa mengubah data. 2. Google Cloud Storage - Private (Penyimpanan Media)
Digunakan untuk menyimpan file non-relasional, seperti gambar, dokumen, dan aset media lainnya. Mendukung redundansi dan enkripsi data, serta terintegrasi dengan layanan lain di ekosistem Google Cloud untuk keamanan dan aksesibilitas yang optimal. Menggunakan Google Cloud Storage Private Secara default, Google Cloud Storage (GCS) menggunakan sistem Access Control yang memastikan hanya pengguna tertentu yang bisa mengakses bucket dan objek di dalamnya. Jika sebuah bucket diatur sebagai private, maka:
Hanya pengguna atau layanan yang memiliki izin yang bisa mengaksesnya. Tidak dapat diakses secara publik tanpa autentikasi. Memerlukan kredensial seperti IAM roles, Service Account, atau token untuk akses langsung. Namun, bagaimana jika kita ingin memberikan akses sementara ke suatu file tanpa membuatnya publik?
Signed URL: Akses Sementara ke Private Object
Signed URL adalah URL dengan tanda tangan digital yang memungkinkan akses sementara ke file di Google Cloud Storage tanpa memerlukan autentikasi langsung.
Cara Kerja Signed URL:
Server atau aplikasi backend membuat Signed URL dengan menambahkan tanda tangan digital berdasarkan kredensial Service Account. Signed URL memiliki masa berlaku (misalnya, hanya bisa digunakan selama 10 menit). Client/user mengakses file melalui Signed URL tanpa perlu login atau autentikasi tambahan. Setelah expired, URL tidak bisa digunakan lagi.
Dengan kombinasi teknologi ini, sistem Jalan Kerja dapat memastikan kecepatan, keandalan, dan keamanan data, mendukung operasional yang efisien serta pertumbuhan skala sistem di masa depan.
Framework Development Frontend
Frontend merupakan titik akses utama bagi pengguna dalam sistem Jalan Kerja, memastikan pengalaman yang intuitif dan responsif. Sistem ini dibangun menggunakan Laravel dengan framework Filament, yang menyediakan antarmuka yang modern, efisien, dan mudah dikelola.
Dengan Filament, pengembangan frontend menjadi lebih cepat dan terstruktur, terutama dalam mengelola halaman administratif. Framework ini menawarkan komponen UI siap pakai, integrasi yang seamless dengan backend Laravel, serta dukungan state management yang efisien.
Keunggulan utama dalam implementasi frontend Jalan Kerja:
Antarmuka yang User-Friendly → Tampilan yang bersih, mudah digunakan, dan responsif untuk berbagai perangkat. Komponen Dinamis → Menggunakan Filament untuk membangun komponen yang modular dan dapat dikustomisasi sesuai kebutuhan sistem. Keamanan & Akses Terintegrasi → Mendukung sistem autentikasi dan otorisasi bawaan Laravel untuk memastikan akses yang aman bagi pengguna. Optimasi Performa → Dengan caching dan pengelolaan data yang efisien, memastikan frontend tetap ringan dan cepat diakses. Dengan kombinasi Laravel dan Filament, sistem Jalan Kerja menawarkan pengalaman pengguna yang optimal, mendukung kebutuhan bisnis yang terus berkembang.
Deployment
Deployment sistem Jalan Kerja dirancang agar fleksibel, scalable, dan mudah dikelola, dengan menggunakan Google Cloud Run sebagai platform hosting utama. Proses deployment memastikan bahwa setiap perubahan pada sistem dapat diterapkan dengan cepat, aman, dan minim downtime.
1. Strategi Deployment
CI/CD dengan Google cloud build Developer melakukan push atau merge ke branch utama (misalnya master atau development) di Bitbucket. Bitbucket akan memicu pipeline Google Cloud Build melalui webhook yang telah dikonfigurasi. Google Cloud Build akan menjalankan tahap berikut: Build aplikasi menggunakan Docker. Push Docker image ke Google Artifact Registry. Deploy image terbaru ke Google Cloud Run untuk laravel. Sistem akan otomatis mengupdate layanan yang sedang berjalan tanpa downtime dengan metode rolling update.
Containerization dengan Docker → Laravel dikemas dalam container Docker untuk memastikan isolasi lingkungan serta kompatibilitas yang lebih baik antara development dan production. Rolling Update Deployment → Deployment dilakukan secara bertahap tanpa menghentikan layanan, sehingga pengguna tidak mengalami gangguan saat sistem diperbarui.
Dockerize
contoh dockerfile untuk laravel :
FROM php:8.2-fpm-alpine
WORKDIR /var/www/html
RUN mkdir -p /run/nginx/
RUN php -v
RUN composer self-update