Laravel යෙදුම් බොහෝවිට සාම්ප්රදායික CRUD (Create, Read, Update, Delete) ආකෘතියට පමණක් සීමා වෙයි. පරිශීලකයෙකුගේ ගිණුම් ශේෂය වෙනස් වුවමනා, ඒ වෙනස්කම තවත් තැන්පත් කර නොමැතිව පසුගිය අගයන් අතුරුදහන් වේ.
මෙවැනි පද්ධතියක අතුරුදන් වූ තොරතුරු හේතුව හොයා ගැනීමට, හෝ මාස කිහිපයකට පෙර සිදු වූ වැරදි පරීක්ෂා කිරීමට ඉඩ නොදෙයි. ඒ නිසා ආරක්ෂාව, පරීක්ෂණය, සහ ව්යාපාරික විශ්වාසය අඩු වේ.
Event Sourcing යනු, මොඩලයක්ගේ වර්තමාන තත්වය සුරැකීමේ වෙනුවට, එයට සිදු වූ සෑම සිදුවීමක්ම අඛණ්ඩව සටහන් කර තබන ක්රමයකි. මෙම සිදුවීම් එකතුවෙන් වර්තමාන තත්වය ගණනය කරයි, එනම් “ඉතිහාසය පදනම් කරගත්” ආකෘතියක්.
පියවර 1 – සිදුවීම් සුරැකුම් සාමාන්යයෙන් ගිණුම් වගුවේ balance තීරුවක් තිබේ. Event Sourcing භාවිතා කරනවිට, balance තීරුවක් නොමැතිව, MoneyDeposited වැනි සිදුවීමක් වගුවේ ඇතුළත් වේ.
උදාහරණයක්:
// ❌ සාම්ප්රදායික CRUD
$account = Account::find(1);
$account->balance += 500;
$account->save();
// ✅ Event Sourcing
$accountAggregate = AccountAggregateRoot::retrieve($uuid);
$accountAggregate->depositMoney(500, 'Salary deposit')->persist();
පියවර 2 – Projection (Read Model) සියලු සිදුවීම් පිරික්සමින් වාරිකය ගණනය කිරීම API ප්රතිචාරයක් සඳහා මන්දගාමී වේ. ඒ නිසා Projector එකක් භාවිතා කර, සිදුවීම් ලැබෙන විටම read‑optimized වගුවක් (AccountProjection) යාවත්කාලීන කරයි.
උදාහරණ කේතය:
namespace App\Projectors;
use App\Events\MoneyDeposited;
use App\Models\AccountProjection;
use Spatie\EventSourcing\EventHandlers\Projectors\Projector;
class AccountBalanceProjector extends Projector {
public function onMoneyDeposited(MoneyDeposited $event) {
$account = AccountProjection::firstOrCreate(['uuid' => $event->aggregateRootUuid()]);
$account->balance += $event->amount;
$account->save();
}
}
Projection වගුව කෙලෙස හෝ දෝෂයට ලක් වූවානම්, ඒ වගුව මකා දමා සිදුවීම් නැවත ක්රියාත්මක කිරීමෙන් පූර්ණව නැවත ගොඩනඟා ගත හැක. මෙය 100% නිරවද්ය audit log, කාලයත්රාණය (time‑travel) හැකියාව, සහ CQRS (Command Query Responsibility Segregation) ආකෘතියේ වාසි ලබා දේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තාක්ෂණික ආයතන, fintech සමාගම්, හා විශ්වවිද්යාල සිසුන්ට Event Sourcing අත්යවශ්යයි. ආර්ථික ගිණුම්, පාරිභෝගික දත්ත, හෝ රජයේ වාර්තා පද්ධතිවල දෝෂ හඳුනා ගැනීම, පසුගිය තොරතුරු පරීක්ෂා කිරීම ඉතා පහසු වේ. එමඟින් නීතිමය පරීක්ෂණ, පාරිභෝගික විශ්වාසය, හා ව්යාපාරික තීරණ ගත කිරීමේ නිවැරදි බව වැඩිදියුණු වේ. තවත්, Laravel භාවිතා කරන තරුණ සංවර්ධකයින්ට Event Sourcing පද්ධතියක් ඉගෙන ගැනීම, අන්තර්ජාතික තරග සහ සොෆ්ට්වෙයාර් සමාගම් වල අයදුම්පත් සඳහා අතිශය අගය ගනී.
ඉදිරියේදී, සිද්ධි‑මූලික ආකෘතියක් අනුගමනය කිරීමෙන් ශ්රී ලංකාවේ තාක්ෂණික නිෂ්පාදන ගුණාත්මකභාවය, ආරක්ෂාව, සහ නවෝත්පාදන ශක්තිය වැඩිදියුණු වේ.
Event Sourcing යනු තරුණ සංවර්ධකයින්ගේ “සුපිරි ශක්තිය” විය හැකිය. ඔබේ Laravel ව්යාපෘතියට අදම එකතු කර බලන්න.