Concurrency Adalah? Cara Kerja Concurrency di Laravel 12
Concurrency adalah kemampuan menjalankan beberapa proses secara bersamaan (paralel), bukan satu per satu secara berurutan. Di dunia web modern, concurrency artinya bisa memanggil tiga API eksternal sekaligus dan menunggu semuanya selesai — dibanding menunggu satu selesai, baru mulai berikutnya. Laravel 12 memperkenalkan Concurrency facade yang membuat pola ini jauh lebih mudah diimplementasikan di aplikasi PHP.
Artikel ini menjelaskan apa itu Concurrency di Laravel 12, bagaimana cara kerjanya secara teknis, dan kapan sebaiknya dipakai — beserta kasus di mana lebih baik tidak menggunakannya.
Apa Itu Concurrency di Laravel 12?
Concurrency adalah teknik eksekusi paralel di mana beberapa operasi berjalan secara bersamaan, bukan berurutan. Dalam konteks Laravel, concurrency artinya Anda bisa menjalankan beberapa closure PHP secara paralel dan mengumpulkan semua hasilnya sekaligus.
Concurrency facade di Laravel 12 memungkinkan Anda menjalankan beberapa closure secara bersamaan (paralel) dan menunggu semua hasilnya. Ini berguna saat Anda punya beberapa operasi yang tidak bergantung satu sama lain dan masing-masing membutuhkan waktu, seperti memanggil beberapa API eksternal atau query ke database berbeda.
Tanpa concurrency (sequential):
// Total waktu: 1 + 2 + 1.5 = ~4.5 detik
$weather = fetchWeather($city); // 1 detik
$stock = fetchStockPrice($code); // 2 detik
$exchange = fetchExchangeRate(); // 1.5 detik
Dengan concurrency (paralel):
use Illuminate\Support\Facades\Concurrency;
// Total waktu: ~2 detik (terlama)
[$weather, $stock, $exchange] = Concurrency::run([
fn() => fetchWeather($city),
fn() => fetchStockPrice($code),
fn() => fetchExchangeRate(),
]);
Bagaimana Cara Kerjanya?
Laravel Concurrency bekerja dengan membuka beberapa proses PHP secara paralel (bukan thread). Setiap closure dijalankan di child process terpisah, hasilnya di-serialize dan dikembalikan ke parent process.
Ini berbeda dengan async programming di Node.js atau Go. Laravel Concurrency tidak non-blocking event loop, melainkan multi-process. Artinya ada overhead untuk setiap proses baru, jadi tidak ideal untuk tugas yang sangat pendek (di bawah 100ms).
Contoh Penggunaan Nyata
Dashboard analytics yang perlu data dari beberapa sumber:
use Illuminate\Support\Facades\Concurrency;
[$orders, $revenue, $topProducts, $visitors] = Concurrency::run([
fn() => Order::thisMonth()->count(),
fn() => Order::thisMonth()->sum('total'),
fn() => Product::topSelling(5)->get(),
fn() => Analytics::uniqueVisitors(today()),
]);
return view('dashboard', compact('orders', 'revenue', 'topProducts', 'visitors'));
Tanpa concurrency, kalau tiap query butuh 200ms, total jadi 800ms. Dengan concurrency, total sekitar 200ms (sesuai yang terlama).
Defer: Jalankan Setelah Response Dikirim
Laravel 12 juga punya Concurrency::defer() — mirip dengan concurrency, tapi closure dijalankan setelah response HTTP sudah dikirim ke browser.
use Illuminate\Support\Facades\Concurrency;
// Response langsung dikirim ke user
// Tiga closure di bawah jalan di background
Concurrency::defer([
fn() => $this->updateLastLogin($user),
fn() => $this->logActivity($user, 'login'),
fn() => $this->syncWithCRM($user),
]);
return redirect()->intended('dashboard');
Berguna untuk aksi “fire and forget” yang tidak perlu hasilnya sebelum response dikirim.
Kapan Pakai, Kapan Tidak?
Cocok untuk:
- Beberapa panggilan API eksternal yang independent
- Query ke database berbeda (multi-connection) yang tidak saling bergantung
- Proses komputasi berat yang bisa diparalelkan
Tidak cocok untuk:
- Tugas sangat cepat (overhead proses lebih mahal daripada keuntungannya)
- Operasi yang saling bergantung (output A dibutuhkan input B)
- Operasi yang butuh akses ke state yang sama (tidak ada shared memory antar proses)
Concurrency vs Queue vs Async: Apa Bedanya?
Banyak developer bingung membedakan tiga konsep ini. Berikut perbedaannya dalam konteks Laravel:
- Concurrency (Laravel 12) — Proses berjalan paralel, hasilnya ditunggu langsung di request yang sama. Ideal untuk operasi I/O yang independent dalam satu request.
- Queue (Laravel Queue) — Tugas dikirim ke antrian dan dikerjakan di background oleh worker terpisah. Tidak menunggu hasilnya. Ideal untuk email, notifikasi, proses besar yang tidak perlu hasilnya segera.
- Async (JavaScript/Node.js) — Non-blocking event loop. PHP secara native bukan bahasa async, jadi Laravel Concurrency mensimulasikannya via multi-process.
Aturan sederhana: Butuh hasilnya sekarang di dalam request? → Gunakan Concurrency. Tidak butuh hasilnya segera? → Gunakan Queue.
Pitfalls dan Hal yang Perlu Diperhatikan
Tidak Ada Shared State Antar Proses
Karena setiap closure berjalan di child process terpisah, tidak ada shared memory. Variabel, singleton, atau cache in-memory yang diubah di satu closure tidak akan terlihat di closure lain atau di parent process.
Exception Handling
Jika salah satu closure throw exception, Concurrency::run() akan menangkapnya dan throw ulang di parent process. Pastikan setiap closure ditangani dengan baik:
[$result1, $result2] = Concurrency::run([
fn() => safeApiCall1(),
fn() => safeApiCall2(),
]);
Database Connection per Process
Setiap child process butuh koneksi database sendiri. Pastikan database connection pool Anda cukup untuk menampung jumlah proses konkuren yang Anda jalankan.
Baca Juga
- Contoh Implementasi Concurrency di Laravel 12: Studi Kasus Nyata
- Apa Itu Context di Laravel 12 dan Bagaimana Cara Kerjanya
FAQ: Pertanyaan Umum tentang Concurrency di Laravel
Apa itu concurrency dalam pemrograman?
Concurrency adalah kemampuan sistem menjalankan beberapa proses atau operasi secara bersamaan. Concurrency artinya tidak ada satu proses yang harus menunggu proses lain selesai sebelum bisa mulai — semua bisa berjalan paralel.
Apa perbedaan concurrency dan parallelism?
Concurrency adalah konsep logis (beberapa pekerjaan dalam proses yang tumpang-tindih), sementara parallelism adalah eksekusi fisik secara bersamaan di beberapa CPU core. Laravel Concurrency di balik layar menggunakan multi-process, yang merupakan bentuk true parallelism.
Apakah Laravel Concurrency tersedia di Laravel 11?
Concurrency facade diperkenalkan di Laravel 11 (sebagai fitur eksperimental) dan disempurnakan di Laravel 12. Jika Anda menggunakan Laravel 11.x, pastikan versi Laravel Anda sudah mendukung Illuminate\Support\Facades\Concurrency.
Apakah laravel concurrency aman untuk production?
Ya, aman untuk production selama Anda memahami limitasinya: tidak ada shared state antar proses, exception harus ditangani dengan baik, dan jumlah concurrent process harus sesuai dengan kapasitas server (RAM dan database connections).
Concurrency artinya apa dalam bahasa Indonesia?
Concurrency artinya “kebersamaan” atau “pemrosesan bersamaan” — kemampuan menjalankan beberapa tugas secara paralel. Dalam konteks Laravel, concurrency artinya beberapa closure PHP dieksekusi secara bersamaan di proses terpisah.
Tertarik Membangun Aplikasi Laravel yang Performant?
Memahami fitur seperti Concurrency adalah bagian dari membangun aplikasi Laravel yang benar-benar scalable. Jika tim Anda butuh bantuan merancang arsitektur aplikasi PHP yang efisien — mulai dari pemilihan teknik pemrosesan yang tepat hingga deployment di server production — tim Arrazy Inovasi siap membantu.
Ada proyek yang ingin didiskusikan? Konsultasi gratis dengan tim kami.
Artikel Lainnya di Kategori Laravel
Laravel 9 November 2025
Routing di Laravel: Panduan Lengkap dengan Contoh Kode
Routing adalah pintu masuk semua request di Laravel. Sebelum request sampai ke controller atau logika apapun, dia harus melewati router dulu. Memahami cara kerja routing akan membuat kamu lebih mudah membangun struktur aplikasi yang rapi dan mudah di-maintain. Konsep Dasar: Bagaimana Request Diproses Saat browser mengirim request ke GET /posts, Laravel membaca file routes/web.php, mencari […]
Baca Artikel10 November 2025
Apa Itu Context di Laravel 12? Propagasi Data ke Log dan Queued Jobs
Pernah debugging log produksi dan bingung karena entri log tidak punya info konteks — tidak tahu request mana, user mana, atau proses apa yang menghasilkannya? Laravel 12 punya solusi bawaan untuk ini: fitur Context. Context di Laravel 12 bukan sekadar contextual binding di service container. Ini adalah fitur tersendiri yang memungkinkan Anda menyimpan data kontekstual […]
Baca Artikel9 November 2025
Laravel Migration: Panduan Lengkap Membuat dan Migrate Database
Panduan lengkap Laravel migration: cara membuat migration, migrate database, rollback, tipe kolom, index, dan aturan aman untuk production.
Baca ArtikelIngin Membaca Artikel Lainnya?
Temukan lebih banyak insight dan tips tentang teknologi dan bisnis digital.
Lihat Semua Artikel