Advertisement
You Can’t Scale This: Internet-এর ভিতরের Logic না বুঝে Backend শেখা বড় ভুল

You Can’t Scale This: Internet-এর ভিতরের Logic না বুঝে Backend শেখা বড় ভুল

Rafe Uddaraj

Rafe Uddaraj

@rafeuddaraj

views

Share this article

ইন্টারনেটের বিশাল দুনিয়ায় একজন ব্যাকএন্ড ইঞ্জিনিয়ার হিসেবে আপনার যাত্রা শুরু করার আগে এর রাস্তাঘাট এবং মানচিত্র চিনে নেওয়া খুব জরুরি। আপনি যখন ব্রাউজারে কোনো ওয়েবসাইটের নাম লিখে এন্টার চাপেন, তখন পর্দার আড়ালে এক সুশৃঙ্খল কিন্তু বিশাল এক কর্মযজ্ঞ শুরু হয়। এই অদৃশ্য মেকানিজম বা অবকাঠামো নিয়ে একটি পরিষ্কার মেন্টাল মডেল বা মানসিক ধারণা তৈরি না থাকলে ভবিষ্যতে সিস্টেম ডিজাইন বা ডিব্যাগিং করার সময় আপনি খেই হারিয়ে ফেলতে পারেন। এই ব্লগে আমরা ইন্টারনেটের একদম গোড়ার বিষয়গুলো এমনভাবে দেখব, যেন আপনার কাছে পুরো সিস্টেমটি একদম স্বচ্ছ হয়ে যায়।

একজন ব্যাকএন্ড ডেভলপারের কাছে ইন্টারনেট কেবল সংযোগ নয়, এটি একটি লজিক্যাল সিস্টেম যেখানে ডেটা এক জায়গা থেকে অন্য জায়গায় যাওয়ার জন্য নির্দিষ্ট নিয়ম মেনে চলে। এই নিয়মগুলো না জানলে অ্যাপ্লিকেশন কেন স্লো হচ্ছে বা কেন একটি সার্ভিস অন্যটির সাথে কথা বলতে পারছে না, তা ধরা অসম্ভব। চলুন শুরু করা যাক।

ইন্টারনেটের সহজ দুটি অ্যানালজি বা উদাহরণ

ব্যাকএন্ডের টেকনিক্যাল শব্দগুলো শুনতে অনেক সময় কঠিন মনে হতে পারে, কিন্তু বাস্তব জীবনের সাথে এর মিল চমৎকার। আমরা দুটি শক্তিশালী গল্পের মাধ্যমে পুরো জগতটাকে বুঝব।

১. ডাক ব্যবস্থা এবং অ্যাপার্টমেন্ট বিল্ডিং (The Postal System and Apartment Complex)

কল্পনা করুন, আপনি দেশের অন্য প্রান্তে থাকা এক বন্ধুকে একটি চিঠি পাঠাতে চান।

  • বন্ধুর নাম (Domain Name): আপনি চিঠির খামে বন্ধুর নাম লিখলেন। এটা আপনার মনে রাখার জন্য সহজ, কিন্তু ডাক বিভাগের মেশিন এই নাম চেনে না।

  • ফোনবুক বা রেজিস্টার (DNS): ডাকঘরে একটি বিশাল ডিরেক্টরি বা ফোনবুক আছে যেখানে বন্ধুর নামের বিপরীতে তার বাড়ির একটি ইউনিক বা অদ্বিতীয় ঠিকানা লেখা থাকে। এই ডিরেক্টরি দেখে নাম থেকে ঠিকানা বের করার প্রসেসটাই হলো DNS

  • রাস্তার ঠিকানা (IP Address): বন্ধুর বাড়ির আসল ভৌগোলিক অবস্থান বা নম্বরটি হলো IP Address। এটি ছাড়া কোনোভাবেই গন্তব্যে পৌঁছানো সম্ভব নয়।

  • ফ্ল্যাট নম্বর (Port): আপনি সেই নির্দিষ্ট বাড়ির ঠিকানায় পৌঁছে দেখলেন সেখানে অনেকগুলো ফ্ল্যাট আছে। আপনার বন্ধু হয়তো ৫০২ নম্বর ফ্ল্যাটে থাকেন। এই নির্দিষ্ট ফ্ল্যাট নম্বরটিই হলো Port। একটি বড় বাড়িতে (সার্ভারে) অনেক সার্ভিস থাকতে পারে, Port বলে দেয় আপনি কার সাথে কথা বলতে চান।

  • চিঠি পৌঁছানোর সময় (Latency): আপনার বাড়ি থেকে বন্ধুর বাড়ি পর্যন্ত চিঠি পৌঁছাতে এবং উত্তর ফিরে আসতে যে সময়টুকু ব্যয় হয়, সেটিই হলো Latency

