Frontend API gateway தீர்வுகளான GraphQL Federation மற்றும் Schema Stitching-ன் ஆற்றலை ஆராயுங்கள். மைக்ரோ சர்வீஸ்களை ஒன்றிணைப்பது, செயல்திறனை மேம்படுத்துவது, மற்றும் நவீன வலை பயன்பாடுகளில் தரவு மீட்டெடுப்பை எளிதாக்குவது எப்படி என்பதை அறிக.
Frontend API Gateway: GraphQL Federation மற்றும் Schema Stitching
நவீன வலை பயன்பாட்டு மேம்பாட்டு உலகில், பல மூலங்களிலிருந்து தரவை நிர்வகிப்பது ஒரு குறிப்பிடத்தக்க சவாலாக இருக்கலாம். பயன்பாடுகள் சிக்கலானதாக வளரும்போதும் மைக்ரோ சர்வீஸ்கள் கட்டமைப்புகளை ஏற்கும்போதும், தரவை அணுகுவதற்கான ஒரு ஒருங்கிணைந்த மற்றும் திறமையான வழியின் தேவை மிக முக்கியமாகிறது. ஒரு Frontend API Gateway வாடிக்கையாளர் பயன்பாடுகளுக்கு ஒரு மைய நுழைவுப் புள்ளியாக செயல்படுகிறது, பல்வேறு பின்தள சேவைகளிலிருந்து தரவைத் திரட்டி, டெவலப்பர்கள் மற்றும் இறுதிப் பயனர்களுக்கு ஒரு சீரான அனுபவத்தை வழங்குகிறது. இந்த வலைப்பதிவு இடுகை, Frontend API Gateway-ஐ உருவாக்குவதற்கான இரண்டு சக்திவாய்ந்த நுட்பங்களை ஆராய்கிறது: GraphQL Federation மற்றும் Schema Stitching.
Frontend API Gateway என்றால் என்ன?
Frontend API Gateway என்பது ஒரு கட்டடக்கலை வடிவமாகும், இதில் ஒரு பிரத்யேக சர்வர் frontend வாடிக்கையாளர்களுக்கும் (உதாரணமாக, வலை உலாவிகள், மொபைல் செயலிகள்) மற்றும் பல பின்தள சேவைகளுக்கும் இடையே ஒரு இடைத்தரகராக செயல்படுகிறது. இது தரவு மீட்டெடுப்பை எளிதாக்குகிறது:
- தரவை ஒருங்கிணைத்தல்: பல மூலங்களிலிருந்து தரவை ஒரே பதிலை உருவாக்க இணைத்தல்.
- தரவை மாற்றுதல்: frontend-ன் தேவைகளுக்கு ஏற்ப தரவு வடிவங்களை மாற்றுதல்.
- சிக்கலான தன்மையை மறைத்தல்: பின்தள சேவைகளின் நுணுக்கங்களை வாடிக்கையாளரிடமிருந்து மறைத்தல்.
- பாதுகாப்பை அமல்படுத்துதல்: அங்கீகாரம் மற்றும் அங்கீகாரக் கொள்கைகளை செயல்படுத்துதல்.
- செயல்திறனை மேம்படுத்துதல்: அடிக்கடி அணுகப்படும் தரவை கேச்சிங் செய்தல் மற்றும் நெட்வொர்க் கோரிக்கைகளைக் குறைத்தல்.
அடிப்படையில், இது Backend for Frontend (BFF) வடிவத்தை பெரிய அளவில் செயல்படுத்துகிறது மற்றும் front-end குழுக்களுக்கு அவர்கள் பயன்படுத்தும் API-களின் மீது அதிக கட்டுப்பாட்டை எடுக்க அதிகாரம் அளிக்கிறது. பெரிய நிறுவனங்களில், front-end தனது சொந்த API-களை நிர்வகித்து ஒழுங்கமைப்பது விரைவான விநியோகத்திற்கும் பின்தள குழுக்களைச் சார்ந்திருப்பதைக் குறைக்கவும் வழிவகுக்கும்.
ஒரு Frontend API Gateway-க்கு GraphQL-ஐ ஏன் பயன்படுத்த வேண்டும்?
GraphQL என்பது API-களுக்கான ஒரு வினவல் மொழி மற்றும் உங்கள் தற்போதைய தரவைக் கொண்டு அந்த வினவல்களை நிறைவேற்றுவதற்கான ஒரு இயக்கநேரம் ஆகும். இது பாரம்பரிய REST API-களை விட பல நன்மைகளை வழங்குகிறது, இது Frontend API Gateway-களை உருவாக்குவதற்கு மிகவும் பொருத்தமானதாக ஆக்குகிறது:
- திறமையான தரவு மீட்டெடுப்பு: வாடிக்கையாளர்கள் தங்களுக்குத் தேவையான தரவை மட்டுமே கோருகிறார்கள், இது அதிகப்படியான தரவுப் பெறுதலைக் குறைத்து செயல்திறனை மேம்படுத்துகிறது.
- வலுவான தட்டச்சு: GraphQL ஸ்கீமாக்கள் தரவின் கட்டமைப்பை வரையறுக்கின்றன, இது சிறந்த கருவிகள் மற்றும் சரிபார்ப்பை செயல்படுத்துகிறது.
- ஆழ்நோக்கு (Introspection): வாடிக்கையாளர்கள் ஸ்கீமா ஆழ்நோக்கு மூலம் கிடைக்கக்கூடிய தரவு மற்றும் செயல்பாடுகளைக் கண்டறியலாம்.
- நிகழ்நேர திறன்கள்: GraphQL சந்தாக்கள் நிகழ்நேர தரவு புதுப்பிப்புகளை செயல்படுத்துகின்றன.
GraphQL-ஐப் பயன்படுத்துவதன் மூலம், ஒரு Frontend API Gateway பல பின்தள சேவைகளிலிருந்து தரவை அணுகுவதற்கு ஒரு நெகிழ்வான, திறமையான மற்றும் டெவலப்பர்-நட்பு இடைமுகத்தை வழங்க முடியும். இது பாரம்பரிய அணுகுமுறைகளான பல REST எண்ட்பாயிண்ட்களைப் பயன்படுத்துவதிலிருந்து முற்றிலும் மாறுபடுகிறது, அங்கு ஒவ்வொன்றும் தனித்தனியாக வினவப்பட வேண்டும் மற்றும் பெரும்பாலும் தேவைக்கு அதிகமான தரவைத் திருப்பித் தரும்.
GraphQL Federation: ஒரு பரவலாக்கப்பட்ட அணுகுமுறை
GraphQL Federation என்றால் என்ன?
GraphQL Federation என்பது பல GraphQL சேவைகளை ( "சப்கிராஃப்கள்" என்று அழைக்கப்படுபவை) ஒரு ஒற்றை, ஒருங்கிணைந்த ஸ்கீமாவாக இணைப்பதன் மூலம் ஒரு பரவலாக்கப்பட்ட GraphQL API-ஐ உருவாக்குவதற்கான ஒரு சக்திவாய்ந்த நுட்பமாகும். ஒவ்வொரு சப்கிராஃபும் ஒரு குறிப்பிட்ட டொமைன் அல்லது தரவு மூலத்திற்குப் பொறுப்பாகும், மேலும் Federation gateway இந்த சப்கிராஃப்கள் முழுவதும் வினவல்களை ஒழுங்கமைக்கிறது.
முக்கிய கருத்து ஒரு சூப்பர்கிராஃப்-ஐச் சுற்றி வருகிறது, இது முழு API-ஐயும் பிரதிநிதித்துவப்படுத்தும் ஒரு ஒற்றை, ஒருங்கிணைந்த GraphQL ஸ்கீமா ஆகும். இந்த சூப்பர்கிராஃப் சிறிய GraphQL ஸ்கீமாக்களை, சப்கிராஃப்கள் என்று அழைக்கப்படுபவை, இணைப்பதன் மூலம் உருவாக்கப்படுகிறது, ஒவ்வொன்றும் ஒரு குறிப்பிட்ட மைக்ரோ சர்வீஸ் அல்லது தரவு மூலத்தைப் பிரதிநிதித்துவப்படுத்துகிறது. Federation gateway உள்வரும் GraphQL வினவல்களை பொருத்தமான சப்கிராஃப்களுக்கு வழிநடத்துவதற்கும், முடிவுகளை ஒரே பதிலாக இணைப்பதற்கும் பொறுப்பாகும்.
GraphQL Federation எப்படி வேலை செய்கிறது
- சப்கிராஃப் வரையறை: ஒவ்வொரு மைக்ரோ சர்வீஸும் ஒரு GraphQL API (ஒரு சப்கிராஃப்)-ஐ வெளிப்படுத்துகிறது, இது அதன் சொந்த தரவு மற்றும் செயல்பாடுகளை வரையறுக்கிறது. இந்த ஸ்கீமாக்களில் Federation gateway-க்கு வகைகள் மற்றும் புலங்களை எவ்வாறு தீர்ப்பது என்று கூறும் வழிமுறைகள் உள்ளன. முக்கிய வழிமுறைகளில் `@key`, `@external`, மற்றும் `@requires` ஆகியவை அடங்கும்.
- சூப்பர்கிராஃப் கலவை: Federation gateway (உதாரணமாக, Apollo Gateway) ஒவ்வொரு சப்கிராஃபிலிருந்தும் ஸ்கீமாக்களைப் பெற்று, அவற்றை ஒரு ஒற்றை, ஒருங்கிணைந்த ஸ்கீமாவாக (சூப்பர்கிராஃப்) இணைக்கிறது. இந்த செயல்முறையானது வகை மற்றும் புல முரண்பாடுகளைத் தீர்ப்பது மற்றும் வெவ்வேறு சப்கிராஃப்களுக்கு இடையில் உள்ள வகைகளுக்கு இடையிலான உறவுகளை நிறுவுவதை உள்ளடக்கியது.
- வினவல் திட்டமிடல் மற்றும் செயல்படுத்தல்: ஒரு வாடிக்கையாளர் GraphQL வினவலை gateway-க்கு அனுப்பும்போது, gateway வினவலை பகுப்பாய்வு செய்து, கோரிக்கையை நிறைவேற்ற எந்த சப்கிராஃப்கள் வினவப்பட வேண்டும் என்பதை தீர்மானிக்கிறது. பின்னர் அது வினவலை பொருத்தமான சப்கிராஃப்களுக்கு விநியோகித்து, முடிவுகளைச் சேகரித்து, அவற்றை ஒரே பதிலாக இணைத்து, வாடிக்கையாளருக்குத் திருப்பி அனுப்புகிறது.
எடுத்துக்காட்டு: GraphQL Federation உடன் ஒரு இ-காமர்ஸ் தளம்
தயாரிப்புகள், வாடிக்கையாளர்கள் மற்றும் ஆர்டர்களுக்கான தனித்தனி மைக்ரோ சர்வீஸ்களைக் கொண்ட ஒரு இ-காமர்ஸ் தளத்தைக் கவனியுங்கள்.
- Products Subgraph: தயாரிப்புத் தகவல்களை (பெயர், விளக்கம், விலை, முதலியன) நிர்வகிக்கிறது.
- Customers Subgraph: வாடிக்கையாளர் தரவை (பெயர், முகவரி, மின்னஞ்சல், முதலியன) நிர்வகிக்கிறது.
- Orders Subgraph: ஆர்டர் தகவல்களை (ஆர்டர் ஐடி, வாடிக்கையாளர் ஐடி, தயாரிப்பு ஐடிகள், மொத்தத் தொகை, முதலியன) நிர்வகிக்கிறது.
ஒவ்வொரு சப்கிராஃபும் ஒரு GraphQL API-ஐ வெளிப்படுத்துகிறது, மற்றும் Federation gateway இந்த API-களை ஒரு ஒற்றை சூப்பர்கிராஃபாக இணைக்கிறது. ஒரு வாடிக்கையாளர் பின்னர் சூப்பர்கிராஃபை வினவி, தயாரிப்புகள், வாடிக்கையாளர்கள் மற்றும் ஆர்டர்கள் பற்றிய தகவல்களை ஒரே கோரிக்கையில் பெறலாம்.
உதாரணமாக, ஒரு வாடிக்கையாளரின் பெயர் மற்றும் அவர்களின் ஆர்டர் வரலாற்றைப் பெறுவதற்கான ஒரு வினவல் இப்படி இருக்கலாம்:
query GetCustomerAndOrders($customerId: ID!) {
customer(id: $customerId) {
id
name
orders {
id
orderDate
totalAmount
}
}
}
Federation gateway இந்த வினவலை Customers மற்றும் Orders சப்கிராஃப்களுக்கு வழிநடத்தி, தேவையான தரவைப் பெற்று, அதை ஒரே பதிலாக இணைக்கும்.
GraphQL Federation-ன் நன்மைகள்
- எளிமைப்படுத்தப்பட்ட தரவு அணுகல்: அடிப்படை தரவு மூலங்களைப் பொருட்படுத்தாமல், வாடிக்கையாளர்கள் ஒரு ஒற்றை GraphQL எண்ட்பாயிண்டுடன் தொடர்பு கொள்கிறார்கள்.
- மேம்படுத்தப்பட்ட செயல்திறன்: ஒவ்வொரு சப்கிராஃபிலிருந்தும் தேவையான தரவை மட்டுமே பெறுவதன் மூலம் தரவு மீட்டெடுப்பு மேம்படுத்தப்படுகிறது.
- அதிகரித்த அளவிடுதல்: ஒவ்வொரு சப்கிராஃபையும் சுயாதீனமாக அளவிட முடியும், இது சிறந்த வள பயன்பாட்டிற்கு அனுமதிக்கிறது.
- பரவலாக்கப்பட்ட மேம்பாடு: குழுக்கள் சுயாதீனமாக சப்கிராஃப்களை உருவாக்கி வரிசைப்படுத்தலாம், இது சுறுசுறுப்பு மற்றும் புதுமையை ஊக்குவிக்கிறது.
- ஸ்கீமா ஆளுகை: Federation gateway சப்கிராஃப்கள் முழுவதும் ஸ்கீமா நிலைத்தன்மை மற்றும் இணக்கத்தை அமல்படுத்துகிறது.
GraphQL Federation-க்கான கருவிகள்
- Apollo Federation: GraphQL Federation-ன் ஒரு பிரபலமான ஓப்பன் சோர்ஸ் செயலாக்கம், இது ஒரு gateway, ஒரு ஸ்கீமா ரெஜிஸ்ட்ரி, மற்றும் ஒருங்கிணைந்த GraphQL API-களை உருவாக்குவதற்கும் நிர்வகிப்பதற்கும் கருவிகளை வழங்குகிறது. Apollo Federation அதன் அளவிடுதல் மற்றும் வலுவான பிழை கையாளுதலுக்காக அறியப்படுகிறது.
- GraphQL Hive: இந்த கருவி GraphQL ஒருங்கிணைந்த சேவைகளுக்கு ஸ்கீமா ரெஜிஸ்ட்ரி மற்றும் ஆளுகையை வழங்குகிறது, இது மாற்றம் கண்டறிதல், பயன்பாட்டு பகுப்பாய்வு மற்றும் ஸ்கீமா சரிபார்ப்புகள் போன்ற அம்சங்களை வழங்குகிறது. இது சூப்பர்கிராஃபின் மீதான தெரிவுநிலை மற்றும் கட்டுப்பாட்டை மேம்படுத்துகிறது.
Schema Stitching: ஒரு மாற்று அணுகுமுறை
Schema Stitching என்றால் என்ன?
Schema Stitching என்பது பல GraphQL ஸ்கீமாக்களை ஒரு ஒற்றை, ஒருங்கிணைந்த ஸ்கீமாவாக இணைப்பதற்கான மற்றொரு நுட்பமாகும். Federation-ஐப் போலல்லாமல், Schema Stitching பொதுவாக வெவ்வேறு ஸ்கீமாக்களிலிருந்து வகைகள் மற்றும் புலங்கள் எவ்வாறு இணைக்கப்பட்டுள்ளன என்பதை வரையறுக்கும் ஒரு கையேடு செயல்முறையை உள்ளடக்கியது. Federation ஒரு நவீன மற்றும் வலுவான தீர்வாகக் கருதப்பட்டாலும், Schema Stitching எளிமையான பயன்பாட்டு நிகழ்வுகளுக்கு அல்லது தற்போதைய GraphQL API-களிலிருந்து இடம்பெயரும்போது ஒரு சாத்தியமான தேர்வாக இருக்கலாம்.
Schema Stitching எப்படி வேலை செய்கிறது
- ஸ்கீமா வரையறை: ஒவ்வொரு மைக்ரோ சர்வீஸும் அதன் சொந்த ஸ்கீமாவுடன் ஒரு GraphQL API-ஐ வெளிப்படுத்துகிறது.
- ஸ்டிச்சிங் லாஜிக்: ஒரு ஸ்டிச்சிங் லேயர் (பெரும்பாலும் GraphQL Tools போன்ற நூலகங்களைப் பயன்படுத்தி செயல்படுத்தப்படுகிறது) வெவ்வேறு ஸ்கீமாக்களிலிருந்து வகைகள் மற்றும் புலங்கள் எவ்வாறு இணைக்கப்பட்டுள்ளன என்பதை வரையறுக்கிறது. இது அடிப்படை சேவைகளிலிருந்து தரவைப் பெற்று ஒருங்கிணைந்த ஸ்கீமாவுடன் பொருத்தும் ரிசால்வர் செயல்பாடுகளை எழுதுவதை உள்ளடக்கியது.
- ஒருங்கிணைந்த ஸ்கீமா: ஸ்டிச்சிங் லேயர் தனிப்பட்ட ஸ்கீமாக்களை ஒரு ஒற்றை, ஒருங்கிணைந்த ஸ்கீமாவாக இணைக்கிறது, இது வாடிக்கையாளருக்கு வெளிப்படுத்தப்படுகிறது.
எடுத்துக்காட்டு: தயாரிப்புகள் மற்றும் விமர்சனங்களை ஸ்டிச்சிங் செய்தல்
இரண்டு தனித்தனி GraphQL சேவைகளைக் கற்பனை செய்து பாருங்கள்: ஒன்று தயாரிப்புகளுக்கும் மற்றொன்று விமர்சனங்களுக்கும்.
- தயாரிப்புகள் சேவை: தயாரிப்புகள் பற்றிய தகவல்களை வழங்குகிறது (ஐடி, பெயர், விளக்கம், விலை).
- விமர்சனங்கள் சேவை: தயாரிப்புகளுக்கான விமர்சனங்களை வழங்குகிறது (ஐடி, தயாரிப்பு ஐடி, மதிப்பீடு, கருத்து).
Schema Stitching-ஐப் பயன்படுத்தி, வாடிக்கையாளர்கள் தயாரிப்புத் தகவல் மற்றும் விமர்சனங்களை ஒரே வினவலில் பெற அனுமதிக்கும் ஒரு ஒருங்கிணைந்த ஸ்கீமாவை நீங்கள் உருவாக்கலாம்.
ஸ்டிச்சிங் லேயரில் ஒரு ரிசால்வர் செயல்பாட்டை நீங்கள் வரையறுப்பீர்கள், அது ஒரு குறிப்பிட்ட தயாரிப்பு ஐடிக்கான விமர்சனங்களை Reviews Service-லிருந்து பெற்று, அவற்றை ஒருங்கிணைந்த ஸ்கீமாவில் உள்ள Product வகையுடன் சேர்க்கும்.
// எடுத்துக்காட்டு (கருத்துரு): GraphQL Tools பயன்படுத்தி ஸ்டிச்சிங் லாஜிக்
const { stitchSchemas } = require('@graphql-tools/stitch');
const productsSchema = ... // உங்கள் தயாரிப்புகள் ஸ்கீமாவை வரையறுக்கவும்
const reviewsSchema = ... // உங்கள் விமர்சனங்கள் ஸ்கீமாவை வரையறுக்கவும்
const stitchedSchema = stitchSchemas({
subschemas: [
{
schema: productsSchema,
},
{
schema: reviewsSchema,
transforms: [
{
transformSchema: (schema) => schema,
transformRequest: (originalRequest) => {
return originalRequest;
},
transformResult: (originalResult) => {
return originalResult;
}
}
],
},
],
typeDefs: `
extend type Product {
reviews: [Review]
}
`,
resolvers: {
Product: {
reviews: {
resolve: (product, args, context, info) => {
// தயாரிப்புக்கான விமர்சனங்களை Reviews Service-லிருந்து பெறவும்
return fetchReviewsForProduct(product.id);
},
},
},
},
});
இந்த எடுத்துக்காட்டு ஸ்கீமாக்களை ஒன்றாக ஸ்டிச்சிங் செய்வதன் முக்கிய கருத்தை நிரூபிக்கிறது. `reviews` புலத்தைப் பெறுவதற்கு தனிப்பயன் ரிசால்வர்களின் தேவையை கவனிக்கவும். ஒவ்வொரு உறவிற்கும் ரிசால்வர்களை குறியிடுவதற்கான இந்த கூடுதல் மேல்நிலை, Federation-ஐப் பயன்படுத்துவதை விட மேம்பாட்டு செயல்முறையை மெதுவாக்கலாம்.
Schema Stitching-ன் நன்மைகள்
- ஒருங்கிணைந்த API: வாடிக்கையாளர்கள் ஒரு ஒற்றை GraphQL எண்ட்பாயிண்டை அணுகுகிறார்கள், இது தரவு அணுகலை எளிதாக்குகிறது.
- படிப்படியான தத்தெடுப்பு: Schema Stitching-ஐ படிப்படியாக செயல்படுத்தலாம், இது ஒரு ஒருங்கிணைந்த API-க்கு படிப்படியாக இடம்பெயர உங்களை அனுமதிக்கிறது.
- நெகிழ்வுத்தன்மை: Schema Stitching ஸ்கீமாக்கள் எவ்வாறு இணைக்கப்படுகின்றன என்பதில் அதிக கட்டுப்பாட்டை வழங்குகிறது, இது குறிப்பிட்ட தேவைகளைப் பூர்த்தி செய்ய ஸ்டிச்சிங் லாஜிக்கைத் தனிப்பயனாக்க உங்களை அனுமதிக்கிறது.
Schema Stitching-ன் குறைபாடுகள்
- கையேடு உள்ளமைவு: Schema Stitching-க்கு ஸ்டிச்சிங் லாஜிக்கின் கையேடு உள்ளமைவு தேவைப்படுகிறது, இது சிக்கலானதாகவும் நேரத்தை எடுத்துக்கொள்ளக்கூடியதாகவும் இருக்கலாம்.
- செயல்திறன் மேல்நிலை: ரிசால்வர் செயல்பாடுகள் செயல்திறன் மேல்நிலையை அறிமுகப்படுத்தலாம், குறிப்பாக அவை சிக்கலான தரவு மாற்றங்களை உள்ளடக்கியிருந்தால்.
- வரையறுக்கப்பட்ட அளவிடுதல்: Federation-ஐ விட Schema Stitching-ஐ அளவிடுவது மிகவும் கடினமாக இருக்கும், ஏனெனில் ஸ்டிச்சிங் லாஜிக் பொதுவாக மையப்படுத்தப்பட்டுள்ளது.
- ஸ்கீமா உரிமை: ஸ்கீமா உரிமையில் தெளிவின்மைக்கு வழிவகுக்கும், குறிப்பாக வெவ்வேறு குழுக்கள் ஸ்டிச் செய்யப்பட்ட சேவைகளை நிர்வகித்தால்.
Schema Stitching-க்கான கருவிகள்
- GraphQL Tools: GraphQL ஸ்கீமாக்களை உருவாக்குவதற்கும் கையாளுவதற்கும் ஒரு பிரபலமான நூலகம், இதில் Schema Stitching-க்கான ஆதரவும் அடங்கும்.
- GraphQL Mesh: GraphQL Mesh, REST API-கள், தரவுத்தளங்கள் மற்றும் gRPC போன்ற பல்வேறு மூலங்களிலிருந்து தரவை அணுக GraphQL வினவல் மொழியைப் பயன்படுத்த உங்களை அனுமதிக்கிறது. இது இந்த API-களை ஒருங்கிணைந்த GraphQL ஸ்கீமாவாக ஸ்டிச் செய்ய முடியும்.
GraphQL Federation மற்றும் Schema Stitching: ஒரு ஒப்பீடு
GraphQL Federation மற்றும் Schema Stitching இரண்டும் பல GraphQL ஸ்கீமாக்களை ஒரே API-ல் இணைப்பதற்கான வழிகளை வழங்குகின்றன, ஆனால் அவை அவற்றின் அணுகுமுறை மற்றும் திறன்களில் வேறுபடுகின்றன.
| அம்சம் | GraphQL Federation | Schema Stitching |
|---|---|---|
| அணுகுமுறை | பரவலாக்கப்பட்ட, தானியங்கு கலவை | மையப்படுத்தப்பட்ட, கையேடு உள்ளமைவு |
| சிக்கலான தன்மை | பராமரித்தல் மற்றும் அளவிடுதலுக்கு குறைந்த சிக்கலான தன்மை | கையேடு ரிசால்வர் லாஜிக் காரணமாக அதிக சிக்கலான தன்மை |
| அளவிடுதல் | பெரிய அளவிலான, பரவலாக்கப்பட்ட அமைப்புகளுக்காக வடிவமைக்கப்பட்டது | குறைந்த அளவிடக்கூடியது, பொதுவாக சிறிய பயன்பாடுகளுக்குப் பயன்படுத்தப்படுகிறது |
| ஸ்கீமா ஆளுகை | உள்ளமைக்கப்பட்ட ஸ்கீமா ஆளுகை மற்றும் சரிபார்ப்பு | கையேடு ஸ்கீமா மேலாண்மை மற்றும் ஒருங்கிணைப்பு தேவை |
| கருவிகள் | கருவிகள் மற்றும் நூலகங்களின் வலுவான சூழலமைப்பு (எ.கா., Apollo Federation) | அதிக தனிப்பயன் கருவிகள் மற்றும் உள்ளமைவு தேவை |
| பயன்பாட்டு வழக்குகள் | மைக்ரோ சர்வீஸ்கள் கட்டமைப்புகள், பெரிய அளவிலான API-கள், பரவலாக்கப்பட்ட மேம்பாடு | சிறிய பயன்பாடுகள், படிப்படியான இடம்பெயர்வு, குறிப்பிட்ட தனிப்பயனாக்கத் தேவைகள் |
GraphQL Federation-ஐ எப்போது பயன்படுத்த வேண்டும்: உங்களிடம் ஒரு சிக்கலான மைக்ரோ சர்வீஸ்கள் கட்டமைப்பு இருக்கும்போது, உங்கள் API-ஐ அளவிட வேண்டியிருக்கும்போது, மற்றும் சுயாதீனமான குழுக்கள் தங்கள் சொந்த சப்கிராஃப்களை நிர்வகிக்க அதிகாரம் அளிக்க விரும்பும்போது Federation-ஐத் தேர்வுசெய்யுங்கள். இது ஸ்கீமா மேலாண்மை மற்றும் ஆளுகையையும் எளிதாக்குகிறது.
Schema Stitching-ஐ எப்போது பயன்படுத்த வேண்டும்: உங்களிடம் ஒரு எளிமையான API இருக்கும்போது, ஸ்டிச்சிங் லாஜிக்கில் அதிக கட்டுப்பாடு தேவைப்படும்போது, அல்லது தற்போதைய GraphQL API-களிலிருந்து இடம்பெயரும்போது Schema Stitching-ஐக் கருதுங்கள். இருப்பினும், சாத்தியமான சிக்கல்கள் மற்றும் அளவிடுதல் வரம்புகளைப் பற்றி அறிந்திருங்கள்.
அங்கீகாரம் மற்றும் அங்கீகாரத்தை செயல்படுத்துதல்
நீங்கள் GraphQL Federation அல்லது Schema Stitching-ஐத் தேர்ந்தெடுத்தாலும், உங்கள் Frontend API Gateway-ஐப் பாதுகாப்பதற்கு அங்கீகாரம் மற்றும் அங்கீகாரத்தைச் செயல்படுத்துவது மிகவும் முக்கியமானது. நீங்கள் எடுக்கக்கூடிய பல அணுகுமுறைகள் உள்ளன:
- Gateway-நிலை அங்கீகாரம்: API Gateway பின்தள சேவைகளுக்கு கோரிக்கைகளை அனுப்புவதற்கு முன் அங்கீகாரம் மற்றும் அங்கீகாரத்தைக் கையாளுகிறது. இந்த அணுகுமுறை பாதுகாப்பு லாஜிக்கை மையப்படுத்துகிறது மற்றும் பின்தள சேவைகளை எளிதாக்குகிறது. பொதுவான முறைகளில் JWT (JSON Web Token) சரிபார்ப்பு மற்றும் OAuth 2.0 ஆகியவை அடங்கும்.
- சேவை-நிலை அங்கீகாரம்: ஒவ்வொரு பின்தள சேவையும் அதன் சொந்த அங்கீகாரம் மற்றும் அங்கீகாரத்தைக் கையாளுகிறது. இந்த அணுகுமுறை பாதுகாப்பின் மீது மேலும் நுண்ணிய கட்டுப்பாட்டை வழங்குகிறது, ஆனால் நிர்வகிப்பதற்கு மிகவும் சிக்கலானதாக இருக்கும்.
- கலப்பின அணுகுமுறை: gateway-நிலை மற்றும் சேவை-நிலை அங்கீகாரத்தின் கலவை. gateway ஆரம்ப அங்கீகாரத்தைக் கையாளுகிறது, மேலும் பின்தள சேவைகள் மேலும் நுண்ணிய அங்கீகாரச் சோதனைகளைச் செய்கின்றன.
எடுத்துக்காட்டு: Apollo Federation உடன் JWT அங்கீகாரம்
Apollo Federation உடன், கோரிக்கை ஹெடர்களில் சேர்க்கப்பட்டுள்ள JWT டோக்கன்களை சரிபார்க்க gateway-ஐ நீங்கள் உள்ளமைக்கலாம். gateway பின்னர் டோக்கனிலிருந்து பிரித்தெடுக்கப்பட்ட பயனர் தகவலை சப்கிராஃப்களுக்கு அனுப்பலாம், அவை இந்தத் தகவலை அங்கீகாரத்திற்குப் பயன்படுத்தலாம்.
// எடுத்துக்காட்டு (கருத்துரு): JWT சரிபார்ப்புடன் Apollo Gateway உள்ளமைவு
const { ApolloGateway } = require('@apollo/gateway');
const gateway = new ApolloGateway({
serviceList: [
// ... உங்கள் சப் கிராஃப் உள்ளமைவுகள்
],
buildService: ({ name, url }) => {
return new MyCustomService({
name, // சப்கிராஃபின் பெயர்
url, // சப்கிராஃபின் URL
});
},
});
class MyCustomService extends RemoteGraphQLDataSource {
willSendRequest({ request, context }) {
// கான்டெக்ஸ்டில் இருந்து பயனரைப் பெறுங்கள்
const user = context.user;
// பயனர் ஐடியை ரெக்வெஸ்ட் ஹெடர்களில் சேர்க்கவும்
if (user) {
request.http.headers.set('user-id', user.id);
}
}
}
இந்த எடுத்துக்காட்டில், JWT-லிருந்து பெறப்பட்ட பயனர் ஐடியை உள்ளடக்கிய வெளிச்செல்லும் கோரிக்கைகளை மாற்றியமைக்க ஒரு தனிப்பயன் சேவை உருவாக்கப்படுகிறது. கீழ்நிலை சேவைகள் பின்னர் இந்த ஐடியை அங்கீகாரச் சோதனைகளுக்குப் பயன்படுத்தலாம்.
செயல்திறன் மேம்படுத்தலுக்கான கேச்சிங் உத்திகள்
ஒரு Frontend API Gateway-ன் செயல்திறனை மேம்படுத்துவதற்கு கேச்சிங் அவசியம். அடிக்கடி அணுகப்படும் தரவை கேச்சிங் செய்வதன் மூலம், பின்தள சேவைகளின் சுமையைக் குறைத்து வாடிக்கையாளர்களுக்கான பதிலளிப்பு நேரத்தை மேம்படுத்தலாம். இங்கே சில கேச்சிங் உத்திகள்:
- HTTP கேச்சிங்: உலாவி மற்றும் இடைநிலை ப்ராக்ஸிகளில் பதில்களை கேச் செய்ய HTTP கேச்சிங் வழிமுறைகளைப் (எ.கா., `Cache-Control` ஹெடர்கள்) பயன்படுத்தவும்.
- In-Memory கேச்சிங்: gateway-ல் அடிக்கடி அணுகப்படும் தரவை கேச் செய்ய இன்-மெமரி கேச்களை (எ.கா., Redis, Memcached) பயன்படுத்தவும்.
- CDN கேச்சிங்: நிலையான சொத்துக்கள் மற்றும் API பதில்களை வாடிக்கையாளருக்கு நெருக்கமாக கேச் செய்ய உள்ளடக்க விநியோக நெட்வொர்க்குகளை (CDNs) பயன்படுத்தவும்.
- GraphQL Query கேச்சிங்: GraphQL வினவல்களின் முடிவுகளை அவற்றின் வினவல் சரம் மற்றும் மாறிகளின் அடிப்படையில் கேச் செய்யவும். இது அடிக்கடி செயல்படுத்தப்படும் வினவல்களுக்கு குறிப்பாக பயனுள்ளதாக இருக்கும். Apollo Server வினவல் கேச்சிங்கிற்கு உள்ளமைக்கப்பட்ட ஆதரவை வழங்குகிறது.
கேச்சிங்கைச் செயல்படுத்தும்போது, வாடிக்கையாளர்கள் புதுப்பித்த தரவைப் பெறுவதை உறுதிசெய்ய கேச் செல்லாததாக்குதல் உத்திகளைக் கருத்தில் கொள்ளுங்கள். பொதுவான உத்திகள் பின்வருமாறு:
- நேரம் சார்ந்த காலாவதி: கேச் செய்யப்பட்ட தரவிற்கான ஒரு நிலையான காலாவதி நேரத்தை அமைக்கவும்.
- நிகழ்வு சார்ந்த செல்லாததாக்குதல்: பின்தள சேவைகளில் தரவு மாறும்போது கேச்சை செல்லாததாக்குங்கள். இது வெப்ஹூக்குகள் அல்லது செய்தி வரிசைகளைப் பயன்படுத்தி அடையப்படலாம்.
கண்காணிப்பு மற்றும் அவதானிப்பு
உங்கள் Frontend API Gateway-ன் ஆரோக்கியம் மற்றும் செயல்திறனை உறுதி செய்வதற்கு கண்காணிப்பு மற்றும் அவதானிப்பு மிக முக்கியம். பின்வரும் முக்கிய அளவீடுகளைக் கண்காணிக்க விரிவான கண்காணிப்பைச் செயல்படுத்தவும்:
- கோரிக்கை தாமதம்: ஒரு கோரிக்கையைச் செயல்படுத்த எடுக்கும் நேரம்.
- பிழை விகிதங்கள்: பிழைகளில் முடியும் கோரிக்கைகளின் சதவீதம்.
- செயல்திறன் (Throughput): ஒரு யூனிட் நேரத்திற்குச் செயலாக்கப்பட்ட கோரிக்கைகளின் எண்ணிக்கை.
- வளப் பயன்பாடு: gateway மற்றும் பின்தள சேவைகளின் CPU, நினைவகம் மற்றும் நெட்வொர்க் பயன்பாடு.
அமைப்பு வழியாக கோரிக்கைகள் பாயும்போது அவற்றைக் கண்காணிக்க ட்ரேசிங்கைப் பயன்படுத்தவும், தடைகள் மற்றும் செயல்திறன் சிக்கல்களைக் கண்டறியவும். லாக்கிங், gateway மற்றும் பின்தள சேவைகளின் நடத்தை பற்றிய மதிப்புமிக்க நுண்ணறிவுகளை வழங்குகிறது.
கண்காணிப்பு மற்றும் அவதானிப்புக்கான கருவிகள் பின்வருமாறு:
- Prometheus: ஒரு ஓப்பன் சோர்ஸ் கண்காணிப்பு மற்றும் எச்சரிக்கை அமைப்பு.
- Grafana: ஒரு தரவு காட்சிப்படுத்தல் மற்றும் கண்காணிப்பு கருவி.
- Jaeger: ஒரு ஓப்பன் சோர்ஸ் பரவலாக்கப்பட்ட ட்ரேசிங் அமைப்பு.
- Datadog: கிளவுட் பயன்பாடுகளுக்கான ஒரு கண்காணிப்பு மற்றும் பாதுகாப்பு தளம்.
- New Relic: மென்பொருள் செயல்திறனைக் கண்காணிப்பதற்கும் மேம்படுத்துவதற்கும் ஒரு டிஜிட்டல் நுண்ணறிவு தளம்.
வலுவான கண்காணிப்பு மற்றும் அவதானிப்பைச் செயல்படுத்துவதன் மூலம், நீங்கள் சிக்கல்களை முன்கூட்டியே கண்டறிந்து தீர்க்கலாம், உங்கள் Frontend API Gateway-ன் நம்பகத்தன்மை மற்றும் செயல்திறனை உறுதி செய்யலாம்.
முடிவுரை
GraphQL Federation அல்லது Schema Stitching உடன் கட்டப்பட்ட ஒரு Frontend API Gateway நவீன வலை பயன்பாடுகளில் தரவு அணுகலை கணிசமாக எளிதாக்கலாம், செயல்திறனை மேம்படுத்தலாம், மற்றும் டெவலப்பர் அனுபவத்தை மேம்படுத்தலாம். GraphQL Federation பரவலாக்கப்பட்ட GraphQL API-களை இணைப்பதற்கு ஒரு சக்திவாய்ந்த மற்றும் அளவிடக்கூடிய தீர்வை வழங்குகிறது, அதே நேரத்தில் Schema Stitching தற்போதைய ஸ்கீமாக்களை இணைப்பதற்கு ஒரு நெகிழ்வான அணுகுமுறையை வழங்குகிறது. உங்கள் பயன்பாட்டின் குறிப்பிட்ட தேவைகள் மற்றும் இந்த நுட்பங்களுக்கு இடையிலான வர்த்தகங்களை கவனமாகக் கருத்தில் கொள்வதன் மூலம், ஒரு வலுவான மற்றும் திறமையான Frontend API Gateway-ஐ உருவாக்குவதற்கான சிறந்த அணுகுமுறையை நீங்கள் தேர்வு செய்யலாம்.
உங்கள் gateway-ன் பாதுகாப்பு, செயல்திறன் மற்றும் நம்பகத்தன்மையை உறுதிப்படுத்த சரியான அங்கீகாரம் மற்றும் அங்கீகாரம், கேச்சிங் உத்திகள், மற்றும் கண்காணிப்பு மற்றும் அவதானிப்பைச் செயல்படுத்த நினைவில் கொள்ளுங்கள். இந்த சிறந்த நடைமுறைகளை ஏற்றுக்கொள்வதன் மூலம், நீங்கள் GraphQL-ன் முழு திறனையும் திறந்து, விதிவிலக்கான பயனர் அனுபவங்களை வழங்கும் நவீன வலை பயன்பாடுகளை உருவாக்கலாம்.