Toph কেস স্টাডি

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

কিন্তু Toph-এর মতো একটি প্ল্যাটফর্ম চালানো শুধু সফটওয়্যার চ্যালেঞ্জ নয় — এটি একটি নিরাপত্তা ও ইনফ্রাস্ট্রাকচার চ্যালেঞ্জ। প্রতিটি সাবমিশন একজন অজানা ব্যবহারকারীর লেখা যেকোনো কোড। প্রতিটি প্রতিযোগিতা একটি লাইভ ইভেন্ট যেখানে হাজার হাজার মানুষ রিয়েল-টাইমে লিডারবোর্ড রিফ্রেশ হতে দেখছে। আর যেকোনো দিন হঠাৎ স্পাইক দিন হয়ে যেতে পারে যখন কোনো বিশ্ববিদ্যালয় ১,০০০+ অংশগ্রহণকারী নিয়ে একটি প্রতিযোগিতা চালানোর সিদ্ধান্ত নেয়।

এই সবকিছু সামলাতে Toph-এর এমন একটি আর্কিটেকচার দরকার ছিল যা ডিজাইন থেকেই নিরাপদ, লোডের সাথে ইলাস্টিক, এবং তাৎক্ষণিক অনুভূতি দেওয়ার মতো যথেষ্ট দ্রুত।

Toph প্রতিযোগিতার অ্যারেনা

চ্যালেঞ্জ

তিনটি সমস্যা সমাধান করতে হয়েছিল — এবং ভালোভাবে সমাধান করতে হয়েছিল:

নিরাপদ কোড এক্সিকিউশন। ব্যবহারকারীদের জমা দেওয়া কোড Toph-এর সার্ভারে চলে। এর মানে যেকোনো সাবমিশন তাত্ত্বিকভাবে তার পরিবেশ থেকে বের হওয়ার চেষ্টা করতে পারে, অন্য ব্যবহারকারীদের ডেটায় অ্যাক্সেস নিতে পারে, বা সীমাহীন রিসোর্স ব্যবহার করতে পারে। সাধারণ স্যান্ডবক্স যথেষ্ট নয়।

চাহিদা অনুযায়ী স্কেলিং। প্রতিযোগিতার ট্র্যাফিক স্বভাবতই অনির্দেশ্য। সিস্টেমটিকে আকস্মিক চাপ সামলাতে হবে — প্রতিযোগিতার মাঝখানে অংশগ্রহণকারীদের অভিজ্ঞতা ক্ষুণ্ন না করে।

রিয়েল-টাইম প্রতিযোগিতার অভিজ্ঞতা। কম্পিটিটিভ প্রোগ্রামিং তাৎক্ষণিকতার উপর নির্ভর করে। অংশগ্রহণকারীদের দ্রুত ভার্ডিক্ট দেখতে হবে। মডারেটরদের পুরো পরিস্থিতি দেখার সুযোগ থাকতে হবে। লেটেন্সি শুধু বিরক্তিকর নয় — এটি প্রতিযোগিতার অখণ্ডতা ক্ষুণ্ন করে।

সমাধান

একটি হালকা, নিরাপদ স্যান্ডবক্স

টিম Linux Namespaces এবং Cgroups ব্যবহার করে একটি কাস্টম স্যান্ডবক্সিং টুল তৈরি করেছে — সেই একই কার্নেল প্রিমিটিভ যা Docker-এর মতো কন্টেইনার রানটাইম চালায়। এটি Toph-কে প্রতিটি কোড সাবমিশনের জন্য নিবিড়, কম-ওভারহেড আইসোলেশন দিয়েছে: প্রতিটি ব্যবহারকারীর কোড তার নিজস্ব সীমাবদ্ধ পরিবেশে চলে, CPU, মেমরি এবং সিস্টেম অ্যাক্সেসের উপর কঠোর সীমা সহ।

ফলাফল হলো এমন একটি স্যান্ডবক্স যা দ্রুত এবং নিরাপদ উভয়ই — নিরাপত্তায় কোনো ছাড় না দিয়ে উপলব্ধ সার্ভার রিসোর্সের সর্বোচ্চ ব্যবহার করে।

একটি স্কেলেবল ব্যাক-এন্ড আর্কিটেকচার

Toph-এর Go ব্যাক-এন্ড Twelve-Factor App পদ্ধতি অনুসরণ করে তৈরি করা হয়েছে, যেখানে প্রতিটি সার্ভিসকে একটি স্বাধীনভাবে ডিপ্লয়যোগ্য, স্টেটলেস ইউনিট হিসেবে বিবেচনা করা হয়। এর মানে সিস্টেমটি পৃথক কম্পোনেন্ট — জাজ, API, প্রতিযোগিতা রানার — যেখানে আসলে চাহিদা পড়ছে সেই অনুযায়ী স্কেল করতে পারে, সবকিছু একসাথে স্কেল করার বদলে।

যখন একটি বড় প্রতিযোগিতা শুরু হয়, Toph ঠিক যা দরকার তা স্কেল আপ করে। যখন শেষ হয়, আবার স্কেল ডাউন করে।

একটি রিয়েল-টাইম প্রতিযোগিতার অ্যারেনা

ফ্রন্ট-এন্ড টিম Toph-এর প্রতিযোগিতার অ্যারেনাটি Backbone.js ব্যবহার করে একটি সিঙ্গেল-পেজ অ্যাপ হিসেবে তৈরি করেছে, ব্যাক-এন্ডে PubSub আর্কিটেকচারের সাথে সংযুক্ত করে। স্কোর লাইভ আপডেট হয়। পেজ রিলোড ছাড়াই ভার্ডিক্ট দেখা যায়। বিভিন্ন নেটওয়ার্ক পরিস্থিতিতেও অভিজ্ঞতা অটুট থাকে — যা গুরুত্বপূর্ণ যখন অংশগ্রহণকারীরা বিশ্বের বিভিন্ন প্রান্ত থেকে যোগ দিচ্ছে।

ফলাফল

“প্রায় ২০ লক্ষ সাবমিশনে শূন্য স্যান্ডবক্স লঙ্ঘন।”

লঞ্চের পর থেকে Toph:

  • ১,০০০+ একযোগে অংশগ্রহণকারী সহ শত শত প্রতিযোগিতা আয়োজন করেছে
  • বিভিন্ন কঠিনতার স্তরে ২,১০০+ সমস্যা এবং ৪৫০+ সমস্যার টিউটোরিয়াল সংগ্রহ করেছে
  • শূন্য স্যান্ডবক্স লঙ্ঘনে ১৯,২৮,০০০+ মোট সাবমিশন প্রক্রিয়া করেছে
  • সকল প্রতিযোগিতা ও অনুশীলন সমস্যায় ৪৯টি প্রোগ্রামিং ভাষা সমর্থন করেছে
  • একটি প্রতিযোগিতা মডারেশন ড্যাশবোর্ড প্রদান করেছে যা ইভেন্ট পরিচালনা সত্যিই সহজ করে তোলে

এর অর্থ

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