ম্যাপিং: এই গল্পে বন্ধুর নাম মানে Domain Name, ডাকঘর ডিরেক্টরি হলো DNS, বাড়ির ঠিকানা হলো IP Address, অ্যাপার্টমেন্ট নম্বর হলো Port, এবং যাতায়াতের সময় হলো Latency।

২. শহরের পানি সরবরাহ ব্যবস্থা (The Water Utility Network)

এবার চিন্তা করুন একটি শহরের পানির পাইপলাইন এবং আপনার বেসিনের কলের কথা।

  • পাইপের চওড়া ভাব (Bandwidth): আপনার এলাকায় পানি সরবরাহের পাইপটি কতটা মোটা বা চওড়া, সেটি হলো Bandwidth। পাইপ যত চওড়া হবে, প্রতি সেকেন্ডে তত বেশি পানি প্রবাহিত হতে পারবে।

  • কল ছাড়ার পর পানি আসার সময় (Latency): আপনি কল ছাড়লেন, কিন্তু পাইপের গোড়া থেকে পানি আপনার কল পর্যন্ত আসতে কয়েক মিলি-সেকেন্ড সময় নিল। এই যে বিলম্বটা হলো, এটাই ইন্টারনেটের ভাষায় Latency

  • বালতি ভরার পরিমাণ (Throughput): পাইপ যতই মোটা হোক, শেষ পর্যন্ত এক মিনিটে আপনার বালতিতে কতটুকু পানি জমা হলো, তা হলো Throughput

  • অপেক্ষা করার ধৈর্য (Timeout): ধরুন আপনি কল ছেড়েছেন কিন্তু পাইপে সমস্যার কারণে অনেকক্ষণ কোনো পানিই এলো না। আপনি তখন কল বন্ধ করে দিলেন কারণ আপনি অনির্দিষ্টকাল অপেক্ষা করতে পারবেন না। এই যে আপনি একটি নির্দিষ্ট সময় পর হাল ছেড়ে দিলেন, এটাই হলো Timeout

ম্যাপিং: এই গল্পে পাইপের ব্যাস হলো Bandwidth, প্রথম বিন্দুর জন্য অপেক্ষার সময় হলো Latency, জমা হওয়া পানির পরিমাণ হলো Throughput, এবং কল বন্ধ করে দেওয়া হলো Timeout ।

কোর কনসেপ্ট: ইন্টারনেটের মেরুদণ্ড (The Core Concept)

ইন্টারনেটের মূল ভিত্তি দাঁড়িয়ে আছে কিছু গুরুত্বপূর্ণ উপাদানের ওপর। ব্যাকএন্ডে কাজ করতে গেলে এই টার্মগুলো আপনার প্রতিদিনের সঙ্গী হবে।

ডোমেইন এবং আইপি (Domain Name and IP Address)

কম্পিউটার বা সার্ভার যখন একে অপরের সাথে যোগাযোগ করে, তখন তারা কোনো মানুষের দেওয়া নাম চেনে না, তারা চেনে কেবল সংখ্যা বা নম্বর। প্রতিটি ডিভাইসের এই ইউনিক ডিজিটাল আইডেন্টিটি হলো IP Address । এটি সাধারণত দুই প্রকারের হয়: IPv4 (যেমন: 192.168.1.1) এবং IPv6 যা অনেক বড় এবং আধুনিক কিন্তু মানুষের পক্ষে হাজার হাজার সার্ভারের নম্বর মনে রাখা অসম্ভব, তাই সহজবোধ্য নাম বা Domain Name (যেমন: example.com) ব্যবহার করা হয়।

ডিএনএস (DNS): ইন্টারনেটের দোভাষী

