লক্ষ লক্ষ ব্যবহারকারীকে সমর্থন করতে পারে এমন একটি সিস্টেম ডিজাইন করা
লক্ষ লক্ষ ব্যবহারকারীকে (millions of users) সাপোর্ট করতে পারে এমন একটি সিস্টেম ডিজাইন করা অনেক কঠিন কাজ। এটি একদিনে তৈরি হয় না; বরং এটি একটি দীর্ঘ যাত্রা যেখানে বারবার উন্নতি (refinement) ও পরিবর্তন করতে হয়। এই অধ্যায়ে আমরা প্রথমে এমন একটি সিস্টেম তৈরি করব যা মাত্র একজন ব্যবহারকারীকে সাপোর্ট করতে পারে, তারপর ধীরে ধীরে সেটিকে বড় করে লক্ষ লক্ষ ব্যবহারকারীর জন্য উপযোগী করব।
এই অধ্যায় পড়ার পর আপনি এমন কিছু গুরুত্বপূর্ণ কৌশল (techniques) শিখবেন, যা আপনাকে System Design Interview-এর প্রশ্ন সমাধানে অনেক সাহায্য করবে।
Single Server Setup (একটি মাত্র সার্ভার দিয়ে শুরু)
“হাজার মাইলের যাত্রা একটি ছোট পদক্ষেপ দিয়ে শুরু হয়” — জটিল সিস্টেম তৈরি করাও ঠিক এমনই।
প্রথমে আমরা খুব সাধারণ কিছু দিয়ে শুরু করব। এখানে সবকিছু একটি মাত্র সার্ভারে চলবে। অর্থাৎ একই সার্ভারে থাকবে:
- Web Application
- Database
- Cache
- অন্যান্য সার্ভিস
চিত্র ১-এ এমন একটি Single Server Setup দেখানো হয়েছে।
চিত্র ১ কী বোঝাচ্ছে?
একজন ব্যবহারকারী (User) দুটি উপায়ে সিস্টেম ব্যবহার করতে পারে:
- Web Browser দিয়ে
- Mobile App দিয়ে
যখন ব্যবহারকারী www.mysite.com বা api.mysite.com এ প্রবেশ করে, তখন প্রথমে DNS সার্ভার ডোমেইন নামকে একটি IP Address-এ রূপান্তর করে। এরপর সেই IP Address ব্যবহার করে অনুরোধ (request) Web Server-এ পাঠানো হয়।
এই Web Server-ই সবকিছু পরিচালনা করে — Website Request এবং API Request দুটোই।
Request Flow (রিকোয়েস্ট কীভাবে কাজ করে)
এখন আমরা দেখব ব্যবহারকারীর অনুরোধ (request) কীভাবে সার্ভারে পৌঁছায়। এটি চিত্র ২-এ দেখানো হয়েছে।
ধাপে ধাপে Request Flow
১. ব্যবহারকারী ডোমেইন নাম ব্যবহার করে ওয়েবসাইটে প্রবেশ করে
যেমন:
api.mysite.com
সাধারণত DNS (Domain Name System) আমাদের নিজস্ব সার্ভারে থাকে না। এটি তৃতীয় পক্ষের (3rd party) একটি পেইড সার্ভিস হয়।
২. DNS একটি IP Address ফিরিয়ে দেয়
উদাহরণ:
15.125.23.214
এই IP Address ব্রাউজার বা মোবাইল অ্যাপকে জানিয়ে দেয় আসল সার্ভার কোথায় আছে।
৩. IP পাওয়ার পর HTTP Request সার্ভারে পাঠানো হয়
IP পাওয়ার পরে Browser বা Mobile App সরাসরি Web Server-এ HTTP Request পাঠায়।
HTTP (Hypertext Transfer Protocol) হলো Web Communication-এর মূল নিয়ম বা প্রোটোকল।
৪. Web Server Response পাঠায়
Web Server ব্যবহারকারীর কাছে ফেরত পাঠায়:
- HTML Page অথবা
- JSON Response
যা Browser বা Mobile App-এ প্রদর্শিত হয়।
Traffic Source (ট্রাফিক কোথা থেকে আসে)
Web Server-এ মূলত দুই ধরনের উৎস থেকে ট্রাফিক আসে:
১. Web Application
Web Application দুই ধরনের প্রযুক্তি ব্যবহার করে:
Server-side Language
যেমন:
- Java
- Python
- Node.js
এগুলো ব্যবহার করা হয়:
- Business Logic
- Database Operations
- Storage Handling
এর জন্য।
Client-side Language
যেমন:
- HTML
- JavaScript
এগুলো ব্যবহারকারীর সামনে সুন্দরভাবে তথ্য দেখানোর জন্য ব্যবহার হয়।
২. Mobile Application
Mobile App এবং Web Server-এর মধ্যে যোগাযোগ হয় HTTP Protocol-এর মাধ্যমে।
এখানে সাধারণত JSON (JavaScript Object Notation) Format ব্যবহার করা হয়, কারণ এটি সহজ এবং ডেটা আদান-প্রদানের জন্য খুব জনপ্রিয়।
JSON Response Example
ধরুন আমরা নিচের API Call করি:
GET /users/12
এটি id = 12 এর ব্যবহারকারীর তথ্য নিয়ে আসবে।
উদাহরণ JSON Response:
{
"id":12,
"firstName":"John",
"lastName":"Smith",
"address":{
"streetAddress":"21 2nd Street",
"city":"New York",
"state":"NY",
"postalCode":10021
},
"phoneNumbers":[
"212 555-1234",
"646 555-4567"
]
}সহজ ভাষায় পুরো বিষয়টির সারাংশ
- শুরুতে একটি মাত্র সার্ভারে সবকিছু চালানো হয়।
- User ডোমেইন নাম ব্যবহার করে ওয়েবসাইটে যায়।
- DNS ডোমেইনকে IP Address-এ রূপান্তর করে।
- Browser বা App সেই IP ব্যবহার করে Web Server-এ Request পাঠায়।
- Server HTML বা JSON আকারে Response পাঠায়।
- ট্রাফিক মূলত Web App এবং Mobile App থেকে আসে।