சர்வர்லெஸ் ஃபங்ஷன் கம்போசிஷன் மற்றும் ஆர்கெஸ்ட்ரேஷன் உங்கள் ஃபிரன்ட்எண்ட் கட்டமைப்பை எவ்வாறு புரட்சிகரமாக்குகிறது, கிளையன்ட்-பக்க லாஜிக்கை எளிதாக்குகிறது, மற்றும் மீள்திறன் கொண்ட, அளவிடக்கூடிய பயன்பாடுகளை உருவாக்குகிறது என்பதை ஆராயுங்கள்.
ஃபிரன்ட்எண்ட் சர்வர்லெஸ் கட்டமைப்பு: ஃபங்ஷன் கம்போசிஷன் மற்றும் ஆர்கெஸ்ட்ரேஷனில் ஒரு ஆழமான பார்வை
இணைய மேம்பாட்டின் எப்போதும் மாறிவரும் சூழலில், ஃபிரன்ட்எண்டின் பங்கு எளிமையான பயனர் இடைமுகங்களை வழங்குவதிலிருந்து சிக்கலான பயன்பாட்டு நிலையை நிர்வகித்தல், நுட்பமான வணிக தர்க்கத்தைக் கையாளுதல், மற்றும் எண்ணற்ற ஒத்திசைவற்ற செயல்பாடுகளை ஒழுங்கமைத்தல் வரை விரிவடைந்துள்ளது. பயன்பாடுகள் நுட்பத்தில் வளரும்போது, திரைக்குப் பின்னால் உள்ள சிக்கலும் அதிகரிக்கிறது. பாரம்பரியமான மோனோலிதிக் பேக்எண்ட் மற்றும் முதல் தலைமுறை மைக்ரோசர்விசஸ் கட்டமைப்புகள் கூட சில நேரங்களில் இடையூறுகளை உருவாக்கலாம், ஃபிரன்ட்எண்டின் சுறுசுறுப்பை பேக்எண்டின் வெளியீட்டு சுழற்சிகளுடன் பிணைக்கலாம். இங்குதான் சர்வர்லெஸ் கட்டமைப்பு, குறிப்பாக ஃபிரன்ட்எண்டிற்கு, ஒரு முன்னுதாரண மாற்றத்தை அளிக்கிறது.
ஆனால் சர்வர்லெஸ்ஸை ஏற்றுக்கொள்வது என்பது தனிப்பட்ட ஃபங்ஷன்களை எழுதுவது போல எளிமையானது அல்ல. ஒரு நவீன பயன்பாடு அரிதாகவே ஒரு தனிமைப்படுத்தப்பட்ட செயலுடன் ஒரு பணியைச் செய்கிறது. பெரும்பாலும், இது படிகளின் வரிசை, இணை செயல்முறைகள் மற்றும் நிபந்தனை தர்க்கம் ஆகியவற்றைக் கொண்டுள்ளது. இந்த சிக்கலான பணிப்பாய்வுகளை ஒரு மோனோலிதிக் மனநிலைக்குத் திரும்பாமல் அல்லது ஒன்றோடொன்று இணைக்கப்பட்ட ஃபங்ஷன்களின் சிக்கலான குழப்பத்தை உருவாக்காமல் நாம் எவ்வாறு நிர்வகிப்பது? பதில் இரண்டு சக்திவாய்ந்த கருத்துக்களில் உள்ளது: ஃபங்ஷன் கம்போசிஷன் மற்றும் ஃபங்ஷன் ஆர்கெஸ்ட்ரேஷன்.
இந்த விரிவான வழிகாட்டி, இந்த பேட்டர்ன்கள் பேக்எண்ட்-ஃபார்-ஃபிரன்ட்எண்ட் (BFF) அடுக்கை எவ்வாறு மாற்றுகின்றன, டெவலப்பர்களை வலுவான, அளவிடக்கூடிய மற்றும் பராமரிக்கக்கூடிய பயன்பாடுகளை உருவாக்க உதவுகின்றன என்பதை ஆராயும். நாம் முக்கிய கருத்துக்களைப் பிரித்து, பொதுவான பேட்டர்ன்களை ஆய்வு செய்து, முன்னணி கிளவுட் ஆர்கெஸ்ட்ரேஷன் சேவைகளை மதிப்பீடு செய்து, உங்கள் புரிதலை உறுதிப்படுத்த ஒரு நடைமுறை உதாரணத்தின் மூலம் செல்வோம்.
ஃபிரன்ட்எண்ட் கட்டமைப்பின் பரிணாமம் மற்றும் சர்வர்லெஸ் BFF-இன் எழுச்சி
சர்வர்லெஸ் ஆர்கெஸ்ட்ரேஷனின் முக்கியத்துவத்தைப் பாராட்ட, ஃபிரன்ட்எண்ட் கட்டமைப்பின் பயணத்தைப் புரிந்துகொள்வது உதவியாக இருக்கும். நாம் சர்வரில் இருந்து வழங்கப்படும் பக்கங்களிலிருந்து REST அல்லது GraphQL API-கள் வழியாக பேக்எண்டுகளுடன் தொடர்பு கொள்ளும் செழுமையான ஒற்றைப்-பக்க பயன்பாடுகளுக்கு (SPAs) நகர்ந்துள்ளோம். இந்த அக்கறைகளைப் பிரிப்பது ஒரு பெரிய முன்னேற்றமாக இருந்தது, ஆனால் அது புதிய சவால்களை அறிமுகப்படுத்தியது.
மோனோலித்திலிருந்து மைக்ரோசர்விசஸ் மற்றும் BFF வரை
ஆரம்பத்தில், SPAs பெரும்பாலும் ஒற்றை, மோனோலிதிக் பேக்எண்ட் API உடன் பேசின. இது எளிமையானது ஆனால் உடையக்கூடியது. மொபைல் பயன்பாட்டிற்கான ஒரு சிறிய மாற்றம் வலை பயன்பாட்டை உடைத்துவிடும். மைக்ரோசர்விசஸ் இயக்கம் இந்த மோனோலித்தை சிறிய, சுயாதீனமாக வரிசைப்படுத்தக்கூடிய சேவைகளாக உடைப்பதன் மூலம் இதற்குத் தீர்வு கண்டது. இருப்பினும், இது பெரும்பாலும் ஃபிரன்ட்எண்ட் ஒரு பார்வையை வழங்க பல மைக்ரோசர்விசஸ்களை அழைக்க வேண்டியிருந்தது, இது அதிகப்படியான தொடர்பு மற்றும் சிக்கலான கிளையன்ட்-பக்க தர்க்கத்திற்கு வழிவகுத்தது.
பேக்எண்ட்-ஃபார்-ஃபிரன்ட்எண்ட் (BFF) பேட்டர்ன் ஒரு தீர்வாக உருவானது. BFF என்பது ஒரு குறிப்பிட்ட ஃபிரன்ட்எண்ட் அனுபவத்திற்கான பிரத்யேக பேக்எண்ட் அடுக்கு ஆகும் (எ.கா., வலை பயன்பாட்டிற்கு ஒன்று, iOS பயன்பாட்டிற்கு ஒன்று). இது ஒரு முகப்பாக செயல்படுகிறது, பல்வேறு கீழ்நிலை மைக்ரோசர்விசஸ்களிலிருந்து தரவை ஒருங்கிணைத்து, கிளையன்டின் தேவைகளுக்கு ஏற்ப API பதிலை வடிவமைக்கிறது. இது ஃபிரன்ட்எண்ட் குறியீட்டை எளிதாக்குகிறது, நெட்வொர்க் கோரிக்கைகளின் எண்ணிக்கையைக் குறைக்கிறது, மற்றும் செயல்திறனை மேம்படுத்துகிறது.
சர்வர்லெஸ், BFF-க்கான சரியான பொருத்தம்
சர்வர்லெஸ் ஃபங்ஷன்கள், அல்லது ஃபங்ஷன்-ஆஸ்-எ-சர்வீஸ் (FaaS), ஒரு BFF-ஐ செயல்படுத்துவதற்கு இயற்கையான பொருத்தமாகும். உங்கள் BFF-க்காக தொடர்ந்து இயங்கும் ஒரு சர்வரைப் பராமரிப்பதற்குப் பதிலாக, நீங்கள் சிறிய, நிகழ்வு-சார்ந்த ஃபங்ஷன்களின் தொகுப்பை வரிசைப்படுத்தலாம். ஒவ்வொரு ஃபங்ஷனும் ஒரு குறிப்பிட்ட API எண்ட்பாயிண்ட் அல்லது பணியைக் கையாள முடியும், அதாவது பயனர் தரவைப் பெறுதல், பணம் செலுத்துதலைச் செயல்படுத்துதல், அல்லது ஒரு செய்தி ஊட்டத்தை ஒருங்கிணைத்தல்.
இந்த அணுகுமுறை நம்பமுடியாத நன்மைகளை வழங்குகிறது:
- அளவிடுதல் (Scalability): ஃபங்ஷன்கள் தேவைக்கேற்ப தானாகவே அளவிடப்படுகின்றன, பூஜ்ஜியத்திலிருந்து ஆயிரக்கணக்கான அழைப்புகள் வரை.
- செலவு-செயல்திறன்: நீங்கள் பயன்படுத்தும் கணினி நேரத்திற்கு மட்டுமே நீங்கள் பணம் செலுத்துகிறீர்கள், இது ஒரு BFF-இன் அடிக்கடி வெடிக்கும் போக்குவரத்து முறைகளுக்கு ஏற்றது.
- டெவலப்பர் வேகம்: சிறிய, சுயாதீனமான ஃபங்ஷன்களை உருவாக்குவது, சோதிப்பது மற்றும் வரிசைப்படுத்துவது எளிது.
இருப்பினும், இது ஒரு புதிய சவாலுக்கு வழிவகுக்கிறது. உங்கள் பயன்பாட்டின் சிக்கல் அதிகரிக்கும்போது, உங்கள் BFF ஒரு கிளையன்ட் கோரிக்கையை நிறைவேற்ற பல ஃபங்ஷன்களை ஒரு குறிப்பிட்ட வரிசையில் அழைக்க வேண்டியிருக்கலாம். உதாரணமாக, ஒரு பயனர் பதிவு செய்வது ஒரு தரவுத்தள பதிவை உருவாக்குவது, ஒரு பில்லிங் சேவையை அழைப்பது, மற்றும் ஒரு வரவேற்பு மின்னஞ்சலை அனுப்புவது ஆகியவற்றை உள்ளடக்கியிருக்கலாம். ஃபிரன்ட்எண்ட் கிளையன்ட் இந்த வரிசையை நிர்வகிப்பது திறமையற்றது மற்றும் பாதுகாப்பற்றது. இதுதான் ஃபங்ஷன் கம்போசிஷன் மற்றும் ஆர்கெஸ்ட்ரேஷன் தீர்க்க வடிவமைக்கப்பட்ட பிரச்சனை.
முக்கிய கருத்துக்களைப் புரிந்துகொள்ளுதல்: கம்போசிஷன் மற்றும் ஆர்கெஸ்ட்ரேஷன்
நாம் பேட்டர்ன்கள் மற்றும் கருவிகளுக்குள் நுழைவதற்கு முன்பு, நமது முக்கிய சொற்களின் தெளிவான வரையறையை நிறுவுவோம்.
சர்வர்லெஸ் ஃபங்ஷன்கள் (FaaS) என்றால் என்ன?
அவற்றின் மையத்தில், சர்வர்லெஸ் ஃபங்ஷன்கள் (AWS Lambda, Azure Functions, அல்லது Google Cloud Functions போன்றவை) ஒரு நிகழ்வுக்குப் பதிலளிக்கும் வகையில் இயங்கும் நிலையற்ற, குறுகிய கால கணினி நிகழ்வுகள் ஆகும். ஒரு நிகழ்வு என்பது API கேட்வேயிலிருந்து வரும் ஒரு HTTP கோரிக்கை, ஒரு சேமிப்பகத்தில் புதிய கோப்பு பதிவேற்றம் அல்லது ஒரு வரிசையில் உள்ள செய்தி என இருக்கலாம். முக்கிய கொள்கை என்னவென்றால், டெவலப்பரான நீங்கள், அடிப்படை சர்வர்களை நிர்வகிப்பதில்லை.
ஃபங்ஷன் கம்போசிஷன் என்றால் என்ன?
ஃபங்ஷன் கம்போசிஷன் என்பது பல எளிய, ஒற்றை-நோக்க ஃபங்ஷன்களை இணைப்பதன் மூலம் ஒரு சிக்கலான செயல்முறையை உருவாக்கும் வடிவமைப்பு முறை ஆகும். இதை லெகோ செங்கற்களைக் கொண்டு கட்டுவது போல நினைத்துப் பாருங்கள். ஒவ்வொரு செங்கல்லுக்கும் (ஃபங்ஷன்) ஒரு குறிப்பிட்ட வடிவம் மற்றும் நோக்கம் உள்ளது. அவற்றை வெவ்வேறு வழிகளில் இணைப்பதன் மூலம், நீங்கள் விரிவான கட்டமைப்புகளை (பணிப்பாய்வுகள்) உருவாக்கலாம். கம்போசிஷனின் கவனம் ஃபங்ஷன்களுக்கு இடையேயான தரவு ஓட்டத்தில் உள்ளது.
ஃபங்ஷன் ஆர்கெஸ்ட்ரேஷன் என்றால் என்ன?
ஃபங்ஷன் ஆர்கெஸ்ட்ரேஷன் என்பது அந்த கம்போசிஷனின் செயல்படுத்தல் மற்றும் மேலாண்மை ஆகும். இது ஒரு மையக் கட்டுப்பாட்டாளரை - ஒரு ஆர்கெஸ்ட்ரேட்டரை - உள்ளடக்கியது, இது முன்னரே வரையறுக்கப்பட்ட பணிப்பாய்வுக்கு ஏற்ப ஃபங்ஷன்களின் செயல்பாட்டை இயக்குகிறது. ஆர்கெஸ்ட்ரேட்டர் பின்வருவனவற்றிற்குப் பொறுப்பாகும்:
- ஓட்டக் கட்டுப்பாடு (Flow Control): ஃபங்ஷன்களை வரிசையாக, இணையாக, அல்லது நிபந்தனை தர்க்கத்தின் அடிப்படையில் (கிளைத்தல்) செயல்படுத்துதல்.
- நிலை மேலாண்மை (State Management): பணிப்பாய்வு முன்னேறும்போது அதன் நிலையைக் கண்காணித்தல், படிகளுக்கு இடையில் தரவைக் கடத்துதல்.
- பிழை கையாளுதல் (Error Handling): ஃபங்ஷன்களிலிருந்து பிழைகளைப் பிடித்து, மீண்டும் முயற்சிக்கும் தர்க்கம் அல்லது இழப்பீட்டு நடவடிக்கைகளை (எ.கா., ஒரு பரிவர்த்தனையைத் திரும்பப் பெறுதல்) செயல்படுத்துதல்.
- ஒருங்கிணைப்பு (Coordination): முழு பல-படி செயல்முறையும் ஒரு பரிவர்த்தனை அலகாக வெற்றிகரமாக முடிவடைவதை உறுதி செய்தல்.
கம்போசிஷன் vs. ஆர்கெஸ்ட்ரேஷன்: ஒரு தெளிவான வேறுபாடு
வேறுபாட்டைப் புரிந்துகொள்வது முக்கியம்:
- கம்போசிஷன் என்பது வடிவமைப்பு அல்லது 'என்ன'. ஒரு இ-காமர்ஸ் செக்அவுட்டிற்கு, கம்போசிஷன் இப்படி இருக்கலாம்: 1. வண்டியைச் சரிபார் -> 2. பணம் செலுத்து -> 3. ஆர்டரை உருவாக்கு -> 4. உறுதிப்படுத்தல் அனுப்பு.
- ஆர்கெஸ்ட்ரேஷன் என்பது செயல்படுத்தும் இயந்திரம் அல்லது 'எப்படி'. ஆர்கெஸ்ட்ரேட்டர் என்பது `validateCart` ஃபங்ஷனை அழைத்து, அதன் பதிலுக்காகக் காத்திருந்து, பின்னர் அதன் முடிவைக் கொண்டு `processPayment` ஃபங்ஷனை அழைக்கும், பணம் செலுத்துவதில் ஏற்படும் தோல்விகளை மீண்டும் முயற்சிகளுடன் கையாளும், மற்றும் பலவற்றையும் செய்யும் சேவையாகும்.
எளிய கம்போசிஷனை ஒரு ஃபங்ஷன் நேரடியாக மற்றொன்றை அழைப்பதன் மூலம் அடைய முடியும் என்றாலும், இது இறுக்கமான இணைப்பு மற்றும் பலவீனத்தை உருவாக்குகிறது. உண்மையான ஆர்கெஸ்ட்ரேஷன், ஃபங்ஷன்களை பணிப்பாய்வு தர்க்கத்திலிருந்து பிரிக்கிறது, இது மிகவும் மீள்திறன் மற்றும் பராமரிக்கக்கூடிய அமைப்புக்கு வழிவகுக்கிறது.
சர்வர்லெஸ் ஃபங்ஷன் கம்போசிஷனுக்கான பேட்டர்ன்கள்
சர்வர்லெஸ் ஃபங்ஷன்களை கம்போஸ் செய்யும்போது பல பொதுவான பேட்டர்ன்கள் வெளிப்படுகின்றன. பயனுள்ள பணிப்பாய்வுகளை வடிவமைக்க இவற்றைப் புரிந்துகொள்வது முக்கியம்.
1. சங்கிலித் தொடர் (வரிசைமுறை εκτέλεση)
இது எளிமையான பேட்டர்ன் ஆகும், இதில் ஃபங்ஷன்கள் ஒன்றன்பின் ஒன்றாக ஒரு வரிசையில் செயல்படுத்தப்படுகின்றன. முதல் ஃபங்ஷனின் வெளியீடு இரண்டாவது ஃபங்ஷனின் உள்ளீடாக மாறும், மற்றும் பல. இது ஒரு பைப்லைனின் சர்வர்லெஸ் சமமானதாகும்.
பயன்பாட்டு வழக்கு: ஒரு படத்தைச் செயலாக்கும் பணிப்பாய்வு. ஒரு ஃபிரன்ட்எண்ட் ஒரு படத்தைப் பதிவேற்றுகிறது, இது ஒரு பணிப்பாய்வைத் தூண்டுகிறது:
- ஃபங்ஷன் A (ValidateImage): கோப்பு வகை மற்றும் அளவைச் சரிபார்க்கிறது.
- ஃபங்ஷன் B (ResizeImage): பல சிறுபடப் பதிப்புகளை உருவாக்குகிறது.
- ஃபங்ஷன் C (AddWatermark): அளவை மாற்றிய படங்களுக்கு ஒரு வாட்டர்மார்க் சேர்க்கிறது.
- ஃபங்ஷன் D (SaveToBucket): இறுதிப் படங்களை கிளவுட் சேமிப்பகத்தில் சேமிக்கிறது.
2. ஃபேன்-அவுட்/ஃபேன்-இன் (இணை εκτέλεση)
செயல்திறனை மேம்படுத்த பல சுயாதீனமான பணிகளை ஒரே நேரத்தில் செய்ய முடிந்தால் இந்த பேட்டர்ன் பயன்படுத்தப்படுகிறது. ஒரு ஒற்றை ஃபங்ஷன் (ஃபேன்-அவுட்) பல பிற ஃபங்ஷன்களை இணையாக இயக்கத் தூண்டுகிறது. ஒரு இறுதி ஃபங்ஷன் (ஃபேன்-இன்) அனைத்து இணைப் பணிகளும் முடிவடையும் வரை காத்திருந்து, பின்னர் அவற்றின் முடிவுகளை ஒருங்கிணைக்கிறது.
பயன்பாட்டு வழக்கு: ஒரு வீடியோ கோப்பைச் செயலாக்குதல். ஒரு வீடியோ பதிவேற்றப்படுகிறது, இது ஒரு பணிப்பாய்வைத் தூண்டுகிறது:
- ஃபங்ஷன் A (StartProcessing): வீடியோ கோப்பைப் பெற்று, இணைப் பணிகளைத் தூண்டுகிறது.
- இணைப் பணிகள்:
- ஃபங்ஷன் B (TranscodeTo1080p): ஒரு 1080p பதிப்பை உருவாக்குகிறது.
- ஃபங்ஷன் C (TranscodeTo720p): ஒரு 720p பதிப்பை உருவாக்குகிறது.
- ஃபங்ஷன் D (ExtractAudio): ஆடியோ டிராக்கைப் பிரித்தெடுக்கிறது.
- ஃபங்ஷன் E (GenerateThumbnails): முன்னோட்ட சிறுபடங்களை உருவாக்குகிறது.
- ஃபங்ஷன் F (AggregateResults): B, C, D மற்றும் E முடிந்ததும், இந்த ஃபங்ஷன் உருவாக்கப்பட்ட அனைத்து சொத்துக்களுக்குமான இணைப்புகளுடன் தரவுத்தளத்தைப் புதுப்பிக்கிறது.
3. ஒத்திசைவற்ற செய்தி அனுப்புதல் (நிகழ்வு-சார்ந்த கோரியோகிராஃபி)
இது கண்டிப்பாக ஆர்கெஸ்ட்ரேஷன் இல்லை என்றாலும் (இது பெரும்பாலும் கோரியோகிராஃபி என்று அழைக்கப்படுகிறது), இந்த பேட்டர்ன் சர்வர்லெஸ் கட்டமைப்புகளில் இன்றியமையாதது. ஒரு மையக் கட்டுப்பாட்டாளருக்குப் பதிலாக, ஃபங்ஷன்கள் ஒரு செய்திப் பேருந்து அல்லது வரிசைக்கு (எ.கா., AWS SNS/SQS, Google Pub/Sub, Azure Service Bus) நிகழ்வுகளை வெளியிடுவதன் மூலம் தொடர்பு கொள்கின்றன. பிற ஃபங்ஷன்கள் இந்த நிகழ்வுகளுக்கு குழுசேர்ந்து அதற்கேற்ப செயல்படுகின்றன.
பயன்பாட்டு வழக்கு: ஒரு ஆர்டர் வைக்கும் அமைப்பு.
- ஃபிரன்ட்எண்ட் ஒரு `placeOrder` ஃபங்ஷனை அழைக்கிறது.
- `placeOrder` ஃபங்ஷன் ஆர்டரைச் சரிபார்த்து, ஒரு `OrderPlaced` நிகழ்வை ஒரு செய்திப் பேருந்துக்கு வெளியிடுகிறது.
- பல, சுயாதீனமான சந்தாதாரர் ஃபங்ஷன்கள் இந்த நிகழ்வுக்கு ಪ್ರತிக்ரியையாற்றுகின்றன:
- ஒரு `billing` ஃபங்ஷன் பணம் செலுத்துதலைச் செயல்படுத்துகிறது.
- ஒரு `shipping` ஃபங்ஷன் கிடங்கிற்குத் தெரிவிக்கிறது.
- ஒரு `notifications` ஃபங்ஷன் வாடிக்கையாளருக்கு ஒரு உறுதிப்படுத்தல் மின்னஞ்சலை அனுப்புகிறது.
நிர்வகிக்கப்பட்ட ஆர்கெஸ்ட்ரேஷன் சேவைகளின் சக்தி
நீங்கள் இந்த பேட்டர்ன்களை கைமுறையாக செயல்படுத்த முடியும் என்றாலும், நிலையை நிர்வகிப்பது, பிழைகளைக் கையாளுவது மற்றும் செயல்பாடுகளைக் கண்காணிப்பது விரைவில் சிக்கலாகிவிடும். இங்குதான் முக்கிய கிளவுட் வழங்குநர்களிடமிருந்து நிர்வகிக்கப்பட்ட ஆர்கெஸ்ட்ரேஷன் சேவைகள் விலைமதிப்பற்றதாகின்றன. அவை சிக்கலான பணிப்பாய்வுகளை வரையறுக்க, காட்சிப்படுத்த மற்றும் செயல்படுத்த கட்டமைப்பை வழங்குகின்றன.
AWS ஸ்டெப் ஃபங்ஷன்ஸ்
AWS ஸ்டெப் ஃபங்ஷன்ஸ் என்பது ஒரு சர்வர்லெஸ் ஆர்கெஸ்ட்ரேஷன் சேவையாகும், இது உங்கள் பணிப்பாய்வுகளை நிலை இயந்திரங்களாக வரையறுக்க உதவுகிறது. அமேசான் ஸ்டேட்ஸ் லாங்குவேஜ் (ASL) எனப்படும் JSON-அடிப்படையிலான வடிவத்தைப் பயன்படுத்தி உங்கள் பணிப்பாய்வை அறிவிப்பு முறையில் வரையறுக்கிறீர்கள்.
- முக்கிய கருத்து: பார்வைக்கு வடிவமைக்கக்கூடிய நிலை இயந்திரங்கள்.
- வரையறை: அறிவிப்பு JSON (ASL).
- முக்கிய அம்சங்கள்: விஷுவல் வொர்க்ஃப்ளோ எடிட்டர், உள்ளமைக்கப்பட்ட மறுமுயற்சி மற்றும் பிழை கையாளுதல் தர்க்கம், மனித-ஈடுபாட்டு பணிப்பாய்வுகளுக்கான ஆதரவு (callbacks), மற்றும் 200-க்கும் மேற்பட்ட AWS சேவைகளுடன் நேரடி ஒருங்கிணைப்பு.
- சிறந்தது: ஒரு காட்சி, அறிவிப்பு அணுகுமுறை மற்றும் AWS சுற்றுச்சூழல் அமைப்புடன் ஆழமான ஒருங்கிணைப்பை விரும்பும் குழுக்களுக்கு.
ஒரு எளிய வரிசைக்கான எடுத்துக்காட்டு ASL துணுக்கு:
{
"Comment": "A simple sequential workflow",
"StartAt": "FirstState",
"States": {
"FirstState": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:MyFirstFunction",
"Next": "SecondState"
},
"SecondState": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:MySecondFunction",
"End": true
}
}
}
அசூர் டியூரபிள் ஃபங்ஷன்ஸ்
டியூரபிள் ஃபங்ஷன்ஸ் என்பது அசூர் ஃபங்ஷன்ஸின் ஒரு நீட்டிப்பாகும், இது நிலைத்தன்மை கொண்ட பணிப்பாய்வுகளை ஒரு குறியீடு-முதல் அணுகுமுறையில் எழுத உங்களை அனுமதிக்கிறது. ஒரு அறிவிப்பு மொழிக்கு பதிலாக, C#, பைதான், அல்லது ஜாவாஸ்கிரிப்ட் போன்ற ஒரு பொது-நோக்க நிரலாக்க மொழியைப் பயன்படுத்தி ஆர்கெஸ்ட்ரேஷன் தர்க்கத்தை நீங்கள் வரையறுக்கிறீர்கள்.
- முக்கிய கருத்து: ஆர்கெஸ்ட்ரேஷன் தர்க்கத்தை குறியீடாக எழுதுதல்.
- வரையறை: கட்டாய குறியீடு (C#, பைதான், ஜாவாஸ்கிரிப்ட், போன்றவை).
- முக்கிய அம்சங்கள்: நிலையை நம்பகத்தன்மையுடன் பராமரிக்க ஒரு நிகழ்வு மூல முறையைப் பயன்படுத்துகிறது. ஆர்கெஸ்ட்ரேட்டர், ஆக்டிவிட்டி, மற்றும் என்டிட்டி ஃபங்ஷன்கள் போன்ற கருத்துக்களை வழங்குகிறது. நிலை கட்டமைப்பால் மறைமுகமாக நிர்வகிக்கப்படுகிறது.
- சிறந்தது: JSON அல்லது YAML-ஐ விட தங்களுக்குப் பழக்கமான நிரலாக்க மொழிக்குள் சிக்கலான தர்க்கம், சுழற்சிகள் மற்றும் கிளைகளை வரையறுக்க விரும்பும் டெவலப்பர்களுக்கு.
ஒரு எளிய வரிசைக்கான பைதான் எடுத்துக்காட்டு துணுக்கு:
import azure.durable_functions as df
def orchestrator_function(context: df.DurableOrchestrationContext):
result1 = yield context.call_activity('MyFirstFunction', 'input1')
result2 = yield context.call_activity('MySecondFunction', result1)
return result2
கூகிள் கிளவுட் வொர்க்ஃப்ளோஸ்
கூகிள் கிளவுட் வொர்க்ஃப்ளோஸ் என்பது ஒரு முழுமையாக நிர்வகிக்கப்பட்ட ஆர்கெஸ்ட்ரேஷன் சேவையாகும், இது YAML அல்லது JSON ஐப் பயன்படுத்தி பணிப்பாய்வுகளை வரையறுக்க உங்களை அனுமதிக்கிறது. இது கூகிள் கிளவுட் சேவைகள் மற்றும் HTTP-அடிப்படையிலான API-களை இணைத்து தானியக்கமாக்குவதில் சிறந்து விளங்குகிறது.
- முக்கிய கருத்து: YAML/JSON-அடிப்படையிலான பணிப்பாய்வு வரையறை.
- வரையறை: அறிவிப்பு YAML அல்லது JSON.
- முக்கிய அம்சங்கள்: வெளிப்புற சேவைகளை அழைப்பதற்கான வலுவான HTTP கோரிக்கை திறன்கள், கூகிள் கிளவுட் சேவைகளுக்கான உள்ளமைக்கப்பட்ட இணைப்பிகள், மாடுலர் வடிவமைப்பிற்கான துணை-பணிப்பாய்வுகள், மற்றும் வலுவான பிழை கையாளுதல்.
- சிறந்தது: கூகிள் கிளவுட் சுற்றுச்சூழல் அமைப்புக்கு உள்ளேயும் வெளியேயும் HTTP-அடிப்படையிலான API-களை அதிக அளவில் சங்கிலித் தொடராகக் கொண்ட பணிப்பாய்வுகளுக்கு.
ஒரு எளிய வரிசைக்கான YAML எடுத்துக்காட்டு துணுக்கு:
main:
params: [args]
steps:
- first_step:
call: http.post
args:
url: https://example.com/myFirstFunction
body:
input: ${args.input}
result: firstResult
- second_step:
call: http.post
args:
url: https://example.com/mySecondFunction
body:
data: ${firstResult.body}
result: finalResult
- return_value:
return: ${finalResult.body}
ஒரு நடைமுறை ஃபிரன்ட்எண்ட் காட்சி: பயனர் ஆன்-போர்டிங் பணிப்பாய்வு
ஒரு பொதுவான, நிஜ-உலக உதாரணத்துடன் எல்லாவற்றையும் இணைப்போம்: உங்கள் பயன்பாட்டிற்கு ஒரு புதிய பயனர் பதிவு செய்கிறார். தேவைப்படும் படிகள்:
- முதன்மைத் தரவுத்தளத்தில் ஒரு பயனர் பதிவை உருவாக்குங்கள்.
- இணையாக:
- ஒரு வரவேற்பு மின்னஞ்சலை அனுப்புங்கள்.
- பயனரின் IP மற்றும் மின்னஞ்சல் அடிப்படையில் ஒரு மோசடிச் சோதனையைச் செய்யுங்கள்.
- மோசடிச் சோதனை வெற்றிகரமாக முடிந்தால், பில்லிங் அமைப்பில் ஒரு சோதனைச் சந்தாவை உருவாக்குங்கள்.
- மோசடிச் சோதனை தோல்வியுற்றால், கணக்கைக் கொடியிட்டு ஆதரவுக் குழுவுக்குத் தெரிவிக்கவும்.
- பயனருக்கு வெற்றி அல்லது தோல்விச் செய்தியைத் திருப்பி அனுப்புங்கள்.
தீர்வு 1: 'பாமர' ஃபிரன்ட்எண்ட்-சார்ந்த அணுகுமுறை
ஒரு ஆர்கெஸ்ட்ரேட்டட் BFF இல்லாமல், ஃபிரன்ட்எண்ட் கிளையன்ட் இந்த தர்க்கத்தை நிர்வகிக்க வேண்டும். இது தொடர்ச்சியான API அழைப்புகளைச் செய்யும்:
- `POST /api/users` -> பதிலுக்காகக் காத்திருக்கும்.
- `POST /api/emails/welcome` -> பின்னணியில் இயங்கும்.
- `POST /api/fraud-check` -> பதிலுக்காகக் காத்திருக்கும்.
- மோசடி சோதனை பதிலின் அடிப்படையில் கிளையன்ட் பக்க `if/else`:
- வெற்றியடைந்தால்: `POST /api/subscriptions/trial`.
- தோல்வியுற்றால்: `POST /api/users/flag`.
இந்த அணுகுமுறை ஆழ்ந்த குறைபாடுகளைக் கொண்டுள்ளது:
- உடையக்கூடியது மற்றும் அதிகத் தொடர்பு: கிளையன்ட் பேக்எண்ட் செயல்முறையுடன் இறுக்கமாகப் பிணைக்கப்பட்டுள்ளது. பணிப்பாய்வில் ஏதேனும் மாற்றம் ஏற்பட்டால் ஃபிரன்ட்எண்ட் வரிசைப்படுத்தல் தேவைப்படுகிறது. இது பல நெட்வொர்க் கோரிக்கைகளையும் செய்கிறது.
- பரிவர்த்தனை ஒருமைப்பாடு இல்லை: பயனர் பதிவு உருவாக்கப்பட்ட பிறகு சந்தாவை உருவாக்குவது தோல்வியுற்றால் என்ன செய்வது? அமைப்பு இப்போது ஒரு சீரற்ற நிலையில் உள்ளது, மற்றும் கிளையன்ட் சிக்கலான திரும்பப் பெறும் தர்க்கத்தைக் கையாள வேண்டும்.
- மோசமான பயனர் அனுபவம்: பயனர் பல தொடர்ச்சியான நெட்வொர்க் அழைப்புகள் முடிவடையும் வரை காத்திருக்க வேண்டும்.
- பாதுகாப்பு அபாயங்கள்: `flag-user` அல்லது `create-trial` போன்ற நுணுக்கமான API-களை நேரடியாக கிளையன்டிற்கு வெளிப்படுத்துவது ஒரு பாதுகாப்பு பாதிப்பாக இருக்கலாம்.
தீர்வு 2: ஆர்கெஸ்ட்ரேட்டட் சர்வர்லெஸ் BFF அணுகுமுறை
ஒரு ஆர்கெஸ்ட்ரேஷன் சேவையுடன், கட்டமைப்பு பெருமளவில் மேம்படுத்தப்பட்டுள்ளது. ஃபிரன்ட்எண்ட் ஒரே ஒரு, பாதுகாப்பான API அழைப்பை மட்டுமே செய்கிறது:
POST /api/onboarding
இந்த API கேட்வே எண்ட்பாயிண்ட் ஒரு ஸ்டேட் மெஷினை (எ.கா., AWS ஸ்டெப் ஃபங்ஷன்ஸில்) தூண்டுகிறது. ஆர்கெஸ்ட்ரேட்டர் பொறுப்பேற்று பணிப்பாய்வைச் செயல்படுத்துகிறது:
- தொடக்க நிலை: API அழைப்பிலிருந்து பயனர் தரவைப் பெறுகிறது.
- பயனர் பதிவை உருவாக்கு (பணி): டைனமோடிபி அல்லது ஒரு உறவுமுறை தரவுத்தளத்தில் பயனரை உருவாக்க ஒரு லாம்டா ஃபங்ஷனை அழைக்கிறது.
- இணை நிலை: இரண்டு கிளைகளை ஒரே நேரத்தில் செயல்படுத்துகிறது.
- கிளை 1 (மின்னஞ்சல்): வரவேற்பு மின்னஞ்சலை அனுப்ப ஒரு லாம்டா ஃபங்ஷன் அல்லது SNS தலைப்பைத் தூண்டுகிறது.
- கிளை 2 (மோசடி சோதனை): ஒரு மூன்றாம் தரப்பு மோசடி கண்டறிதல் சேவையை அழைக்கும் ஒரு லாம்டா ஃபங்ஷனைத் தூண்டுகிறது.
- தேர்வு நிலை (கிளை தர்க்கம்): மோசடி சோதனைப் படியின் வெளியீட்டை ஆய்வு செய்கிறது.
- `fraud_score < threshold` (வெற்றி) எனில்: 'சந்தாவை உருவாக்கு' நிலைக்கு மாறுகிறது.
- `fraud_score >= threshold` (தோல்வி) எனில்: 'கணக்கைக் கொடியிடு' நிலைக்கு மாறுகிறது.
- சந்தாவை உருவாக்கு (பணி): Stripe அல்லது Braintree API உடன் தொடர்பு கொள்ள ஒரு லாம்டா ஃபங்ஷனை அழைக்கிறது. வெற்றியில், 'வெற்றி' இறுதி நிலைக்கு மாறுகிறது.
- கணக்கைக் கொடியிடு (பணி): பயனர் பதிவைப் புதுப்பிக்க ஒரு லாம்டாவை அழைத்து, பின்னர் ஆதரவுக் குழுவுக்குத் தெரிவிக்க மற்றொரு லாம்டா அல்லது SNS தலைப்பை அழைக்கிறது. 'தோல்வி' இறுதி நிலைக்கு மாறுகிறது.
- இறுதி நிலைகள் (வெற்றி/தோல்வி): பணிப்பாய்வு முடிவடைகிறது, API கேட்வே வழியாக ஃபிரன்ட்எண்டிற்கு ஒரு தெளிவான வெற்றி அல்லது தோல்விச் செய்தியைத் திருப்பி அனுப்புகிறது.
இந்த ஆர்கெஸ்ட்ரேட்டட் அணுகுமுறையின் நன்மைகள் மகத்தானவை:
- எளிமைப்படுத்தப்பட்ட ஃபிரன்ட்எண்ட்: கிளையன்டின் ஒரே வேலை ஒரு அழைப்பைச் செய்வது மற்றும் ஒரு பதிலைக் கையாளுவது மட்டுமே. அனைத்து சிக்கலான தர்க்கமும் பேக்எண்டில் இணைக்கப்பட்டுள்ளது.
- மீள்திறன் மற்றும் நம்பகத்தன்மை: ஆர்கெஸ்ட்ரேட்டர் தோல்வியுற்ற படிகளைத் தானாகவே மீண்டும் முயற்சிக்கலாம் (எ.கா., பில்லிங் API தற்காலிகமாக கிடைக்கவில்லை என்றால்). முழு செயல்முறையும் பரிவர்த்தனை சார்ந்தது.
- காட்சிப்படுத்துதல் மற்றும் பிழைத்திருத்தம்: நிர்வகிக்கப்பட்ட ஆர்கெஸ்ட்ரேட்டர்கள் ஒவ்வொரு செயல்பாட்டின் விரிவான காட்சிப் பதிவுகளை வழங்குகின்றன, இது ஒரு பணிப்பாய்வு எங்கு, ஏன் தோல்வியுற்றது என்பதைப் பார்ப்பதை எளிதாக்குகிறது.
- பராமரிப்புத்திறன்: பணிப்பாய்வு தர்க்கம் ஃபங்ஷன்களுக்குள் உள்ள வணிக தர்க்கத்திலிருந்து பிரிக்கப்பட்டுள்ளது. நீங்கள் பணிப்பாய்வை (எ.கா., ஒரு புதிய படியைச் சேர்ப்பது) எந்தவொரு தனிப்பட்ட லாம்டா ஃபங்ஷன்களையும் தொடாமல் மாற்றலாம்.
- மேம்பட்ட பாதுகாப்பு: ஃபிரன்ட்எண்ட் ஒரு ஒற்றை, கடினப்படுத்தப்பட்ட API எண்ட்பாயிண்டுடன் மட்டுமே தொடர்பு கொள்கிறது. நுணுக்கமான ஃபங்ஷன்கள் மற்றும் அவற்றின் அனுமதிகள் பேக்எண்ட் VPC அல்லது நெட்வொர்க்கிற்குள் மறைக்கப்பட்டுள்ளன.
ஃபிரன்ட்எண்ட் சர்வர்லெஸ் ஆர்கெஸ்ட்ரேஷனுக்கான சிறந்த நடைமுறைகள்
இந்த பேட்டர்ன்களை நீங்கள் பின்பற்றும்போது, உங்கள் கட்டமைப்பு சுத்தமாகவும் திறமையாகவும் இருப்பதை உறுதிசெய்ய இந்த உலகளாவிய சிறந்த நடைமுறைகளை மனதில் கொள்ளுங்கள்.
- ஃபங்ஷன்களை நுணுக்கமாகவும் நிலையற்றதாகவும் வைத்திருங்கள்: ஒவ்வொரு ஃபங்ஷனும் ஒரு வேலையை நன்றாகச் செய்ய வேண்டும் (ஒற்றைப் பொறுப்புக் கொள்கை). ஃபங்ஷன்கள் தங்கள் சொந்த நிலையைப் பராமரிப்பதைத் தவிர்க்கவும்; இது ஆர்கெஸ்ட்ரேட்டரின் வேலை.
- ஆர்கெஸ்ட்ரேட்டரை நிலையை நிர்வகிக்க விடுங்கள்: ஒரு ஃபங்ஷனிலிருந்து அடுத்ததிற்கு பெரிய, சிக்கலான JSON பேலோடுகளை அனுப்ப வேண்டாம். அதற்கு பதிலாக, குறைந்தபட்ச தரவை (`userID` அல்லது `orderID` போன்றவை) அனுப்பவும், ஒவ்வொரு ஃபங்ஷனும் தனக்குத் தேவையான தரவைப் பெறட்டும். ஆர்கெஸ்ட்ரேட்டர் பணிப்பாய்வின் நிலைக்கு உண்மையின் மூலமாகும்.
- ஐடெம்பொட்டன்சிக்காக (Idempotency) வடிவமைக்கவும்: உங்கள் ஃபங்ஷன்கள் எதிர்பாராத பக்க விளைவுகளை ஏற்படுத்தாமல் பாதுகாப்பாக மீண்டும் முயற்சிக்கப்படலாம் என்பதை உறுதிப்படுத்தவும். உதாரணமாக, ஒரு `createUser` ஃபங்ஷன், புதிய ஒன்றை உருவாக்க முயற்சிக்கும் முன், அந்த மின்னஞ்சலுடன் ஒரு பயனர் ஏற்கனவே இருக்கிறாரா என்பதைச் சரிபார்க்க வேண்டும். ஆர்கெஸ்ட்ரேட்டர் படியை மீண்டும் முயற்சித்தால் இது நகல் பதிவுகளைத் தடுக்கிறது.
- விரிவான பதிவு மற்றும் தடமறிதலைச் செயல்படுத்தவும்: AWS X-Ray, Azure Application Insights, அல்லது Google Cloud Trace போன்ற கருவிகளைப் பயன்படுத்தி API கேட்வே, ஆர்கெஸ்ட்ரேட்டர் மற்றும் பல ஃபங்ஷன்கள் வழியாக ஒரு கோரிக்கையின் ஒருங்கிணைந்த பார்வையைப் பெறுங்கள். ஒவ்வொரு ஃபங்ஷன் அழைப்பிலும் ஆர்கெஸ்ட்ரேட்டரிலிருந்து செயலாக்க ஐடியைப் பதிவு செய்யுங்கள்.
- உங்கள் பணிப்பாய்வைப் பாதுகாக்கவும்: குறைந்தபட்ச சலுகைக் கொள்கையைப் பயன்படுத்தவும். ஆர்கெஸ்ட்ரேட்டரின் IAM பங்கு அதன் பணிப்பாய்வில் உள்ள குறிப்பிட்ட ஃபங்ஷன்களைத் தூண்டுவதற்கான அனுமதியை மட்டுமே கொண்டிருக்க வேண்டும். ஒவ்வொரு ஃபங்ஷனும், அதன் பணியைச் செய்யத் தேவையான அனுமதிகளை மட்டுமே கொண்டிருக்க வேண்டும் (எ.கா., ஒரு குறிப்பிட்ட தரவுத்தள அட்டவணையில் படிக்க/எழுத).
- எப்போது ஆர்கெஸ்ட்ரேட் செய்ய வேண்டும் என்பதை அறியுங்கள்: அதிகமாக பொறியியல் செய்ய வேண்டாம். ஒரு எளிய A -> B சங்கிலிக்கு, ஒரு நேரடி அழைப்பு போதுமானதாக இருக்கலாம். ஆனால் நீங்கள் கிளைகள், இணைப் பணிகள், அல்லது வலுவான பிழை கையாளுதல் மற்றும் மறுமுயற்சிகளின் தேவையை அறிமுகப்படுத்தியவுடன், ஒரு பிரத்யேக ஆர்கெஸ்ட்ரேஷன் சேவை உங்களுக்கு குறிப்பிடத்தக்க நேரத்தை மிச்சப்படுத்தும் மற்றும் எதிர்கால தலைவலிகளைத் தடுக்கும்.
முடிவுரை: அடுத்த தலைமுறை ஃபிரன்ட்எண்ட் அனுபவங்களைக் கட்டமைத்தல்
ஃபங்ஷன் கம்போசிஷன் மற்றும் ஆர்கெஸ்ட்ரேஷன் ஆகியவை பேக்எண்ட் உள்கட்டமைப்பு கவலைகள் மட்டுமல்ல; அவை அதிநவீன, நம்பகமான மற்றும் அளவிடக்கூடிய நவீன ஃபிரன்ட்எண்ட் பயன்பாடுகளை உருவாக்குவதற்கான அடிப்படைக் காரணிகளாகும். சிக்கலான பணிப்பாய்வு தர்க்கத்தை கிளையன்டிலிருந்து ஒரு ஆர்கெஸ்ட்ரேட்டட், சர்வர்லெஸ் பேக்எண்ட்-ஃபார்-ஃபிரன்ட்எண்டிற்கு மாற்றுவதன் மூலம், உங்கள் ஃபிரன்ட்எண்ட் குழுக்களை அவர்கள் சிறப்பாகச் செய்வதில் கவனம் செலுத்த அதிகாரம் அளிக்கிறீர்கள்: விதிவிலக்கான பயனர் அனுபவங்களை உருவாக்குதல்.
இந்த கட்டமைப்பு முறை கிளையன்டை எளிதாக்குகிறது, வணிக செயல்முறை தர்க்கத்தை மையப்படுத்துகிறது, கணினி மீள்திறனை மேம்படுத்துகிறது மற்றும் உங்கள் பயன்பாட்டின் மிக முக்கியமான பணிப்பாய்வுகளில் இணையற்ற தெரிவுநிலையை வழங்குகிறது. நீங்கள் AWS ஸ்டெப் ஃபங்ஷன்ஸ் மற்றும் கூகிள் கிளவுட் வொர்க்ஃப்ளோஸின் அறிவிப்பு சக்தியைத் தேர்ந்தெடுத்தாலும் அல்லது அசூர் டியூரபிள் ஃபங்ஷன்ஸின் குறியீடு-முதல் நெகிழ்வுத்தன்மையை விரும்பினாலும், ஆர்கெஸ்ட்ரேஷனைத் தழுவுவது உங்கள் ஃபிரன்ட்எண்ட் கட்டமைப்பின் நீண்டகால ஆரோக்கியம் மற்றும் சுறுசுறுப்பில் ஒரு மூலோபாய முதலீடாகும்.
சர்வர்லெஸ் சகாப்தம் இங்கே உள்ளது, அது வெறும் ஃபங்ஷன்களைப் பற்றியது மட்டுமல்ல. இது சக்திவாய்ந்த, நிகழ்வு-சார்ந்த அமைப்புகளை உருவாக்குவது பற்றியது. கம்போசிஷன் மற்றும் ஆர்கெஸ்ட்ரேஷனில் தேர்ச்சி பெறுவதன் மூலம், இந்த முன்னுதாரணத்தின் முழு திறனையும் நீங்கள் திறக்கிறீர்கள், அடுத்த தலைமுறை மீள்திறன் கொண்ட, உலகளவில் அளவிடக்கூடிய பயன்பாடுகளுக்கு வழி வகுக்கிறீர்கள்.