DNS বা Domain Name System এর কাজ হলো আপনার দেওয়া মানুষের ভাষা (ডোমেইন নাম) থেকে মেশিনের ভাষা (আইপি অ্যাড্রেস) খুঁজে বের করা, যখন আপনি ব্রাউজারে কিছু লেখেন, কম্পিউটার প্রথমে একটি DNS সার্ভারের কাছে রিকোয়েস্ট পাঠায়। এই উত্তর পেতে যে সময় লাগে তাকে বলা হয় DNS Latency, এটি ব্যাকএন্ডে খুব গুরুত্বপূর্ণ কারণ রিকোয়েস্ট প্রসেসিং শুরুর আগেই এই সময়টুকু ব্যয় হয়ে যায়।

পোর্ট (Port): সার্ভারের দরজা

আইপি অ্যাড্রেস ডেটাকে একটি সার্ভার পর্যন্ত নিয়ে যায়, কিন্তু সেই সার্ভারের ভেতরে ঠিক কোন অ্যাপ্লিকেশন বা সফটওয়্যারের কাছে ডেটা যাবে তা নির্ধারণ করে Port. একটি সার্ভারে একই সাথে ওয়েবসাইট (Port 80/443), ডাটাবেস (Port 5432) এবং ইমেইল সার্ভিস (Port 25) চলতে পারে। পোর্ট নম্বরগুলো ১৬-বিটের হয়, যার পরিসর ০ থেকে ৬৫৫৩৫ পর্যন্ত।

একটি রিকোয়েস্টের ডিজিটাল সফরনামা (How It Works)

যখন ক্লায়েন্ট থেকে সার্ভারে একটি রিকোয়েস্ট পাঠানো হয়, তখন সেটি সরাসরি এক লাফে পৌঁছায় না। এর একটি সুনির্দিষ্ট যাত্রা আছে:

১. DNS Lookup এবং Caching: ব্রাউজার প্রথমে আইপি খোঁজে। তবে প্রতিবার সার্ভারে জিজ্ঞেস করা সময়সাপেক্ষ, তাই ল্যাটেন্সি কমাতে Caching ব্যবহার করা হয়। প্রথমে ব্রাউজার ক্যাশ, তারপর ওএস ক্যাশ এবং সবশেষে আইএসপি ক্যাশ চেক করা হয়।

২. The Handshake: আইপি পাওয়ার পর ক্লায়েন্ট এবং সার্ভারের মধ্যে একটি 'পরিচিতি পর্ব' ঘটে। টিসিপি (TCP) প্রোটোকলের ক্ষেত্রে একে বলা হয় Three-way Handshake। এই ধাপে উভয় পক্ষ নিশ্চিত হয় যে তারা ডেটা আদান-প্রদান করতে প্রস্তুত।

৩. Routing and Hops: ডেটা প্যাকেটটি অনেকগুলো রাউটার এবং গেটওয়ে পার হয়ে যায়, যাকে বলা হয় Hops, প্রতিটি হোপে প্যাকেটটি প্রসেস হতে সামান্য সময় লাগে, যা ল্যাটেন্সিতে প্রভাব ফেলে।

৪. Demultiplexing: প্যাকেটটি সার্ভারে পৌঁছালে অপারেটিং সিস্টেম পোর্ট নম্বর দেখে বুঝতে পারে এটি কোন নির্দিষ্ট অ্যাপ্লিকেশনের জন্য পাঠানো হয়েছে।

৫. Server-side Processing ও Response: ব্যাকএন্ড অ্যাপ্লিকেশনটি রিকোয়েস্ট গ্রহণ করে, ডেটা প্রসেস করে এবং একটি রেসপন্স তৈরি করে যা পুনরায় একই পথে ক্লায়েন্টের কাছে ফিরে আসে।

আপনি হয়তো ভাবছেন, যদি এই যাত্রার কোনো একটি ধাপে ডেটা প্যাকেট হারিয়ে যায়? এখানেই Timeout-এর ভূমিকা শুরু হয়। যদি একটি নির্দিষ্ট সময়ের মধ্যে কোনো ধাপ সফল না হয়, তবে সিস্টেম ধরে নেয় যে কানেকশনটি আর সম্ভব নয়।

নেটওয়ার্কের সীমাবদ্ধতা: ল্যাটেন্সি বনাম ব্যান্ডউইথ (Network Dynamics)

ইন্টারনেটের গতি বলতে আমরা সাধারণত ব্যান্ডউইথকে বুঝি, কিন্তু ব্যাকএন্ডের দুনিয়ায় ল্যাটেন্সি অনেক সময় বেশি গুরুত্বপূর্ণ।

