Hamizulfaiz

Tech Entrepreneur / System Builder

Macam Mana Aku Engineer Laravel App Besar Tanpa Jadi Coding Spaghetti

Published:

Updated:

Laravel php

Bila Laravel app makin besar, masalah bukan framework.
Masalah biasanya kita campur semua benda dalam satu tempat.

Controller gemuk.
Business logic bersepah.
Nak tambah feature → takut rosakkan benda lain.

Ini cara aku fikir dan susun Laravel app supaya boleh scale tanpa sakit kepala.


Prinsip #1: Controller Bukan Tempat Berfikir

Controller hanya orchestration, bukan tempat buat keputusan.

❌ Salah (common mistake)

public function store(Request $request)
{
    $user = User::create($request->all());
    if ($request->has('referral_code')) 
    {
        $ref = Referral::where('code', $request->referral_code)->first();
        $ref->increment('total_used');
    }

    Mail::to($user->email)->send(new WelcomeMail($user));

    return redirect()->back();
}

Controller jadi tempat:

  • validate

  • create user

  • referral logic

  • email logic

Ini bukan scalable.


Prinsip #2: Business Logic = Action / Service Class

Aku selalu tanya:

“Kalau esok aku nak trigger logic ni dari Queue / Event / Console — boleh ke?”

Kalau jawapan tak boleh, code tu salah tempat.

✅ Betul

class RegisterUserAction 
{
    public function execute(array $data): User
    {
        $user = User::create($data);
        if (!empty($data['referral_code'])) 
        {
				    app(ApplyReferralAction::class)->execute($user,$data['referral_code']);
        }
			
        event(new UserRegistered($user));
        
        return $user;
    } 
}

Controller jadi nipis:

public function store(RegisterRequest $request)
{
    app(RegisterUserAction::class)
        ->execute($request->validated());
    
    return back();
}

Sekarang:

  • boleh reuse

  • boleh test

  • boleh evolve


Prinsip #3: Fikir Ikut “Flow Bisnes”, Bukan Ikut Folder Laravel

Aku tak mula dengan folder.
Aku mula dengan soalan:

“Flow dia apa sebenarnya?”

Contoh:

User daftar → referral dikira → email dihantar → commission update

Struktur aku biasanya jadi macam ni:

app/  
├── Actions/  
│    ├── RegisterUserAction.php
│    ├── ApplyReferralAction.php
│
├── Events/
│    └── UserRegistered.php  
│
├── Listeners/
│    ├── SendWelcomeEmail.php  
│    └── CalculateCommission.php`

Laravel bagi kebebasan.
Gunakan untuk reflect cara bisnes bergerak, bukan ikut tutorial atau buku semata-mata.


Prinsip #4: Event & Queue Bukan “Nice to Have”

Kalau logic tu:

  • ambil masa

  • tak perlu tunggu user

  • bukan critical path

👉 Queue it.

class SendWelcomeEmail implements ShouldQueue 
{
    public function handle(UserRegistered $event)
    {
        Mail::to($event->user->email)->send(new WelcomeMail($event->user));
		}
}

Kesan terus:

  • request jadi laju

  • server tak terbeban

  • user experience naik


Prinsip #5: Jangan Over-Engineering Awal-awal

Ini perangkap startup.

❌ Tak betul

  • Domain Driven Design terlalu awal

  • 20 abstraction layer untuk CRUD simple

  • Pattern ikut buku, bukan ikut masalah

✅ Kacak

  • Start simple

  • Bila mula rasa sakit → refactor

  • Architecture evolve ikut complexity sebenar

Laravel memang direka untuk refactor dengan selamat.


Cara Aku Berfikir (Ringkas Tapi Praktikal)

Setiap kali nak tulis code, aku tanya:

  1. Logic ni akan digunakan di mana lagi?

  2. Kalau flow bisnes berubah, apa paling senang disentuh?

  3. Controller aku boleh jadi 10–20 baris tak?

Kalau jawapan nampak messy → aku revise dan susun balik.


Penutup

Spaghetti code bukan sebab Laravel.
Ia sebab:

  • logic bercampur semua
  • flow tak jelas
  • terlalu cepat kejar feature (guna agile ke tu~)
 

Architecture yang baik tak nampak “smart”,
tapi nampak tenang bila app dah besar.

Kalau kau bina app untuk survive 3–5 tahun,
susun dari sekarang — bukan bila dah sakit.

Nak buat sistem?

Jom bincang untuk develop sistem yang custom untuk anda.

nak buat sistem bisnes? hubungi saya

Post Berkaitan

19 Feb 2026 Macam Mana Saya Debug Production Issue Tanpa Panik, Tanpa Main Teka
Macam Mana Saya Debug Production Issue Tanpa Panik, Tanpa Main Teka

Teknik praktikal debug sistem guna Laravel log dan Nginx log. Selesaikan isu server dengan tenang berdasarkan proses sebenar.

07 Feb 2026 Kesilapan Security yang Selalu Jumpa dalam Laravel (dan Cara Improve)
Kesilapan Security yang Selalu Jumpa dalam Laravel (dan Cara Improve)

3 kesilapan keselamatan paling biasa dalam Laravel dan cara sebenar saya mitigate guna Laravel + Cloudflare.

06 Feb 2026 Elak Code Berselerak: Gunakan Laravel Pint Sebelum Commit
Elak Code Berselerak: Gunakan Laravel Pint Sebelum Commit

Pastikan codebase konsisten! Gunakan Laravel Pint dengan pre-commit hook untuk standardisasi code sebelum deploy.

21 Sep 2026 Bila Deploy Laravel, Permission Bukan Masalah Kecil
Bila Deploy Laravel, Permission Bukan Masalah Kecil

Apa yang aku belajar tentang Laravel, VPS, deployment dan filesystem permission selepas berkali-kali kena permission denied.

06 Apr 2026 Terbaru: Marko PHP Framework. Perspektif Dev Laravel
Terbaru: Marko PHP Framework. Perspektif Dev Laravel

Saya cuba Marko PHP termasuk sistem database baru. Ini review jujur dari developer Laravel dan cara bina website modular.

09 Mar 2026 Komunikasi Level Dewa: Macam mana nak terangkan pasal “Technical Debt” dekat bos yang bukan budak IT?
Komunikasi Level Dewa: Macam mana nak terangkan pasal “Technical Debt” dekat bos yang bukan budak IT?

Teknik komunikasi level dewa: Guna bahasa risiko dan duit untuk explain kenapa code perlu diperbaiki tanpa cerita pasal teknikal.

01 Jun 2020 Server - Perkara asas untuk web developer
Server - Perkara asas untuk web developer

Perkara asas mengenai hal-hal server bagi web developer

24 Nov 2018 Laravel - Cara guna php artisan
Laravel - Cara guna php artisan

Cara asas menggunakan command artisan dalam laravel untuk membina apa-apa custom web application.

07 Nov 2018 Apa Itu MVC? Cara Developer Sebenar Guna MVC Untuk Elak Code Jadi Sampah
Apa Itu MVC? Cara Developer Sebenar Guna MVC Untuk Elak Code Jadi Sampah

Cara guna Model, View & Controller (MVC) dalam projek sebenar supaya code bersih, senang dijaga, dan mudah untuk scale bisnes.

HAMIZULFAIZ