நுண்ணிய சேவை கட்டமைப்பு அறிமுக கையேடு: வடிவமைப்பு முதல் நடைமுறை வரை முக்கிய குறிப்புகள்
நுண்ணிய சேவை கட்டமைப்பு அறிமுக கையேடு: வடிவமைப்பு முதல் நடைமுறை வரை முக்கிய குறிப்புகள்
நுண்ணிய சேவை கட்டமைப்பு ஒரு பிரபலமான மென்பொருள் மேம்பாட்டு முறையாக, பயன்பாடுகளை சிறிய, தன்னாட்சி சேவைகளின் தொகுப்பாக உருவாக்குகிறது, இந்த சேவைகள் நெட்வொர்க் மூலம் தொடர்பு கொள்கின்றன. பாரம்பரிய ஒற்றைக்கல் கட்டமைப்போடு ஒப்பிடும்போது, நுண்ணிய சேவைகள் சிறந்த அளவிடுதல், நெகிழ்வுத்தன்மை மற்றும் தவறு சகிப்புத்தன்மையை வழங்க முடியும். இருப்பினும், நுண்ணிய சேவைகள் சிக்கலை அறிமுகப்படுத்துகின்றன, கவனமாக வடிவமைப்பு மற்றும் செயல்படுத்தல் தேவைப்படுகிறது. இந்த கட்டுரை நுண்ணிய சேவை கட்டமைப்பின் அறிமுக கையேட்டை ஆரம்பநிலையாளர்களுக்கு வழங்குவதை நோக்கமாகக் கொண்டுள்ளது, நுண்ணிய சேவைகளின் முக்கிய கருத்துக்கள், வடிவமைப்பு கொள்கைகள் மற்றும் நடைமுறை நுட்பங்களைப் புரிந்துகொள்ள உதவுகிறது.
I. நுண்ணிய சேவை கட்டமைப்பின் முக்கிய கருத்துக்கள்
நுண்ணிய சேவை கட்டமைப்பில் ஆழமாகச் செல்வதற்கு முன், பின்வரும் முக்கிய கருத்துக்களைப் புரிந்துகொள்வது அவசியம்:
-
சேவை (Service): ஒரு சுயாதீனமாக வரிசைப்படுத்தப்பட்ட, ஒற்றை பொறுப்புள்ள மென்பொருள் தொகுதி. ஒவ்வொரு சேவையும் ஒரு குறிப்பிட்ட வணிக செயல்பாட்டை முடிக்க பொறுப்பாக இருக்க வேண்டும்.
-
தன்னாட்சி (Autonomous): ஒவ்வொரு சேவையும் மற்ற சேவைகளை பாதிக்காமல் சுயாதீனமாக வரிசைப்படுத்த, மேம்படுத்த மற்றும் விரிவாக்க முடியும். இதன் பொருள் சேவைகளுக்கு இடையே முடிந்தவரை பிரிக்கப்பட வேண்டும், மேலும் தெளிவாக வரையறுக்கப்பட்ட API மூலம் தொடர்பு கொள்ள வேண்டும்.
-
டொமைன்-டிரைவன் டிசைன் (Domain-Driven Design, DDD): DDD என்பது ஒரு மென்பொருள் மேம்பாட்டு முறையாகும், இது மென்பொருளை டொமைன் கருத்துகளின் தொகுப்பாக மாற்றுவதை வலியுறுத்துகிறது. நுண்ணிய சேவை கட்டமைப்பில், DDD சேவை எல்லைகளை அடையாளம் காணவும் பிரிக்கவும் உதவுகிறது, ஒவ்வொரு சேவையும் தெளிவாக வரையறுக்கப்பட்ட வணிக டொமைனைச் சுற்றி இருப்பதை உறுதி செய்கிறது.
-
API கேட்வே (API Gateway): கிளையன்ட் நுண்ணிய சேவை கிளஸ்டரை அணுகுவதற்கான நுழைவு புள்ளியாக, கோரிக்கை ரூட்டிங், அங்கீகாரம், போக்குவரத்து கட்டுப்பாடு மற்றும் பிற செயல்பாடுகளுக்கு பொறுப்பாகும்.
-
சேவை கண்டுபிடிப்பு (Service Discovery): சேவைகள் இயக்க நேரத்தில் மற்ற சேவைகளைக் கண்டுபிடித்து இணைக்க அனுமதிக்கிறது.
-
செய்தி வரிசை (Message Queue): சேவைகளுக்கு இடையே ஒத்திசைவற்ற தகவல்தொடர்புக்குப் பயன்படுகிறது, பிரித்தலை செயல்படுத்துகிறது மற்றும் கணினியின் அளவிடுதலை மேம்படுத்துகிறது. பொதுவான செய்தி வரிசைகளில் Kafka, RabbitMQ போன்றவை அடங்கும்.
-
விநியோகிக்கப்பட்ட பரிவர்த்தனை (Distributed Transaction): நுண்ணிய சேவைகள் விநியோகிக்கப்பட்ட அமைப்புகள் என்பதால், பாரம்பரிய பரிவர்த்தனை மேலாண்மை முறைகள் இனி பொருந்தாது. Saga முறை போன்ற விநியோகிக்கப்பட்ட பரிவர்த்தனை தீர்வுகளைப் பயன்படுத்த வேண்டும்.
II. நுண்ணிய சேவை கட்டமைப்பின் வடிவமைப்பு கொள்கைகள்
நுண்ணிய சேவை கட்டமைப்பை வடிவமைக்கும்போது பின்பற்ற வேண்டிய சில முக்கிய கொள்கைகள் இங்கே:
-
ஒற்றை பொறுப்பு கொள்கை (Single Responsibility Principle): ஒவ்வொரு சேவையும் ஒரு வணிக செயல்பாட்டிற்கு மட்டுமே பொறுப்பாக இருக்க வேண்டும், சேவைகள் அதிகமாக வீங்குவதைத் தவிர்க்கவும்.
-
வரையறுக்கப்பட்ட சூழல் (Bounded Context): பயன்பாட்டை பல வரையறுக்கப்பட்ட சூழல்களாகப் பிரிக்கவும், ஒவ்வொரு சூழலும் ஒரு குறிப்பிட்ட வணிக டொமைனுக்கு ஒத்திருக்கும். சேவைகள் வரையறுக்கப்பட்ட சூழலைச் சுற்றி வடிவமைக்கப்பட வேண்டும், சேவைக்குள் நிலைத்தன்மையை உறுதி செய்ய வேண்டும்.
-
API-முதலில் (API-First): சேவையை வடிவமைப்பதற்கு முன், முதலில் சேவையின் API ஐ வரையறுக்கவும். API தெளிவாகவும், நிலையானதாகவும், பயன்படுத்த எளிதாகவும் இருக்க வேண்டும்.
-
தானியங்கி (Automation): தானியங்கி நுண்ணிய சேவை கட்டமைப்பின் முக்கியமாகும். தானியங்கி வரிசைப்படுத்தல், சோதனை, கண்காணிப்பு மற்றும் விரிவாக்கம் ஆகியவை மேம்பாட்டு திறன் மற்றும் கணினி நம்பகத்தன்மையை கணிசமாக மேம்படுத்தும்.
-
தவறு சகிப்புத்தன்மை (Fault Tolerance): நுண்ணிய சேவை கட்டமைப்பில், சேவைகளுக்கு இடையிலான சார்புநிலை அடுக்கு தோல்விகளுக்கு வழிவகுக்கும். எனவே, சர்க்யூட் பிரேக்கர்கள், மறுமுயற்சி வழிமுறைகள் மற்றும் உருகிகள் போன்ற நடவடிக்கைகளை எடுத்து கணினியின் தவறு சகிப்புத்தன்மையை மேம்படுத்த வேண்டும்.
-
கண்காணிக்கக்கூடிய தன்மை (Observability): நுண்ணிய சேவை அமைப்பின் ஆரோக்கியத்தை கண்காணிப்பது அவசியம். கோரிக்கை தாமதம், பிழை விகிதம் மற்றும் வள பயன்பாடு போன்ற பல்வேறு அளவீடுகளை சேகரித்து பகுப்பாய்வு செய்ய வேண்டும், இதனால் சிக்கல்களை சரியான நேரத்தில் கண்டுபிடித்து தீர்க்க முடியும்.
III. நுண்ணிய சேவை கட்டமைப்பின் நடைமுறை படிகள்
பூஜ்ஜியத்திலிருந்து நுண்ணிய சேவை கட்டமைப்பை உருவாக்குவதற்கான நடைமுறை படிகள் இங்கே:
-
வணிக டொமைனை தீர்மானித்தல்: முதலில், பயன்பாட்டின் வணிக டொமைனை ஆழமாக பகுப்பாய்வு செய்து, முக்கிய வணிக செயல்பாடுகளை அடையாளம் காண வேண்டும். DDD முறையைப் பயன்படுத்தி, பயன்பாட்டை பல வரையறுக்கப்பட்ட சூழல்களாகப் பிரிக்கலாம்.
-
சேவை எல்லைகளைப் பிரித்தல்: வணிக டொமைன் மற்றும் வரையறுக்கப்பட்ட சூழலின் அடிப்படையில், சேவை எல்லைகளைத் தீர்மானிக்கவும். ஒவ்வொரு சேவையும் தெளிவாக வரையறுக்கப்பட்ட வணிக டொமைனைச் சுற்றி வடிவமைக்கப்பட வேண்டும்.
-
API ஐ வரையறுத்தல்: ஒவ்வொரு சேவைக்கும் தெளிவான, நிலையான API ஐ வரையறுக்கவும். API RESTful பாணியைப் பயன்படுத்த வேண்டும், மேலும் OpenAPI (Swagger) ஐப் பயன்படுத்தி ஆவணப்படுத்தப்பட வேண்டும்.
openapi: 3.0.0
info:
title: User Service
version: 1.0.0
paths:
/users/{userId}:
get:
summary: Get user by ID
parameters:
- name: userId
in: path
required: true
schema:
type: integer
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
id:
type: integer
name:
type: string
-
தொழில்நுட்ப அடுக்குகளைத் தேர்ந்தெடுங்கள்: உங்கள் குழு மற்றும் திட்டத்திற்கு ஏற்ற தொழில்நுட்ப அடுக்குகளைத் தேர்ந்தெடுக்கவும். பொதுவான நுண்ணிய சேவை தொழில்நுட்ப அடுக்குகளில் பின்வருவன அடங்கும்:
- நிரலாக்க மொழி: Java (Spring Boot), Go (Golang), Node.js (Express.js), C# (.NET)
- கலன்மயமாக்கல்: Docker
- கலன் ஒழுங்கமைவு: Kubernetes, Docker Swarm
- API நுழைவாயில்: Kong, Apigee, Tyk
- சேவை கண்டுபிடிப்பு: Eureka, Consul, etcd
- செய்தி வரிசை: Kafka, RabbitMQ
- கட்டமைவு மேலாண்மை: Spring Cloud Config, Consul
- கண்காணிப்பு: Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana)
-
சேவைகளை உருவாக்குதல்: தேர்ந்தெடுக்கப்பட்ட தொழில்நுட்ப அடுக்குகளைப் பயன்படுத்தி ஒவ்வொரு சேவையையும் உருவாக்கவும். ஒவ்வொரு சேவையும் ஒற்றை பொறுப்புக் கொள்கையை பூர்த்தி செய்வதையும், சுயாதீனமாக வரிசைப்படுத்தவும் அளவிடவும் முடியும் என்பதை உறுதிப்படுத்தவும்.
-
API நுழைவாயிலை செயல்படுத்துதல்: கிளையன்ட் கோரிக்கைகளை அந்தந்த சேவைகளுக்கு திருப்பி விட API நுழைவாயிலை உள்ளமைக்கவும். API நுழைவாயில் அங்கீகாரம், அங்கீகாரம், போக்குவரத்து கட்டுப்பாடு போன்ற செயல்பாடுகளையும் கையாள முடியும்.
-
சேவைகளை வரிசைப்படுத்துதல்: கலன்மயமாக்கல் தொழில்நுட்பத்தைப் பயன்படுத்தி சேவைகளை படங்களாக பேக்கேஜ் செய்து, கலன் ஒழுங்கமைவு அமைப்பைப் பயன்படுத்தி கிளஸ்டரில் வரிசைப்படுத்தவும்.
-
சேவை கண்டுபிடிப்பை உள்ளமைக்கவும்: சேவை கண்டுபிடிப்பு பொறிமுறையை உள்ளமைக்கவும், இதனால் சேவைகள் மற்ற சேவைகளை மாறும் வகையில் கண்டுபிடித்து இணைக்க முடியும்.
-
ஒத்திசைவற்ற தகவல்தொடர்புகளை செயல்படுத்துதல்: சேவைகளுக்கு இடையே ஒத்திசைவற்ற தகவல்தொடர்புகளை செயல்படுத்த செய்தி வரிசையைப் பயன்படுத்தவும். உதாரணமாக, பயனர் பதிவு நிகழ்வை மின்னஞ்சல் சேவைக்கு அனுப்ப Kafka ஐப் பயன்படுத்தலாம், மேலும் மின்னஞ்சல் சேவை வரவேற்பு மின்னஞ்சலை அனுப்பும் பொறுப்பாகும்.
-
கண்காணிப்பை செயல்படுத்துதல்: பல்வேறு அளவீடுகளை சேகரித்து பகுப்பாய்வு செய்ய கண்காணிப்பு அமைப்பை உள்ளமைக்கவும். கண்காணிப்பு தரவை காட்சிப்படுத்த டாஷ்போர்டைப் பயன்படுத்தவும், மேலும் சிக்கல்களை சரியான நேரத்தில் கண்டறிந்து தீர்க்க எச்சரிக்கைகளை அமைக்கவும்.
நான்காம், கருவி பரிந்துரைகள்
நுண்ணிய சேவை கட்டமைப்பை உருவாக்கும்போது பயன்படுத்தக்கூடிய சில நடைமுறை கருவிகள் இங்கே:
-
Spring Boot: ஒரு பிரபலமான Java கட்டமைப்பு, இது சுயாதீனமான, உற்பத்தி-நிலை Spring பயன்பாடுகளை விரைவாக உருவாக்க பயன்படுகிறது.
-
Kubernetes: ஒரு திறந்த மூல கலன் ஒழுங்கமைவு அமைப்பு, இது கலன்மயமாக்கப்பட்ட பயன்பாடுகளை தானியங்குபடுத்த, அளவிட மற்றும் நிர்வகிக்க பயன்படுகிறது.
-
Docker: பயன்பாடுகளை பேக்கேஜ் செய்யவும், விநியோகிக்கவும் மற்றும் இயக்கவும் ஒரு கலன்மயமாக்கல் தளம்.* Kafka: நிகழ்நேர தரவு குழாய்களையும் ஸ்ட்ரீம் பயன்பாடுகளையும் உருவாக்கப் பயன்படும் ஒரு விநியோகிக்கப்பட்ட ஸ்ட்ரீம் செயலாக்க தளம்.
-
Prometheus: நேரத் தொடர் தரவைச் சேகரித்து பகுப்பாய்வு செய்யப் பயன்படும் ஒரு திறந்த மூல கண்காணிப்பு மற்றும் எச்சரிக்கை அமைப்பு.
-
Grafana: டாஷ்போர்டுகளை உருவாக்க மற்றும் கண்காணிப்பு தரவை காட்சிப்படுத்த பயன்படும் ஒரு தரவு காட்சிப்படுத்தல் கருவி.
ஐந்து, ஒற்றைக்கல் vs மைக்ரோசர்வீசஸ்: தேர்வின் சமநிலை
விவாதத்தில், Stack Overflow ஒரு ஒற்றைக்கல் கட்டமைப்பின் கீழ் 100 மில்லியன் பயனர்களுக்கு அளவிட முடியும் என்றும், Amazon ஆயிரக்கணக்கான மைக்ரோசர்வீசுகளைப் பயன்படுத்தி அளவிடுகிறது என்றும் குறிப்பிடப்பட்டுள்ளது. ஒற்றைக்கல் அல்லது மைக்ரோசர்வீசஸ் கட்டமைப்பைத் தேர்ந்தெடுப்பதற்கான திறவுகோல் தொழில்நுட்ப போக்குகளை கண்மூடித்தனமாகப் பின்தொடர்வதை விட வணிகத் தேவைகளையும் குழு திறன்களையும் புரிந்துகொள்வது என்பதை இது எடுத்துக்காட்டுகிறது.
ஒற்றைக்கல் கட்டமைப்பின் நன்மைகள் பின்வருமாறு:
- வளர்ச்சி மற்றும் வரிசைப்படுத்தலை எளிதாக்குகிறது: அனைத்து குறியீடும் ஒரு குறியீடு களஞ்சியத்தில் உள்ளது, இது உருவாக்க, சோதிக்க மற்றும் வரிசைப்படுத்த எளிதானது.
- பரிவர்த்தனை நிர்வாகத்தை எளிதாக்குகிறது: பாரம்பரிய பரிவர்த்தனை மேலாண்மை முறைகளை ஒற்றைக்கல் பயன்பாடுகளில் எளிதாகப் பயன்படுத்தலாம்.
- செயல்பாட்டு சிக்கலைக் குறைக்கிறது: ஒரு பயன்பாட்டை மட்டுமே நிர்வகிக்க வேண்டும், இது செயல்பாட்டு செலவுகளைக் குறைக்கிறது.
மைக்ரோசர்வீசஸ் கட்டமைப்பின் நன்மைகள் பின்வருமாறு:
- அளவிடும்தன்மையை அதிகரிக்கிறது: ஒவ்வொரு சேவையையும் சுயாதீனமாக அளவிட முடியும், தேவைக்கேற்ப ஆதாரங்களை ஒதுக்கலாம்.
- நெகிழ்வுத்தன்மையை அதிகரிக்கிறது: வெவ்வேறு சேவைகளை உருவாக்க வெவ்வேறு தொழில்நுட்ப அடுக்குகளைப் பயன்படுத்தலாம்.
- பிழை சகிப்புத்தன்மையை அதிகரிக்கிறது: ஒரு சேவையின் தோல்வி மற்ற சேவைகளை பாதிக்காது.
- குழு சுயாட்சியை ஊக்குவிக்கிறது: ஒவ்வொரு குழுவும் தங்கள் சொந்த சேவைகளை சுயாதீனமாக உருவாக்கலாம் மற்றும் வரிசைப்படுத்தலாம்.
எனவே, கட்டமைப்பைத் தேர்ந்தெடுக்கும்போது, மேலே உள்ள காரணிகளை எடைபோட்டு, குறிப்பிட்ட சூழ்நிலைகளின் அடிப்படையில் ஒரு முடிவை எடுக்க வேண்டும். உங்கள் பயன்பாடு ஒப்பீட்டளவில் எளிமையானது மற்றும் குழு அளவு சிறியதாக இருந்தால், ஒற்றைக்கல் கட்டமைப்பு சிறந்த தேர்வாக இருக்கலாம். உங்கள் பயன்பாடு மிகவும் சிக்கலானது, குழு அளவு பெரியது மற்றும் அதிக அளவிடும்தன்மை மற்றும் நெகிழ்வுத்தன்மை தேவைப்பட்டால், மைக்ரோசர்வீசஸ் கட்டமைப்பு உங்களுக்கு மிகவும் பொருத்தமானதாக இருக்கலாம்.