ল্যাটেন্সি (Latency): এটি হলো সময়ের পরিমাপ (milliseconds)। আপনার রিকোয়েস্ট গিয়ে রেসপন্স ফিরে আসতে কত সময় লাগছে, তাই হলো ল্যাটেন্সি।

ব্যান্ডউইথ (Bandwidth): এটি হলো ক্ষমতার পরিমাপ (Mbps)। পাইপটি কতটুকু চওড়া, অর্থাৎ একসাথে কতটুকু ডেটা যেতে পারে, তাই হলো ব্যান্ডউইথ।

হাইওয়ের সাথে তুলনা করলে, ব্যান্ডউইথ হলো রাস্তার লেনের সংখ্যা (কয়টি গাড়ি একসাথে যেতে পারে), আর ল্যাটেন্সি হলো আপনার গাড়ির গতি (এক মাথা থেকে অন্য মাথায় যেতে কত সময় লাগে) । ব্যাকএন্ড ইঞ্জিনিয়ার হিসেবে আপনার লক্ষ্য হওয়া উচিত ল্যাটেন্সি কমানো, কারণ ব্যান্ডউইথ অনেক থাকলেও যদি ল্যাটেন্সি বেশি হয়, তবে সিস্টেম 'স্লো' মনে হবে

৫টি সাধারণ ভুল ধারণা এবং ব্যাকএন্ড বাস্তবতা (Beginner Pain Points)

একজন ব্যাকএন্ড ডেভলপার হিসেবে এই ৫টি বিষয় আপনার মাথায় পরিষ্কার থাকা জরুরি:

১. বিভ্রান্তি: "আইপি অ্যাড্রেস এবং ইউআরএল একই জিনিস"

অনেকে মনে করেন ইউআরএল-ই হলো আসল ঠিকানা। কিন্তু বাস্তবতা হলো ইউআরএল মানুষের জন্য সহজবোধ্য একটি মুখোশ মাত্র। ব্যাকএন্ডে যখন আপনি অন্য কোনো সার্ভারের সাথে কথা বলবেন, তখন আপনাকে আইপি অ্যাড্রেস বা ডোমেইন নামের পার্থক্য বুঝতে হবে 1। আইপি যেকোনো সময় পরিবর্তন হতে পারে, তাই ডোমেইন নাম ব্যবহার করা বেশি নিরাপদ।

২. বিভ্রান্তি: "ব্যান্ডউইথ বাড়ালেই ল্যাটেন্সি কমে যাবে"

ইন্টারনেট কোম্পানিগুলো স্পিড বলতে কেবল ব্যান্ডউইথকে বোঝায়। কিন্তু ব্যাকএন্ড ইঞ্জিনিয়ারিংয়ে মনে রাখবেন, ব্যান্ডউইথ বাড়ালে কেবল ডেটা ধারণক্ষমতা বাড়ে। আপনার সার্ভার যদি ভৌগোলিক দিক থেকে অনেক দূরে থাকে, তবে ৩০০০ এমবিপিএস ব্যান্ডউইথ থাকলেও ল্যাটেন্সি কমবে না । ল্যাটেন্সি কমাতে হলে ডেটাকে ইউজারের কাছাকাছি নিতে হয় (যেমন: CDN ব্যবহার করে)।

৩. বিভ্রান্তি: "লোকালহোস্ট মানে ইন্টারনেটের একটি অংশ"

অনেকে ভাবেন localhost বা 127.0.0.1 ইন্টারনেটে কোনো বিশেষ সার্ভার। আসলে এটি একটি Loopback Interface যা ডেটাকে আপনার পিসির বাইরে যেতেই দেয় না, লোকালহোস্টে অ্যাপ্লিকেশন ফাস্ট চলে কারণ সেখানে কোনো নেটওয়ার্ক ল্যাটেন্সি নেই। কিন্তু রিয়েল ইন্টারনেটে গেলে সেই একই কোড স্লো মনে হতে পারে কারণ তখন ডেটা হাজার মাইল পাড়ি দেয়।

৪. বিভ্রান্তি: "ডিএনএস আপডেট করলে তা সাথে সাথে সারাবিশ্বে কাজ করবে"

