একটা application হঠাৎ করে অনেক বেশি user পেতে শুরু করল।
আগে যেখানে ১,০০০ জন user ছিল, এখন সেখানে ১ লাখ user!
তখন স্বাভাবিকভাবেই প্রশ্ন আসে—
“Server-এর capacity কীভাবে বাড়াবো?”
এখানেই আসে Vertical Scaling আর Horizontal Scaling।
সহজভাবে বুঝি
🔹 Vertical Scaling (Scale Up)
Existing server-কেই আরও powerful করা।
যেমন:
➡️ 8 GB RAM → 32 GB RAM
➡️ 4 CPU → 16 CPU
➡️ আরও powerful CPU, RAM ও storage
অর্থাৎ, একটা server-এর ক্ষমতা বাড়ানো।
🏠 সহজভাবে বললে, ছোট একটা বাসাকে আরও বড় করে ফেলার মতো।
🔹 Horizontal Scaling (Scale Out)
একটা server-কে আরও powerful করার পরিবর্তে একাধিক server যোগ করা।
যেমন:
Server 1 → Server 2 → Server 3 → Server 4
তারপর Load Balancer user requests-গুলো বিভিন্ন server-এর মধ্যে distribute করবে।
অর্থাৎ, server-এর সংখ্যা বাড়ানো।
🏢 এটাকে ভাবতে পারেন একটি বড় বাসা করার পরিবর্তে আরও কয়েকটি বাসা যোগ করার মতো।
তাহলে কোনটা ভালো?
এক কথায়—এটা system-এর requirements-এর উপর নির্ভর করে।
✅ Vertical Scaling-এর সুবিধা
• তুলনামূলকভাবে সহজে implement করা যায়
• Architecture সহজ থাকে
• Distributed system-এর complexity কম থাকে
• Existing application পরিবর্তন কম লাগতে পারে
❌ Vertical Scaling-এর সীমাবদ্ধতা
• Hardware-এর একটা maximum capacity থাকে
• Upgrade-এর সময় downtime/restart প্রয়োজন হতে পারে
• Single server-এর উপর বেশি dependency থাকলে failure risk বাড়ে
✅ Horizontal Scaling-এর সুবিধা
• অনেক বেশি traffic handle করা যায়
• High Availability তৈরি করা সহজ
• Cloud environment-এ খুব effective
• প্রয়োজন অনুযায়ী server add/remove করা যায়
• Application tier সহজে scale করা যায়
❌ Horizontal Scaling-এর Challenges
• Architecture বেশি complex হয়
• Load Balancer manage করতে হয়
• Session/state management গুরুত্বপূর্ণ হয়ে যায়
• Database scaling আলাদাভাবে পরিকল্পনা করতে হয়
• Distributed system-এর নতুন challenges আসে
বাস্তব Production Environment
অনেক সময় দুটো approach একসাথেই ব্যবহার করা হয়।
যেমন:
Application Layer → Horizontal Scaling
App Server 1 + App Server 2 + App Server 3
Database Layer → Vertical Scaling + Read Replicas/HA
এখানে মনে রাখতে হবে, শুধু server বাড়ালেই হবে না—database, cache, network, storage এবং application architecture-কেও workload অনুযায়ী scale করতে হবে।
সবশেষে খুব সহজভাবে:
Vertical Scaling = Make the server stronger.
Horizontal Scaling = Add more servers.
একজন Software Engineer/IT Professional হিসেবে শুধু “কোনটা কী” জানাই যথেষ্ট নয়।
আসল বিষয় হলো—
কখন কোন approach ব্যবহার করতে হবে এবং কেন ব্যবহার করতে হবে।
এটাই architectural thinking.
No comments:
Post a Comment