
Laravel Distributed Systems
Komunikasi berbasis queue, events, outbox pattern, idempotensi, retries, circuit breaker, kontrak API, versioning, dasar Saga
1Apa itu outbox pattern dalam sistem terdistribusi Laravel?
Apa itu outbox pattern dalam sistem terdistribusi Laravel?
Jawaban
outbox pattern menyimpan messages/events dalam tabel database selama transaksi yang sama dengan data bisnis, lalu mengirimkannya secara asinkron dalam proses terpisah. Ini memastikan messages selalu terkirim bahkan jika sistem crash setelah commit DB. ShouldQueueAfterCommit di Laravel adalah implementasi parsial dari pattern ini, karena hanya men-dispatch job setelah commit transaksi, sehingga menghindari race condition di mana job dieksekusi sebelum data tersedia.
2Apa perbedaan utama antara ShouldQueue dan ShouldQueueAfterCommit?
Apa perbedaan utama antara ShouldQueue dan ShouldQueueAfterCommit?
Jawaban
ShouldQueue men-dispatch job segera ke queue, bahkan jika transaksi DB belum di-commit, yang dapat menyebabkan race condition. ShouldQueueAfterCommit menunggu semua transaksi DB di-commit sebelum men-dispatch job, sehingga memastikan data tersedia saat job dieksekusi. Gunakan ShouldQueueAfterCommit untuk job yang bergantung pada data yang baru dibuat atau diubah dalam suatu transaksi, misalnya job pengiriman email setelah pembuatan pesanan.
3Apa itu idempotensi dalam konteks sistem terdistribusi Laravel?
Apa itu idempotensi dalam konteks sistem terdistribusi Laravel?
Jawaban
Idempotensi berarti suatu operasi dapat dieksekusi beberapa kali tanpa mengubah hasil melebihi eksekusi pertama. Di Laravel, ini mencegah efek samping yang tidak diinginkan selama retries job atau messages duplikat. Misalnya, job pembuatan pesanan yang idempoten memeriksa apakah pesanan sudah ada sebelum membuatnya, sehingga menghindari duplikasi jika job di-retry setelah timeout. Gunakan ShouldBeUnique, WithoutOverlapping, atau deduplicationId untuk memastikan idempotensi.
Apa keuntungan utama menggunakan event dibandingkan dispatch job secara langsung untuk komunikasi antar-service?
Dalam konteks apa ShouldBeEncrypted sebaiknya digunakan untuk queued job?
+19 pertanyaan wawancara
Topik wawancara Laravel lainnya
Dasar-Dasar PHP
Dasar OOP PHP
Composer & Autoloading
Dasar-Dasar Laravel
Routing Laravel
Blade Templates
Request & Response
Dasar-Dasar Eloquent ORM
Eloquent Relationships
Migrations & Schema Builder
Validasi & Formulir
Autentikasi
Otorisasi & Policies
API Resources & Authentication
Middleware
Service Container & DI
Queues & Jobs
Events & Listeners
Notifikasi & Mail
File Storage
Testing & PHPUnit
Caching
Livewire & Inertia
Eloquent Advanced
Repository Pattern
Laravel Packages
Performance Optimization
Security Best Practices
Laravel Octane
Observability & Monitoring
Deployment & DevOps
Kuasai Laravel untuk wawancara berikutnya
Akses semua pertanyaan, flashcards, tes teknis, latihan code review dan simulator wawancara.
Mulai gratis