ডিএনএস রেকর্ড পরিবর্তন করার পর তা কার্যকর হতে কয়েক ঘণ্টা থেকে কয়েক দিন পর্যন্ত সময় নিতে পারে, যাকে DNS Propagation বলা হয় । এর কারণ হলো বিভিন্ন আইএসপি তাদের কাছে পুরোনো তথ্য ক্যাশ করে রাখে । ব্যাকএন্ড মাইগ্রেশনের সময় এই সময়টুকু মাথায় না রাখলে সিস্টেম ডাউন হয়ে যেতে পারে।

৫. বিভ্রান্তি: "টাইমআউট হওয়া মানেই সার্ভারে বাগ (Bug) আছে"

যখন আপনি একটি 'Timeout Error' দেখেন, তার মানে এই নয় যে আপনার কোড ভুল। টাইমআউট অনেক সময় একটি Network Reality. নেটওয়ার্ক জ্যাম হতে পারে, রাউটার প্যাকেট ফেলে দিতে পারে, বা ইউজারের নেট চলে যেতে পারে। ব্যাকএন্ডে টাইমআউট আসলে আপনার সিস্টেমকে বাঁচায় যাতে সে একটি ডেড কানেকশনের জন্য অনন্তকাল নিজের র‍্যাম (RAM) বা সিপিইউ (CPU) খরচ না করে ।

Practical Thinking: ফ্রেমওয়ার্ক ছাড়াই ব্যাকএন্ড চিন্তা

একজন দক্ষ ইঞ্জিনিয়ার নেটওয়ার্কের এই অনিশ্চয়তাগুলোকে মেনেই তার সিস্টেম ডিজাইন করেন। একেই বলা হয় 'Practical Backend Thinking'।

Reliability ও Consistency (নির্ভরযোগ্যতা ও স্থায়িত্ব)

নেটওয়ার্ক যেকোনো সময় ফেইল করতে পারে। তাই ভালো ইঞ্জিনিয়াররা Retry Logic ব্যবহার করেন। তবে মনে রাখবেন, অন্ধভাবে রিট্রাই করা বিপজ্জনক (যেমন: একই পেমেন্ট দুইবার হওয়া)। এই সমস্যা সমাধানের জন্য Idempotency এবং Exponential Backoff (ধাপে ধাপে রিট্রাইয়ের সময় বাড়ানো) এর মতো কনসেপ্ট মাথায় রাখতে হয়।

Safety (নিরাপত্তা)

সার্ভারের সব পোর্ট খোলা রাখা মানে হলো চোরকে দরজা দেখিয়ে দেওয়া। কেবল প্রয়োজনীয় পোর্টগুলো (যেমন: HTTPS-এর জন্য ৪৪৩) খোলা রাখা এবং বাকিগুলো ফায়ারওয়াল দিয়ে বন্ধ রাখা একটি নিরাপদ ব্যাকএন্ড প্র্যাকটিস।

Trade-offs (আপস)

ব্যাকএন্ডে সবকিছু একসাথে পাওয়া যায় না। আপনি যদি DNS TTL (Time To Live) খুব বেশি রাখেন, তবে ল্যাটেন্সি কমবে কিন্তু কোনো পরিবর্তন করলে তা সারাবিশ্বে ছড়াতে অনেক দেরি হবে । আবার TTL খুব কম রাখলে পরিবর্তন দ্রুত হবে কিন্তু ডিএনএস কোয়েরির চাপে ল্যাটেন্সি বেড়ে যাবে। একজন ইঞ্জিনিয়ার হিসেবে আপনাকে এই ব্যালেন্সটি করতে শিখতে হবে।

Timeout এর প্রকারভেদ (Mastering Timeouts)

ব্যাকএন্ডে কেবল এক ধরণের টাইমআউট থাকে না:

  • Connection Timeout: সার্ভারের সাথে হাত মেলাতেই কতক্ষণ অপেক্ষা করবেন।

  • Read/Response Timeout: কানেকশন পাওয়ার পর ডেটা আসতে কতক্ষণ দেরি সহ্য করবেন।

  • Processing Timeout: আপনার সার্ভারের ভেতরে একটি কাজ শেষ হতে সর্বোচ্চ কত সময় দেবেন

    এই টাইমিংগুলো সঠিকভাবে সেট করা সিস্টেমের পারফরম্যান্সের জন্য অত্যন্ত গুরুত্বপূর্ণ।

