স্টেজ ০৫

স্টেজ ০৫ - Async কাজ ও Decoupling

এই স্টেজের লক্ষ্য: এই পর্যন্ত আমাদের সব কাজ ছিলো synchronous: request এলে user বসে অপেক্ষা করতো, যতক্ষণ না কাজটা পুরো শেষ হতো। এই স্টেজে আমরা সেই অপেক্ষা কমাবো। Message Queue দিয়ে 'কাজ নেওয়া' আর 'কাজ করা' কে আলাদা করবো, ধীর কাজগুলো background এ সরিয়ে দেবো, আর crash হলেও যেন কোনো কাজ হারিয়ে না যায়, সেটা নিশ্চিত করবো। তবে প্রতিটা সুবিধার সাথে নতুন cost আসে (duplicate, eventual consistency)। সেগুলোও বুঝবো।

"ধীর কাজের জন্য user কে অপেক্ষা করানোর দরকার নেই: কাজটা এখন নিন, পরে করুন।"

স্টেজ ০৪ শেষে আমাদের system অনেক দিক থেকেই scalable। Read ভাগ হয়ে যাচ্ছে, write shard হচ্ছে, content সারা পৃথিবীতে পৌঁছে যাচ্ছে। কিন্তু একটা জিনিস এখনো বদলায়নি: প্রতিটা request এখনো synchronous। মানে user একটা কাজ চাইলে, কাজটা পুরো শেষ না হওয়া পর্যন্ত তাকে বসে অপেক্ষা করতে হয়।

কিছু কাজ স্বভাবতই ধীর (video encode করা, email পাঠানো, report বানানো)। এসব কাজের জন্য user কে আটকে রাখার কোনো মানে নেই। এই স্টেজে আমরা Message Queue দিয়ে “কাজ নেওয়া” আর “কাজ করা” কে আলাদা করবো। User সাথে সাথে জানবে যে কাজটা নেওয়া হয়েছে, আর ধীর কাজটা পরে background এ চলতে থাকবে। স্টেজ শেষে আপনি বুঝবেন, কখন একটা কাজ queue তে রাখা উচিত, আর তার জন্য কী cost দিতে হয়।

০১ এই স্টেজে যা শিখবো

সেশন শিরোনাম এই সেশনের লক্ষ্য
সেশন ০৮ Message Queue Synchronous এর সীমা, কাজ এখন নেওয়া আর পরে করা, producer/queue/consumer, ACK আর visibility timeout, at-least-once delivery আর idempotency, আর টানা overload এ backpressure।
সেশন ০৯ Background Jobs ও Worker Pool Job এর চার রকম আর cron, worker pool আর CPU-bound বনাম IO-bound মাপ, concurrency limit, exponential backoff আর jitter, timeout আর job status, graceful shutdown, আর distributed lock দিয়ে একই cron দুইবার চলা ঠেকানো।
সেশন ১০ Event-Driven Architecture Command বনাম event, queue বনাম pub/sub, Kafka log এর partition, offset, consumer group আর replay, key দিয়ে ক্রম, choreography, schema বদলানো, event sourcing, আর কখন event নয়।

০২ স্টেজ শেষে যা যা করতে পারবেন

০৩ এর পর যা আসছে...

এই স্টেজে আমরা একটা system এর ভেতরেই কাজগুলো আলাদা করেছি: queue দিয়ে, background worker দিয়ে, আর event দিয়ে। স্টেজ ০৬ এ আমরা আরো এক ধাপ এগোবো, পুরো monolith টাকেই ভাঙবো। Microservices কখন ও কেন দরকার, service গুলো একে অপরের সাথে কীভাবে কথা বলে, API Gateway, আর service discovery: এগুলোই আসছে।