Saturday, January 3, 2026

System Design Architecture - 30 important concepts

 System Design: 30 முக்கிய கோட்பாடுகள் (விரிவான சுருக்கம்)


இந்த வீடியோ பெரிய அளவிலான மென்பொருள் அமைப்புகளை (Large Scale Systems) வடிவமைப்பதற்குத் தேவையான 30 அடிப்படை மற்றும் மேம்பட்ட கருத்துகளை விளக்குகிறது.


I. அடிப்படை கட்டமைப்பு & நெட்வொர்க்கிங் (Foundation & Networking)


Client-Server Architecture: இணையத்தின் அடிப்படை இதுதான். Client (Browser/App) கோரிக்கை (Request) அனுப்பும், Server அதைச் செயல்படுத்தி பதில் (Response) அனுப்பும்.

IP Address: ஒவ்வொரு சேவையகத்திற்கும் (Server) ஒரு தனித்துவமான முகவரி (எ.கா., தொலைபேசி எண் போல) உண்டு. இதுவே இணையத்தில் தொடர்புகொள்ள உதவுகிறது.


DNS (Domain Name System): மனிதர்களால் எண்களை (IP) நினைவில் கொள்ள முடியாது. எனவே, google.com போன்ற பெயர்களை IP முகவரியாக மாற்ற DNS உதவுகிறது.


Local vs Distributed Latency: பயனர் மற்றும் சர்வர் இடையேயான தூரம் அதிகரிக்க அதிகரிக்க, வேகம் குறையும் (Latency). இதைத் தவிர்க்க பல இடங்களில் சர்வர்களை நிறுவுவது அவசியம்.


HTTP & HTTPS: இது தகவல்களைப் பரிமாறிக் கொள்ளும் மொழி (Protocol). HTTPS என்பது பாதுகாப்பானது (Encrypted); இடையில் யாரும் தகவலைத் திருட முடியாது.


Proxy Server: பயனருக்கும் இணையத்திற்கும் நடுவில் செயல்படும். பயனரின் அடையாளத்தை (IP) மறைக்க இது உதவும்.


Reverse Proxy: இது சர்வருக்கு முன்பாகச் செயல்படும். வரும் கோரிக்கைகளைச் சரியான சர்வருக்குத் திசைதிருப்பவும், பாதுகாப்பிற்கும் இது பயன்படுகிறது.


II. API & தகவல் தொடர்பு முறைகள் (Communication Patterns)


API (Application Programming Interface): மென்பொருள்கள் ஒன்றுடன் ஒன்று பேசிக்கொள்ளும் பாலம். JSON அல்லது XML வடிவில் தரவுகள் பரிமாறப்படும்.


REST API: இது மிகவும் பிரபலமான வடிவமைப்பு முறை. GET, POST, PUT, DELETE போன்ற முறைகளைப் பயன்படுத்தி வளங்களை (Resources) கையாளும். Stateless தன்மை கொண்டது.


GraphQL: REST-ல் உள்ள பிரச்சனை (தேவைக்கு அதிகமான தரவு வருவது). GraphQL மூலம் நமக்குத் தேவையான குறிப்பிட்ட தரவை மட்டும் ஒரே கோரிக்கையில் பெறலாம்.


WebSockets: இது Real-time தொடர்புக்கு அவசியமானது (எ.கா., Chat App, Stock Market). ஒரு முறை இணைப்பை ஏற்படுத்தினால், சர்வர் தானாகவே தரவை அனுப்பிக்கொண்டே இருக்கும் (Polling தேவை இல்லை).


Webhooks: ஒரு நிகழ்வு நடந்தவுடன் (Event-driven), சர்வர் தானாகவே வேறொரு சிஸ்டத்திற்குத் தகவல் அனுப்பும் முறை (எ.கா., Payment முடிந்ததும் நடக்கும் Notification).


III. தரவுத்தள உத்திகள் (Database Strategies - Senior DBA Special focus)


Relational Databases (SQL): அட்டவணை (Table) வடிவில் தரவை சேமிக்கும். திட்டவட்டமான Schema மற்றும் ACID பண்புகள் கொண்டது (எ.கா., வங்கி பரிவர்த்தனைகள்).


NoSQL Databases: நெகிழ்வானது (Flexible Schema). பெரிய அளவிலான, வடிவமற்ற தரவுகளுக்கு ஏற்றது (Document, Key-Value, Graph).


ACID Transactions: Atomicity, Consistency, Isolation, Durability - பணப் பரிமாற்றங்களில் தரவு முரண்பாடுகள் வராமல் தடுக்கும் முக்கிய விதி.


