Skip to Content
Nextra 4.0 is released 🎉
DocumentationScale From 0 to millionCDN, Stateless Architecture এবং Scaling — সহজ বাংলা ব্যাখ্যা

CDN, Stateless Architecture এবং Scaling — সহজ বাংলা ব্যাখ্যা


Content Delivery Network (CDN) কী?

CDN (Content Delivery Network) হলো এমন একটি নেটওয়ার্ক যেখানে বিশ্বের বিভিন্ন ভৌগোলিক স্থানে (geographically dispersed) অনেকগুলো সার্ভার থাকে, যেগুলো static content সরবরাহ করে।

CDN সার্ভার সাধারণত নিচের ধরনের ফাইল cache করে রাখে:

  • Images
  • Videos
  • CSS files
  • JavaScript files
  • অন্যান্য static assets

Dynamic Content Caching (উন্নত ধারণা)

Dynamic content caching একটি তুলনামূলক নতুন ধারণা এবং এই কোর্সের বাইরে।

এটি এমন HTML পেজ cache করতে পারে যেগুলো নিচের বিষয়গুলোর উপর নির্ভর করে:

  • Request path
  • Query string
  • Cookies
  • Request headers

এই অংশ এখানে বিস্তারিত আলোচনা করা হচ্ছে না। আমরা মূলত static content caching বুঝব।


CDN কীভাবে কাজ করে?

উচ্চ পর্যায়ে (high-level), CDN এভাবে কাজ করে:

  • ব্যবহারকারী যখন কোনো ওয়েবসাইটে যায়
  • তখন তার কাছাকাছি থাকা CDN server আগে static content সরবরাহ করে

👉 ব্যবহারকারী যত CDN server থেকে দূরে থাকবে, website তত ধীর হবে।

উদাহরণ:

  • CDN যদি San Francisco-তে থাকে
  • তাহলে Los Angeles-এর ব্যবহারকারীরা দ্রুত access পাবে
  • কিন্তু Europe-এর ব্যবহারকারীরা তুলনামূলক ধীর গতি পাবে

Figure 9 (CDN-এর পারফরম্যান্স)

Figure 9 দেখায়:

  • Direct origin server থেকে data আনতে সময় লাগে: 120ms
  • CDN ব্যবহার করলে সময় লাগে: 30ms

👉 CDN অনেক দ্রুত কারণ এটি কাছের সার্ভার থেকে data দেয়।


Figure 10 (CDN Workflow)

CDN কীভাবে image serve করে তা নিচে ধাপে ধাপে বোঝানো হলো:


১. User request পাঠায়

User A বা User B একটি image URL ব্যবহার করে request পাঠায়:

উদাহরণ CDN URL:

https://mysite.cloudfront.net/logo.jpg

অথবা

https://mysite.akamai.com/image-manager/img/logo.jpg

এই domain CDN provider দিয়ে দেওয়া হয়।


২. CDN cache miss হলে origin server থেকে data আনে

যদি CDN-এর কাছে image না থাকে:

  • CDN origin server-এ request পাঠায়
  • Origin হতে পারে web server বা Amazon S3 এর মতো storage

৩. Origin server data ফেরত দেয়

Origin server image.png ফেরত দেয় এবং সাথে HTTP header দিতে পারে:

👉 TTL (Time-to-Live)

এটি বলে দেয় কতক্ষণ image cache-এ থাকবে।


৪. CDN cache করে এবং user-কে পাঠায়

  • CDN image cache করে রাখে
  • তারপর User A-কে পাঠায়
  • TTL শেষ না হওয়া পর্যন্ত cache থাকে

৫–৬. পরবর্তী user request

  • User B একই image চাইলে
  • CDN সরাসরি cache থেকে response দেয়
  • আর origin server-এ যাওয়ার দরকার হয় না

CDN ব্যবহার করার গুরুত্বপূর্ণ বিষয়