সারাংশ (Recap)

  • IP Address হলো ইন্টারনেটের ইউনিক ঠিকানা, আর Domain Name হলো মানুষের মনে রাখার সহজ মুখোশ।

  • DNS একটি ফোনবুকের মতো কাজ করে যা নাম থেকে আইপিতে রূপান্তর করে এবং পারফরম্যান্সের জন্য ক্যাশিং ব্যবহার করে।

  • Port হলো সার্ভারের নির্দিষ্ট দরজা, যা একই আইপিতে একাধিক সার্ভিস চালানোর সুযোগ দেয়।

  • Latency হলো যাতায়াতের দেরি বা বিলম্ব, আর Bandwidth হলো ডেটা বহনের ক্ষমতা।

  • Localhost আপনার পিসির ভেতরকার একটি বদ্ধ পরিবেশ, যা রিয়েল ইন্টারনেটের নেটওয়ার্ক বাস্তবতাকে এড়িয়ে চলে।

  • Timeout একটি প্রটেকশন মেকানিজম যা সার্ভারের রিসোর্স আটকে থাকা থেকে বাঁচায়।

    আপনার চিন্তার খোরাক (Reflection)

১. ধরুন আপনি একটি স্টক মার্কেটের অ্যাপ বানাচ্ছেন যেখানে প্রতি সেকেন্ডে দাম পরিবর্তন হয়। এখানে ল্যাটেন্সি কমানো কেন ব্যান্ডউইথ বাড়ানোর চেয়ে বেশি গুরুত্বপূর্ণ হবে?

২. আপনি আপনার এপিআই সার্ভারের আইপি পরিবর্তন করেছেন কিন্তু আপনার ইউজারের অ্যাপ এখনো পুরোনো সার্ভারে রিকোয়েস্ট পাঠাচ্ছে। এর পেছনে DNS Propagation-এর ভূমিকা কী হতে পারে?

৩. একটি ডাটাবেস কোয়েরি যদি ১ মিনিট সময় নেয় এবং আপনার সার্ভারের প্রসেসিং টাইমআউট ৩০ সেকেন্ড থাকে, তবে ইউজারের কাছে কী ধরণের সমস্যা হতে পারে?

এখন ঠিকানা-রাস্তাঘাট বোঝা গেল; এবার web-এর ভাষা HTTP কীভাবে এই কথোপকথনকে নিয়মে বাঁধে সেটা দেখা যাক। পরবর্তী ব্লগে আমরা শিখব প্রোটোকলের জাদু, যা ক্লায়েন্ট আর সার্ভারের মধ্যকার আসল ব্যাকরণ।

Rafe Uddaraj

About Rafe Uddaraj

Author at CST Club - sharing insights on technology, programming, and development.

Advertisement
Advertisement
Recommended Content

Recommended Posts

Understanding Backend Through Request and Response

Understanding Backend Through Request and Response

Backend-এর Request আর Response: আড়ালের কাজটা আসলে কীভাবে হয় আমরা যখন কোনো অ্যাপ ব্যবহার করি, কোনো ওয়েবসাইটে ঢুকি, কিংবা অনলাইনে কোনো কাজ করি, ...

Rafe UddarajRafe Uddaraj
30.0k views
সত্যিকারের সফটওয়্যার ইঞ্জিনিয়ার হতে চাইলে

সত্যিকারের সফটওয়্যার ইঞ্জিনিয়ার হতে চাইলে

ভালো সফটওয়্যার ইঞ্জিনিয়ার হতে চান? ব্যাপারটা আসলে খুব কঠিন কিছু না। কিন্তু সোজা পথেও যদি বারবার ভুল করেন, তাহলে আগানো মুশকিল। আমরা যারা আগে এই পথে ...

Rafe UddarajRafe Uddaraj
4.6k views
💡 Sun Detection Auto Light Control: ১ম পর্বের শিক্ষার্থীদের এক উজ্জ্বল উদ্ভাবন | CST Club – DPI

💡 Sun Detection Auto Light Control: ১ম পর্বের শিক্ষার্থীদের এক উজ্জ্বল উদ্ভাবন | CST Club – DPI

> “শিক্ষা তখনই সফল, যখন তা বাস্তব জীবনের সমস্যা সমাধানে ব্যবহৃত হয়।” বর্তমান যুগে শিক্ষা মানে শুধু পাঠ্যবই মুখস্থ করা নয়। সত্যিকারের শিক্ষা তখনই বি...

CST ClubCST Club
21.9k views
Advertisement
Recommended Content