A guidance for caching: Caching කියන්නේ මොකක්ද?
![A guidance for caching: Caching කියන්නේ මොකක්ද?](/content/images/size/w1200/2024/07/what-is-chaching.webp)
සරලවම cache කියන්නේ නිතරම භාවිතා වන data තාවකාලිකව ගබඩා කරන storage එකක්. Cache storage එක ගොඩක් වේගවත් ඒවගේම processing unit එකට ආසන්නව තමයි තියෙන්නේ.
ඇයි අපිට caching ඕන වෙන්නේ ?
අපේ primary database එක සාමාන්යයෙන් slow. Data retrieve වෙන්න කාලයක් ගන්නවා. ඒ වගේම නිතරම භාවිතා කරන data වලට එන request නිසා අනවශ්ය overhead එකක් අපේ servers වල ඇති වෙනවා. Mission critical systems වලදී අපේ server වල සහ database එකේ load එක අඩු කරන්න ඕන. ඒවගේම සමහර queries සහ API calls වල resource consumption වැඩි (Expensive). එම නිසා ඒවා නැවත නැවතත් සිදු කරන එක optimal නැහැ. මෙන්න මේ වගේ හේතු නිසා අපි caching layer එකක් අපේ systems වලට add කරනවා.
අපි දැන් බලමු caching වල තියෙන වාසි.
- අපිට වේගයෙන් data access කරන්න පුළුවන්. එමගින් හොඳ user experience එකක් ලැබෙනවා. Primary database එක access වන වාර ගාන අඩු කරගන්න පුළුවන්. එමගින් latency එක අඩුකරගන්න අපිට පුළුවන්.
- අපේ primary database එක සහ server එක මත තියෙන workload එක අඩු කරගන්න පුළුවන්. ඒක cost effective.
- බොහෝ අවස්ථා වලදී, data cache වෙලා තියෙන නිසා offline use කරන්න පුළුවන්.
- ඒ වගේම bandwidth එක save කරගන්න සහ network traffic එක අඩු කරගන්නත් පුළුවන්.
අපි දැන් විවිධ cache types මොනවද කියල බලමු.
1. Browser Caching
මේක front end application වලට ගොඩක් useful. මෙකෙදි වෙන්නේ අපි web page එකකට යද්දී අපේ browser cache එකේ data save වෙන එක. ඉන් පසු නැවතත් අපි එම page එකට යනකොට අපි API call කරන්නේ නැතුව cache memory එකෙන් data read කරනවා. මේ විදියට අපිට API responses, Images, Videos, Assets, User information වගේ දේවල් ගබඩා කරන්න පුළුවන්.
ඒවගේම browser Caching වලට අමතරව browser local storage, indexed DB එහෙමත් අපිට භාවිතා කරන්න පුළුවන්.
2. CDN (Content Delivery Network)
සරලවම CDN කියන්නේ ගෝලීයව ව්යාප්ත වෙලා තියෙන storage server එකක්. හිතන්න අපි අපේ application එක AWS වල අපිට ලගම region එක වන Mumbai වල host කරලා තියෙනවා. නමුත් අපේ application එකට Australia වලින් traffic එකක් එනවා. අපිට පුලුවන් නම් ඒ users ලට ඕන data ඔවුන්ට වඩාත්ම ආසන්න ස්ථානයක store කරන්න, එතකොට latency එක අඩු කරගන්න පුළුවන්. මෙන්න මේක තමයි සරලවම අපි CDN වලින් කරන්නේ.
අපි ගොඩක් වෙලාවට Images, videos , audio, CSS, JS වගේ static files, streaming content මේ විදියට CDN වල store කරනවා. අපිට මේ සදහා Cloudinary, AWS CloudFront, Azure CDN use කරන්න පුළුවන්.
3. Application server cache
මේක අපි add කරන්නේ අපේ application එකේ backend side එකට. අපේ server එකට data ඉල්ලලා request එකක් ආවම අපි කරන්නේ එම data, database එකෙන් ගන්නවා. එම data අපිට caching layer එකක store කරන්න පුළුවන්. මේ සදහා අපිට Redis, Memcached වගේ එකක් use කරන්න පුලුවන්. නැවත එම data ඉල්ලලා server එකට request ආවම අපිට database එක access කරන් නැතුව cache later එකෙන් data ගන්න පුලුවන්. මෙමගින් database එක මත තියෙන load එක අඩු කරගන්න පුළුවන් ඒ වගේම වේගවත් response එකක් ලබාදෙන්න පුළුවන්.
4. Database caching
Database වලත් caching mechanism එකක් තියෙනවා query වල performance වෙඩි කරන්න. අපි නිතරම execute කරපු query තියෙනවනම් එම results, cache වල ගබඩා වෙනවා. මෙමගින් database එක මත තියෙන load එක අඩු කරගන්න පුළුවන් ඒ වගේම වේගවත් result එකක් ලබාදෙන්න පුළුවන්.
5. Other types of caches
CPU caches: L1 cache ( close to CPU), L2 cache (shared among CPU cores), L3 Cache
Memory cache: RAM cache to speed up I/O operations. Disk cache to speed up Reads/Writes
DNS caching: cache the IP address
අපි දැන් බලමු popular cache database ටිකක්.
- Redis
- Memcached
- Google cloud memorystore
- AWS ElastiCache
- Amazon DynamoDB Accelerator
- Azure cache for Redis
Caching වල තව cache eviction policies, cache invalidation strategies, scaling cache storage වගේ concepts ටිකක් තියෙනවා. ඒවා තවත් post එකකින් අරන් එන්නම්.