CQRS (கட்டளை வினவல் பொறுப்புப் பிரிவினை) பற்றிய ஒரு முழுமையான வழிகாட்டி. இது அளவிடக்கூடிய மற்றும் பராமரிக்கக்கூடிய அமைப்புகளை உருவாக்க அதன் கொள்கைகள், நன்மைகள், செயல்படுத்தும் உத்திகள் மற்றும் நிஜ உலகப் பயன்பாடுகளை உள்ளடக்கியது.
CQRS: கட்டளை வினவல் பொறுப்புப் பிரிவினையில் தேர்ச்சி பெறுதல்
மென்பொருள் கட்டமைப்பின் எப்போதும் வளர்ந்து வரும் உலகில், டெவலப்பர்கள் அளவிடுதல், பராமரிப்பு மற்றும் செயல்திறனை ஊக்குவிக்கும் வடிவங்கள் மற்றும் நடைமுறைகளை தொடர்ந்து தேடுகின்றனர். அத்தகைய வடிவங்களில் ஒன்று CQRS (கட்டளை வினவல் பொறுப்புப் பிரிவினை) ஆகும். இந்தக் கட்டுரை CQRS பற்றிய ஒரு முழுமையான வழிகாட்டியை வழங்குகிறது, அதன் கொள்கைகள், நன்மைகள், செயல்படுத்தும் உத்திகள் மற்றும் நிஜ உலகப் பயன்பாடுகளை ஆராய்கிறது.
CQRS என்றால் என்ன?
CQRS என்பது ஒரு தரவு சேமிப்பகத்திற்கான வாசிப்பு மற்றும் எழுதும் செயல்பாடுகளைப் பிரிக்கும் ஒரு கட்டமைப்பு வடிவமாகும். இது கட்டளைகளை (அமைப்பின் நிலையை மாற்றும் செயல்பாடுகள்) மற்றும் வினவல்களை (நிலையை மாற்றாமல் தரவை மீட்டெடுக்கும் செயல்பாடுகள்) கையாளுவதற்கு தனித்தனி மாதிரிகளைப் பயன்படுத்த பரிந்துரைக்கிறது. இந்தப் பிரிவினை ஒவ்வொரு மாதிரியையும் சுதந்திரமாக மேம்படுத்த அனுமதிக்கிறது, இது மேம்பட்ட செயல்திறன், அளவிடுதல் மற்றும் பாதுகாப்பிற்கு வழிவகுக்கிறது.
பாரம்பரிய கட்டமைப்புகள் பெரும்பாலும் ஒற்றை மாதிரியில் வாசிப்பு மற்றும் எழுதும் செயல்பாடுகளை இணைக்கின்றன. ஆரம்பத்தில் செயல்படுத்துவது எளிமையானதாக இருந்தாலும், இந்த அணுகுமுறை பல சவால்களுக்கு வழிவகுக்கும், குறிப்பாக அமைப்பு சிக்கலானதாக வளரும்போது:
- செயல்திறன் தடைகள்: ஒரு ஒற்றை தரவு மாதிரி வாசிப்பு மற்றும் எழுதும் செயல்பாடுகளுக்கு உகந்ததாக இல்லாமல் இருக்கலாம். சிக்கலான வினவல்கள் எழுதும் செயல்பாடுகளை மெதுவாக்கலாம், மற்றும் நேர்மாறாகவும்.
- அளவிடுதல் வரம்புகள்: ஒரு ஒற்றை தரவு சேமிப்பகத்தை அளவிடுவது சவாலானது மற்றும் விலை உயர்ந்தது.
- தரவு நிலைத்தன்மை சிக்கல்கள்: முழு அமைப்பு முழுவதும் தரவு நிலைத்தன்மையை பராமரிப்பது கடினமாகலாம், குறிப்பாக பகிரப்பட்ட சூழல்களில்.
- சிக்கலான டொமைன் தர்க்கம்: வாசிப்பு மற்றும் எழுதும் செயல்பாடுகளை இணைப்பது சிக்கலான மற்றும் இறுக்கமாக இணைக்கப்பட்ட குறியீட்டிற்கு வழிவகுக்கும், இது பராமரிப்பதையும் மேம்படுத்துவதையும் கடினமாக்குகிறது.
CQRS இந்த சவால்களை ஒரு தெளிவான பொறுப்புப் பிரிவினையை அறிமுகப்படுத்துவதன் மூலம் தீர்க்கிறது, இது டெவலப்பர்களுக்கு ஒவ்வொரு மாதிரியையும் அதன் குறிப்பிட்ட தேவைகளுக்கு ஏற்ப வடிவமைக்க அனுமதிக்கிறது.
CQRS-இன் முக்கிய கொள்கைகள்
CQRS பல முக்கிய கொள்கைகளின் மீது கட்டமைக்கப்பட்டுள்ளது:
- பொறுப்புப் பிரிவினை: கட்டளை மற்றும் வினவல் பொறுப்புகளை தனித்தனி மாதிரிகளாகப் பிரிப்பதே இதன் அடிப்படைக் கொள்கை.
- சுதந்திரமான மாதிரிகள்: கட்டளை மற்றும் வினவல் மாதிரிகளை வெவ்வேறு தரவு கட்டமைப்புகள், தொழில்நுட்பங்கள் மற்றும் இயற்பியல் தரவுத்தளங்களைப் பயன்படுத்தி செயல்படுத்தலாம். இது சுதந்திரமான மேம்படுத்தல் மற்றும் அளவிடலுக்கு அனுமதிக்கிறது.
- தரவு ஒத்திசைவு: வாசிப்பு மற்றும் எழுதும் மாதிரிகள் பிரிக்கப்பட்டிருப்பதால், தரவு ஒத்திசைவு முக்கியமானது. இது பொதுவாக ஒத்திசைவற்ற செய்தி அனுப்புதல் அல்லது நிகழ்வு ஆதாரம் மூலம் அடையப்படுகிறது.
- இறுதி நிலைத்தன்மை: CQRS பெரும்பாலும் இறுதி நிலைத்தன்மையை ஏற்றுக்கொள்கிறது, அதாவது தரவு புதுப்பிப்புகள் உடனடியாக வாசிப்பு மாதிரியில் பிரதிபலிக்காது. இது மேம்பட்ட செயல்திறன் மற்றும் அளவிடுதலுக்கு அனுமதிக்கிறது, ஆனால் பயனர்கள் மீதான சாத்தியமான தாக்கத்தை கவனமாகக் கருத்தில் கொள்ள வேண்டும்.
CQRS-இன் நன்மைகள்
CQRS-ஐ செயல்படுத்துவது பல நன்மைகளை வழங்க முடியும், அவற்றுள்:
- மேம்பட்ட செயல்திறன்: வாசிப்பு மற்றும் எழுதும் மாதிரிகளை சுதந்திரமாக மேம்படுத்துவதன் மூலம், CQRS ஒட்டுமொத்த கணினி செயல்திறனை கணிசமாக மேம்படுத்த முடியும். வாசிப்பு மாதிரிகள் வேகமான தரவு மீட்டெடுப்பிற்காக பிரத்யேகமாக வடிவமைக்கப்படலாம், அதே நேரத்தில் எழுதும் மாதிரிகள் திறமையான தரவு புதுப்பிப்புகளில் கவனம் செலுத்தலாம்.
- மேம்படுத்தப்பட்ட அளவிடுதல்: வாசிப்பு மற்றும் எழுதும் மாதிரிகளைப் பிரிப்பது சுதந்திரமாக அளவிட அனுமதிக்கிறது. அதிகரித்த வினவல் சுமையைக் கையாள வாசிப்பு பிரதிகள் சேர்க்கப்படலாம், அதே நேரத்தில் எழுதும் செயல்பாடுகளை ஷார்டிங் போன்ற நுட்பங்களைப் பயன்படுத்தி தனித்தனியாக அளவிடலாம்.
- எளிமைப்படுத்தப்பட்ட டொமைன் தர்க்கம்: CQRS, கட்டளை கையாளுதலை வினவல் செயலாக்கத்திலிருந்து பிரிப்பதன் மூலம் சிக்கலான டொமைன் தர்க்கத்தை எளிதாக்க முடியும். இது மேலும் பராமரிக்கக்கூடிய மற்றும் சோதிக்கக்கூடிய குறியீட்டிற்கு வழிவகுக்கும்.
- அதிகரித்த நெகிழ்வுத்தன்மை: வாசிப்பு மற்றும் எழுதும் மாதிரிகளுக்கு வெவ்வேறு தொழில்நுட்பங்களைப் பயன்படுத்துவது ஒவ்வொரு பணிக்கும் சரியான கருவிகளைத் தேர்ந்தெடுப்பதில் அதிக நெகிழ்வுத்தன்மையை அனுமதிக்கிறது.
- மேம்பட்ட பாதுகாப்பு: கட்டளை மாதிரியை கடுமையான பாதுகாப்பு கட்டுப்பாடுகளுடன் வடிவமைக்க முடியும், அதே நேரத்தில் வாசிப்பு மாதிரியை பொது நுகர்வுக்கு உகந்ததாக மாற்றலாம்.
- சிறந்த தணிக்கைத்திறன்: நிகழ்வு ஆதாரத்துடன் இணைந்தால், CQRS அமைப்பின் நிலைக்கு செய்யப்பட்ட அனைத்து மாற்றங்களின் முழுமையான தணிக்கைப் பதிவை வழங்குகிறது.
CQRS-ஐ எப்போது பயன்படுத்த வேண்டும்
CQRS பல நன்மைகளை வழங்கினாலும், அது ஒரு வெள்ளித் தோட்டா அல்ல. ஒரு குறிப்பிட்ட திட்டத்திற்கு CQRS சரியான தேர்வா என்பதை கவனமாகக் கருத்தில் கொள்வது அவசியம். CQRS பின்வரும் சூழ்நிலைகளில் மிகவும் பயனுள்ளதாக இருக்கும்:
- சிக்கலான டொமைன் மாதிரிகள்: வாசிப்பு மற்றும் எழுதும் செயல்பாடுகளுக்கு வெவ்வேறு தரவு பிரதிநிதித்துவங்கள் தேவைப்படும் சிக்கலான டொமைன் மாதிரிகளைக் கொண்ட அமைப்புகள்.
- அதிக வாசிப்பு/எழுதும் விகிதம்: எழுதும் அளவை விட கணிசமாக அதிக வாசிப்பு அளவைக் கொண்ட பயன்பாடுகள்.
- அளவிடுதல் தேவைகள்: அதிக அளவிடுதல் மற்றும் செயல்திறன் தேவைப்படும் அமைப்புகள்.
- நிகழ்வு ஆதாரத்துடன் ஒருங்கிணைப்பு: நிலைத்தன்மை மற்றும் தணிக்கைக்காக நிகழ்வு ஆதாரத்தைப் பயன்படுத்த திட்டமிடும் திட்டங்கள்.
- சுதந்திரமான குழு பொறுப்புகள்: பயன்பாட்டின் வாசிப்பு மற்றும் எழுதும் பக்கங்களுக்கு வெவ்வேறு குழுக்கள் பொறுப்பாக இருக்கும் சூழ்நிலைகள்.
மாறாக, எளிமையான CRUD பயன்பாடுகள் அல்லது குறைந்த அளவிடுதல் தேவைகளைக் கொண்ட அமைப்புகளுக்கு CQRS சிறந்த தேர்வாக இருக்காது. இந்த சந்தர்ப்பங்களில் CQRS-இன் கூடுதல் சிக்கலானது அதன் நன்மைகளை விட அதிகமாக இருக்கலாம்.
CQRS-ஐ செயல்படுத்துதல்
CQRS-ஐ செயல்படுத்துவதில் பல முக்கிய கூறுகள் உள்ளன:
- கட்டளைகள்: கட்டளைகள் அமைப்பின் நிலையை மாற்றுவதற்கான ஒரு நோக்கத்தைக் குறிக்கின்றன. அவை பொதுவாக கட்டாய வினைச்சொற்களைப் பயன்படுத்தி பெயரிடப்படுகின்றன (எ.கா., `CreateCustomer`, `UpdateProduct`). கட்டளைகள் செயலாக்கத்திற்காக கட்டளை கையாளுபவர்களுக்கு அனுப்பப்படுகின்றன.
- கட்டளை கையாளுபவர்கள்: கட்டளை கையாளுபவர்கள் கட்டளைகளை செயல்படுத்துவதற்கு பொறுப்பானவர்கள். அவர்கள் பொதுவாக அமைப்பின் நிலையை புதுப்பிக்க டொமைன் மாதிரியுடன் தொடர்பு கொள்கிறார்கள்.
- வினவல்கள்: வினவல்கள் தரவுக்கான கோரிக்கைகளைக் குறிக்கின்றன. அவை பொதுவாக விளக்கமான பெயர்ச்சொற்களைப் பயன்படுத்தி பெயரிடப்படுகின்றன (எ.கா., `GetCustomerById`, `ListProducts`). வினவல்கள் செயலாக்கத்திற்காக வினவல் கையாளுபவர்களுக்கு அனுப்பப்படுகின்றன.
- வினவல் கையாளுபவர்கள்: வினவல் கையாளுபவர்கள் தரவை மீட்டெடுப்பதற்கு பொறுப்பானவர்கள். அவர்கள் பொதுவாக வினவலை திருப்திப்படுத்த வாசிப்பு மாதிரியுடன் தொடர்பு கொள்கிறார்கள்.
- கட்டளை பஸ்: கட்டளை பஸ் என்பது கட்டளைகளை பொருத்தமான கட்டளை கையாளுபவருக்கு அனுப்பும் ஒரு மத்தியஸ்தர் ஆகும்.
- வினவல் பஸ்: வினவல் பஸ் என்பது வினவல்களை பொருத்தமான வினவல் கையாளுபவருக்கு அனுப்பும் ஒரு மத்தியஸ்தர் ஆகும்.
- வாசிப்பு மாதிரி: வாசிப்பு மாதிரி என்பது வாசிப்பு செயல்பாடுகளுக்கு உகந்ததாக வடிவமைக்கப்பட்ட ஒரு தரவு சேமிப்பகமாகும். இது தரவின் இயல்புக்கு மாறான காட்சியாக இருக்கலாம், குறிப்பாக வினவல் செயல்திறனுக்காக வடிவமைக்கப்பட்டது.
- எழுதும் மாதிரி: எழுதும் மாதிரி என்பது அமைப்பின் நிலையை புதுப்பிக்கப் பயன்படுத்தப்படும் டொமைன் மாதிரியாகும். இது பொதுவாக இயல்பானதாகவும், எழுதும் செயல்பாடுகளுக்கு உகந்ததாகவும் இருக்கும்.
- நிகழ்வு பஸ் (விரும்பினால்): ஒரு நிகழ்வு பஸ் டொமைன் நிகழ்வுகளை வெளியிடப் பயன்படுகிறது, அவற்றை வாசிப்பு மாதிரி உட்பட அமைப்பின் பிற பகுதிகளால் பயன்படுத்த முடியும்.
எடுத்துக்காட்டு: மின்வணிக பயன்பாடு
ஒரு மின்வணிக பயன்பாட்டைக் கவனியுங்கள். ஒரு பாரம்பரிய கட்டமைப்பில், ஒரு ஒற்றை `Product` সত্তை தயாரிப்பு தகவலைக் காண்பிப்பதற்கும், தயாரிப்பு விவரங்களைப் புதுப்பிப்பதற்கும் பயன்படுத்தப்படலாம்.
ஒரு CQRS செயலாக்கத்தில், நாங்கள் வாசிப்பு மற்றும் எழுதும் மாதிரிகளைப் பிரிப்போம்:
- கட்டளை மாதிரி:
- `CreateProductCommand`: ஒரு புதிய தயாரிப்பை உருவாக்கத் தேவையான தகவல்களைக் கொண்டுள்ளது.
- `UpdateProductPriceCommand`: தயாரிப்பு ஐடி மற்றும் புதிய விலையைக் கொண்டுள்ளது.
- `CreateProductCommandHandler`: `CreateProductCommand`-ஐ கையாளுகிறது, எழுதும் மாதிரியில் ஒரு புதிய `Product` திரட்டியை உருவாக்குகிறது.
- `UpdateProductPriceCommandHandler`: `UpdateProductPriceCommand`-ஐ கையாளுகிறது, எழுதும் மாதிரியில் தயாரிப்பின் விலையைப் புதுப்பிக்கிறது.
- வினவல் மாதிரி:
- `GetProductDetailsQuery`: தயாரிப்பு ஐடியைக் கொண்டுள்ளது.
- `ListProductsQuery`: வடிகட்டுதல் மற்றும் பக்கமாக்கல் அளவுருக்களைக் கொண்டுள்ளது.
- `GetProductDetailsQueryHandler`: வாசிப்பு மாதிரியிலிருந்து தயாரிப்பு விவரங்களை மீட்டெடுக்கிறது, இது காட்சிக்கு உகந்ததாக உள்ளது.
- `ListProductsQueryHandler`: குறிப்பிட்ட வடிப்பான்கள் மற்றும் பக்கமாக்கலைப் பயன்படுத்தி வாசிப்பு மாதிரியிலிருந்து தயாரிப்புகளின் பட்டியலை மீட்டெடுக்கிறது.
வாசிப்பு மாதிரி தயாரிப்பு தரவின் இயல்புக்கு மாறான காட்சியாக இருக்கலாம், இது தயாரிப்பு பெயர், விளக்கம், விலை மற்றும் படங்கள் போன்ற காட்சிக்குத் தேவையான தகவல்களை மட்டுமே கொண்டிருக்கும். இது பல அட்டவணைகளை இணைக்காமல் தயாரிப்பு விவரங்களை விரைவாக மீட்டெடுக்க அனுமதிக்கிறது.
ஒரு `CreateProductCommand` செயல்படுத்தப்படும்போது, `CreateProductCommandHandler` எழுதும் மாதிரியில் ஒரு புதிய `Product` திரட்டியை உருவாக்குகிறது. இந்த திரட்டி பின்னர் ஒரு `ProductCreatedEvent`-ஐ எழுப்புகிறது, இது நிகழ்வு பஸ்ஸில் வெளியிடப்படுகிறது. ஒரு தனி செயல்முறை இந்த நிகழ்விற்கு சந்தா செலுத்தி அதற்கேற்ப வாசிப்பு மாதிரியைப் புதுப்பிக்கிறது.
தரவு ஒத்திசைவு உத்திகள்
எழுதும் மற்றும் வாசிப்பு மாதிரிகளுக்கு இடையில் தரவை ஒத்திசைக்க பல உத்திகளைப் பயன்படுத்தலாம்:
- நிகழ்வு ஆதாரம்: நிகழ்வு ஆதாரம் ஒரு பயன்பாட்டின் நிலையை நிகழ்வுகளின் வரிசையாக நிலைநிறுத்துகிறது. இந்த நிகழ்வுகளை மீண்டும் இயக்குவதன் மூலம் வாசிப்பு மாதிரி கட்டமைக்கப்படுகிறது. இந்த அணுகுமுறை ஒரு முழுமையான தணிக்கைப் பதிவை வழங்குகிறது மற்றும் வாசிப்பு மாதிரியை புதிதாக மீண்டும் உருவாக்க அனுமதிக்கிறது.
- ஒத்திசைவற்ற செய்தி அனுப்புதல்: ஒத்திசைவற்ற செய்தி அனுப்புதல் என்பது ஒரு செய்தி வரிசை அல்லது தரகருக்கு நிகழ்வுகளை வெளியிடுவதை உள்ளடக்குகிறது. வாசிப்பு மாதிரி இந்த நிகழ்வுகளுக்கு சந்தா செலுத்தி அதற்கேற்ப தன்னைத்தானே புதுப்பித்துக் கொள்கிறது. இந்த அணுகுமுறை எழுதும் மற்றும் வாசிப்பு மாதிரிகளுக்கு இடையில் தளர்வான இணைப்பை வழங்குகிறது.
- தரவுத்தள நகலெடுத்தல்: தரவுத்தள நகலெடுத்தல் என்பது எழுதும் தரவுத்தளத்திலிருந்து வாசிப்பு தரவுத்தளத்திற்கு தரவை நகலெடுப்பதை உள்ளடக்குகிறது. இந்த அணுகுமுறை செயல்படுத்துவதற்கு எளிமையானது, ஆனால் தாமதம் மற்றும் நிலைத்தன்மை சிக்கல்களை அறிமுகப்படுத்தலாம்.
CQRS மற்றும் நிகழ்வு ஆதாரம்
CQRS மற்றும் நிகழ்வு ஆதாரம் பெரும்பாலும் ஒன்றாகப் பயன்படுத்தப்படுகின்றன, ஏனெனில் அவை ஒன்றுக்கொன்று நன்கு துணைபுரிகின்றன. நிகழ்வு ஆதாரம் எழுதும் மாதிரியை நிலைநிறுத்தவும், வாசிப்பு மாதிரியைப் புதுப்பிக்க நிகழ்வுகளை உருவாக்கவும் ஒரு இயற்கையான வழியை வழங்குகிறது. இணைந்தால், CQRS மற்றும் நிகழ்வு ஆதாரம் பல நன்மைகளை வழங்குகின்றன:
- முழுமையான தணிக்கைப் பதிவு: நிகழ்வு ஆதாரம் அமைப்பின் நிலைக்கு செய்யப்பட்ட அனைத்து மாற்றங்களின் முழுமையான தணிக்கைப் பதிவை வழங்குகிறது.
- காலப் பயண பிழைத்திருத்தம்: நிகழ்வு ஆதாரம் எந்த நேரத்திலும் அமைப்பின் நிலையை மீண்டும் உருவாக்க நிகழ்வுகளை மீண்டும் இயக்க அனுமதிக்கிறது. இது பிழைத்திருத்தம் மற்றும் தணிக்கைக்கு விலைமதிப்பற்றதாக இருக்கும்.
- தற்காலிக வினவல்கள்: நிகழ்வு ஆதாரம் தற்காலிக வினவல்களை செயல்படுத்துகிறது, இது ஒரு குறிப்பிட்ட நேரத்தில் இருந்த அமைப்பின் நிலையை வினவ அனுமதிக்கிறது.
- எளிதான வாசிப்பு மாதிரி புனரமைப்பு: நிகழ்வுகளை மீண்டும் இயக்குவதன் மூலம் வாசிப்பு மாதிரியை எளிதாக புதிதாக மீண்டும் உருவாக்க முடியும்.
இருப்பினும், நிகழ்வு ஆதாரம் கணினிக்கு சிக்கலையும் சேர்க்கிறது. இது நிகழ்வு பதிப்பு, ஸ்கீமா பரிணாமம் மற்றும் நிகழ்வு சேமிப்பகம் ஆகியவற்றைக் கவனமாகக் கருத்தில் கொள்ள வேண்டும்.
மைக்ரோசர்விசஸ் கட்டமைப்பில் CQRS
CQRS என்பது மைக்ரோசர்விசஸ் கட்டமைப்புக்கு ஒரு இயற்கையான பொருத்தம். ஒவ்வொரு மைக்ரோசர்விசஸும் CQRS-ஐ சுதந்திரமாக செயல்படுத்த முடியும், இது ஒவ்வொரு சேவைக்குள்ளும் உகந்த வாசிப்பு மற்றும் எழுதும் மாதிரிகளை அனுமதிக்கிறது. இது தளர்வான இணைப்பு, அளவிடுதல் மற்றும் சுதந்திரமான வரிசைப்படுத்தலை ஊக்குவிக்கிறது.
ஒரு மைக்ரோசர்விசஸ் கட்டமைப்பில், நிகழ்வு பஸ் பெரும்பாலும் அப்பாச்சி காஃப்கா அல்லது ராபிட்எம்க்யூ போன்ற பகிரப்பட்ட செய்தி வரிசையைப் பயன்படுத்தி செயல்படுத்தப்படுகிறது. இது மைக்ரோசர்விசஸ்களுக்கு இடையில் ஒத்திசைவற்ற தகவல்தொடர்புக்கு அனுமதிக்கிறது மற்றும் நிகழ்வுகள் நம்பகத்தன்மையுடன் வழங்கப்படுவதை உறுதி செய்கிறது.
எடுத்துக்காட்டு: உலகளாவிய மின்வணிக தளம்
மைக்ரோசர்விசஸ்களைப் பயன்படுத்தி கட்டப்பட்ட ஒரு உலகளாவிய மின்வணிக தளத்தைக் கவனியுங்கள். ஒவ்வொரு மைக்ரோசர்விசஸும் ஒரு குறிப்பிட்ட டொமைன் பகுதிக்கு பொறுப்பாக இருக்கலாம், அதாவது:
- தயாரிப்பு பட்டியல்: பெயர், விளக்கம், விலை மற்றும் படங்கள் உள்ளிட்ட தயாரிப்பு தகவல்களை நிர்வகிக்கிறது.
- ஆர்டர் மேலாண்மை: உருவாக்கம், செயலாக்கம் மற்றும் நிறைவேற்றுதல் உள்ளிட்ட ஆர்டர்களை நிர்வகிக்கிறது.
- வாடிக்கையாளர் மேலாண்மை: சுயவிவரங்கள், முகவரிகள் மற்றும் கட்டண முறைகள் உள்ளிட்ட வாடிக்கையாளர் தகவல்களை நிர்வகிக்கிறது.
- சரக்கு மேலாண்மை: சரக்கு நிலைகள் மற்றும் பங்கு இருப்பை நிர்வகிக்கிறது.
இந்த மைக்ரோசர்விசஸ்கள் ஒவ்வொன்றும் CQRS-ஐ சுதந்திரமாக செயல்படுத்த முடியும். எடுத்துக்காட்டாக, தயாரிப்பு பட்டியல் மைக்ரோசர்விஸ் தயாரிப்பு தகவலுக்காக தனித்தனியான வாசிப்பு மற்றும் எழுதும் மாதிரிகளைக் கொண்டிருக்கலாம். எழுதும் மாதிரி அனைத்து தயாரிப்பு பண்புகளையும் கொண்ட ஒரு இயல்பாக்கப்பட்ட தரவுத்தளமாக இருக்கலாம், அதே நேரத்தில் வாசிப்பு மாதிரி இணையதளத்தில் தயாரிப்பு விவரங்களைக் காண்பிப்பதற்கு உகந்ததாக ஒரு இயல்புக்கு மாறான காட்சியாக இருக்கலாம்.
ஒரு புதிய தயாரிப்பு உருவாக்கப்படும்போது, தயாரிப்பு பட்டியல் மைக்ரோசர்விஸ் ஒரு `ProductCreatedEvent`-ஐ செய்தி வரிசைக்கு வெளியிடுகிறது. ஆர்டர் மேலாண்மை மைக்ரோசர்விஸ் இந்த நிகழ்விற்கு சந்தா செலுத்தி, புதிய தயாரிப்பை ஆர்டர் சுருக்கங்களில் சேர்க்க அதன் உள்ளூர் வாசிப்பு மாதிரியைப் புதுப்பிக்கிறது. இதேபோல், வாடிக்கையாளர் மேலாண்மை மைக்ரோசர்விஸ் `ProductCreatedEvent`-க்கு சந்தா செலுத்தி வாடிக்கையாளர்களுக்கான தயாரிப்பு பரிந்துரைகளைத் தனிப்பயனாக்கலாம்.
CQRS-இன் சவால்கள்
CQRS பல நன்மைகளை வழங்கினாலும், இது பல சவால்களையும் அறிமுகப்படுத்துகிறது:
- அதிகரித்த சிக்கலானது: CQRS கணினி கட்டமைப்பிற்கு சிக்கலை சேர்க்கிறது. வாசிப்பு மற்றும் எழுதும் மாதிரிகள் சரியாக ஒத்திசைக்கப்படுவதை உறுதி செய்ய கவனமான திட்டமிடல் மற்றும் வடிவமைப்பு தேவை.
- இறுதி நிலைத்தன்மை: CQRS பெரும்பாலும் இறுதி நிலைத்தன்மையை ஏற்றுக்கொள்கிறது, இது உடனடி தரவு புதுப்பிப்புகளை எதிர்பார்க்கும் பயனர்களுக்கு சவாலாக இருக்கலாம்.
- தரவு ஒத்திசைவு: வாசிப்பு மற்றும் எழுதும் மாதிரிகளுக்கு இடையில் தரவு ஒத்திசைவைப் பராமரிப்பது சிக்கலானது மற்றும் தரவு முரண்பாடுகளுக்கான சாத்தியக்கூறுகளை கவனமாகக் கருத்தில் கொள்ள வேண்டும்.
- உள்கட்டமைப்பு தேவைகள்: CQRS-க்கு பெரும்பாலும் செய்தி வரிசைகள் மற்றும் நிகழ்வு சேமிப்பகங்கள் போன்ற கூடுதல் உள்கட்டமைப்பு தேவைப்படுகிறது.
- கற்றல் வளைவு: CQRS-ஐ திறம்பட செயல்படுத்த டெவலப்பர்கள் புதிய கருத்துக்கள் மற்றும் நுட்பங்களைக் கற்றுக்கொள்ள வேண்டும்.
CQRS-க்கான சிறந்த நடைமுறைகள்
CQRS-ஐ வெற்றிகரமாக செயல்படுத்த, இந்த சிறந்த நடைமுறைகளைப் பின்பற்றுவது அவசியம்:
- எளிமையாகத் தொடங்குங்கள்: CQRS-ஐ ஒரே நேரத்தில் எல்லா இடங்களிலும் செயல்படுத்த முயற்சிக்காதீர்கள். அமைப்பின் ஒரு சிறிய, தனிமைப்படுத்தப்பட்ட பகுதியுடன் தொடங்கி, தேவைக்கேற்ப அதன் பயன்பாட்டை படிப்படியாக விரிவுபடுத்துங்கள்.
- வணிக மதிப்பில் கவனம் செலுத்துங்கள்: CQRS அதிக வணிக மதிப்பை வழங்கக்கூடிய அமைப்பின் பகுதிகளைத் தேர்வுசெய்க.
- நிகழ்வு ஆதாரத்தை புத்திசாலித்தனமாகப் பயன்படுத்துங்கள்: நிகழ்வு ஆதாரம் ஒரு சக்திவாய்ந்த கருவியாக இருக்கலாம், ஆனால் இது சிக்கலையும் சேர்க்கிறது. நன்மைகள் செலவுகளை விட அதிகமாக இருக்கும்போது மட்டுமே அதைப் பயன்படுத்துங்கள்.
- கண்காணித்து அளவிடவும்: வாசிப்பு மற்றும் எழுதும் மாதிரிகளின் செயல்திறனைக் கண்காணித்து, தேவைக்கேற்ப மாற்றங்களைச் செய்யுங்கள்.
- தரவு ஒத்திசைவை தானியக்கமாக்குங்கள்: தரவு முரண்பாடுகளுக்கான சாத்தியக்கூறுகளைக் குறைக்க, வாசிப்பு மற்றும் எழுதும் மாதிரிகளுக்கு இடையில் தரவை ஒத்திசைக்கும் செயல்முறையை தானியக்கமாக்குங்கள்.
- தெளிவாகத் தொடர்பு கொள்ளுங்கள்: இறுதி நிலைத்தன்மையின் தாக்கங்களை பயனர்களுக்குத் தெளிவாகத் தொடர்பு கொள்ளுங்கள்.
- முழுமையாக ஆவணப்படுத்துங்கள்: மற்ற டெவலப்பர்கள் அதை புரிந்துகொண்டு பராமரிக்க முடியும் என்பதை உறுதிப்படுத்த CQRS செயலாக்கத்தை முழுமையாக ஆவணப்படுத்துங்கள்.
CQRS கருவிகள் மற்றும் கட்டமைப்புகள்
பல கருவிகள் மற்றும் கட்டமைப்புகள் CQRS-இன் செயலாக்கத்தை எளிதாக்க உதவும்:
- MediatR (C#): .NET-க்கான ஒரு எளிய மத்தியஸ்தர் செயலாக்கம், இது கட்டளைகள், வினவல்கள் மற்றும் நிகழ்வுகளை ஆதரிக்கிறது.
- Axon Framework (Java): CQRS மற்றும் நிகழ்வு-ஆதார பயன்பாடுகளை உருவாக்குவதற்கான ஒரு விரிவான கட்டமைப்பு.
- Broadway (PHP): PHP-க்கான ஒரு CQRS மற்றும் நிகழ்வு ஆதார நூலகம்.
- EventStoreDB: நிகழ்வு ஆதாரத்திற்காக பிரத்யேகமாக உருவாக்கப்பட்ட தரவுத்தளம்.
- Apache Kafka: ஒரு நிகழ்வு பஸ்ஸாகப் பயன்படுத்தக்கூடிய ஒரு பகிரப்பட்ட ஸ்ட்ரீமிங் தளம்.
- RabbitMQ: மைக்ரோசர்விசஸ்களுக்கு இடையில் ஒத்திசைவற்ற தகவல்தொடர்புக்குப் பயன்படுத்தக்கூடிய ஒரு செய்தி தரகர்.
CQRS-இன் நிஜ உலக எடுத்துக்காட்டுகள்
பல பெரிய நிறுவனங்கள் அளவிடக்கூடிய மற்றும் பராமரிக்கக்கூடிய அமைப்புகளை உருவாக்க CQRS-ஐப் பயன்படுத்துகின்றன. இதோ சில எடுத்துக்காட்டுகள்:
- நெட்ஃபிக்ஸ்: நெட்ஃபிக்ஸ் தனது பரந்த திரைப்படங்கள் மற்றும் தொலைக்காட்சி நிகழ்ச்சிகளின் பட்டியலை நிர்வகிக்க CQRS-ஐ விரிவாகப் பயன்படுத்துகிறது.
- அமேசான்: அமேசான் தனது மின்வணிக தளத்தில் அதிக பரிவர்த்தனை அளவுகள் மற்றும் சிக்கலான வணிக தர்க்கத்தைக் கையாள CQRS-ஐப் பயன்படுத்துகிறது.
- லிங்க்ட்இன்: லிங்க்ட்இன் தனது சமூக வலைப்பின்னல் தளத்தில் பயனர் சுயவிவரங்கள் மற்றும் இணைப்புகளை நிர்வகிக்க CQRS-ஐப் பயன்படுத்துகிறது.
- மைக்ரோசாப்ட்: மைக்ரோசாப்ட் தனது கிளவுட் சேவைகளான Azure மற்றும் Office 365-இல் CQRS-ஐப் பயன்படுத்துகிறது.
இந்த எடுத்துக்காட்டுகள் CQRS-ஐ மின்வணிக தளங்கள் முதல் சமூக வலைப்பின்னல் தளங்கள் வரை பரந்த அளவிலான பயன்பாடுகளுக்கு வெற்றிகரமாகப் பயன்படுத்த முடியும் என்பதை நிரூபிக்கின்றன.
முடிவுரை
CQRS என்பது ஒரு சக்திவாய்ந்த கட்டமைப்பு வடிவமாகும், இது சிக்கலான அமைப்புகளின் அளவிடுதல், பராமரிப்புத்தன்மை மற்றும் செயல்திறனை கணிசமாக மேம்படுத்த முடியும். வாசிப்பு மற்றும் எழுதும் செயல்பாடுகளை தனித்தனி மாதிரிகளாகப் பிரிப்பதன் மூலம், CQRS சுதந்திரமான மேம்படுத்தல் மற்றும் அளவிடுதலை அனுமதிக்கிறது. CQRS கூடுதல் சிக்கலை அறிமுகப்படுத்தினாலும், பல சூழ்நிலைகளில் நன்மைகள் செலவுகளை விட அதிகமாக இருக்கலாம். CQRS-இன் கொள்கைகள், நன்மைகள் மற்றும் சவால்களைப் புரிந்துகொள்வதன் மூலம், டெவலப்பர்கள் தங்கள் திட்டங்களுக்கு இந்த வடிவத்தை எப்போது, எப்படிப் பயன்படுத்துவது என்பது குறித்து தகவலறிந்த முடிவுகளை எடுக்க முடியும்.
நீங்கள் ஒரு மைக்ரோசர்விசஸ் கட்டமைப்பு, ஒரு சிக்கலான டொமைன் மாதிரி அல்லது ஒரு உயர் செயல்திறன் கொண்ட பயன்பாட்டை உருவாக்குகிறீர்களா என்பதைப் பொருட்படுத்தாமல், CQRS உங்கள் கட்டமைப்பு ஆயுதக் களஞ்சியத்தில் ஒரு மதிப்புமிக்க கருவியாக இருக்க முடியும். CQRS மற்றும் அதனுடன் தொடர்புடைய வடிவங்களைத் தழுவுவதன் மூலம், நீங்கள் மேலும் அளவிடக்கூடிய, பராமரிக்கக்கூடிய மற்றும் மாற்றத்திற்கு நெகிழ்ச்சியான அமைப்புகளை உருவாக்க முடியும்.
மேலும் அறிய
- மார்ட்டின் ஃபவுலரின் CQRS கட்டுரை: https://martinfowler.com/bliki/CQRS.html
- கிரெக் யங்கின் CQRS ஆவணங்கள்: "Greg Young CQRS" என்று தேடுவதன் மூலம் இவற்றைக் காணலாம்.
- மைக்ரோசாப்டின் ஆவணங்கள்: Microsoft Docs-இல் CQRS மற்றும் மைக்ரோசர்விசஸ் கட்டமைப்பு வழிகாட்டுதல்களைத் தேடுங்கள்.
CQRS-இன் இந்த ஆய்வு, இந்த சக்திவாய்ந்த கட்டமைப்பு வடிவத்தைப் புரிந்துகொள்வதற்கும் செயல்படுத்துவதற்கும் ஒரு வலுவான அடித்தளத்தை வழங்குகிறது. CQRS-ஐ ஏற்க முடிவு செய்யும்போது உங்கள் திட்டத்தின் குறிப்பிட்ட தேவைகளையும் சூழலையும் கருத்தில் கொள்ள நினைவில் கொள்ளுங்கள். உங்கள் கட்டமைப்பு பயணத்திற்கு நல்வாழ்த்துக்கள்!