১. Cost (খরচ)

CDN তৃতীয় পক্ষ পরিচালনা করে, তাই:

  • Data transfer-এর জন্য টাকা লাগে
  • কম ব্যবহৃত assets CDN-এ রাখলে লাভ কম

২. Cache Expiry সেট করা

Cache expiry balance করতে হয়:

  • খুব বেশি হলে → outdated data দেখাবে
  • খুব কম হলে → বারবার origin থেকে load হবে (slow)

৩. CDN Fallback

যদি CDN কাজ না করে:

  • Client সরাসরি origin server থেকে data আনতে পারবে
  • এজন্য fallback ব্যবস্থা থাকতে হবে

৪. File Invalidation

CDN থেকে আগেই file সরানোর পদ্ধতি:

Option 1: API দিয়ে invalidate করা

CDN provider API ব্যবহার করে file delete করা যায়

Option 2: Versioning ব্যবহার করা

উদাহরণ:

image.png?v=2

এভাবে নতুন version দিলে পুরনো cache bypass হয়


Figure 11 (Final System with CDN + Cache)

এই ডিজাইনে:

  • Static assets (JS, CSS, images) আর web server থেকে serve হয় না
  • এগুলো CDN থেকে আসে
  • Cache ব্যবহারে database-এর load কমে যায়

Stateless Web Tier

এখন আমরা web tier কে horizontally scale করতে চাই। এজন্য দরকার:

👉 Stateless architecture


Stateless কী?

State (যেমন session data) web server-এ না রেখে বাইরে রাখা হয়।

  • Session data database বা NoSQL-এ রাখা হয়
  • প্রতিটি server একই shared data store ব্যবহার করে

কেন দরকার?

যদি state web server-এ থাকে, তাহলে scaling কঠিন হয়।


Stateful Architecture (পুরোনো পদ্ধতি)

Figure 12 অনুযায়ী:

  • User A → Server 1
  • User B → Server 2
  • User C → Server 3

প্রতিটি server আলাদা user data রাখে:

  • session data
  • profile image

সমস্যা:

  • User A সবসময় Server 1-এ যেতে হবে
  • অন্য server গেলে authentication fail হবে

👉 এজন্য sticky session দরকার হয়

সমস্যা আরও:

  • Scaling কঠিন
  • Server add/remove করা কঠিন
  • Failure handling জটিল

Stateless Architecture (নতুন ও ভালো ডিজাইন)

Figure 13 অনুযায়ী:

  • সব server stateless
  • সব user request যেকোনো server-এ যেতে পারে
  • সব state shared storage থেকে আনা হয়

সুবিধা:

  • সহজ scaling
  • বেশি robust system
  • বেশি reliable

Figure 14 (Final Scalable Architecture)

এই ডিজাইনে আছে:

  • CDN → static content দ্রুত serve করে
  • Load Balancer → traffic distribute করে
  • Auto-scaling web servers
  • Cache layer
  • Master + Slave DB replication
  • NoSQL database
  • Shared session/state storage

গুরুত্বপূর্ণ পরিবর্তন:

  • Session data web server থেকে বের করে shared storage-এ রাখা হয়েছে
  • Web tier এখন stateless

Auto Scaling

Auto scaling মানে:

  • traffic বেশি হলে server যোগ হয়
  • traffic কম হলে server কমে যায়

👉 এটি stateless architecture-এ সহজ হয়


শেষ ধারণা

  • CDN static content দ্রুত সরবরাহ করে
  • Cache database load কমায়
  • Stateless architecture system scaling সহজ করে
  • Stateful system fragile এবং scaling কঠিন
  • Modern system = CDN + Cache + Stateless + Auto Scaling

ভবিষ্যৎ ধাপ

যখন system আরও বড় হয়:

  • Multiple data centers ব্যবহার করা হয়
  • Global users-এর জন্য latency কমানো হয়
  • Availability আরও বাড়ানো হয়