Indexing: புத்தகத்தின் பின்னிணைப்பு (Index) போல. தரவுத்தளத்தில் தேடுதலை (Read Query) வேகப்படுத்த உதவும், ஆனால் எழுதுவதை (Write) சற்று தாமதப்படுத்தும்.


Replication (Master-Slave): முதன்மை தரவுத்தளத்தின் நகல்களை (Copies) உருவாக்குதல். 'Read' ஆபரேஷன்களைப் பிரிக்கவும், தரவு இழப்பைத் தவிர்க்கவும் உதவும்.


Sharding: மிகப் பெரிய தரவுத்தளத்தை உடைத்து, பல சர்வர்களில் பிரித்து வைக்கும் முறை. இது Horizontal Scaling-ன் ஒரு பகுதி.


Normalization vs Denormalization: தரவு திரும்பத் திரும்ப வருவதைத் (Redundancy) தவிர்க்க Normalization பயன்படும். ஆனால், வேகமான Read தேவைப்படும்போது Denormalization (Join-களைத் தவிர்க்க) சிறந்தது.


CAP Theorem: ஒரு Distributed System-ல் Consistency, Availability, Partition Tolerance ஆகிய மூன்றில் எதனும் இரண்டை மட்டுமே ஒரே நேரத்தில் அடைய முடியும் என்ற விதி.


IV. அளவிடுதல் & செயல்திறன் (Scalability & Performance)


Vertical Scaling (Scaling Up): இருக்கும் சர்வரின் திறனை (RAM, CPU) அதிகரிப்பது. இதற்கு ஒரு வரம்பு உண்டு.


Horizontal Scaling (Scaling Out): புதிய சர்வர்களை இணைத்துக்கொண்டே போவது. இதுவே பெரிய நிறுவனங்களின் வளர்ச்சிக்கான வழி.


Load Balancer: வரும் டிராஃபிக்கை (Traffic) பல சர்வர்களுக்குச் சமமாகப் பிரித்துக் கொடுக்கும் 'டிராஃபிக் போலீஸ்' போன்றது.


Caching: அடிக்கடி கேட்கப்படும் தரவுகளை வேகமான நினைவகத்தில் (RAM - Redis/Memcached) வைத்துத் தருவது. இது DB Load-ஐக் குறைக்கும்.


CDN (Content Delivery Network): பயனருக்கு மிக அருகில் உள்ள சர்வரில் இருந்து படங்கள், வீடியோக்களை வழங்குவது. வேகம் அதிகரிக்கும்.


Blob Storage (S3): படங்கள், வீடியோக்கள் போன்ற பெரிய கோப்புகளை Database-ல் வைக்காமல், தனியாக Object Storage-ல் (AWS S3) வைப்பது சிறந்தது.


V. நவீன கட்டமைப்பு & நம்பகத்தன்மை (Modern Architecture & Reliability)


Microservices: ஒரு பெரிய செயலியை (Monolith) உடைத்து, தனித்தனி சிறு சேவைகளாக மாற்றுவது. பராமரிப்பு எளிது, ஆனால் நிர்வகிப்பது சவாலானது.


Message Queues (RabbitMQ/Kafka): சர்வர்களுக்கு இடையே நேரடித் தொடர்பு இல்லாமல், ஒரு வரிசை (Queue) மூலம் வேலையைப் பகிர்வது (Asynchronous processing).


Rate Limiting: ஒரு பயனர் அல்லது பாட் (Bot) அளவுக்கு அதிகமாகக் கோரிக்கை அனுப்பி சர்வரை முடக்காமல் இருக்க வரம்பு விதிப்பது.


API Gateway: அனைத்து Microservices-க்கும் முன்பாக நின்று, Authentication, Routing, Rate Limiting போன்றவற்றை நிர்வகிக்கும் ஒற்றை நுழைவாயில்.


Idempotency: ஒரு கோரிக்கை (எ.கா., பணம் செலுத்துதல்) தவறுதலாக இருமுறை அனுப்பப்பட்டாலும், அது ஒருமுறை மட்டுமே செயல்படுத்தப்படுவதை உறுதி செய்யும் முறை.

System Design Architecture - 30 important concepts

 System Design: 30 முக்கிய கோட்பாடுகள் (விரிவான சுருக்கம்) இந்த வீடியோ பெரிய அளவிலான மென்பொருள் அமைப்புகளை (Large Scale Systems) வடிவமைப்பதற...