ஒரு வீடியோ-ஹோஸ்டிங் தளம், தினமும் மில்லியன் கணக்கான படங்களை வழங்குகிறது. அதன் PHP பேக்எண்டிலிருந்து (backend) தம்பனைல் (thumbnail) உருவாக்கத்தை Cloudflare Workers-க்கு மாற்றியதன் மூலம், அதன் ஒரிஜின் (origin) சர்வரில் இருந்த அனைத்து CPU சுமையும் நீக்கப்பட்டது. இந்த மாற்றமானது, இமேஜ்-புரொசஸிங் லேட்டன்சியை (image-processing latency) டேட்டா சென்டரிலிருந்து எட்ஜிற்கு (edge) கொண்டு சென்றதுடன், பதிலளிக்கும் நேரத்தைக் குறைத்து, பேண்ட்வித் (bandwidth) செலவுகளைக் கணிக்கக்கூடியதாக மாற்றியது.
பழைய மாடல் ஏன் தோல்வியடைந்தது
பல்லாயிரக்கணக்கான வீடியோக்களைக் காட்டும் இந்தத் தளம், ஒரு பக்கத்திலேயே 40 தம்பனைல்கள் வரை இணைக்கிறது. ஒவ்வொரு தம்பனைலும் ஒரு PHP ஸ்கிரிப்ட் மூலம் தேவைப்படும்போது அதன் அசல் கோப்பை (original file) படித்து, மறுஅளவிறக்கம் (rescale) செய்யப்படுகிறது. கிராலர்கள் (crawlers) தளத்தைப் பார்வையிடும்போது, பேக்எண்ட் சர்வர் முடங்கியது (stall).
எட்ஜ் புரொசஸிங் ஐந்து முக்கியத் தேவைகளைத் தீர்க்கிறது
ஒரு புரொடக்ஷன்-கிரேடு (production-grade) தம்பனைல் API பின்வருவனவற்றை கையாள வேண்டும்:
- Fan-in – பல மூன்றாம் தரப்பு ஹோஸ்ட்களில் இருந்து மூலப் படங்களை (source images) எடுத்தல்.
- Fan-out – பல அளவுகளை உருவாக்குதல் (எ.கா., 320 px கார்டுகள், 640 px ஹீரோ இமேஜ்கள்).
- Format negotiation – பேண்ட்வித் செலவைக் குறைக்க, பிரவுசர் ஆதரிக்கும் போது WebP அல்லது AVIF வடிவங்களை வழங்குதல்.
- Cache – முதல் கோரிக்கை (request) அதிகச் செலவு கொண்டதாக இருக்கலாம், ஆனால் அடுத்தடுத்த கோரிக்கைகள் இலவசமாக இருப்பதை உறுதி செய்தல்.
- Security – யாராவது தன்னிச்சையான படங்களைச் செயலாக்க இந்தச் சேவையைப் பயன்படுத்துவதைத் தடுத்தல்.
Cloudflare Workers, ஒரிஜின் CPU-வை பாதிக்காமல் ஒவ்வொரு அம்சத்தையும் கையாள்கிறது:
- Proximity – Workers பயனருக்கு அருகிலுள்ள டேட்டா சென்டர்களில் இயங்குவதால், செயலாக்கப்பட்ட படம் குறுகிய பாதையிலேயே பயணிக்கிறது.
- Built-in Image Resizing – இந்தத் தளத்தின் Image Resizing அம்சம் பிக்சல் வேலைகளைச் செய்கிறது, இதனால் தனிப்பயன் லைப்ரரி (custom library) தேவையில்லை.
- Cache API – Workers மறுஅளவிறக்கம் செய்யப்பட்ட படத்தை எட்ஜில் சேமிக்கிறது; முதல் கோரிக்கைக்குப் பிறகு, எட்ஜ் அதை நேரடியாக வழங்குகிறது.
- Programmable security – ஒரு சிறிய ஸ்கிரிப்ட் HMAC சிக்னேச்சர்களை (signatures) சரிபார்க்கிறது, ஹோஸ்ட்நேம்கள் மற்றும் அகலங்களுக்கான (widths) அனுமதிப் பட்டியலை (allow-list) நடைமுறைப்படுத்துகிறது, மேலும் கேச் பாய்சனிங்கைத் (cache poisoning) தவிர்க்க கேச் கீயை (cache keys) இயல்பாக்குகிறது (normalizes).
இந்த அமைப்பு எவ்வாறு செயல்படுகிறது
- Origin கையொப்பமிடப்பட்ட URL-களை உருவாக்குகிறது – பேக்எண்ட் ஒரு ரகசிய சாவியை (secret key) வைத்திருக்கும் மற்றும் ஒவ்வொரு தம்பனைல் கோரிக்கைக்கும் ஒரு HMAC சிக்னேச்சரை இணைக்கும். URL-இல் தேவையான அகலம் மற்றும் வடிவமும் (format) அடங்கும்.
- Worker சிக்னேச்சரைச் சரிபார்க்கிறது – கோரிக்கை வந்தவுடன், Worker பகிர்ந்துகொள்ளப்பட்ட ரகசிய சாவியைப் பயன்படுத்தி HMAC-ஐ மீண்டும் கணக்கிடுகிறது. சிக்னேச்சர் இல்லையென்றால் அல்லது தவறாக இருந்தால், கோரிக்கை நிராகரிக்கப்பட்டு, தவறான பயன்பாடு தடுக்கப்படுகிறது.
- அனுமதிப் பட்டியலை நடைமுறைப்படுத்துதல் – மூல ஹோஸ்ட்நேம் (source hostname) முன்கூட்டியே வரையறுக்கப்பட்ட பட்டியலில் உள்ளதா என்பதையும், கோரப்பட்ட அகலம் ஆதரிக்கப்படும் அளவுகளில் ஒன்றா என்பதையும் ஸ்கிரிப்ட் சரிபார்க்கிறது. இது தீய ஹோஸ்ட்கள் கேச் செய்யப்படுவதைத் தடுக்கிறது.
- Cache key இயல்பாக்கம் – கேச் கீயிலிருந்து சிக்னேச்சர் நீக்கப்படுகிறது; கீ-இல் மூல URL, அகலம் மற்றும் வடிவம் மட்டுமே இருக்கும். இது ஒரே படத்தை கோரும் வெவ்வேறு பயனர்கள் ஒரே கேச் பதிவைப் பெறுவதற்கான வாய்ப்பை அதிகரிக்கிறது.
- Edge fetch மற்றும் resize – படம் ஏற்கனவே கேச் செய்யப்படவில்லை என்றால், Worker மூன்றாம் தரப்பு ஹோஸ்ட்டிலிருந்து அசல் படத்தை எடுத்து, Image Resizing API-ஐ இயக்கி, அதன் முடிவை எட்ஜ் கேச்சில் சேமிக்கிறது.
- Cache warming – ஒவ்வொரு கிராவல் (crawl) முடிந்ததும், ஒரு லேசான Python ஸ்கிரிப்ட் புதிய தம்பனைல்களை முன்கூட்டியே கோருகிறது (pre-requests). இதனால் முதல் உண்மையான பயனர், மறுஅளவிறக்கத்திற்காகக் காத்திருக்காமல், கேச் செய்யப்பட்ட பதிலைப் பெறுகிறார்.
ஒரு மாதத்திற்குப் பிறகு அளவிடக்கூடிய தாக்கம்
- படங்களுக்கான Origin CPU – பூஜ்ஜியமாகக் குறைந்தது; பேக்எண்ட் இனி ஒருபோதும் இமேஜ் பைட்டுகளை (image bytes) செயலாக்காது.
- HTML வழங்கும் வேகம் – சர்வர் இனி இமேஜ் வேலைகளுக்காகத் தடையின்றி இயங்குவதால், வேகம் குறிப்பிடத்தக்க அளவில் மேம்பட்டது.
- Edge cache hit rate – 96% ஐ எட்டியது, அதாவது கிட்டத்தட்ட ஒவ்வொரு கோரிக்கையும் பேக்எண்ட் மூலம் பெறப்படாமல் எட்ஜிலிருந்தே பூர்த்தி செய்யப்பட்டது.
- Latency – படங்கள் இப்போது மையமான ஒரிஜின் மூலம் வழங்கப்படாமல், பயனருக்கு அருகிலுள்ள டேட்டா சென்டரிலிருந்து வழங்கப்படுவதால் குறைந்துள்ளது.
- பேண்ட்வித் கணிக்கக்கூடிய தன்மை – எட்ஜ் கேச்சிங் மூலம், ஒரிஜினிலிருந்து வெளியேறும் டிராஃபிக் (outbound traffic) நிலையானது மற்றும் எளிதில் கணிக்கக்கூடியது.
சுருக்கமாக
தம்பனைல் உருவாக்கத்தை Cloudflare Workers-க்கு மாற்றுவது, CPU-ஆல் ஏற்படும் தடைகளை (bottleneck) கிட்டத்தட்ட பூஜ்ஜியச் செலவு கொண்ட எட்ஜ் கேச்சாக மாற்றியது. ஒரிஜின் இப்போது கையொப்பமிடப்பட்ட URL-களை மட்டுமே வழங்குகிறது, அதே நேரத்தில் எட்ஜ் படங்களை எடுத்தல், மறுஅளவிறக்கம் செய்தல், வடிவங்களைச் சமரசம் செய்தல் மற்றும் கேச் செய்யப்பட்ட முடிவுகளை வழங்குதல் போன்றவற்றைச் செய்கிறது. படங்களை அதிகம் நம்பியிருக்கும் எந்தவொரு தளத்திற்கும்—குறிப்பாக ஒரு பக்கத்திற்குப் பல தம்பனைல்களைக் காட்டும் வீடியோ தளங்களுக்கு—இந்த "எட்ஜ்-ஃபர்ஸ்ட்" (edge-first) அணுகுமுறை வேகமான பக்கங்கள், கணிக்கக்கூடிய செலவுகள் மற்றும் "என்ன காட்ட வேண்டும்" (origin) மற்றும் "அதை எவ்வாறு வழங்க வேண்டும்" (edge) ஆகியவற்றிற்கு இடையே தெளிவான பிரிவினையை வழங்குகிறது.
