Distributed databases with Peter Mattis
10275 segments
আমি গুগলের
ল্যারি এবং
সের্গেই-এর
সাথে কথা বলছি।
কোনোভাবে,
তাদের একজন
আমাকে গুগলে
ইন্টারভিউ
দিতে আসার জন্য
ফোন করে। আর
গুগলের বয়স
তখন মাত্র ৩ বছর
। ৩ বছর বয়স, আর
আমি না বলে
দিয়েছিলাম।
আপনি তা করেননি
। আমি বরাবরই
একজন খুব কর্মঠ
কোডার ছিলাম।
আমি আমার
গিটহাবের
কাজগুলো দেখি।
সেরা
বছরগুলোতে,
হয়তো এক বছরে
১,০০,০০০ লাইন
কোড লিখতাম।
এআই আসার আগের
যুগ, তাই না? এটা
সেই সময় যখন
আপনি এই
কাজগুলো হাতে-
কলমে করতেন।
আমি যখন সেদিকে
তাকাই, তখন মনে
হয় যেন একবারে
মাথায় রাখার
মতো একটা
সর্বোচ্চ সীমা
আছে। আমরা
ইরেজার কোডিং
ক্লাসগুলো
করেছিলাম। ওটা
ছিল এক ধরনের
বড় অগ্রগতি।
আপনার কাছে
ডেটার নয়টি
খণ্ড আছে,
কিন্তু
সেগুলোর
যেকোনো পাঁচটি
খণ্ড ব্যবহার
করে ডেটাটিকে
পুনর্গঠন করা
যায়। এর মানে
হলো, আপনি
যেকোনো চারটি
কপি হারিয়ে
ফেললেও আপনার
ডেটা পুনর্গঠন
করতে পারবেন।
>> এআই আসার আগের
চার বছর আগের
তুলনায় আজকের
দিনে ভালো
সফটওয়্যার
ইঞ্জিনিয়ারিং
কেমন হওয়া
উচিত বলে আপনি
মনে করেন?
>> আমার মনে হয়,
উচ্চাকাঙ্ক্ষা
বাড়াতে হবে।
>> তিনি কলেজে
থাকাকালীন GIMP
ইমেজ এডিটর
তৈরি করেছিলেন,
Gmail-এর পেছনের
মূল স্টোরেজ
সিস্টেমটি
ডিজাইন
করেছিলেন এবং
আরও অনেক বড়,
জটিল ও বহুল
ব্যবহৃত
সিস্টেম তৈরি
করেছেন। ইনি
হলেন পিটার
ম্যাটিস, ককরোচ
ল্যাবস-এর সহ-
প্রতিষ্ঠাতা
এবং সিটিও।
আমাদের কথা
বলার জন্য বসার
আগে পিটার
আমাকে
বলেছিলেন, "গত
৩০ বছর ধরে আমি
সবসময়ই একজন
প্রচুর কোডার
ছিলাম, কিন্তু
আমার বর্তমান
কাজের
পরিমাণটা একটু
বেশিই। আর এটা
কোনো
লোকদেখানো
বাজে কোড নয়,
বরং শক্তিশালী
কোডিং মডেলের
সাথে কাজ করার
সুবাদে
ডাটাবেস-
উপযোগী, উচ্চ-
মানের এবং উচ্চ-
পারফরম্যান্সের
কোড।" আজ আমরা
আলোচনা করব
ডাটাবেস তৈরির
ক্ষেত্রে বি-
ট্রি (B-tree) কেন এত
গুরুত্বপূর্ণ,
এবং কেন পিটার
তার কর্মজীবন
জুড়ে বারবার
এই ডেটা
স্ট্রাকচারটি
ব্যবহার
করেছেন।
কীভাবে তিনি
এআই (AI) আসার আগে
প্রতি বছর
১,০০,০০০ লাইন
প্রোডাকশন কোড
লিখতেন, ২০২২
থেকে ২০২৪
সালের মধ্যে
কোডিং বন্ধ করে
দিয়েছিলেন
এবং কেন তিনি
এখন আবার ফিরে
এসেছেন। কেন
তিনি মনে করেন
যে এআই
এজেন্টরা
টেস্টিংয়ের
ব্যাপারে অলস,
এবং কীভাবে এর
সমাধান দেখতে
যতটা কঠিন মনে
হয়, তার চেয়ে
অনেক সহজ, এবং
আরও অনেক কিছু।
আপনি যদি
ডিস্ট্রিবিউটেড
ডেটাবেস,
ডিস্ট্রিবিউটেড
স্টোরেজ
সিস্টেম, অথবা
পিটার কীভাবে
এআই ব্যবহার
করে অসাধারণ
উচ্চ-মানের এবং
প্রোডাকশন-
রেডি কোড তৈরি
করেন তা জানতে
আগ্রহী হন,
তাহলে এই
পর্বটি আপনার
জন্য। এই
পর্বটি
উপস্থাপন করছে
টার্বো বাফার,
যা অবজেক্ট
স্টোরেজের উপর
ভিত্তি করে
নির্মিত একটি
অবিশ্বাস্যভাবে
স্কেলেবল,
দ্রুত এবং
সাশ্রয়ী
হাইব্রিড
সার্চ ইঞ্জিন।
এর
ইঞ্জিনিয়ারিং
টিমটির সাথে
সময় কাটানোর
পর আমি তাদের
বেশ পছন্দ করতে
শুরু করেছি।
টার্বো
বাফারের
ইঞ্জিনিয়ারিং
টিম সত্যিই
অসাধারণ কিছু
একটা করছে।
তারা সার্চকে
আরও দ্রুত,
সাশ্রয়ী এবং
স্কেলে আরও
নির্ভরযোগ্য
করার জন্য
তাদের স্টোরেজ
আর্কিটেকচারকে
একেবারে গোড়া
থেকে সম্পূর্ণ
নতুনভাবে
ডিজাইন করছে।
আপনি যদি
টার্বো
বাফারকে
অনুসরণ করেন,
তাহলে আপনি
জানেন যে তাদের
প্রাথমিক
সাফল্যের একটি
বিশাল অংশ ছিল
তাদের স্টোরেজ
আর্কিটেকচার।
একটি সফল
আর্কিটেকচারকে
নতুন করে
ডিজাইন করা
একটি বড়
ব্যাপার।
আপনার কোয়েরি
প্ল্যান ইউনিট
টেস্ট পাস করা
এক জিনিস, আর
প্রোডাকশনে
সঠিকতা ও
নির্ভরযোগ্যতা
বজায় রেখে
প্রতিটি
কোয়েরি
প্ল্যানকে
পারফরম্যান্সের
দিক থেকে সমান
বা তার চেয়ে
ভালো পর্যায়ে
নিয়ে আসা
সম্পূর্ণ
ভিন্ন জিনিস।
মজার ব্যাপার
হলো, টার্বো
বাফার পুরো
প্রক্রিয়াটির
ডকুমেন্টেশন
তৈরি করছে।
তাদের নতুন
স্টোরেজ
আর্কিটেকচার,
যেটিকে তারা টি
পাফ ভি ৩ (T Puff V3)
বলছে, তার জন্য
বেশ কঠিন
সিস্টেমস
ইঞ্জিনিয়ারিংয়ের
প্রয়োজন এবং
তারা এটি সবার
সামনেই তৈরি
করছে, আর
প্রকাশের সাথে
সাথে ডিজাইনের
সিদ্ধান্ত এবং
বেঞ্চমার্কের
ফলাফলও শেয়ার
করছে। তারা
তাদের এই
যাত্রার একটি
কাজের লগ রাখছে
এবং প্রথম
পোস্টটি আজই
প্রকাশিত
হয়েছে।
turbobuffer.com/v3- এ তাদের
অনুসরণ করুন।
হ্যাঁ,
ঠিকানাটি হলো
turbobuffer.com/v3। পিটার,
পডকাস্টে
আপনাকে স্বাগত
।
>> ওহ, আমি এখানে
আসতে পেরে খুশি
। এটা দারুণ
ব্যাপার।
>> আমি জানতে চাই,
আপনি মূলত
কীভাবে
প্রযুক্তির
জগতে এলেন? কখন
আপনার মনে হলো
যে কম্পিউটার
একটি
আকর্ষণীয়
বিষয়?
>> আমি এটা
প্রাথমিক
বিদ্যালয় বা
উচ্চ
বিদ্যালয়েই
বুঝতে
পেরেছিলাম।
অন্য অনেকের
মতোই,
সফটওয়্যার
ইঞ্জিনিয়ার
হিসেবে আমার
জন্য গেমিং ছিল
অনেকটা
প্রবেশদ্বারের
মতো। আমার মনে
আছে, শুরুর দিকে
আমার মা কোনো এক
সময় আইবিএম-এ
প্রোগ্রামিং
করতেন। তিনি
ঠিক কী করতেন তা
আমি
নিশ্চিতভাবে
জানি না, কিন্তু
আমাদের
বাড়িতে
সবসময় অ্যাপল
টু প্লাস,
অ্যাপল টু জিএস-
এর মতো
কম্পিউটার
থাকত। আমি সেই
যুগ থেকেই
এসেছি, উম, এবং
তার পরের সময়
থেকেই। আর
জানেন, আমি
বইয়ের দোকানে
যেতাম, বেসিক (BASIC
) এর উপর কোনো বই
বা ম্যাগাজিন
খুঁজে বের
করতাম,
প্রোগ্রাম
টাইপ করতাম, কী
হচ্ছে তার কোনো
ধারণাই ছিল না,
কিন্তু বুঝতেই
পারছেন, আমি যেন
এতে আসক্ত হয়ে
পড়েছিলাম।
যেমন, এই
কম্পিউটারগুলোতে
জিনিসপত্র
ঢুকিয়ে দিলেই
দারুণ সব জিনিস
তৈরি করা যায়।
তারপর আমি
কলেজে গেলাম
এবং ভাবলাম,
কম্পিউটারে তো
কোনো টাকা নেই।
আমি এ সম্পর্কে
কিছুই জানতাম
না। আমি
মেকানিক্যাল
ইঞ্জিনিয়ার
হিসেবে শুরু
করেছিলাম।
বাবার পদাঙ্ক
অনুসরণ করে।
>> ওহ, আপনি
মেকানিক্যাল
ইঞ্জিনিয়ারিং
আপনার
বিশেষায়িত
বিষয় হিসেবে
শুরু করেছিলেন?
>> হ্যাঁ, আমার
প্রধান বিষয়
হিসেবে, হ্যাঁ।
আমি সেখানে
গেলাম এবং আমার
মনে হলো, আমি এর
আগেও
কম্পিউটারের
কিছু কাজ করেছি
। এটা করাটা
একটা চরম
বোকামির কাজ
ছিল, কিন্তু
প্রথম
সেমিস্টারে
আমি
মেকানিক্যাল
ইঞ্জিনিয়ারিংয়ের
হোমওয়ার্কগুলো
করছিলাম এবং
সেগুলো ছিল
ভয়ংকর রকমের
কঠিন, যেমন একটা
সমস্যার জন্য
ছয় পৃষ্ঠা। আর
আমি ঠিক সেই
সময়েই একটা
সিএস (CS) কোর্স
নিয়েছিলাম
এবং সেটা ছিল
খুবই সহজ। আর
বাকি সবাই তাতে
ফেল করছিল। আমি
ভাবলাম, আমার
মাথায় সমস্যা
আছে। আমি ভুল
ক্ষেত্রে
এসেছি। আমাকে
বিষয়টা
বদলাতে দিন।
>> আর তারপর আপনি
বদলালেন।
>> তারপর আমি
বদলালাম, হ্যাঁ
।
>> কলেজে
থাকাকালীন
আপনার তৈরি করা
প্রথম
সফটওয়্যার
কোনটি ছিল?
নিশ্চয়ই
কলেজেই হবে,
যেটা দেখে
আপনার মনে
হয়েছিল, 'ঠিক
আছে, এই
সফটওয়্যারটা
নিয়ে আমি
গর্বিত, এটা
একটা সম্পূর্ণ
সফটওয়্যার।'
>> মানে, কলেজে
আমার রুমমেটের
সাথে মিলে আমি
যে বড় কাজটা
করেছিলাম,
আমাদের একটা
কোর্স ছিল, কী
যেন নামটা?
কম্পাইলার্স
কোর্স? আমার এখন
আর ঠিক মনে নেই,
এটা প্রায় ৩০
বছর আগের কথা,
আর আমরা
কোর্সটা করতে
করতে একঘেয়ে
হয়ে
গিয়েছিলাম।
তাই, আমরা
পাশাপাশি মজার
কিছু একটা করতে
চেয়েছিলাম।
আমি হাইস্কুলে
আমার সিনিয়র
জুনিয়র
সিনিয়র
ইয়ারে
জার্নালিজম
পড়েছিলাম এবং
কম্পিউটার
গ্রাফিক্স
কীভাবে করতে
হয় সে
সম্পর্কে আমার
ধারণা ছিল আর
আমি অ্যাডোবি
ফটোশপের মতো
কিছু একটা করতে
চেয়েছিলাম।
তাই, আমরা এটা
নিয়ে
নাড়াচাড়া
শুরু করি এবং GIMP
নামে এই
প্রোগ্রামটি
তৈরি করি, যেটা
অনেকেই চেনে।
আর GIMP-এর
পাশাপাশি আমি GTK
গ্রাফিক্স
লাইব্রেরিরও
অনেক কাজ করেছি
। তারপর থেকে
এটি
ব্যাপকভাবে
বিকশিত হয়েছে
। এটা বেশ মজার,
কারণ কলেজের পর
আমি এটা থেকে
কিছুটা সরে
এসেছিলাম।
কলেজ থেকে
বেরোনোর পর
প্রথম বছরের পর
আমি খুব বেশি
জড়িত ছিলাম না,
কিন্তু লোকজন
আমাকে এখনও
চেনে এবং এটি
আমার
কর্মজীবনে আরও
কিছু
আকর্ষণীয়
ঘটনার জন্ম
দিয়েছে।
>> আর এটা ছিল GIMP
শুরু করার মতো,
অনেকটা এমন যে
আপনি বলছেন, ঠিক
আছে, আমি
ফটোশপের মতো
কিছু একটা করতে
চাই, এটা আর
কতটা কঠিন হতে
পারে? আর তারপর
আপনি...এটা
কলেজে যা
শিখেছেন তার
মাধ্যমে হয়নি,
তাই না? এটা ছিল
অনেকটা
গ্রাফিক্যাল
ইঞ্জিন তৈরি
করা, রেন্ডারিং,
ড্রয়িং, ডেটা
স্ট্রাকচার, এই
সব কিছু নিজে
থেকে বের করা,
তাই না?
>> এই সব। সবকিছু
বের করে
ফেলেছিলাম।
আমার মনে আছে,
তখন আমি কিছু
পেপার দেখার
চেষ্টা
করছিলাম। আমার
রুমমেটও পেপার
দেখছিল। আমরা
সবকিছু বোঝার
চেষ্টা
করছিলাম। আর
এটা এমন একটা
জিনিস, যা শুরু
করার জন্য
আপনাকে কিছুটা
অনভিজ্ঞ হতে
হবে, কারণ আপনি
যদি জানতেন এটা
কতটা কঠিন হবে,
তাহলে আপনি
কখনোই এটা শুরু
করতেন না। তাই,
আমার মনে হয়,
আপনার মধ্যে এই
স্তরের
মানসিকতা
থাকতে হবে যে,
আপনি যদি
পরিশ্রমের
ব্যাপারে খুব
বেশি সচেতন হন,
তাহলে আপনি
কখনোই এতে
জড়াতে পারবেন
না। কিন্তু
তারপর যখন আপনি
কাজটা শুরু
করেন, তখন এটা
কেবল বাড়তেই
থাকে। এটা আরও
অনেক দূর
এগিয়ে যায়
এবং এক
পর্যায়ে আপনি
ভাবেন, বাহ, এটা
তো সত্যিই
অসাধারণ।
কিন্তু GIMP-এর
উপর আমাদের
কাজের সাথে
জড়িত একটা
মজার ছোট ঘটনা
আছে, যেটা
কিছুটা পরিচিত
। আমার মনে হয়
আমরা এটা নিয়ে
আগেও কথা বলেছি
। কিন্তু
ব্যাপারটা বেশ
আকর্ষণীয়, যখন
আমরা এমন একটা
পর্যায়ে
পৌঁছেছিলাম
যেখানে আমরা
ভাবছিলাম,
আমাদের এটা
জনসাধারণের
জন্য প্রকাশ
করা উচিত। আর
তখন নিউজগ্রুপ
ছিল যেখানে
লোকেরা
বিভিন্ন জিনিস
পোস্ট করত,
গ্রাফিক্সের
উপরও একটা ছিল,
এবং আমার মনে
আছে, GIMP-এর প্রথম
সংস্করণ
প্রকাশ করার
মাত্র কয়েক
সপ্তাহ আগে,
অন্য একজন
সেখানে এসে বলল,
"আমি এই
গ্রাফিক্স
প্রোগ্রামটি
নিয়ে কাজ করছি
।" এবং এটি GIMP-এর
সবকিছুই করত,
একেবারে
প্রতিটি কাজ,
এবং তার চেয়েও
বেশি কিছু। আর
আমরা ভাবলাম, "
ওহ, এটা তো বাজে
ব্যাপার। মনে
হয় আমরা এটা
নিয়েই কাজ
চালিয়ে যাব।
কাজটা মজাদার
ছিল।" এবং তারপর
আমরা GIMP প্রকাশ
করলাম, সেই অন্য
লোকটির কাছ
থেকে আর কোনো
খবর পাইনি। আর
আমি এটা থেকে
একটা ছোট
শিক্ষা পেলাম।
আপনার আইডিয়া
নিয়ে সবসময়ই
অন্য কেউ কাজ
করবে। তারা আগে
থেকে ঘোষণা করে
দিলেও আপনি
নিরুৎসাহিত
হতে পারেন না।
এর থেকে কিছুই
হয় না। আর এই
ধরনের কিছু
জিনিসের
পেছনের
মার্কেটিং-এ
আপনি যা শুনতে
পারেন, তার
অনেকটা এরকম যে,
‘মানে, আমি জানি
না আমরা তার
কৃতিত্ব কেড়ে
নিয়েছি কি না।
’ আমি নিজেও
নিশ্চিত নই কী
হয়েছিল। কী
ঘটেছিল তা আমি
কখনও খুঁজে বের
করিনি, কিন্তু
এর মধ্যে একটা
আসল শিক্ষা আছে
।
>> সুতরাং, এমন
একটা সম্ভাব্য
ভবিষ্যৎ আছে
যেখানে আপনি
কারও কাছ থেকে
এই ঘোষণাটি
পড়লেন যে, “আমি
এই পুরো
জিনিসটা তৈরি
করতে যাচ্ছি।”
আর আপনি ভাবলেন,
‘উম, এটা তো
অন্য কেউ করে
ফেলেছে,’ এবং
আপনি ফিরে
গিয়ে অন্য
কিছু করতে
লাগলেন, আর GIMP-এর
মতো কিছু আর
ঘটলই না। ঠিক
তাই।
>> ওয়াও।
>> হ্যাঁ।
>> আমার মনে হয়,
বিশেষ করে
আজকের
স্টার্টআপগুলোর
যুগে,
ব্যাপারটা এমন
যে, ‘নিজের
কাজটা করো,
অন্ততপক্ষে
সেটা সবার
সামনে তুলে ধরো,
’ তাই না?
>> আমি লোকেদের যে
পরামর্শ দিই তা
হলো, আপনার
হয়তো একটি
অনন্য ধারণা
থাকতে পারে,
কিন্তু খুব
সম্ভবত
পৃথিবীতে এমন
ডজনখানেক লোক
আছে যাদের
মাথায় একই
ধারণা এসেছে।
এবং তাদের
মধ্যে হয়তো দু-
একজন এটি নিয়ে
কাজ করছে,
কিন্তু অনেকেই
এটি নিয়ে কাজই
করে না। তারা
তাদের ধারণাটি
নিয়ে যা কিছু
শুরু করতে পারে
না, তাই করে।
সুতরাং, আপনি
যদি শোনেন যে
অন্য কেউ আপনার
একই ধারণা
নিয়ে কাজ করছে,
তাহলে আমি
মোটেও চিন্তিত
হব না। সম্ভবত
এটাই সত্যি।
জানেন, আমার
বর্তমান
কোম্পানিতে
আমরা কিছু
দারুণ জিনিস
নিয়ে কাজ করছি
। আমি আপনাকে
নিশ্চয়তা
দিচ্ছি যে
সেখানে
অন্যান্য
প্রতিযোগীরাও
একই জিনিস
নিয়ে কাজ করছে
। এবং শুধু জেনে
রাখুন যে এটি
একটি
প্রতিযোগিতা।
আপনাকে এর এই
দিকটি উপভোগ
করতে হবে, ভয়
পেলে চলবে না।
>> আর GIMP-এর ফলে কী
কী মজার জিনিস
হয়েছিল? আসলে,
>> আমি গ্রাফিক্স
নিয়ে কিছুটা
ক্লান্ত হয়ে
পড়েছিলাম।
একারণেই
কলেজের পর আমি
এটি থেকে সরে
এসেছিলাম। আমি
স্টোরেজ
সিস্টেমের
জগতে প্রবেশ
করি এবং
বিভিন্ন
জায়গায় কাজ
করি। আমি প্রথম
দিকের একটি
সার্চ ইঞ্জিন,
থিঙ্ক টু মি-তে
কাজ করেছি, এবং
তারপর অন্য
একটি
স্টার্টআপে
চলে যাই। সেই
সময়ে, আমার
প্রথম
স্টার্টআপে
কাজ করার সময়,
গুগলের ল্যারি
এবং সের্গেই-এর
সাথে আমার
পরিচয় হয়। তো,
দেখা গেল যে
ল্যারি, আমার
মনে হয় হয়তো
সের্গেই, আমি
ঠিক নিশ্চিত নই,
গুগলের লোগোর
একদম প্রথম
সংস্করণটি
জিম্প (GIMP)-এ তৈরি
করা হয়েছিল।
সুতরাং তারা
আমাদের চিনত।
কোনোভাবে
তাদের মধ্যে
একজন আমাকে
খুঁজে বের করে
গুগলে
ইন্টারভিউ
দিতে আসতে বলে।
আমি ২০০১ সালে
গিয়েছিলাম।
আর তখন
>> গুগলের বয়স
ছিল মাত্র ৩ বছর
।
>> হ্যাঁ, ৩ বছর।
আর আমি না
বলেছিলাম।
>> আপনি বলেননি।
>> আমি না
বলেছিলাম।
হ্যাঁ, না, আমার
মনে তখন এই
হিসাবটা
চলেছিল। আমি
ভাবছিলাম, গুগল
তো মাউন্টেন
ভিউতে। আমি তখন
সান
ফ্রান্সিসকোতে
থাকতাম এবং
যাতায়াতের
ঝক্কি পোহাতে
চাইনি। তাই আমি
অন্য একটি
স্টার্টআপে এক
বছর কাজ করি। আর
সেই চাকরিটার
এক বছর পর আমি
দেখলাম যে ওটা
নিয়ে তেমন
কিছু হচ্ছে না,
তাই ওরা আমাকে
আবার ফোন করে
বলল, "আচ্ছা,
তুমি কি আবার
ইন্টারভিউ
দিতে চাও?" আমি
বললাম, "অবশ্যই।
" ওরা বলল, "আগের
মতো স্টক অপশন
আমরা তোমাকে আর
দিতে পারব না।"
আমি বললাম, "ঠিক
আছে।" আমার মনে
নেই ওটা কী ছিল।
প্রথমবার ওরা
আমাকে কী অফার
করেছিল, সেটাও
আমার এখনও মনে
নেই। কিন্তু
আমি যদি
প্রথমবারই ওটা
নিতাম, তাহলে
সম্ভবত আরও
অনেক বেশি টাকা
আয় করতে
পারতাম। তবে
আমি ভালোই
করেছিলাম। আমি
অভিযোগ করছি না,
কিন্তু এটা সেই
ধরনের একটা
ব্যাপার...হ্যাঁ
। এখন যখন আমি
সেটার কথা ভাবি,
আমার মনে হয়,
ওহ, এর থেকে
অনেক ভালো কিছু
হয়েছে। একটা
সময় রেড হ্যাট
যখন পাবলিক
লিমিটেড
কোম্পানি
হচ্ছিল, তখন
তারা তাদের
আইপিও-র সময়
অনেককে বন্ধু
এবং পরিবারের
জন্য স্টক অফার
করেছিল।
আমাদেরও বন্ধু
স্টক অফার করা
হয়েছিল, আমি তা
থেকে অল্প কিছু
টাকা আয়
করেছিলাম, খুব
বেশি না, কিন্তু
এটা ছিল কলেজ
শেষ করার ঠিক
পরের ঘটনা। সেই
সময়ে এটা আসলে
বেশ
তাৎপর্যপূর্ণ
ছিল, বুঝলেন। তো
, আমি বলতে
চাচ্ছি যে এর
থেকে বেশ কিছু
ভালো জিনিস
বেরিয়ে এসেছে
।
>> আর আমিও GIMP
ব্যবহার করতাম,
মানে, আমি যখন
খুঁজছিলাম, তখন
ভাবলাম, 'ওহ,
আমার ফটোশপ
কেনার
সামর্থ্য নেই',
আর এই যে GIMP, এবং
এটা দিয়ে অনেক
কিছু করা যেত।
তাই আমি
নিশ্চিত যে
আপনার মতো আরও
অনেকেই আছেন
যারা এই
জিনিসটা
ব্যবহার করতে
পেরে
ইতিবাচকভাবে
প্রভাবিত
হয়েছেন। আর এর
সবচেয়ে ভালো
দিকটা হলো, যেটা
আমার সত্যিই
ভালো লেগেছিল,
তা হলো এটা
বিনামূল্যে
পাওয়া যেত,
কিন্তু আমি
কারও কাছ থেকে
কোনো
সফটওয়্যার
চুরি করছিলাম
না। বুঝতে
পারছেন আমি কী
বলতে চাইছি? এটা
সেই সময়ের কথা
যখন ফ্রি
সফটওয়্যার
আজকের মতো এতটা
প্রচলিত ছিল না
। ফ্রি এবং ওপেন
সোর্স আজকের
মতো এতটা
মূলধারার
বিষয় ছিল না।
>> হ্যাঁ, হ্যাঁ।
আর তারপর
আরেকটা দারুণ
ব্যাপার যা আমি
অনেকের কাছ
থেকে শুনেছি,
কারণ আমি যখনই
এটার কথা বলি,
মানুষ বলে, 'ওহ,
আমি এটা
ব্যবহার করেছি
।' আবার কিছু
লোক, মানে
সফটওয়্যার
ইঞ্জিনিয়াররা
বলে, 'আমি আপনার
কোড দেখে
প্রোগ্রামিং
শিখেছি।' আর আমি
তখন শুধু ভাবি, '
ওয়াও।' ওই
কোডটা আমি ৩০
বছর আগে
লিখেছিলাম এবং
তখন আমি এখনকার
মতো এত ভালো
সফটওয়্যার
ইঞ্জিনিয়ার
ছিলাম না।
>> আর তারপর আপনি
দ্বিতীয়বার
গুগলে যোগ
দিলেন। আপনি
হ্যাঁ বললেন।
কী নিয়ে কাজ
শুরু করেছিলেন?
>> হ্যাঁ, হ্যাঁ।
আমি যখন সেখানে
গেলাম, তারা বলল
, "দেখুন, এটা ছিল
একেবারে শুরুর
দিন, ২০০২ সাল।"
দিনটা ছিল ১ লা
এপ্রিল, একটা
শুভ দিন। আপনি
শুরু করলেন...
>> হ্যাঁ, ১ লা
এপ্রিল, ২০০২।
আমি সেখানে
গেলাম এবং তারা
বলল, হ্যাঁ,
আমরা আসলে গুগল
ইমেল তৈরি করতে
যাচ্ছি। তখন এর
নাম জিমেইল ছিল
না।
অভ্যন্তরীণভাবে
এর একটি কোডনেম
ছিল, যার নাম
ছিল ক্যারিবু।
>> ক্যারিবু।
>> হ্যাঁ। আমি
সেখানে গিয়ে
এটার ওপর কাজ
শুরু করলাম, এবং
আমাকে মূলত
ব্যাক-এন্ড
থ্রেডিং, মেসেজ
স্টোরেজ এবং
ইনডেক্সিং
সিস্টেম নিয়ে
কাজ করার
দায়িত্ব
দেওয়া
হয়েছিল। আর
প্রথম দেড় বছর
আমি বেশ
কঠোরভাবে
সেটার ওপর কাজ
করেছি। আসলে,
এটা চালু হতে
প্রায় ৩ বছর
লেগেছিল, যেটা
আসলে হয়েছিল
২০০৪ সালের ১ লা
এপ্রিল। আর
আপনার কি এটা
মনে আছে? এটাকে
একটা এপ্রিল
ফুল'স জোক
হিসেবে ধরা
হয়েছিল।
>> হ্যাঁ, আমার মনে
আছে। তো, আমি
ভুল হলে শুধরে
দেবেন, কিন্তু
লঞ্চের সময়
বলা হয়েছিল যে
জিমেইলে ১ জিবি
স্টোরেজ বা
ওইরকম কিছু
একটা থাকবে,
অথবা অসীম
স্টোরেজ। আমি ১
জিবি বলতে যা
বুঝিয়েছিলাম,
ঠিক তা নয়,
কিন্তু তখন
বেশিরভাগ ইমেল
প্রোভাইডার
বিনামূল্যে
প্রায় ১০ এমবি
স্টোরেজ দিত।
আর তারপর আপনি
হয়তো ৫০ এমবি
বা ১০০ এমবি-র
জন্য টাকা দিতে
পারতেন, কিন্তু
সেটা অনেক
ব্যয়বহুল ছিল
। এই লঞ্চটাকে
একটা এপ্রিল
ফুল'স জোকের মতো
মনে হয়েছিল,
কারণ কে-ই বা
আপনাকে ২০ থেকে
৫০ গুণ বা ১০০
গুণ বেশি
স্টোরেজসহ
একটি
বিনামূল্যের
ইমেল পরিষেবা
দিতে পারে?
>> আমরা
অভ্যন্তরীণভাবে
এটা নিয়ে
আলোচনা
করছিলাম। এটা
ইন্ডাস্ট্রির
জন্য এক ধরনের
চমকপ্রদ
প্রচারণার মতো
ছিল। হ্যাঁ,
আমার মনে হয়
হটমেইল বা
ইয়াহু মেইলের
জন্য আসলে ৪
এমবি ছিল। আর
তারপর এই
ব্যাপারটা ছিল
। এবং শুধু তাই
নয়, আমাদের আরও
অনেক বেশি
স্টোরেজ ছিল,
কিন্তু সেটা
খুব দ্রুত
ইনডেক্স হয়ে
যেত। তাই, আপনি
একটা সার্চ করে
প্রায় সঙ্গে
সঙ্গেই ফলাফল
পেয়ে যেতেন।
>> কিন্তু আপনি কি
>> আমাকে
অভ্যন্তরীণভাবে
বলতে পারেন, যখন
প্রজেক্টটা
শুরু হয়েছিল,
ঠিক আছে, আমরা
গুগলের জন্য
ইমেইল তৈরি করব,
তখন আপনি এবং
আপনার টিম
কীভাবে এই
সিদ্ধান্তে
পৌঁছালেন যে,
ঠিক আছে, আমরা
এই বিশাল
স্টোরেজ দেব
এবং এটা দ্রুত
করব? কারণ এটা
এমন একটা
সময়ের কথা, যদি
আপনি আমাদের
একটু পেছনে
নিয়ে যান,
কিন্তু আমার
যতদূর মনে পড়ে,
হার্ড ড্রাইভ
তখনও দামী ছিল।
সেগুলো
তুলনামূলকভাবে
ধীরগতির ছিল।
আমরা HDD-এর কথা
বলছি। আমার
যতদূর মনে পড়ে,
আমরা SSD-এর কথা
বলছি না।
কিন্তু আপনি কি
আমাদের সেই
সময়ে ফিরিয়ে
নিয়ে যেতে
পারেন, তখন
পরিস্থিতি
কেমন ছিল,
সীমাবদ্ধতাগুলো
কী ছিল, এবং
তারপর আপনারা
কীভাবে
উদ্ভাবন করে
এমন কিছু
করেছিলেন যা
আগে কখনও করা
হয়নি?
>> হ্যাঁ, হ্যাঁ।
তো, সেই সময়ে
গুগলের
অভ্যন্তরীণভাবে
GFS, অর্থাৎ গুগল
ফাইল সিস্টেম
নামে একটি
বিশাল
ডিস্ট্রিবিউটেড
ফাইল সিস্টেম
ছিল। হ্যাঁ। আর
আমরা মূলত
সংখ্যাগুলো
দেখছিলাম আর
ভাবছিলাম, "
হ্যাঁ, আমরা মনে
করি এর উপর
ভিত্তি করে
আমরা কিছু একটা
তৈরি করতে পারব
। সার্চ এবং
রিট্রিভাল
কীভাবে করতে
হয় সে
সম্পর্কে
তাদের অনেক
জ্ঞান আছে।" শেষ
পর্যন্ত যা হলো
তা হলো, সার্চ
রিট্রিভালের
জন্য তাদের যে
বিদ্যমান
সিস্টেমগুলো
ছিল, সেগুলোর
উপর ভিত্তি করে
তারা
প্রোটোটাইপ
তৈরি করা শুরু
করে এবং তারপর
সেটা সম্পূর্ণ
নতুন করে লেখা
হয়। আসলে আমি
এই কাজেই যুক্ত
হয়েছিলাম,
কারণ আমি যখন
সেখানে যাই, তখন
ইতিমধ্যেই
একটি
প্রোটোটাইপ
ছিল এবং তারপর
সেটা সম্পূর্ণ
নতুন করে লেখা
হয়। তো, আমি
থ্রেডিং-এর
দিকে ছিলাম।
আমরা একেবারে
শুরু থেকেই
মেসেজ থ্রেডিং
রাখার
সিদ্ধান্ত
নিয়েছিলাম, যা
একদিক থেকে বেশ
উদ্ভাবনীও ছিল
। সেই সময়ে
ইমেল সিস্টেমে
এটা প্রচলিত
ছিল না। আর
>> থ্রেডিং-এর
জন্য মেসেজ
থ্রেডের
প্রয়োজন হতো,
যার জন্য আমার
ধারণা
অনুযায়ী
ব্যাকএন্ডে
ডেটা
স্ট্রাকচার,
স্টোরেজ এবং
রিড
ইনটেনসিটির
মতো বিষয়গুলো
বের করার দরকার
পড়ত।
>> হ্যাঁ, এর মধ্যে
কিছু বি-ট্রিও
জড়িত ছিল।
আমার মনে হয়,
এটা সম্ভবত
দ্বিতীয়বার
ছিল যখন আমি বি-
ট্রি (B-tree)
প্রয়োগ
করেছিলাম এবং
আমার ধারণা আমি
এ পর্যন্ত
প্রায় এক ডজন
বার এটি
প্রয়োগ করেছি
।
>> ইমেইল থ্রেডের
সাথে বি-ট্রি-র
সম্পর্ক কী?
আসলে,
ব্যাপারটা হলো,
>> সেখানে একটি
স্টোরেজ থাকতে
হয় যেখানে
একটি থ্রেড
আইডি থাকে, একটি
মেসেজ এলে
আপনাকে সেটি
খুঁজে দেখতে
হয়। এটি
থ্রেডের সাথে
সাবজেক্ট বা
মেসেজ আইডি
মেলানোর জন্য
সার্চ ইনডেক্স
ব্যবহার করত।
বি-ট্রি-তে আরও
কিছু কাজও হতো,
কারণ আমরা
থ্রেডের অপঠিত
মেসেজের
সংখ্যা এবং এই
জাতীয়
বিষয়গুলোর
হিসাব রাখতাম।
তো, জানেন, এখন
আমার সব
খুঁটিনাটি
মনেও নেই। এটা
অনেক পুরোনো
ইতিহাস। এটা
২০০৪ সালের কথা
। আমরা এখন কোন
সালে আছি? ২০২৬
সালে? ২২ বছর
আগের কথা। তাই,
এটা আমার
স্মৃতি থেকে
প্রায় মুছেই
গেছে, কিন্তু
সেখানে অবশ্যই
বি-ট্রি ছিল।
সেখানে
ইনভার্টেড
ইনডেক্সেরও
ব্যবহার হতো।
এই সমস্ত কোড
এরপর থেকে
সম্পূর্ণ নতুন
করে লেখা
হয়েছে।
>> টিমের মধ্যে
বিনামূল্যে
ইমেইল পরিষেবা
দেওয়ার
অর্থনৈতিক
দিকটা কেমন ছিল?
আপনারা
নিশ্চয়ই এর
অর্থনৈতিক
দিকটা খতিয়ে
দেখেছেন। আমি
নিশ্চিত,
আপনারা এর জন্য
ভর্তুকি
দেওয়ার কিছু
হিসাব
কষেছিলেন, যাতে
খুব বড় কোনো
লোকসান না হয়?
>> হ্যাঁ, হ্যাঁ।
হ্যাঁ, হ্যাঁ।
মানে, আমরা তখন
বিভিন্ন
আইডিয়া নিয়ে
আলোচনা
করছিলাম এবং এক
পর্যায়ে একটা
আইডিয়া উঠে
আসে, "আরে, আমরা
হয়তো এতে
বিজ্ঞাপন দিতে
পারি।" আর এটা
ছিল একটা
অদ্ভুত
ব্যাপার। আমি
এর সাথে জড়িত
ছিলাম না। ইনি
হলেন পল বুখাইট,
যিনি পরে
ফ্রেন্ডফিড
এবং ফেসবুকে
কিছু দারুণ কাজ
করেন এবং আমার
মনে হয়, এক
পর্যায়ে
ওয়াই
কম্বিনেটরের
সাথে
পার্টনারশিপে
যুক্ত হন।
কিন্তু একদিন
রাতে তিনি
বললেন, "না, আমার
মনে হয় আমি
আমাদের
বিদ্যমান
বিজ্ঞাপন
সংক্রান্ত
কিছু ফিচার এর
মধ্যে
অন্তর্ভুক্ত
করে দিতে পারি,"
আর এটা
অভাবনীয়
সাফল্য পায়।
আর সেখান থেকেই
একটা বিশাল
ব্যবসা গড়ে
উঠেছিল, যা এক
কথায়
অবিশ্বাস্য।
তো, আমার মনে
হয়, এমন অনেক
কিছুই আছে যা
নিয়ে আপনার
একটা ধারণা
থাকে যে কী করা
যেতে পারে, যেমন
, "ওহ, আমাদের মনে
হচ্ছে এর জন্য
প্রতি
ব্যবহারকারীর
পেছনে বছরে
কয়েক ডলার খরচ
হবে। আমরা এটা
থেকে কীভাবে
আয় করতে পারি?"
আর আমরা এর জন্য
টাকা নিতে
চাইনি। অবশেষে,
তারা এর জন্য
টাকা নেওয়া
শুরু করে, কারণ
গুগল
ওয়ার্কস্পেসের
মতো বিষয়গুলো
তো ছিলই, কিন্তু
সেই সময়ে
ব্যাপারটা ছিল
অনেকটা এরকম, "
আহ, আমরা কি এটা
বিনামূল্যে
করতে পারি? ওহ,
মনে হচ্ছে এটা
লাভজনক হতে
পারে।" আর এর
জন্য কিছুটা
ঝুঁকি নিতে
হয়েছিল।
>> আর আপনার কি এর
উদ্বোধনের কথা
মনে আছে? আমি এই
কারণে
জিজ্ঞাসা করছি
কারণ আমার মনে
আছে যে এটি একটি
আমন্ত্রণ-
ভিত্তিক
ব্যবস্থা ছিল।
অর্থাৎ, সবাই
এতে যোগ দিতে
পারত না। আর আমি
ধরে নিচ্ছি যে
এটা
প্রত্যাশিত
চাহিদা
নিয়ন্ত্রণের
জন্যই করা
হয়েছিল, কারণ
আপনি এমন কিছু
বিনামূল্যে
দিচ্ছিলেন যা
আগে টাকার
বিনিময়ে
পাওয়া যেত এবং
এটা বেশ স্পষ্ট
ছিল যে এর
ব্যাপক চাহিদা
থাকবে। আপনি
এটা নিয়ে
কীভাবে
ভেবেছিলেন,
চাহিদা
পর্যবেক্ষণ
করেছিলেন, এবং
কতজনকে যুক্ত
করবেন তা ঠিক
করেছিলেন?
>> সত্যি বলতে, এটা
একটা দলগত
প্রচেষ্টা।
যদিও আমি এর
সাথে জড়িত
ছিলাম না। মানে,
আমার মনে আছে যে
কাজের চাপ
নিয়ে আমি
চিন্তিত ছিলাম,
আর তখনই একজন এই
ধারণা নিয়ে
আসে যে, "আরে,
আমাদের একটা
ইনভাইট-
ভিত্তিক
সিস্টেম করা
উচিত।" আর এটাও
যেন দ্বৈত
ভূমিকা পালন
করেছিল। তাই,
এটা একদিকে
যেমন ব্যবসার
প্রসারকে
কিছুটা সীমিত
করেছিল, তেমনই
অন্যদিকে এক
ধরনের
উত্তেজনাও
তৈরি করেছিল। "
ওহ, আমাকে একটা
জিমেইল ইনভাইট
এনে দিতে
পারবেন?"
>> হ্যাঁ।
>> আমার মনে আছে,
তখন লোকজন
আমাকে জিজ্ঞেস
করত আর আমি
বলতাম, "হ্যাঁ,
আপনি যতগুলো
চান, আমি আপনাকে
ততগুলোই
জিমেইল ইনভাইট
এনে দিতে পারব।"
>> আর তারপর,
সিস্টেমটা
তৈরি করার পর,
আপনি কোথায়
চলে গেলেন?
আপনার পরবর্তী
প্রজেক্ট কী
ছিল? বিল্ড
সিস্টেমটা কী
ছিল?
>> আচ্ছা, বিল্ড
সিস্টেম তো
ছিলই। মানে, ওটা
আমার মাথায়
একরকম মডেল করা
ছিল, কারণ আমি
জিমেইলের কাজ
করার পাশাপাশি
পার্ট-টাইম
হিসেবে ওটাও
করছিলাম। একটা
সময়, গুগলের
আসলে একটা বড়
মনো রিপো ছিল।
আমার মনে হয়
তাদের কাছে
এখনও মোনো রিপো
আছে।
>> হ্যাঁ, মোনো
রিপো আছে।
>> আর তারা গুগল ১
রিপো দিয়ে
শুরু করেছিল।
সেটা আমার আসার
আগের কথা।
তারপর তারা
গুগল ২-তে চলে
যায়। আমি যখন
গুগলে আসি, তখন
ওটাই ছিল। আর এক
পর্যায়ে আমরা
গুগল ২-এর কিছু
সমস্যা দেখতে
পাই। আর গুগল ২
ছিল একটা একক,
বিশাল মেকফাইল
। আমার মনে হয়,
এটার কিছু সাব-
মেকফাইলও ছিল,
কিন্তু এটা ছিল
বিশাল আর জটিল
একটা মেকফাইল।
তখন একজন আমার
কাছে এসে বলল,
আমার মনে হয়
আমরা কিছু একটা
করতে পারি।
বিল্ড
সিস্টেমের
প্রতি আমার
কিছুটা আগ্রহ
ছিল। আর আমি,
বলতে গেলে, গুগল
৩-এর ভিত্তিটা
তৈরি করে
দিয়েছিলাম।
এর সাথে অনেক
লোক জড়িত ছিল।
আমি গুগল ৩-এর
প্রাথমিক
কাজগুলো
করছিলাম। আর
গুগল ৩-এর
প্রাথমিক
ধারণাটা ছিল
এরকম যে,
মেকফাইল
লেখাটা বেশ
ঝামেলার। আমরা
বিল্ড ফাইল
নামের একটা
জিনিস চালু
করলাম। আর আমি
এটাকে পাইথন
ভাষার একটা
সরলীকৃত
সংস্করণ
হিসেবে তৈরি
করার
সিদ্ধান্ত
নিলাম, কিন্তু
সেই সময়েও এটা
পাইথনই ছিল।
এবং শেষে G config যা
তৈরি করত তা ছিল
একটি বিশাল মেক
ফাইল, কিন্তু
এমন একটি ফাইল
যা আপনাকে
লিখতে হতো না।
সময়ের সাথে
সাথে, এটি
বিকশিত হয়েছে
।
অভ্যন্তরীণভাবে
এটি ব্লেজ (Blaze)
হয়ে গেল। আরও
কিছু সিস্টেম
আছে। এখনও
সেখানে কিছু
জিনিসপত্র আছে
। আমি জানিও না
এটা কতটা জটিল
হয়েছে। আমি
অনেক, অনেক দিন
ধরে এটা দেখিনি
। তারপর
বাহ্যিকভাবে
এটি বেজেল (Bazel)
হয়ে গেল। এটি
বাক (Buck) হয়ে গেল
। আরও কিছু আছে,
জানেন, লোকেরা
ফেসবুকে গেল
এবং তারা পছন্দ
করল, গুগলে এটা
দারুণ ছিল। মেক
>> ফাইল বা মেক কেন
ঠিকমতো কাজ করত
না তার কারণ কী
ছিল? আমরা কি
বিল্ড
পারফরম্যান্স
নিয়ে কথা বলছি?
আমরা কি
রক্ষণাবেক্ষণযোগ্যতা
বা পঠনযোগ্যতা
নিয়ে কথা বলছি?
>> হ্যাঁ। তো, আমার
মনে হয় মেক
নিজে
ডিপেন্ডেন্সি
ঘোষণা করার
ক্ষেত্রে ঠিক
আছে, কিন্তু এটি
কিছুটা
অ্যাসেম্বলি
ল্যাঙ্গুয়েজের
মতো। এবং আপনি
আপনার সমস্ত
ডিপেন্ডেন্সি
অ্যাসেম্বলি
ল্যাঙ্গুয়েজে
লিখতে চাইতেন
না। এবং আপনি
যদি না জানতেন
যে আপনি কী
করছেন, তাহলে
ভুল করা এবং
ডিপেন্ডেন্সি
বাদ পড়ে
যাওয়া সহজ ছিল
। আর তাই, বিল্ড
ফাইলগুলোর
পেছনের
ভাবনাটা ছিল
অনেকটা এরকম যে,
এই
ডিপেন্ডেন্সিগুলোকে
আরও উচ্চ স্তরে
এবং আরও
পরিচ্ছন্ন
শব্দার্থের
সাথে প্রকাশ
করতে হবে। এর
মানে হলো, আমরা
এর সাথেই আছি।
এবং সেখান থেকে,
আপনি
অ্যাসেম্বলি
ল্যাঙ্গুয়েজে
কম্পাইল করতে
পারেন। এবং
তারপর অবশেষে,
লোকেরা ভাবল, ওহ
, আমাদের ওটাতে
কম্পাইল করার
দরকার নেই।
আমরা সরাসরি
ডিপেন্ডেন্সি
আপডেট ইঞ্জিন
ইমপ্লিমেন্ট
করতে পারি। আর
তখনই
পারফরম্যান্সের
উন্নতি সম্ভব
হয়েছিল।
>> তো, আমি যখন
গুগলে 'স্কেল'
নিয়ে খুঁজি,
তখন দেখি যে যখন
আপনার একটি বড়
রিপো থাকে,
সাধারণভাবে
আমার যা ধারণা,
তা হলো বড়
কোডবেসের জন্য
Bazel এবং Buck এত
জনপ্রিয়
হওয়ার কারণ
হলো এটি আপনার
বিল্ড
পারফরম্যান্স
উন্নত করতে
সাহায্য করতে
পারে। এটি
আপনাকে
ক্যাশিং থেকে
শুরু করে
স্মার্ট ক্যাশ
জেনারেশন,
এমনকি সরাসরি
পারফরম্যান্স
পর্যন্ত অনেক
বেশি বিকল্প
দেয়।
>> হ্যাঁ, ঠিক তাই।
হ্যাঁ।
>> তো, আপনি শুধু
একটু
ঘাঁটাঘাঁটি
করলেন এবং
ভাবলেন, ঠিক আছে
, আমি এই বিল্ড
ফাইলটি তৈরি
করব, সেটা করলেন
, আর লোকেরা
সেটা গ্রহণ করল
। কিন্তু, আপনার
পরবর্তী
প্রধান লক্ষ্য
কী ছিল?
>> আচ্ছা, আমি আগেই
জিএফএস (GFS),
অর্থাৎ গুগল
ফাইল
সিস্টেমের কথা
উল্লেখ করেছি,
এবং এক
পর্যায়ে আমরা
বুঝতে পারলাম
যে জিএফএস-এ
কিছু
সীমাবদ্ধতা,
বিশেষ করে
স্কেলেবিলিটির
বাধা ছিল।
যেহেতু আমি
জিমেইলের
স্টোরেজ
সিস্টেম নিয়ে
কাজ করছিলাম,
আমি আসলে অন্য
একটি স্টোরেজ
সিস্টেম
নিয়েও কিছুটা
ঘাঁটাঘাঁটি
করেছিলাম, মানে
এক ধরনের
গবেষণামূলক
কাজ যা আর
এগোয়নি।
কিন্তু যেহেতু
আমরা ওটা নিয়ে
কাজ করছিলাম,
তাই জিএফএস-এর
উত্তরসূরি
কলোসাস (Colossus)-এর
প্রতিষ্ঠাতা
দলে যোগ
দেওয়ার জন্য
আমন্ত্রণ পাই।
আর আমি যতদূর
জানি, কলোসাস
এখনও আছে।
গুগলে এটি
একাধিকবার
পরিবর্তিত
হয়েছে, কিন্তু
এটি দ্বিতীয়
প্রজন্মের
ডিস্ট্রিবিউটেড
ফাইল সিস্টেম।
>> তো, কলোসাস কী?
>> হ্যাঁ। আমি যখন
ডিস্ট্রিবিউটেড
ফাইল
সিস্টেমের কথা
বলি, বাইরে থেকে
আপনার হয়তো এস
৩ (S3)-এর মতো
কিছুর কথা মনে
হতে পারে। এটি
এক ধরনের ব্লব
স্টোরেজ, এস ৩-
এর মতোই এর একটি
ফ্ল্যাট
নেমস্পেস ছিল,
নাম দেওয়া হতো,
এবং সেখানে
একটি ছোটখাটো
স্তরবিন্যাস
ছিল, কিন্তু তা
খুবই সীমিত।
কিন্তু এটা POSIX
ফাইল
সিস্টেমের মতো
নয়। তাই, এতে
সম্পূর্ণ
ডিরেক্টরি
হায়ারার্কি
নেই, এমনকি
সম্পূর্ণ
পারমিশন
সিস্টেমও নেই।
এর অনেক কিছুই
পরে যোগ করা
হয়েছে।
কিন্তু,
ফাইলগুলো
আপনার লোকাল
মেশিনে
সংরক্ষিত থাকে
না। সেখানে
একটি ফ্লিট বা
এক ধরনের
সার্ভিস আছে,
যেখানে সমস্ত
ফাইল থাকে।
তারা ফাইলগুলো
হার্ড ড্রাইভ
বা এখনকার SSD-তে
লিখে রাখে, এবং
আপনার
ক্লায়েন্ট তা
অ্যাক্সেস
করতে পারে। আর
পুরোটাই
রেপ্লিকেট করা
থাকে, তাই কোনো
ক্র্যাশ বা
অন্য কিছু হলেও
আপনার ডেটা
হারানোর ভয়
থাকে না। আমি
জানি না কখন,
কিন্তু কোনো এক
সময়ে S3-তে
ইরেজার কোডিং
যুক্ত হয়, আমরা
Colossus-এ ইরেজার
কোডিং
করেছিলাম। এটা
একটা বড় ধরনের
অগ্রগতি ছিল।
>> কোন কোডিং?
>> হা। আমরা রিড-
সলোমন ব্যবহার
করতাম। তো, যারা
ইরেজার কোডিং-
এর সাথে পরিচিত
নন, তাদের জন্য
বলছি, আপনারা
হয়তো ভাবতে
পারেন যে, আমি
রেপ্লিকা
রাখতে চাই, এবং
হার্ড ডিস্কে RAID
নামে একটি
জিনিস আছে,
যেখানে আসলে
আমার সম্পূর্ণ
রেপ্লিকা
রাখার
প্রয়োজন নেই।
আমি আসলে, ধরুন, A
-এর সাথে A এবং B
যোগ করে,
সেগুলোকে
একসাথে XOR করতে
পারি, এবং এর
ফলে আপনি এই
ধরনের তৃতীয়
একটি সংস্করণ
পেতে পারেন।
এবং এর আরও অনেক
জটিল সংস্করণ
রয়েছে। রিড-
সলোমন অনেকটা
এরকম, আমার মনে
হয় এখন এর
চেয়েও ভালো
কোড আছে, কিন্তু
এটা করার জন্য
এটি অন্যতম
একটি পরিচিত
উপায়। অন্যতম
একটি
>> পরিচিত উপায়,
হ্যাঁ।
>> হ্যাঁ। এবং
আমাদের
অভ্যন্তরীণভাবে
একরকম
পথপ্রদর্শক
হতে হয়েছিল যে,
ওহ, আমরা কীভাবে
এটিকে একটি
ডিস্ট্রিবিউটেড
ফাইল সিস্টেমে
কার্যকর করব?
>> আপনারা কি
ল্যাটেন্সির
উপর মনোযোগ
দিয়েছিলেন,
নাকি আরও
দক্ষতার সাথে
ডেটা সংরক্ষণ
করার উপর?
>> এটা মূলত আরও
দক্ষতার সাথে
ডেটা সংরক্ষণ
করার বিষয়। তো,
GFS-এ খরচের
তারতম্য হয়,
যেখানে আপনি
আপনার ডেটার
দুটি বা একটি
কপি সংরক্ষণ না
করে তিনটি কপি,
অর্থাৎ
ট্রিপ্লিকেশন,
সংরক্ষণ করছেন,
যার ফলে তিনগুণ
বেশি স্টোরেজ
ব্যবহৃত হবে।
আর রিড-সলোমন (
Reed-Solomon) ব্যবহার
করে আপনি এই খরচ
অনেকটাই
কমিয়ে আনতে
পারেন। রিড-
সলোমন-এর জন্য
আমরা ঠিক কী
ব্যবহার
করেছিলাম তা
আমার এই
মুহূর্তে মনে
নেই, তবে আমার
মনে হয় এটা
মূলত ২x-এর মতো
ছিল। কিন্তু এর
সাথে আপনি
রিডানডেন্সিও (
redundancy) পাচ্ছেন।
সুতরাং, এর আকার
ছোট এবং
রিডানডেন্সিও
বেশি।
>> আর তাই, আমার
মনে হয়,
সহজভাবে বলতে
গেলে, আপনি যদি
বলেন, 'ঠিক আছে,
আমি আমার ডেটা
তিনটি
জায়গায়
রেপ্লিকেট
করতে চাই',
তাহলে আপনি
তিনটি নোড,
অর্থাৎ তিনটি
ফিজিক্যাল
মেশিন নেবেন
এবং বলবেন, 'কপি
এক, কপি এক, কপি
এক'। আমার ডেটা
তিনটি
জায়গায় আছে।
চমৎকার। যদি
একটি নষ্ট হয়ে
যায়, আমার কাছে
তখনও দুটি
থাকবে, দারুণ।
এবং তারপর আপনি
বলছেন যে,
এখানকার
অ্যালগরিদমটা
হলো, আপনি
তিনগুণ ডেটা না
নিয়ে বরং
দ্বিগুণ ডেটা
নিতে পারেন,
সেটাকে
স্মার্টভাবে
বিভিন্ন
মেশিনের মধ্যে
ভাগ করে দিতে
পারেন, অথবা
আপনি এর পরিমাণ
আরও কমাতে
পারেন; এবং
তারপরেও এমন
একটা ব্যাপার
থাকবে যে, ধরুন,
এর মধ্যে একটা
বিস্ফোরিত হলো,
কিন্তু আমার সব
ডেটা ঠিকই
থাকবে, কারণ এটা
অর্ধেক হয়ে
গেছে। এটা
>> একদম ঠিক। এবং
ধরুন, আপনি যদি
বিষয়টাকে
উচ্চস্তরে
বুঝতে চান,
তাহলে এর একটা
মানসিক মডেল
হলো, আপনি হয়তো
বলতে চাইবেন যে,
আমি এই ডেটার
আটটি রেপ্লিকা
রাখতে চাই।
অথবা আমার ঠিক
মনে পড়ছে না, S3
হয়তো নয়টি
ব্যবহার করে।
তারা আসলে এই
বিষয়ে
প্রকাশ্যে
কথাও বলেছে।
আপনার কাছে
ডেটার নয়টি
খণ্ড থাকবে,
কিন্তু সেই
খণ্ডগুলোর
যেকোনো পাঁচটি
ব্যবহার করে
ডেটাটিকে
পুনর্গঠন করা
যাবে। এর মানে
হলো, আপনি
যেকোনো চারটি
কপি হারালেও
আপনার ডেটা
পুনর্গঠন করতে
পারবেন। উম, আর
প্রায়শই
ব্যাপারটা
অনেকটা এরকম যে,
প্রথম পাঁচটি
অংশ হুবহু একই
রকম হয়, আর
বাকি চারটি হয়
এক ধরনের
প্যারিটি অংশ।
আমি কিছু
খুঁটিনাটি
বিষয় মনে
রাখতে ভুলে
গেছি, কিন্তু
ব্যাপারটা
অনেকটা এইরকমই
।
>> কিন্তু যখন
আপনি একটি
অ্যালগরিদম
তৈরি করেন, তখন
আপনি প্রমাণ
করতে পারেন যে
এই
অ্যালগরিদমটি
কাজ করবে, তাই
না? আমি জানি
সফটওয়্যার
ইঞ্জিনিয়ারিংয়ে
গণিত এবং
অ্যালগরিদম
এখন কিছুটা
সেকেলে, কিন্তু
এই ক্ষেত্রে
এটা সত্যিই
গুরুত্বপূর্ণ,
কারণ একবার
আপনি প্রমাণ
করতে পারলে যে
এই
অ্যালগরিদমটি
কাজ করে, এটি
কাজ করবেই।
>> এটা কাজ করবেই।
আর, জানেন, এর
পেছনের গণিতটা
অনেকটা
গ্যালোয়া
ফিল্ডস ওভার
জিএফ ২ (Galous fields over
GF2)-এর মতো, এই
ধরনের কিছু
একটা। আমি এর
পেছনের পুরো
গণিতটা কখনোই
ঠিক বুঝিনি।
কলেজে আরও বেশি
গণিত না করার
জন্য আমার
সবসময় আফসোস
হয়, কিন্তু
সেটার কোনো
দরকারও ছিল না।
রিডিং এবং
সোয়ারিং এই
পদ্ধতির
উন্নতি করেছিল,
তাই না? আমার
মনে হয় এটা
১৯৭০-এর দশকের
ঘটনা, যা
কমিউনিকেশন
নেটওয়ার্কের
সাথে
সম্পর্কিত ছিল
। সুতরাং, আপনি
শুধু সেটা নেন
এবং সেই
দক্ষতাকে কাজে
লাগান, কিন্তু
সেটার
সদ্ব্যবহার
করে স্টোরেজ
সিস্টেমে
এটিকে কার্যকর
করার জন্য এর
পেছনের সমস্ত
ইঞ্জিনিয়ারিং
করতে হয়।
>> আর তারপর
কলোসাসের মতো
একটি
ডিস্ট্রিবিউটেড
স্টোরেজ
সিস্টেম তৈরি
করার সময়,
ডেটাকে একটি
স্থিতিস্থাপক
কিন্তু
কার্যকর
উপায়ে
সংরক্ষণ করার
বাইরেও আর কী কী
বিষয় ছিল? আর
কী কী সমস্যা
ছিল যা আপনাকে
সমাধান করতে
হয়েছিল? আমি
সম্ভবত
শার্ডিং এবং রি-
শার্ডিং বা
মেটাডেটার মতো
গুরুত্বপূর্ণ
বিষয়গুলোর
কথা ভাবছি।
>> বিশেষ করে গুগল
যে স্কেলে কাজ
করতে চেয়েছিল,
GFS-এর এক ধরনের
স্কেলেবিলিটির
সীমাবদ্ধতা
ছিল। আমার মনে
হয়, একটি GFS
ক্লাস্টারে এক
হাজার মেশিন
থাকতে পারত এবং
এটি...যা শুনতে
অনেক বড় মনে
হলেও, আজকের
দিনে এটি
হাস্যকরভাবে
ছোট, তাই না?
২০০৪ সালের
জন্য এটি অনেক
বড় শোনায়। আর
তারপর গুগল বলল,
"না, আমাদের
১০,০০০ মেশিন
পর্যন্ত স্কেল
করার ক্ষমতা
দরকার ছিল।" এবং
কিছু
প্রতিবন্ধকতা
ছিল। একটি
জিএফএস
মাস্টার ছিল,
একটিমাত্র নোড,
এবং এটি কিছুটা
প্রতিবন্ধকতা
তৈরি করছিল।
আমরা ভাবলাম, "
আহ, সমস্ত
অবজেক্টের
মেটাডেটা
সংরক্ষণের
জন্য আমাদের
একটি
ডিস্ট্রিবিউটেড
মাস্টার
প্রয়োজন।" আর
সেই সময়ে
গুগলের কাছে
বিগটেবল (Bigtable)
নামে একটি
সিস্টেম ছিল।
আর তাই, কলোসাস (
Colossus) তার
মেটাডেটা
বিগটেবলের
ভেতরে সংরক্ষণ
করত। আর একটা
বিষয় যা নিয়ে
আমি কিছুটা
গর্বিত এবং
কিছুটা
বিব্রতও, তা হলো
—এটা আমার
নেওয়া একটা
ডিজাইন
সিদ্ধান্ত ছিল
যা আমি
নিয়েছিলাম
কিন্তু পরে
সফলও
হয়েছিলাম, আর
তা হলো আমরা
কলোসাসের
মেটাডেটার
জন্য বিগটেবল
ব্যবহার করতে
চেয়েছিলাম।
>> আর যারা
ডিস্ট্রিবিউটেড
সিস্টেম
সম্পর্কে ততটা
জানেন না, তাদের
জন্য বলি, একটি
ডিস্ট্রিবিউটেড
ফাইল সিস্টেমে
মেটাডেটা কী?
>> হ্যাঁ, এটা হলো
ফাইলগুলোর নাম
এবং প্রতিটি
ফাইলকে
কয়েকটি খণ্ডে (
chunk) ভাগ করা হয়।
আর সেগুলো কী
ছিল? ৬৪
মেগাবাইটের
খণ্ড। এবং
তারপর প্রতিটি
ফাইলের জন্য
খণ্ডগুলোর
একটি তালিকা
থাকতে হতো।
হ্যাঁ। এবং
তারপর আপনাকে
পর্যায়ক্রমে,
মাস্টারকে এটি
স্ক্যান করতে
হবে এবং
মেরামতের কাজ
করতে হবে। এবং
জানেন, কিন্তু
এর মধ্যে আরও
মেটাডেটা আছে,
তবে সংক্ষেপে
এটাই। তাই, আমরা
চেয়েছিলাম
কলোসাসের
মেটাডেটা
সংরক্ষণের
জন্য
বিগটেবলের মতো
একটি স্কেলেবল
সার্ভিস থাকুক
। জিএফএস-এর
সবচেয়ে বড়
ব্যবহারকারী
হলো বিগটেবল,
তাই আমরা
চেয়েছিলাম
বিগটেবল
কলোসাসের উপরে
কাজ করুক।
>> তো, আপনি
ব্যাপারটা
বুঝতে পারছেন,
ভেন
ডায়াগ্রামটা
দেখুন, বুঝলেন?
হ্যাঁ, আচ্ছা,
>> এখানে একটা
বুটস্ট্র্যাপিংয়ের
ব্যাপার আছে,
তাই না?
>> বুটস্ট্র্যাপিং
, হ্যাঁ।
>> তো, ওহ, হ্যাঁ।
>> হ্যাঁ।
>> কোনটা চালু হয়?
যেমন, আপনাকে
কোথাও কিছু মক
করতে হবে, তাই
না?
>> হ্যাঁ, না। মানে
, সেই সময়ে এটা
আসলে যেভাবে
কাজ করত এবং
তারা পরে এটা
বদলে দিয়েছে,
কারণ এটাই ছিল
শুরু করার এবং
আপনার যা আছে তা
কাজে লাগানোর
উপায়, এবং
অবশেষে আপনি
এটা থেকে
মুক্তি পান,
কিন্তু
বিগটেবলের
একটা ভিত্তি
ছিল যা
কলোসাসকে
ব্যবহার করত না
। একদিকে আছে
বিগটেবল
ব্যবহার করা
কলোসাস, এবং
অন্যদিকে আছে
কলোসাসের উপরে
থাকা সাধারণ
বিগটেবল।
>> আমি সেটার কথাই
বলছি।
>> আর এটা বছরের পর
বছর ধরে কাজ
করেছে, তাই আমি
জানিও না তারা
কখন এটা বাদ
দিয়েছে। তারা
কোনো এক সময়ে
এটা বাদ
দিয়েছে,
>> কিন্তু আমার
মনে হয়, এটা
শুনে মনে হয় যে
আপনি এমন হ্যাক
তৈরি করতে
পারেন যা
অনেকদিন ধরে
চলে, এটা জেনে
যে সেগুলো
হ্যাক, এবং
সেগুলো আপনাকে
কাজ শুরু করতে
সাহায্য করে,
তাই না?
>> কারণ যদি
আমাদের শুরু
থেকেই ওই ধরনের
বিগটেবল
লেয়ার
প্রয়োগ করতে
হতো, তাহলে
কলোসাস তৈরি
করতে যে সময়
লেগেছিল, তা
কেবল
বিলম্বিতই হতো
।
>> কলোসাসের মতো
একটি সিস্টেম
সম্পর্কে যে
জিনিসটি আমাকে
অবাক করে তা হলো
, এটি উচ্চ
থ্রুপুট, উচ্চ
প্রাপ্যতা এবং
কম লেটেন্সির
প্রতিশ্রুতি
দেয়—এটা
গুগলের
অভ্যন্তরীণ
বিষয় ছিল—
কিন্তু এমনকি
বাইরের
ডিস্ট্রিবিউটেড
ফাইল
সিস্টেমগুলোও
উচ্চ থ্রুপুট,
উচ্চ
প্রাপ্যতা এবং
কম লেটেন্সির
প্রতিশ্রুতি
দেয়। আর আমার
কাছে এটা
সবসময়ই একটু
পরস্পরবিরোধী
মনে হয়, যেমন,
আমার মনে হয়,
একটি
ডিস্ট্রিবিউটেড
ফাইল সিস্টেম
তৈরি করা বেশ
সহজ। আমার
সীমিত জ্ঞান
দিয়ে, আমি
সম্ভবত এমন
কিছু করতে
পারতাম যেখানে
আমার হয় উচ্চ
থ্রুপুট থাকবে
কিন্তু উচ্চ
ল্যাটেন্সি
থাকবে, কারণ
যখনই আমি কিছু
লিখি, আমি তা
সমস্ত
রেপ্লিকাতে
লিখে দিই। আপনি
ইতিমধ্যেই এটি
করার একটি
কৌশলের কথা
উল্লেখ করেছেন,
কিন্তু আপনি
কীভাবে
সামঞ্জস্য
করেন, কীভাবে
আপনি উচ্চ
থ্রুপুট থাকা
সত্ত্বেও কম
ল্যাটেন্সি
পাবেন, যখন ফাইল
সিস্টেমে
রেপ্লিকেশনও
চলছে?
>> মানে, এই
ডিস্ট্রিবিউটেড
ফাইল
সিস্টেমগুলোর
ল্যাটেন্সি
খুব কম নয়।
বিশেষ করে যখন
এগুলো হার্ড
ডিস্কে চলে, যা
সেই সময়ে
কলোসাস করত, যা
এস ৩ করে, তখন
আপনি আসলে
ল্যাটেন্সিটা
টের পান। তো,
যেমন S3 একটি হাই-
পারফরম্যান্স
সিস্টেম, তেমনই
গুগলের
প্রতিযোগী GCS, যা
কলোসাসের উপর
ভিত্তি করে
তৈরি, সেটির
পারফরম্যান্স
অবিশ্বাস্য
থ্রুপুট দেয়,
কিন্তু
প্রথমবার ডেটা
পড়ার
ক্ষেত্রে এর
ল্যাটেন্সি
প্রায় ২০ থেকে
৩০
মিলিসেকেন্ড
এবং এটি আপনার
হার্ড ডিস্কের
ল্যাটেন্সির
উপর নির্ভরশীল
। যদি আপনি এটি
SSD-তে ব্যবহার
করেন, তাহলে
ল্যাটেন্সি
কমে SSD-এর
কাছাকাছি চলে
আসে, কিন্তু
একেবারে
অত্যাধুনিক SSD-
এর
ল্যাটেন্সির
মতো হয় না। এটা
আমাদের
ইন্ডাস্ট্রিতে
ঘটে চলা এক
অদ্ভুত
ব্যাপার, কারণ
হার্ডওয়্যারগুলো
দিন দিন আরও
দ্রুত হয়ে
উঠছে। আজকাল
হার্ড ড্রাইভ
থেকে ডেটা
পড়তে হয়তো ৫
থেকে ১০
মিলিসেকেন্ড
সময় লাগে (মানে
, আমি হার্ড
ড্রাইভ কখনো
ব্যবহারই করি
না)। কিন্তু NVMe-
এর মাধ্যমে SSD
থেকে ডেটা
পড়তে লাগে ৫০
মাইক্রোসেকেন্ড
, ৫০
মাইক্রোসেকেন্ড
। অর্থাৎ, ১
মিলিসেকেন্ডে
১,০০০
মাইক্রোসেকেন্ড
থাকে। সুতরাং,
আমরা এখানে
বিশাল এক
পার্থক্যের
কথা বলছি।
>> আচ্ছা, এখন এমন
কিছু
স্টার্টআপ বা
ইনফ্রাস্ট্রাকচার
কোম্পানি আছে
যারা এই
সুযোগটা নিতে
শুরু করেছে যে
তারা একটি NVMe
লেয়ার
ব্যবহার করতে
পারে এবং এর
মাধ্যমে তারা
বিভিন্ন
জিনিসকে উন্নত
করতে পারে, তা
ভবিষ্যদ্বাণীমূলকভাবে
হোক বা না হোক।
কিন্তু, আপনি
যেমনটা বললেন,
যখন বাস্তব
পরিস্থিতি
বদলে যায়, তখন
তার উপরে এমন
সিস্টেম তৈরি
করা যায় যা এই
পরিবর্তনের
সুবিধা নিতে
পারবে।
>> হ্যাঁ, একদম ঠিক
। আর ব্যাপারটা
এমন নয় যে SSD-এর
কারণে
ডিস্কগুলো
অনেক দ্রুত
হয়েছে, বরং
নেটওয়ার্কগুলো
অনেক দ্রুত
হয়েছে। গুগল
বা অ্যামাজন
সেন্টারে
ইন্ট্রা-জোন
ল্যাটেন্সি যে
কতটা দ্রুত, তা
ভাবলে অবাক হতে
হয়। আগে এমনটা
ছিল না, কিন্তু
যখন আমরা
কলোসাস তৈরি
করছিলাম, আমার
ঠিক মনে নেই
সংখ্যাগুলো কী
ছিল, কিন্তু
একটি
নেটওয়ার্ক
রাউন্ড-ট্রিপ
করতে
মিলিসেকেন্ড
সময় লাগত, আর
এখন একটি জোনের
মধ্যে তা কমে
১০০
মাইক্রোসেকেন্ডে
নেমে এসেছে।
আমি যখন এই
জিনিসগুলো
দেখি, তখন অবাক
হয়ে যাই,
হার্ডওয়্যারের
লোকেরা সত্যিই
খুব ভালো কাজ
করেছে।
>> হ্যাঁ, মাঝে
মাঝে আমার মনে
হয় আমাদের
সফটওয়্যার
আরও অনেক বেশি
দ্রুতগতির
হওয়া উচিত, এবং
কিছু
দ্রুতগতির
সফটওয়্যার
আছেও বটে। মাঝে
মাঝে আমার
প্রায়ই মনে
হয়, আমরা কি এই
সমস্ত
অ্যাবস্ট্রাকশন
নিয়ে
অতিরিক্ত
আত্মতুষ্ট
হয়ে পড়ছি,
নাকি এই সাধারণ
হিসাবটাও করছি
না। সাইমন
এরিকসন এবং
টার্বো বাফার
এই সাধারণ
হিসাবের কথা
বলেন, যেখানে
আপনি ভাবেন, "
আচ্ছা, এই হলো
হার্ডওয়্যারের
তাত্ত্বিক
সীমাবদ্ধতা;
এসএসডি থেকে
ডেটা পড়তে
হয়তো ৩০
মাইক্রো
মাইক্রোসেকেন্ড
সময় লাগবে, এবং
তারপর, আমি
কীভাবে এমন
একটি সিস্টেম
তৈরি করতে পারি
যা এর যতটা
সম্ভব
কাছাকাছি হবে,"
এর উল্টোটা না
করে, যেখানে বলা
হয়, "ঠিক আছে,
একজন মানুষ
হয়তো ২০ মিলি
বা ১০০
মিলিসেকেন্ড
সময়টা খেয়াল
করবে, চলো আমরা
সেটা মাথায়
রেখেই
সিস্টেমটা
তৈরি করি।"
>> হ্যাঁ হ্যাঁ।
এবং কখনও কখনও
যখন আপনি কোনো
কিছুর
আর্কিটেকচার
তৈরি করেন, তখন
আপনাকে
মানুষের
উপলব্ধিযোগ্য
ল্যাটেন্সিগুলো
নিয়ে ভাবতে
হয়, কিন্তু
প্রায়শই যখন
আপনি স্টোরেজ
সিস্টেম
লেয়ার নিয়ে
কাজ করেন, জানেন
তো, আমি সাইমনকে
টার্বো বাফারে
কাজ করতে দেখি,
তারা সেখানে
দারুণ কাজ করছে
। আপনাকে
মেশিনের স্কেল
এবং মেশিনের
গতি নিয়ে
ভাবতে হয়, যা
মানুষের
উপলব্ধির
চেয়ে অনেক
বেশি দ্রুত।
যেমন একজন
মানুষ হয়তো
১০০
মিলিসেকেন্ডের
বিলম্ব সহ্য
করতে পারে, অথবা
আপনি যদি কোনো
গেম খেলেন,
আপনার হয়তো
প্রতি ৪
মিলিসেকেন্ডে
ফ্রেম রেট
প্রয়োজন হতে
পারে, কিন্তু
মেশিন তার
চেয়ে অনেক
অনেক দ্রুত গতি
চায়। সাইমন
বলে, "ন্যাপকিন
ম্যাথ"। আমি
এটাকে আলোর
গতির সংখ্যা
বলি এবং
>> কখনও কখনও এটা
আক্ষরিক
অর্থেই আলোর
গতি যা আপনাকে
>> জোনগুলোর
মধ্যে ক্রস-জোন
ল্যাটেন্সি,
ক্রস-রিজিওন
ল্যাটেন্সি,
ফাইবারের
মাধ্যমে আলোর
গতির সমান।
আপনি কি একটা
অদ্ভুত তথ্য
শুনতে চান?
>> আমি অদ্ভুত
তথ্য শুনতে
ভালোবাসি।
>> সারা বিশ্বে
ডেটার প্যাকেট
পাঠানোর
দ্রুততম উপায়
হলো এটিকে
মহাকাশে
পাঠানো।
>> এর কারণ কি এই
যে
শূন্যস্থানে
আলোর গতি বেশি?
>> বেশ খানিকটা
বেশি।
>> অথবা, এটা তো
পুরোপুরি
শূন্যস্থান
নয়।
>> কোনোভাবেই না।
>> হ্যাঁ। তাহলে
আপনি আরও বেশি
দূরত্ব
অতিক্রম করতে
পারবেন। হ্যাঁ
।
>> আসলে, আমি মনে
করি এটা করার
উপায় হলো আপনি
এটিকে সোজা
উপরের দিকে
পাঠাবেন। এবং
তারপর আপনি
এটিকে সোজা
উপরের দিকে
পাঠাবেন,
স্টারলিংকের
মধ্যে এটিকে
বাউন্স করাবেন,
এবং অন্য পাশ
দিয়ে নিচে
পাঠাবেন।
সুতরাং আপনি
এটিকে
বায়ুমণ্ডল
থেকে যত দ্রুত
সম্ভব বের করে
আনতে চান।
>> কিন্তু এখন যদি
আমরা ধরে নিই যে
এটি শুধুমাত্র
আলোর গতিতে চলে,
তাহলে এখানে এক
ধরনের ডিজিটাল
রূপান্তর ঘটবে
। সুতরাং, সেই
সিস্টেমটির
এটি
প্রক্রিয়া
করতে এবং
সম্পন্ন করতে
কত সময় লাগে তা
আপনাকে গণনা
করতে হবে; এবং
কিন্তু আপনি
বলছেন যে, যদি
আপনি এটি খুব
ভালোভাবে করেন,
তবে এটি একটি
অপটিক্যাল
কেবলের
মাধ্যমে
পাঠানোর
চেয়েও দ্রুত
হবে, এবং একটি
অপটিক্যাল
কেবল আলোর গতি
কমিয়ে দেয়,
তাই না?
>> হ্যাঁ, আলোর গতি
শুধুমাত্র
শূন্যস্থানেই
আলোর গতি এবং
অন্য সব
মাধ্যমে এটি
ধীর।
>> আমি হেজ ফান্ড
ইন্ডাস্ট্রি
নিয়ে
গভীরভাবে
গবেষণা
করেছিলাম এবং
তারা আমাকে ঠিক
কী তা বলেনি,
তারা বলেছে যে
তারা
স্যাটেলাইট
এবং
মাইক্রোওয়েভ
ব্যবহার করে,
এবং এই
জিনিসগুলোর
কিছু তারা
আপনাকে বলবে না
কারণ, জানেন তো,
এটা তাদের
নিজস্ব
ব্যাপার।
কিন্তু আমার
সন্দেহ ছিল যে
তারা হয়তো আরও
দ্রুত কোনো
উপায় খুঁজে
পেয়েছে, এবং
আমি মনে করি এটি
মোটামুটি
সুপরিচিত।
কিন্তু এর
বিস্তারিত
বিবরণে তারা
যাবে না কারণ,
আবারও বলছি, সেই
একই ব্যাপার,
কিন্তু, হ্যাঁ,
তো, তো।
>> ওরা সম্ভবত
জিনিসপত্র
বাউন্স
করাচ্ছে।
হ্যাঁ। হ্যাঁ।
তো, হাই
ফ্রিকোয়েন্সি
ট্রেডিং-এ ওরা
যে কাজগুলো করে
তার মধ্যে একটা
হলো, নিউ ইয়র্ক
আর শিকাগোর
মধ্যে
দূরত্বটা আসলে
মহাকাশে
পাঠানোর মতো
যথেষ্ট নয়।
তাই, ওরা সেখানে
মাইক্রোওয়েভ
বিম ব্যবহার
করছিল।
>> হ্যাঁ।
>> কিন্তু, মানে,
আপনি যদি
সত্যিই আরও
দ্রুত হতে চান,
তাহলে তাদের
মধ্যে একটা
ভ্যাকুয়াম
টিউব তৈরি করে
পাঠাতে হবে...
হয়তো ওরা
সেটাই করছে।
>> হয়তো ওরা ওটা
করছে।
>> হ্যাঁ। কিন্তু,
মানে, আজকালকার
পারফরম্যান্সের
ব্যাপারে যে
জিনিসটা আমার
কাছে দারুণ মনে
হয় তা হলো,
পারফরম্যান্সের
ক্ষেত্রে
আপনাকে এতগুলো
স্তরের দিকে
মনোযোগ দিতে
হয় যে, এই
গোলকধাঁধাটা
অনেক গভীরে চলে
যায়। আপনি
প্রায়
নিশ্চিতভাবেই
মাল্টি-
থ্রেডেড
সিস্টেমে কাজ
করছেন, তাই না?
আর আপনি ভাবছেন,
"ওহ, আমার একটা
মাল্টি-
থ্রেডেড
প্রোগ্রাম
দরকার। আমার
সেখানে
সিনক্রোনাইজেশন
থাকতে হবে।"
আচ্ছা, আপনি যদি
সিনক্রোনাইজেশন
এড়িয়ে চলেন,
তাহলেই সেরা
পারফরম্যান্স
পাবেন। এর একটি
অংশ হলো লক-ফ্রি
প্রোগ্রামিং,
আবার অন্য
অংশটি হলো
এমনভাবে
ব্যবস্থা করা
যাতে আপনার
একেবারেই লকের
প্রয়োজন না
হয়। আপনাকে
আপনার প্রসেসর
ক্যাশ
সম্পর্কে
সচেতন থাকতে
হবে। সিপিইউ-এর
উপরে ক্যাশের
একটি সম্পূর্ণ
সেটআপ রয়েছে।
যেমন, আপনি
রেজিস্টারগুলোকে
ক্যাশ হিসেবে
ভাবতে পারেন।
এবং আপনার L1, L2, L3,
এমনকি আপনার
মেমরি এবং
ডিস্ক পর্যন্ত
রয়েছে।
আপনাকে এই
সমস্ত স্তরের
দিকে মনোযোগ
দিতে হবে। এবং
যদি আপনি তা
করেন, আপনার
পারফরম্যান্স
অনেক ভালো হবে।
আর যদি আপনি এটি
উপেক্ষা করেন
এবং ভাবেন, "ওহ,
আমি ক্যাশ
অ্যাক্সেস
নিয়ে চিন্তা
করছি না। আমি সব
জায়গা থেকে
ডেটা
অ্যাক্সেস
করছি।" তাহলে
আপনার
প্রোগ্রাম
অনেক, অনেক
ধীরগতির হয়ে
যাবে। এবং কিছু
লোক এই বিষয়ে
প্রচুর মনোযোগ
দেয়। হাই-
ফ্রিকোয়েন্সি
ট্রেডিং, মানে,
তারা এটা
সারাদিন ধরে
করে। এবং আরও
অনেক জায়গায়,
যেমন, কেউ এই
বিষয়ে মনোযোগ
দেয় না। এবং এর
ফলে
হার্ডওয়্যার
বা
সফটওয়্যারের
পারফরম্যান্সের
ধীরে ধীরে
অবনতি ঘটে।
>> আমি লো-লেভেল
বিষয়গুলো
নিয়ে আরেকটু
কথা বলতে
চেয়েছিলাম,
তবে আলোর গতি
নিয়ে নয়, বরং
লো-লেভেল ডেটা
স্ট্রাকচার
এবং
প্রোগ্রামিং
ল্যাঙ্গুয়েজের
ফিচারগুলো
নিয়ে। আপনি
স্ট্যান্ডার্ড
লাইব্রেরিতে
কিছু অবদান
রেখেছেন, তাই না
?
>> আমি দু-একটা
করেছি। উম, ঠিক
স্ট্যান্ডার্ড
লাইব্রেরি নয়
। তো, মানে, আমি
বরাবরই ডেটা
স্ট্রাকচারের
প্রতি মুগ্ধ।
এটা এক কথায়
অসাধারণ। মানে,
আমি
সাধারণভাবে
অ্যালগরিদমগুলোকেই
পছন্দ করি।
যেমন ধরুন
সর্টিং
অ্যালগরিদমগুলো
। ওগুলো এক
কথায় অসাধারণ
। আপনি সম্ভবত
ইনসারশন সর্ট
এবং এই ধরনের
সবকিছু
ব্যাখ্যা করতে
পারবেন। আপনি
কি
>> কুইক সর্টও
ব্যাখ্যা করতে
পারবেন?
>> কুইক সর্ট একটু
কঠিন।
>> আমি জানি। আমি
জানি। এটাই তো
ব্যাপার।
>> হ্যাঁ। আর
তারপর আপনি...
>> না, না, কিন্তু
এটা একটা
স্মার্ট
অ্যালগরিদম।
>> হ্যাঁ। আর
তারপর আপনি এমন
একটা পর্যায়ে
পৌঁছান, যেখানে
মনে হয়, "ওহ,
দাঁড়ান।
সত্যিই খুব
বুদ্ধিমান কেউ
এটা তৈরি করেছে
।" তো, গুগলে কাজ
করার সময়
একসময় আমি যে
কাজগুলো করতাম,
তার মধ্যে একটা
ছিল এমন যে,
আমার এক
সহকর্মী আমার
কাছে এসে বললেন,
"জানেন? আমরা সব
জায়গায় STL
ম্যাপ
স্ট্রাকচার
ব্যবহার করছি।
আর এই STL ম্যাপ
স্ট্রাকচারটা
হলো একটা
ব্যালেন্সড
বাইনারি ট্রি।
আমার ঠিক মনে
পড়ছে না এটা
রেড-ব্ল্যাক
ট্রি ছিল, নাকি
কম্পিউটার
সায়েন্সের
ছাত্ররা যেসব
ব্যালেন্সিং
অ্যালগরিদম
ব্যবহার করে,
সেরকম অন্য
কোনো
অ্যালগরিদম
ছিল।" তিনি আমার
কাছে এসে বললেন,
"আমার মনে হয়
আমরা এর চেয়ে
ভালো কিছু করতে
পারি, কারণ
এখানে আসলে
একটা ক্যাশ
সমস্যা আছে।
প্রত্যেকবার
প্রতিটি নোড
পার হওয়ার
সময় আপনি একটি
ভিন্ন ক্যাশ
লাইন অতিক্রম
করছেন।" তিনি
এটা করার জন্য
অন্য কিছু, যেমন
একটি স্কিপ
লিস্ট ব্যবহার
করার কথা
ভাবছিলেন, যেটা
কিনা আরেকটি
অসাধারণ ডেটা
স্ট্রাকচার
এবং সবারই
একবার দেখা
উচিত। কিন্তু
এক পর্যায়ে
আমার মনে হলো, "
আসলে, এটাকে বরং
একটা বি-ট্রি-র
মতো লাগছে।"
যেহেতু আমি এর
আগেও কয়েকবার
বি-ট্রি
ইমপ্লিমেন্ট
করেছি, তাই আমি
বের করে
ফেলেছিলাম
কীভাবে এমন
একটি বি-ট্রি
তৈরি করা যায়
যা STL ম্যাপের
প্রায় সমস্ত
সিম্যান্টিকস
বাস্তবায়ন
করতে পারে। এটা
পুরোপুরি
নিখুঁতভাবে
কাজটা করতে
পারছিল না, এবং
এর কারণ হলো,
যখন আপনি একটি
বি-ট্রি নোডে
ডেটা ঢোকান, তখন
আপনাকে
জিনিসপত্র
এদিক-ওদিক
সরাতে হয়, তাই
আপনি
পয়েন্টার
স্ট্যাবিলিটি
পান না। এটা বেশ
মৌলিক একটা
বিষয়, কিন্তু
যদি আপনার
ব্যবহারের
ক্ষেত্রে এর
প্রয়োজন না-ও
হয়, আপনি আসলে
এর মধ্যে আরও
বেশি ডেটা
রাখতে পারবেন।
তো, বি-ট্রি-র
ব্যাপারটা,
এটাকে খুব
সহজভাবে
বর্ণনা করার
উপায় হলো, ধরুন
আপনার কাছে
মাত্র আটটি
আইটেমের একটি
ছোট তালিকা আছে,
এবং আপনি যদি
সাজানো ক্রমে
দ্রুত
অ্যাক্সেস
করতে চান, তাহলে
সেটা সংরক্ষণ
করার সেরা
উপায় হলো
আইটেমগুলোকে
সর্ট করা, তাই
না? আক্ষরিক
অর্থে, আপনার
কাছে কোনো ট্রি-
ই নেই। হ্যাঁ।
আটটি আইটেমের
জন্য,
>> এটাকে শুধু
একটা সাধারণ
তালিকায়
রাখুন।
>> একদম শুধু একটা
অ্যারে,
অ্যারেটা সর্ট
করুন, এবং তারপর
আপনি এর উপর
একটি লিনিয়ার
স্ক্যান করতে
পারেন, অথবা
একটি বাইনারি
সার্চ করতে
পারেন। এবং
প্রায়শই একটি
লিনিয়ার
স্ক্যান
দ্রুততর হয়।
এবং তারপর আপনি
যখন এটা নিয়ে
ভাবেন, তখন আমার
মনে হয়, "আচ্ছা,
আমি যদি আটটির
বেশি আইটেম
সংরক্ষণ করতে
চাই, তাহলে আমি
শুধু একটি নোড
রাখতে পারি
যাতে আটটি
আইটেম থাকবে,
এবং তারপর আমার
আরেকটি নোড
থাকবে, এবং
তারপর একটি
প্যারেন্ট নোড
থাকবে যা
সেগুলোকে
একসাথে
সংযুক্ত করবে।"
এবং এটা মূলত,
আপনি জানেন,
আপনি এটিকে নিচ
থেকে উপরে তৈরি
করার কথা ভাবেন
। আপনি আটটি
আইটেম সহ মাত্র
একটি নোড দিয়ে
শুরু করেন। ওহ,
আমাকে নবম
জিনিসটি
ঢোকাতে হবে, আমি
এটিকে দুটি
খণ্ডে ভাগ করব।
এবং দুটি
খণ্ডের মধ্যে,
একটিতে চারটি
থাকবে,
অন্যটিতে
পাঁচটি থাকবে,
তারপর আপনার
একটি
প্যারেন্ট নোড
থাকবে যা
সেগুলোকে
নির্দেশ করবে।
এবং তারপর আপনি
এর উপর
রিকার্সন
করবেন।
সংক্ষেপে এটাই
বি-ট্রি
অ্যালগরিদম।
সবাই যান এবং
এটি
ইমপ্লিমেন্ট
করুন। আসলে, এখন
আর কারোরই এটি
ইমপ্লিমেন্ট
করা উচিত নয়
কারণ আজকাল
আমাদের কাছে
এটি
ইমপ্লিমেন্ট
করার জন্য অন্য
কিছু আছে, যেমন
সমস্ত
অপটিমাইজেশন,
কারণ একটি বি-
ট্রিতে প্রচুর
অপটিমাইজেশন
করা যায়।
>> কিন্তু আমি
শুধু এই বিষয়ে
ফিরে যেতে চাই
যে ম্যাপের
জন্য আগে থেকেই
একটি
ইমপ্লিমেন্টেশন
ছিল। এবং তারপর
আপনার সহকর্মী
কোডটি দেখে
বললেন, "আমার
মনে হয় আমরা
আরও ভালো করতে
পারি।" আমি যা
বুঝতে চাই তা
হলো, আমার মতে,
এমন একজন
ব্যক্তি
হিসেবে যিনি এই
লাইব্রেরি বা
ডেটা
স্ট্রাকচারগুলো
কীভাবে তৈরি
হয় তার সাথে
জড়িত নন, আমি
সবসময় ভেবেছি,
এবং আবারও বলছি,
এটা হয়তো আমার
সরল বিশ্বাস,
কিন্তু সত্যিই
বুদ্ধিমান
লোকেরা যখন
বসেন, তারা
অত্যাধুনিক
প্রযুক্তি
দেখেন, তারা এটি
প্রয়োগ করেন,
এবং এটি আরও
দ্রুত হওয়ার
কোনো উপায় নেই
। সত্যি বলতে,
অতীতে আমার
সাথে এই নিয়ে
তর্কও হয়েছে
যে, "ওহ, চলো আরও
দ্রুত একটি
সর্টিং
সিস্টেম লিখি।"
যেন এটাই
সবচেয়ে দ্রুত
। কিন্তু আপনি
যদি আমাদের
একটু দেখাতে
পারতেন যে, আপনি
নিজে এর ভেতরে
থেকে কীভাবে
এটি কাজ করে এবং
কীভাবে আপনার ও
আপনার
সহকর্মীর মতো
অন্যরাও বলতে
পারে, "ওহ, আমরা
যদি অন্য কিছু
চেষ্টা করি?"
>> তো, আমার যতদূর
মনে পড়ে, তিনি
এই ধরনের একটি
বড়
অভ্যন্তরীণ
সিস্টেম নিয়ে
কাজ করছিলেন।
আমার মনে হয়
ওটার নাম ছিল
গাইয়া (Gaia),
যেটাতে আসলে
ম্যাপিং-এর
কাজটা করা ছিল।
যেমন, আপনি লগ
ইন করতেন, আপনার
ইউজার আইডি
থাকত, এবং
আপনাকে সেটা
খুঁজে বের করতে
হতো। আর তারা
ইউজার আইডি,
ইমেল থেকে শুরু
করে
ব্যবহারকারীর
মেটাডেটা
পর্যন্ত
সবকিছু একটা STL
ম্যাপে
সংরক্ষণ করত।
আর আপনি খেয়াল
করতেন, "এখানে
তো অনেক মেমোরি
ব্যবহৃত হচ্ছে
।" আর এটা
প্রোফাইলে
দেখা যেত। তখন
আমরা ভাবলাম, "
আচ্ছা, এর চেয়ে
ভালো করার জন্য
আমরা কী করতে
পারি?" আর
এভাবেই এর
সূত্রপাত
হয়েছিল। আর
জানেন, তিনি এটা
নিয়ে কাজ
করছিলেন এবং
আমার সাথেই কাজ
করছিলেন। আমরা
এই সমস্যাটা
নিয়ে ভাবতে
শুরু করলাম।
যেমন, "ওহ, আমরা
কি এর চেয়ে
ভালো কিছু করতে
পারি?" আর এটা
এখনকার মতো
গুগলের মতো নয়,
যেখানে তাদের
নিজস্ব
লাইব্রেরি
নিয়ে কাজ করার
জন্য একটা পুরো
টিম আছে।
তখনকার
ব্যাপারটা ছিল
অনেকটা এরকম যে,
সবাই নিজের
নিজের
সিস্টেমে কাজ
করত এবং একটি
শেয়ার করা
ডেটাবেসে
অবদান রাখত।
>> কিন্তু কিন্তু
কিন্তু আমার
মনে হয়,
ব্যাপারটা
আবার সেই আগের
কথাতেই ফিরে
যায়, যেমনটা
আপনি একটু আগে
বলছিলেন—
লেয়ারগুলো
ছাড়াই এগিয়ে
যাওয়া, এবং
কোনো কিছু
ঠিকঠাক না
লাগলে তা বোঝার
চেষ্টা করা।
যেমন, হঠাৎ করে
মনে হওয়া, "ওহ,
মেমোরি
ব্যবহারের
পরিমাণটা তো
অনেক বেড়ে
গেছে।" মানে,
শুধু প্রশ্ন
করা যে, এটা কেন
হচ্ছে? এবং যদি
আপনি এটা বলতে
পারেন বা বলতে
স্বচ্ছন্দ বোধ
করেন যে, "ওহ,
আমরা কি এ
ব্যাপারে কিছু
করতে পারি?", তাই
না?
>> এবং তিনি প্রথম
দিকে যে
বিষয়গুলো
লক্ষ্য
করেছিলেন, আমার
মনে হয় তার
মধ্যে একটি ছিল
যে, এটি ছিল
একটি ইন্টিজার
আইডি থেকে অন্য
কিছুর একটি
ম্যাপ। এবং
ধরুন, আপনি যদি
একটি রেড-
ব্ল্যাক ট্রি
দেখেন, প্রতিটি
নোডে আপনার
একটি ভ্যালু
থাকে যা আপনি
ম্যাপে স্টোর
করছেন, এবং
তারপর দুটি
পয়েন্টার
থাকে। আপনার
হয়তো একটি
ইন্টিজার আইডি
থাকতে পারে যা ৮
-বাইটের মতো,
এবং তারপর দুটি
পয়েন্টার।
>> তাই না? এবং
আপনি যখন এটি
দেখেন, তখন
আপনার মনে হয়, "
ওহ, এতে তো অনেক
বেশি ওভারহেড
মনে হচ্ছে।" আর
আপনি বলতে
পারেন যে,
>> বি-ট্রি-এর
স্পেশিয়াল
লোকালিটি আসলে
অনেক ভালো, এবং
সে কারণেই এটি
দ্রুততর ছিল।
কিন্তু একই
সাথে এটি
আকারেও ছোট ছিল,
কারণ এতে কম
পয়েন্টার
জড়িত ছিল।
>> আপনি গো (Go)-তেও
অবদান রেখেছেন,
তাই না?
>> হ্যাঁ। আচ্ছা,
সেটা পরে এসেছে
।
>> হ্যাঁ, হ্যাঁ,
এটা অনেক পরে
এসেছে, কিন্তু
আমরা কি সে
বিষয়ে কথা
বলতে পারি?
>> হ্যাঁ। ঠিক আছে,
এই অন্য
বিষয়গুলোর
মধ্যে একটা হলো,
যখন নতুন ডেটা
স্ট্রাকচার,
যেমন হ্যাশ
টেবিল নিয়ে
গবেষণাপত্র
বের হয়, আমি
সেদিকে মনোযোগ
দিই। কলেজে
ডেটা
স্ট্রাকচারের
প্রথম দিকের
বিষয়গুলোর
মধ্যে হ্যাশ
টেবিল অন্যতম।
যেমন, আমি
কীভাবে কী-
গুলোকে
ভ্যালুর সাথে
ম্যাপ করব
যেখানে ক্রম
গুরুত্বপূর্ণ
নয়। তখনই
হ্যাশ টেবিলের
প্রয়োজন হয়।
আর এটা করার
জন্য একেবারে
প্রথম দিকের
কিছু উপায় ছিল
। আমি
একাধিকবার
হ্যাশ টেবিল
ইমপ্লিমেন্ট
করেছি।
ব্যাপারটা
অনেকটা এরকম যে,
আপনি আপনার কী (
key) নেন, যেটা
একটা স্ট্রিং
হতে পারে, এবং
সেটাকে একটা
ফাংশনের মধ্যে
দিয়ে চালান, আর
ফাংশনটা একটা
ইন্টিজার (integer)
আউটপুট দেয়,
এবং তারপর আপনি
সেটাকে
বাকেটের (buckets)
একটা অ্যারেতে
ম্যাপ করেন, এবং
যদি একাধিক
জিনিস একই
বাকেটে ম্যাপ
করা থাকে, তাহলে
আপনার একটা
লিঙ্কড লিস্ট (
linked list) থাকতে হবে
।
>> আপনার একটা
লিঙ্কড লিস্ট
আছে, হ্যাঁ। এটা
হলো একটা সরল
ইমপ্লিমেন্টেশন
(naive implementation), তাই
না?
>> সরল
ইমপ্লিমেন্টেশন
। বেশ ঘন ঘন
ব্যবহৃত হয়।
এবং সময়ের
সাথে সাথে,
মানুষ হ্যাশ
টেবিল (hash table)
করার আরও অনেক
ভালো উপায়
আবিষ্কার
করেছে। এমন
একটা পদ্ধতি
আছে যেটাকে বলা
হয় হ্যাশের
চেইনিং (chaining),
আরেকটা কৌশল
আছে যাকে বলা
হয় ওপেন
অ্যাড্রেসিং (open
addresses), যেখানে
আসলে একটা
লিঙ্কড লিস্ট
না রেখে, আপনি
শুধু এটাকে
আবার হ্যাশ
করেন এবং
এগিয়ে যান,
অথবা পরবর্তী
বাকেটগুলোতে
গিয়ে খুঁজে
বের করেন যে
আপনার কোথায়
থাকা উচিত। এবং
আমার মনে আছে এই
নতুন কৌশলটা
সম্পর্কে
পড়ার কথা। এটা
গুগলের কিছু
লোকের কাছ থেকে
এসেছিল। আমার
বিশ্বাস এটা
তাদের সুইস
অফিস থেকে
এসেছিল, কারণ
এটাকে সুইস
টেবিল (Swiss tables)
বলা হতো।
>> হ্যাঁ, হ্যাঁ।
আমার বিশ্বাস
নামটা ওখান
থেকেই এসেছে।
>> হ্যাঁ, হ্যাঁ।
আমার মনে হয়,
নামকরণটা ওখান
থেকেই এসেছে।
আমি এ ব্যাপারে
নিশ্চিত নই, তবে
আমার মনে আছে
আমি এটা নিয়ে
পড়েছিলাম।
এরপর আমি বেশ
কিছুদিন ধরে Go
নিয়ে কাজ
করছিলাম, এবং Go-
তে একটি বিল্ট-
ইন ম্যাপ
স্ট্রাকচার
আছে। এটি একটি
হ্যাশ টেবিল,
এবং এটি একটি
অত্যন্ত
অপটিমাইজড
হ্যাশ টেবিল,
কারণ Go টিম,
অর্থাৎ Go
রানটাইম টিম,
খুবই দক্ষ। এবং
বিভিন্ন
ব্যক্তি Go-এর
জন্য একটি সুইস
টেবিল
ইমপ্লিমেন্টেশন
তৈরি করার
চেষ্টা করেছেন
। আমি সেগুলোর
কয়েকটি
পরীক্ষা করে
দেখেছি এবং
আমার মনে
হয়েছে, সুইস
টেবিল যা করে তা
বেশ আকর্ষণীয়
। আমি একটু পরেই
ব্যাখ্যা করব
এটি কীভাবে কাজ
করে, কিন্তু আমি
যখন এটি দেখলাম,
তখন মনে হলো,
রানটাইমের
পারফরম্যান্সকে
হারানো সত্যিই
কঠিন।
রানটাইমটি
সত্যিই খুব
ভালো ছিল। আমি
জানতাম যে আমি
বেশ কিছুদিন
ধরে এটি নিয়ে
কাজ করতে চাই,
এবং অবশেষে
আমাকে একটি
ব্যবসায়িক
সফরে ভারতে,
ব্যাঙ্গালোরে
যেতে হয়েছিল।
আর তাই আমি একটি
দীর্ঘ সফরে
ছিলাম।
>> হ্যাঁ।
>> এটা সবসময়
এভাবেই শুরু
হয়।
>> আর আমি ভাবলাম,
আমি এটাকে আরও
উন্নত করার
চেষ্টা করব।
আমি এটাকে
যথেষ্ট উন্নত
করতে
পেরেছিলাম, যার
ফলে কিছু
বেঞ্চমার্ক
আরও দ্রুত
হয়েছিল।
>> ওয়াও।
>> আর তখন আমি
ভাবলাম, এটা
একজন
ইঞ্জিনিয়ারের
জন্য অনেকটা
ক্যাটনিপের
মতো, যে আমি কি
সবকিছু আরও
দ্রুত করতে
পারব, আমি কি
বাকি সবকিছু
বের করতে পারব,
বুঝলেন।
রানটাইম টিমের
কাছ থেকে কিছু
সাহায্য পেলাম
। Go ইস্যু
ট্র্যাকারে
একটি ইস্যু আছে,
যেখানে
অন্যরাও এটা
করার চেষ্টা
করছিল, কারণ
অনেকে
প্রস্তাব
দিয়েছিল, "চলুন
সুইস টেবিল
ব্যবহার করা
যাক," এবং Go
টিমের লোকেরা
বলছিল, "আসলে,
আমরা সব
খুঁটিনাটি
জানি না, আমাদের
এটা-সেটা দেখতে
হবে।" সেখানে
কিছু ধারণা ছিল
যা সেগুলোকে
একত্রিত
করেছিল, এবং এমন
এক পর্যায়ে
পৌঁছেছিল
যেখানে আমার
কাছে একটি
সম্পূর্ণ
ইমপ্লিমেন্টেশন
ছিল যা
বেশিরভাগ
বেঞ্চমার্কে
দ্রুততর ছিল,
সবগুলোতে নয়,
তবে বেশিরভাগে
। এবং তারপর Go
টিমের লোকেরা
অবশেষে এটি
গ্রহণ করে এবং
এটিকে
চূড়ান্ত
পর্যায়ে
নিয়ে যায়।
>> আর তারপর, আপনি,
মানে, আপনিই তো
এই ধারণাটা
নিয়ে
এসেছিলেন, আপনি
এমন একটা
পর্যায়ে
পৌঁছেছিলেন
যেখানে আপনি
এমন একটা
ইমপ্লিমেন্টেশন
দেখাতে সক্ষম
হয়েছিলেন যা
দেখিয়েছিল যে
কিছু
বেঞ্চমার্ক
কতটা দ্রুত ছিল,
এবং তারপর আপনি
গো (Go) টিমের
কিছু লোকের
সাথেও কাজ করা
শুরু করেছিলেন
।
>> আসলে, আমি ঠিক
তেমনটা করিনি,
আমি এমন একটা
ইমপ্লিমেন্টেশন
তৈরি করেছিলাম
যেটা আমরা শেষ
পর্যন্ত আমার
কোম্পানিতে
ব্যবহার করেছি
। এটা আমাদের
ব্যবহারের
ক্ষেত্রের
জন্য ভালো ছিল,
কিন্তু এটাকে
রানটাইমে
যুক্ত করাটা
সম্পূর্ণ অন্য
একটা
পর্যায়ের
ব্যাপার।
>> কিন্তু তারপর
আপনি দেখালেন,
এই যে এই
ইমপ্লিমেন্টেশনটা
, এবং তারপর
তারা সেই
অনুপ্রেরণা আর
ধারণাগুলো
নিয়ে বলল, "
>> বাহ, এটা তো
দারুণ, আমরা
এটাকে আরও
দ্রুত করতে চাই
।" তারা সবসময়
রানটাইমকে আরও
দ্রুত করার
উপায় খোঁজে,
এবং তারা বলল, "
ওহ,
>> দাঁড়ান।" আর
তারপর, আপনি এই
অবদানটা
রেখেছিলেন
গুগল ছাড়ার
অনেক বছর পর,
তাই না? তাহলে
এটা বাইরের
পক্ষ থেকে করা
হয়েছিল।
>> এটা বাইরের
পক্ষ থেকে করা।
>> এটা অসাধারণ।
>> হ্যাঁ, এবং
অন্যরাও বাইরে
থেকে বিভিন্ন
জিনিস অবদান
রাখে। জানেন,
আমাদের আরেকজন
সহকর্মী ছিলেন,
তিনি CRC-এর একটি
ইমপ্লিমেন্টেশনে
অবদান
রেখেছিলেন,
মানে CRC-এর জন্য
কিছু জিনিস
অ্যাডাপ্ট
করেছিলেন?
>> যেমন
>> সাইক্লিক
রিডানডেন্সি
চেকসাম।
>> হুম।
>> হ্যাঁ, ইন্টেল
কিছু পেপার
প্রকাশ করেছিল
যে কীভাবে
অ্যাসেম্বলিতে
খুব দ্রুত CRC করা
যায় এবং তিনি
সেটির একটি
ইমপ্লিমেন্টেশনে
অবদান
রেখেছিলেন।
আপনি এই ধরনের
অনেক জিনিস
দেখতে পাবেন
যেখানে, লোকেরা
বাইরে থেকে
অবদান রাখছে।
এটা খুব বেশি
নয়, মানে আমি
আসলে পুরো
বিস্তারিত
জানি না, কিন্তু
জানেন, লোকেরা
নিয়মিত এই
জিনিসগুলিতে
অবদান রাখছে।
>> পিটার এইমাত্র
বর্ণনা করলেন
কীভাবে সুইস
টেবিলের কাজটি
একত্রিত
হয়েছিল, গো
ট্র্যাকারের
একটি ইস্যু
ট্র্যাকার
ব্যবহার করে
যেখানে
বিভিন্ন
ব্যক্তি কাজে
অবদান
রেখেছিলেন এবং
তারপরে গো টিম
এই সবকিছুকে
চূড়ান্ত
পর্যায়ে
নিয়ে
গিয়েছিল।
এখানেই আমাকে
আমাদের সিজন
স্পনসর
লিনিয়ারের
কথা উল্লেখ
করতে হবে, যা
মানুষ এবং
এজেন্ট উভয়ের
মধ্যে কাজ
সমন্বয় করার
একটি জায়গা।
এজেন্টদের
সাথে আমাদের
বেশিরভাগ
যেভাবে কাজ করে
সে সম্পর্কে
আমি একটি জিনিস
লক্ষ্য করেছি
যে এটি মূলত একক
খেলোয়াড়ের
কাজ। আপনি একটি
টার্মিনাল UI
খোলেন, একটি
এজেন্টের সাথে
আলোচনা করেন
এবং এটি
সাধারণত একটি PR
তৈরি করে।
কিন্তু আপনার
দলের বাকি
সদস্যরা সেই
চ্যাটে কী
ঘটেছে সে
সম্পর্কে
কিছুই জানতে
পারে না, যদি না
আপনি তাদের
বলেন বা পুরো
হিস্ট্রি কপি
করেন। আর যখন
দলের সবাই
এভাবে কাজ করে,
তখন এমন অনেক
কাজ হয় যা দলের
বাকিদের চোখে
পড়ে না।
লিনিয়ারের
মতে, এজেন্টের
কাজ হওয়া উচিত
দলগত কাজ। আজও,
দলগুলো করণীয়
কাজ নির্ধারণ
করতে লিনিয়ার
ব্যবহার করে।
এখন, লিনিয়ার
একটি কোডিং
এজেন্টের কাছে
কোনো ইস্যু
অর্পণ করতে
পারে। এই
এজেন্টটি হতে
পারে কোডেক্স
বা কার্সরের
মতো কোনো এআই
এজেন্ট, যার
সাথে লিনিয়ার
ইন্টিগ্রেট
করে, অথবা
লিনিয়ারের
নিজস্ব এজেন্ট,
বা একটি কাস্টম
এজেন্ট।
যেভাবেই হোক,
যিনি কাজটি
অর্পণ করছেন,
সেই
ইঞ্জিনিয়ারই
ফলাফলের জন্য
দায়ী থাকেন।
লিনিয়ারের
কাজের যে
বিষয়টি আমার
সবচেয়ে বেশি
ভালো লাগে তা
হলো, কাজটি
দৃশ্যমান থাকে
। আপনার
সতীর্থরা
এজেন্টের সেশন
অনুসরণ করতে
পারে, তার তৈরি
করা পিআর (PR)
দেখতে পারে এবং
রিভিউতে যোগ
দিতে পারে।
এজেন্টের
মাধ্যমে আমরা
একক
খেলোয়াড়ের
কাজ থেকে বহু
খেলোয়াড়ের
ইঞ্জিনিয়ারিং
কাজে চলে এসেছি
। ওহ, আর
লিনিয়ারের
আরেকটি বিষয়
যা আমার ভালো
লাগে, তা হলো
খরচের উপর এর
মনোযোগ।
লিনিয়ার
এজেন্টের অটো
রাউটিং এমন
একটি মডেল বেছে
নেয় যা কাজটি
করার জন্য
সবচেয়ে
উপযুক্ত।
টিমগুলো
ব্যবহার
নিরীক্ষা করতে
এবং সীমা
নির্ধারণ করতে
পারে, ব্যবহার
ট্র্যাক করতে
পারে, যাতে খরচ
নিয়ন্ত্রণের
বাইরে চলে না
গিয়েই আপনি
সক্ষম এজেন্ট
ব্যবহার করতে
পারেন।
linear.app/pragmatic- এ যোগ
দিন। পিটার এর
আগেও গাইয়া (Gaia)-
র কথা উল্লেখ
করেছিলেন, যা
হলো গুগলের
অভ্যন্তরীণ
সিস্টেম যা
লগইনগুলোকে
ব্যবহারকারীদের
সাথে ম্যাপ করে
। এটা
আশ্চর্যজনক
নয় যে গুগল এই
সিস্টেমটি সহ
সমস্ত সিস্টেম
কাস্টমভাবে
তৈরি করেছে,
কিন্তু আমাদের
বেশিরভাগই
আমাদের
অভ্যন্তরীণ
গাইয়া তৈরি
করব না। এটি
আমাদের সিজন
স্পনসর,
ওয়ার্কওএস (WorkOS)
-এর প্রসঙ্গে
নিয়ে আসে।
আপনি
ওয়ার্কওএস-কে
আমাদের মতো
সাধারণ
মানুষের জন্য
গাইয়া-র মতো
কিছু একটা
ভাবতে পারেন।
এমন
আইডেন্টিটি
ইনফ্রাস্ট্রাকচার
যা অন্যথায়
আপনাকে নিজেই
তৈরি করতে
কয়েক
ত্রৈমাসিক
সময় ব্যয়
করতে হতো।
ওয়ার্কওএস-এ
রয়েছে
সিঙ্গেল সাইন-
অন, এসসিআইএম (SCIM)
ডিরেক্টরি
সিঙ্ক, অডিট লগ,
রোল-ভিত্তিক
অ্যাক্সেস
কন্ট্রোল—মূলত
একটি বড়
গ্রাহকের
নিরাপত্তা দল
যা যা চায়, তার
সবকিছুই
কয়েকটি
পরিষ্কার
এপিআই (API)
হিসেবে সরবরাহ
করা হয়।
এভাবেই
কোম্পানিগুলো
তাদের নিজস্ব
অভ্যন্তরীণ
আইডেন্টিটি
প্ল্যাটফর্ম
তৈরি না করেই ‘
আমাদের একটি
লগইন আছে’ থেকে
‘আমরা ফরচুন
৫০০’
কোম্পানির
কাছে বিক্রি
করতে সক্ষম হই।
এবং
ওয়ার্কওএস
ইতিমধ্যেই
অভিন্ন
অনুমোদন
সমস্যার
পরবর্তী
সংস্করণের
জন্য কাজ করছে।
তাদের নতুনতম
পণ্য হলো
এয়ারলক (Airlock), যা
এআই (AI)
এজেন্টদের
জন্য অনুমোদন
স্তর। একবার
ভেবে দেখুন, যখন
আপনি কোনো
এজেন্টকে
আমাদের
পাইপলাইনে
থাকা বিক্রির
সুযোগগুলো
গুছিয়ে ফেলার
মতো কোনো কাজ
দেন, তখন কী হয়
। আপনি
নিশ্চয়ই
চাইবেন না যে এই
টুলটির কাছে যা
খুশি তাই মুছে
ফেলার স্থায়ী
অনুমতি থাকুক।
এয়ারলক আপনার
এজেন্ট এবং
তাদের কল করা
টুলগুলোর মাঝে
অবস্থান করে।
এটি এজেন্টের
উদ্দেশ্য এবং
আপনার নিয়ম
অনুযায়ী
প্রতিটি
অনুরোধ
মূল্যায়ন করে,
এবং তারপর
সেটিকে
অনুমোদন দেয়,
প্রত্যাখ্যান
করে, অথবা
অনুমোদনের
জন্য কোনো
মানুষের কাছে
পাঠিয়ে দেয়।
আপনি নীতিগুলো
সহজ ভাষায়
লিখে দেন,
এজেন্ট কখনোই
আপনার
ক্রেডেনশিয়াল
দেখতে পায় না,
এবং প্রতিটি কল
ও তার
সিদ্ধান্ত লগ
করা থাকে। এটি
ক্লড কোড এবং
কোডেক্সের মতো
কোডিং এজেন্ট
এবং এমসিপি
গেটওয়ের সাথে
কাজ করে।
সুতরাং, আপনি
যদি এজেন্টদের
অতিরিক্ত
অনুমতি না
দিয়ে
প্রোডাকশনে
আসল কাজ করানোর
উপায় খুঁজে
থাকেন, তাহলে
workos.com/airlock- এ
ওয়ার্কওএস
এয়ারলকটি
দেখতে পারেন।
আর এই প্রসঙ্গে,
চলুন পিটারের
কথায় ফিরে যাই
এবং কলোসাস
তৈরির পর তিনি
কেন গুগল
ছেড়েছিলেন।
আপনি গুগলে
ছিলেন, আপনি
কলোসাস
ডিস্ট্রিবিউটেড
ফাইল সিস্টেম
তৈরি করছেন,
সত্যি বলতে, এই
মুহূর্তে আপনি
সম্ভবত
পৃথিবীর
সবচেয়ে বড়
সিস্টেমটিতে
কাজ করছেন।
আপনি চাকরি
ছাড়ার কথা
ভাবেনই বা কেন?
>> হ্যাঁ, হ্যাঁ।
আচ্ছা,
কলোসাসের পর,
আমি কিছুদিনের
জন্য গুগল গগলস
নামের অন্য
একটা
প্রজেক্টে হাত
দিয়েছিলাম।
কাঁচের
ছিদ্রগুলোর
কথা মনে আছে?
হ্যাঁ। যাইহোক,
>> ধারণাটা
বারবার ফিরে
আসছিল, তাই এটা
তখনও বিদ্যমান
ছিল। মনে হচ্ছে
গুগল একটু
অগ্রগামী ছিল।
আর জানেন, আমার
মনে হয় এটা
সময়ের চেয়ে
এগিয়ে থাকা
একটা
প্রযুক্তি ছিল
। আমার মনে হয়
না সেই সময়ে
এটা করার জন্য
প্রস্তুত ছিল।
মনে হচ্ছে
চশমাটা তৈরি
করা আসলে বেশ
কঠিন। জানেন,
আমরা যে
অ্যান্ড্রয়েড
ফোনগুলোতে এটা
চালানোর
চেষ্টা
করছিলাম,
সেগুলো যথেষ্ট
শক্তিশালী ছিল
না। আর তারপর,
জানেন, আমার
মধ্যে এক ধরনের
ভবঘুরেপনা
জন্মাল, জানেন,
আমি কি গুগলে
আটকে থাকব?(এটা
বলাটা অদ্ভুত,
কিন্তু জানেন,
অন্য কিছু
মানুষও এটা
অনুভব করে)।
অন্য একটা
স্টার্টআপে
নিজের ভাগ্য
পরীক্ষা করতে
বেরিয়ে
পড়লাম। সেটা
সফল হয়নি।
স্কয়ার
আমাদের
অধিগ্রহণ করে
নেয়। তো,
>> হ্যাঁ, আমি এক
মুহূর্তের
জন্য থামতে চাই
। তো, এই
কোম্পানিটার
নাম কী ছিল?
>> আমরা যে
কোম্পানিটা
প্রতিষ্ঠা
করেছিলাম তার
নাম ছিল
ভিউফাইন্ডার।
>> ভিউফাইন্ডার,
হ্যাঁ।
>> হ্যাঁ, এটা
মোবাইল ফটো
শেয়ারিং
স্পেসে ছিল, যা
আপনার পরিচিত
মনে হতে পারে।
এটা
ইনস্টাগ্রামের
মতো। এটা
স্ন্যাপচ্যাটের
মতো।
>> ২০১২ সালে।
>> হ্যাঁ।
>> ঠিক
ইনস্টাগ্রামের
মতোই এবং আমরা
আরও বেশি করে
এগিয়ে
যাচ্ছিলাম।
>> হ্যাঁ, হ্যাঁ।
না, আমরা ঠিক
সেই জায়গাতেই
ছিলাম, কিন্তু
আমাদের কাছে
বাজারে
প্রবেশের সঠিক
কৌশল ছিল না,
যেমন—কীভাবে
ব্যবহারকারীদের
আকর্ষণ করা
যায়? কীভাবে
ভাইরাল গ্রোথ
পাওয়া যায়, এই
ধরনের
বিষয়গুলো।
>> কারণ বাইরে
থেকে, আমি যা
পড়েছি, যা
দেখেছি, মানে
গল্পটা শুনে
আমার শুধু মনে
হয়েছে, ওহ,
মানে, আপনি একটা
স্টার্টআপ সহ-
প্রতিষ্ঠা
করেছেন। সেটা
স্কয়ার কিনে
নিয়েছে।
বাহ্! মনে
হচ্ছে আপনার
আরও বড়
উচ্চাকাঙ্ক্ষা
ছিল এবং এটা
একটা ভালো ফল,
কিন্তু
স্বপ্নটা তো
নয়, তাই না?
>> না, এটা মোটেও
স্বপ্ন ছিল না।
তো, আমি যে
শব্দটি
ব্যবহার করেছি
তা হলো ‘
অধিগ্রহণ’। তো,
কখনও কখনও একটি
কোম্পানি
তাদের আইপি,
তাদের পণ্য,
তাদের ব্যবসার
জন্য অধিগ্রহণ
বা কিনে নেওয়া
হয়, আবার কখনও
কখনও তারা শুধু
প্রতিভার জন্য,
কর্মীদের জন্য
কিনে নেওয়া
হয়। আর আমরা
শুধু প্রতিভার
জন্যই কিনে
নেওয়া
হয়েছিলাম।
তারা আইপি (IP)
অধিগ্রহণ
করেছিল, কিন্তু
আমার মনে হয় না
স্কয়ার (Square)
এটা নিয়ে কিছু
করেছিল। এটা
এমন কোনো
জায়গা ছিল না
যেখানে তারা
কাজ করছিল।
কিন্তু আমরা এক
ধরনের
শক্তিশালী
টেকনিক্যাল
টিম তৈরি
করেছিলাম এবং
সেই কাজের
জন্যই আমাদের
নিয়োগ দেওয়া
হয়েছিল। আর
জানেন, আমার
বিস্তারিত মনে
নেই। আমরা অল্প
কিছু টাকা
তুলেছিলাম।
আমরা আমাদের
বিনিয়োগকারীদের
টাকা ফেরত দিতে
পেরেছিলাম।
হয়তো তাদের
কিছুটা লোকসান
হয়েছিল,
কিন্তু আসলে
তারা তাদের
টাকা ফেরতই
পেয়েছিল।
একজন
প্রতিষ্ঠাতা
হিসেবে,
বিনিয়োগকারীরা
বড় মাপের লোক।
তারা টাকা
হারাতে
অভ্যস্ত,
কিন্তু আপনি
যদি তাদের অনেক
টাকা লোকসান
করান, তাহলে
আপনার খারাপ
লাগবেই। তাই,
তাদের টাকা
ফেরত দিতে
পারলে আপনার
কিছুটা ভালো
লাগবে।
>> হ্যাঁ। হ্যাঁ।
আর তারপর আপনি
যে কোম্পানি
আপনাকে
অধিগ্রহণ
করেছিল, অর্থাৎ
স্কয়ার-এ,
সেখানে
কিছুদিন কাজ
করেছিলেন, এবং
তারপর আবার সেই
জায়গাটার
জন্য আপনার
মনটা ছটফট করতে
শুরু করেছিল।
>> হ্যাঁ, হ্যাঁ।
হ্যাঁ, কারণ
আমরা এই
ডিস্ট্রিবিউটেড
ফাইল সিস্টেম
এবং স্টোরেজ
সিস্টেমগুলো
নিয়ে কাজ করে
আসছি, যেমন
কলোসাস।
কলোসাসের একটি
সহযোগী
প্রজেক্ট হলো
স্প্যানার।
>> স্প্যানার
কলোসাস থেকে
কীভাবে আলাদা?
>> স্প্যানার
মূলত একটি
ডিস্ট্রিবিউটেড
ডেটাবেস।
কলোসাস একটি
ডিস্ট্রিবিউটেড
স্টোরেজ
সিস্টেম। আমি
যেভাবে একটি
ডিস্ট্রিবিউটেড
স্টোরেজ
সিস্টেম এবং
একটি
ডিস্ট্রিবিউটেড
ডেটাবেসের
মধ্যে
পার্থক্য
নিয়ে ভাবি,
আপনি হয়তো
ভাববেন, "ওহ,
দুটোই তো ডেটা
স্টোর করছে।"
>> আমিও এটাই
জিজ্ঞেস করতে
যাচ্ছিলাম,
কারণ একটি
ডিস্ট্রিবিউটেড
ডেটাবেসও কোনো
এক পর্যায়ে
একটি স্টোরেজ
সিস্টেম হয়ে
উঠবে।
>> ঠিক, ঠিক।
>> তাহলে
পার্থক্যটা কী?
>> হ্যাঁ। তো,
কলোসাস মূলত
বড় ফাইল, বিশেষ
করে বড়
অ্যাপেন্ড-
অনলি
ফাইলগুলোকে
টার্গেট করত।
এগুলো
>> শুধু
অ্যাপেন্ড-
অনলি, আপডেট করা
যায় না, হ্যাঁ।
>> হ্যাঁ। বড়
অ্যাপেন্ড-
অনলি ফাইল, যেমন
৬৪ মেগাবাইট,
এমনকি
গিগাবাইট
পর্যন্ত
আকারের।
কিন্তু, যদি
আপনার
ডাটাবেসে আপনি
অল্প পরিমাণে
ডেটা সংরক্ষণ
করতে চান, যেমন
ধরুন, আপনি যদি
SQL বা রিলেশনাল
ডেটা ব্যবহার
করেন, তাহলে
আপনার এমন একটি
টেবিল থাকতে
পারে যেখানে
বিলিয়ন
বিলিয়ন সারি (row
) আছে। সেই
সারিগুলো
কলামে বিভক্ত
থাকে এবং
কলামগুলো টাইপ
করা থাকে।
সেক্ষেত্রে
একটি
ডাটাবেসের
জন্য
ইঞ্জিনিয়ারিং
চ্যালেঞ্জের
প্রকৃতি একটি
ডিস্ট্রিবিউটেড
স্টোরেজ
সিস্টেমের
চেয়ে
সম্পূর্ণ
ভিন্ন হয়। এবং
সাধারণত,
ডাটাবেসগুলো
কোনো না কোনো
ডিস্ট্রিবিউটেড
স্টোরেজ
সিস্টেমের
উপরেই
ইমপ্লিমেন্ট
করা হয়। আর
এটাই ছিল
সম্পর্ক।
সুতরাং,
স্প্যানার (Spanner)
কলোসাস (Colossus)-এর
উপরে
ইমপ্লিমেন্ট
করা হয়েছিল।
এবং
স্প্যানারের
কিছু ডিজাইন
সিদ্ধান্ত
সরাসরি
কলোসাসের
ফাইলগুলোর '
অ্যাপেন্ড-
অনলি'(append-only)
বৈশিষ্ট্য
থেকে উদ্ভূত
হয়েছিল। আপনি
কোনো ফাইলকে
তার জায়গায় (in
place) আপডেট করতে
পারবেন না, তাই
আপনাকে আপনার
ডাটাবেসে
ফাইলগুলোকে
অপরিবর্তনীয় (
immutable) করতে হবে,
এবং এখানেই লগ-
স্ট্রাকচার্ড
মার্জ ট্রি (
log-structured merge trees)-এর
মতো বিষয়গুলো
কাজে আসে। আর
এগুলো গুগলে
উদ্ভাবিত
হয়নি, কিন্তু
গুগলই
লেভেলডিবি (LevelDB)-
এর মাধ্যমে
এগুলোকে
জনপ্রিয় করে
তোলে, যা
বিগটেবিল (BigTable)
এবং স্প্যানার (
Spanner)-এর কাজ থেকে
উদ্ভূত
হয়েছিল।
সেটিই পরে
রকসডিবি (RocksDB)-তে
পরিণত হয়ে
জনপ্রিয়তা
পায়। আমি
পরবর্তীতে এই
জিনিসগুলোর
মধ্যে একটিকে
পুনরায়
বাস্তবায়ন
করি এবং এটাই
আমরা ককরোচ
ল্যাবস (Cockroach Labs)-এ
ব্যবহার করি।
এর নাম পেবল (Pebble)
। তাই, আমি এর
অভ্যন্তরীণ
কার্যপ্রণালীর
সাথে খুব
পরিচিত।
কিন্তু, এটি
মূলত এই ধারণার
উপর ভিত্তি করে
তৈরি যে ডেটা এক
প্রকার
অপরিবর্তনীয়
ফাইলে
সংরক্ষিত থাকে
।
>> তো, আপনি ককরোচ
ল্যাবস
প্রতিষ্ঠা
করার
সিদ্ধান্ত
কীভাবে নিলেন?
>> আমরা যখন
স্কোয়ারে (Square)
কাজ করছিলাম,
তখন আমার সহ-
প্রতিষ্ঠাতা
এবং আমি—আসলে
আমরা তিনজনই
স্কোয়ারে
ছিলাম এবং
তাদের মধ্যে
একজন,
স্পেন্সার, যার
কথা আমি আগেই
উল্লেখ করেছি,
সে জিম্প (GIMP)-এ
কাজ করছিল। সে
আমার কলেজের
রুমমেট।
>> এবং সে গুগলেও
ছিল।
>> আরেকজন, বেন
ডার্নেল, যিনিও
গুগলে ছিলেন,
তিনি
ভিউফাইন্ডারে (
Viewfinder) আমাদের
সাথে যোগ দেন
এবং পরে
স্কোয়ারে চলে
যান। আমরা, মানে
, একটা প্রজেক্ট
করার জন্য
এমনিতেই
ভাবছিলাম, আর
আমাদের কাছে
ভিউফাইন্ডারের
জন্য একটা
ডিজাইন ছিল।
আমরা
ভিউফাইন্ডার
তৈরি করার জন্য
একটা ডেটাবেস
খুঁজছিলাম।
বাজারে যা কিছু
ছিল, সেগুলো
আমাদের তেমন
পছন্দ হয়নি।
গুগলের ভেতরের
প্রযুক্তিগুলো
আরও ভালো মনে
হয়েছিল।
আমাদের কাছে
বিগটেবিল,
স্প্যানার এবং
আরও অনেক কিছু
ছিল। আমরা যখন
খুঁজছিলাম, তখন
দেখলাম এইচবেস (
HBase) আছে, কিন্তু
আমি তাতে
পুরোপুরি
সন্তুষ্ট
ছিলাম না।
রিয়াক (Riak) এবং
আরও কিছু
সিস্টেম ছিল।
এক পর্যায়ে
আমরা
ককরোচডিবি (
CockroachDB)-র
প্রাথমিক
ডিজাইনটা তৈরি
করে ফেলি। তখন
আমি বললাম, না,
না, বন্ধুরা,
আমরা একটা
মোবাইল ফটো
শেয়ারিং সাইট
তৈরি করছি।
আমাদের একটা
ডিস্ট্রিবিউটেড
ডেটাবেস তৈরি
করা উচিত নয়।
তাই আমরা
বিষয়টা আপাতত
স্থগিত রাখি।
আমার মনে হয়,
এটা একদম সঠিক
সিদ্ধান্ত ছিল,
যদিও
পরিস্থিতি
যেভাবে
গড়িয়েছে,
তাতে হয়তো
আমাদের মোবাইল
ফটো শেয়ারিং
সাইট তৈরির
পরিকল্পনা
থেকে সরে আসাই
উচিত ছিল। এবং
তারপর আমরা
স্কোয়ারে
গেলাম এবং ডেটা
স্টোরেজ
সিস্টেম নিয়ে
তারা যে
সমস্যাগুলোর
সম্মুখীন
হচ্ছিল, আমরাও
একই ধরনের কিছু
সমস্যা দেখতে
পেলাম এবং
স্পেন্সার
খুবই বোঝানোর
ক্ষমতা
সম্পন্ন ছিলেন
। তিনি
ম্যানেজমেন্টের
কয়েকজনকে
বোঝালেন যে, "
আরে, আপনারা কি
এটাতে পার্ট-
টাইম কাজ করে
দেখতে পারেন যে
এই ডিজাইনের
পেছনে কোনো
সম্ভাবনা আছে
কি না?" এবং
তারপর তিনি
একরকম জোর করেই
বেন আর আমাকে
এতে যুক্ত
করলেন, এবং
অবশেষে বাইরে
থেকে মনোযোগ
পেতে শুরু
করলাম আর আমরা
বললাম, "আরে,
আমরা কি এটাকে
একটা আলাদা
কোম্পানিতে
পরিণত করতে
পারি?" এবং শেষ
পর্যন্ত সেটাই
হয়েছিল। তো,
>> আপনারা একটা
কোম্পানি শুরু
করেছিলেন,
কিন্তু আমি
যতদূর জানি
আপনারা শুরুতে
ভিসি ফান্ডিং
নেননি, তাই না?
>> ভিউফাইন্ডারের
ক্ষেত্রেও
ব্যাপারটা তাই
ছিল। আমরা এটা
ভিন্নভাবে
করেছিলাম।
ভিউফাইন্ডারে
আমরা একরকম
ভিসি-র টাকা
এড়িয়ে
গিয়েছিলাম।
এবং জানেন, এখন
পেছন ফিরে
তাকালে আমি
সেটা করার
পরামর্শ দেব না
। কিন্তু,
>> আপনি পরামর্শ
দেবেন না...
>> হ্যাঁ, আমি ভিসি
-র টাকা নেওয়ার
পরামর্শ দেব।
কারণ আমার
অভিজ্ঞতা বলে,
ভিসি-রা খুবই,
খুবই
বুদ্ধিমান এবং
তারা আপনাকে
অনেক
চ্যালেঞ্জ
মোকাবিলা করতে
সাহায্য করতে
পারে। জানেন,
আমার মনে হয়
মাঝে মাঝে এমন
একটা ধারণা
থাকে যে, ভিসি-
রা আপনাকে
বিভিন্ন
ক্ষেত্রে ঠেলে
দেবে এবং হয়তো
তাদের মধ্যে
কিছু খারাপ
লোকও আছে যারা
সত্যিই তা করে।
আমি যাদের সাথে
কাজ করার
অভিজ্ঞতা
অর্জন করেছি,
সেই ভিসি-রা
আমার দেখা
সবচেয়ে
বিচক্ষণ
মানুষদের
মধ্যে অন্যতম।
>> আর তাই, আপনার
টিমে অনেকটা
অতিরিক্ত একজন
সাহায্যকারী
থাকে। তারা
>> আপনাকে
পরামর্শ দেয়,
দিকনির্দেশনা
দেয়, তারা কী
দেখছে তা
আপনাকে জানায়
। বাজারে তারা
যা দেখছে,
পরিস্থিতি কোন
দিকে যাচ্ছে, সে
অনুযায়ী তারা
আপনাকে
পরামর্শ দেয়।
>> একজন
প্রতিষ্ঠাতার
জন্য, বিশেষ করে
একজন
টেকনিক্যাল
প্রতিষ্ঠাতার
জন্য, এটা মাঝে
মাঝে খুব কঠিন
হয়ে যায়, তাই
না? কারণ আপনি
তো শুধু
ইঞ্জিনিয়ারিং
অংশের দিকেই
মনোযোগ
দিচ্ছেন।
>> হ্যাঁ, হ্যাঁ।
না, আমরা আসলে
ককরোচ
ল্যাবসের জন্য
সাথে সাথেই
টাকা
নিয়েছিলাম।
মানে, আমরা
বেরোনোর
প্রায় সাথে
সাথেই বে
এরিয়াতে একটা
ছোট রোড শো
করেছিলাম এবং
কিছু আগ্রহ
পেয়েছিলাম আর
সাথে সাথেই
একজন
বিনিয়োগকারী
পেয়ে
গিয়েছিলাম।
>> তবে নামটা
নিয়ে আপনাকে
একটা প্রশ্ন
করতেই হয়।
>> হ্যাঁ।
>> ককরোচ নামটি
কীভাবে এলো?
>> হ্যাঁ, মানে,
আমরা GIMP-এর নাম
দিয়েছিলাম।
>> হ্যাঁ।
>> ওটা আমারই
দেওয়া। GIMP-এর
গল্প। আমি তখন
কলেজে পড়তাম
আর ভাবছিলাম, এই
নতুন ইমেজ
ম্যানিপুলেশন
প্রোগ্রামটার
কী নাম দেওয়া
যায়। আমার মনে
হয়, আমরা
প্রথমে ইমেজ
ম্যানিপুলেশন
প্রোগ্রাম
নামটাই
ভাবছিলাম।
তারপর আমি
ভাবলাম, ওহ, GIMP তো
খুবই
স্বাভাবিক। আর
নামটা থেকে গেল
। একটা সময়,
আমরা এই নতুন
ডেটাবেসটা
নিয়ে কাজ শুরু
করেছি। আপনি
জিনিসগুলোর
একটা নাম দিতে
চাইবেন। আপনি
শুধু বলতে
পারেন না যে, ওহ,
আমরা এই
ডিস্ট্রিবিউটেড
ডেটাবেস নিয়ে
কাজ করছি।
আপনার একটা নাম
দরকার। আর
স্পনসর বললেন,
ওহ, ককরোচ ডিবি।
যেন তেলাপোকা
অজেয়। আমি চাই
এই জিনিসগুলো,
এই ডেটাবেসটা
যেন অজেয় হয়,
বুঝলেন। আর
তেলাপোকা
পারমাণবিক
মহাপ্রলয়
থেকেও বেঁচে
যাবে। তো, ওখান
থেকেই এর
উৎপত্তি আর
নামটা থেকে গেল
।
>> হ্যাঁ, যেখানে
আমাদের
অনেকগুলো নোড
ডাউন হয়ে যায়,
সেখানেও এটা
চালু থাকবে।
>> হ্যাঁ, হ্যাঁ।
আর জানেন, ককরোচ
ডিবি নিয়ে আজ
আমরা এই
পর্যায়েই আছি
। এটা এমন একটা
বিষয় যা আমি
উল্লেখ করি।
আমি ভাবি,
আরেব্বাহ, এটা
তো দারুণ। আপনি
একটা নোড বন্ধ
করে দিলেন, আমরা
গত বছর একটা
পুরো
ক্যাম্পেইন
করেছিলাম, যেটা
আসলে এমন একটা
বিষয় প্রমাণ
করার জন্য যা
আগে থেকেই
বিদ্যমান ছিল।
ক্যাম্পেইনটা
ছিল
প্রতিকূলতার
মধ্যেও
পারফরম্যান্স
নিয়ে। কিন্তু
ঠিক যেমন আপনি
এটার ওপর একটা
ওয়ার্কলোড
চালাতে পারেন,
আপনি একটা নোড
বন্ধ করে দিতে
পারেন, এমনকি
কখনও কখনও একটা
পুরো রিজিয়নও
বন্ধ করে দিতে
পারেন, এবং
সিস্টেমটা
চলতেই থাকে। আর
এই ধরনের
গল্পগুলোই
আমরা
মার্কেটিং-এর
দিক থেকে করেছি
। কিন্তু আমরা
আমাদের
গ্রাহকদের কাছ
থেকেও এটা শুনি
। তাদের ডেটা
সেন্টারে আগুন
লেগেছে এবং
অন্য সব ডেটা
সিস্টেম ডাউন
হয়ে গেছে,
কিন্তু ককরোচ
ডিবি চলতে
থেকেছে। আমি
ভাবি, এটা তো
দারুণ।
>> আপনারা যখন
শুরু করেছিলেন,
তখন কোন
কোম্পানি বা
স্টার্টআপগুলো
ককরোচ ডিবি
ব্যবহার করতে
চেয়েছিল? আর
তারপর থেকে এটা
কীভাবে বদলে
গেছে? কারণ,
ধরুন, আমি একটা
স্টার্টআপ
শুরু করছি। এটা
একটা ছোট
স্টার্টআপ।
আমার একটা
ডেটাবেস লাগবে
এবং আমি
সাধারণত
পোস্টগ্রেস (
Postgres) বেছে নেব,
তাই না? কারণ
এটা
বিনামূল্যে
পাওয়া যায়,
সবাই এটা
ব্যবহার করে।
আমি এটা নোডে (Node)
চালাচ্ছি।
আপনি কোন কোন
ক্ষেত্রে
দেখেছেন যে
সাধারণ
প্রযুক্তি
সংস্থাগুলো
ভাবছে, 'নোডে
চালানোটা আমার
জন্য যথেষ্ট
নয়', কারণ হয়
নোডটি ডাউন
হয়ে যেতে পারে
অথবা আমি এর
থেকে বড় হয়ে
যাচ্ছি। তারা
ঠিক কোন
জিনিসটার থেকে
বড় হয়ে
গিয়েছিল? আমি
বোঝার চেষ্টা
করছি যে, কোন
কোন ক্ষেত্রে
সংস্থাগুলো
নিজেদেরকে
বলেছে, 'আমাদের
ডিস্ট্রিবিউটেড
কিছু একটা
দরকার'—হ্যাঁ,
একটা
ডেটাবেসের
ক্ষেত্রে।
হ্যাঁ।
>> মানে, প্রায়শই
আমরা দেখি
সংস্থাগুলো
কোনো
বিপর্যয়ের পর
আমাদের ফোন করে
।
>> যেমন, একটা নোড
নষ্ট হয়ে গেল
বা একটা হার্ড
ড্রাইভ ফেইল
করল, এই ধরনের
ঘটনা।
>> হ্যাঁ, বুঝতেই
পারছেন, আমরা
ঠিক
অ্যাম্বুলেন্স
চেজারদের মতো
নই, কিন্তু যদি
কোনো
কোম্পানির বড়
ধরনের বিদ্যুৎ
বিভ্রাট দেখি,
তখন আমরা মাঝে
মাঝে তাদের
পরিষেবা বন্ধ
করার চেষ্টা
করি। আবার,
তারাও আমাদের
ফোন করে বলে যে,
একটা খুব বড়
ব্যাংক এখন
আমাদের গ্রাহক
। আমার মনে হয়
না আমি তাদের
নাম বলতে পারব,
কিন্তু আপনারা
গিয়ে পড়ে
দেখতে পারেন।
আবহাওয়া জনিত
কারণে তাদের
খুব গুরুতর
বিদ্যুৎ
বিভ্রাট
হয়েছিল। আর
তার পরে,
>> সম্ভবত কোনো
অঞ্চল, ডেটাবেস,
নেটওয়ার্কিং
ক্যাবল বা
গাছের ডাল কোনো
কিছুর ওপর পড়ে
পুরো অঞ্চলটাই
অচল হয়ে গেছে।
পুরো
অঞ্চলজুড়ে
>> বিদ্যুৎ চলে
গেছে। আর সিইও-র
পক্ষ থেকে একটা
নির্দেশ আসে।
তিনি বলেন, না,
আমাদের এই
পরিস্থিতি
সামলে টিকে
থাকতে হবে। আর
সেই নির্দেশটা
একেবারে শেষ
পর্যন্ত ঠেলে
দেওয়া হয়।
এবং আপনি এটা
অন্যান্য
জায়গাতেও
দেখতে পাবেন,
যেমন, আমাদের
প্রথম দিকের
একজন গ্রাহক AWS-এ
কাজ করছিলেন
এবং তারা অরোরা
ইনস্ট্যান্স
চালানোর
সর্বোচ্চ
আকারে পৌঁছে
গিয়েছিলেন।
এবং তখন
সাধারণত যা ঘটে
তা হলো, আপনাকে
আপনার ডেটাবেস
শার্ড করতে হয়
। জানেন, এটা
খুবই প্রচলিত
একটি পদ্ধতি।
আপনি আপনার
সিঙ্গেল-নোড
ডেটাবেস নিয়ে
১০ বা ২০ বা ১০০
টি শার্ড তৈরি
করেন। এবং
গুগলও কিছু
সময়ের জন্য
এটাই ব্যবহার
করেছিল এবং এটি
অ্যাপ্লিকেশন
ডেভেলপারের
উপর একটি বড়
বোঝা। এবং আমরা
সবসময় এটাকে
এভাবে বলি যে,
সেই মুহূর্তে
অ্যাপ্লিকেশন
ডেভেলপার একজন
ডেটাবেস
ডেভেলপার হয়ে
উঠছেন এবং তারা
কাজটি
ভালোভাবে
করছেন না, যেমন,
তারা
ডিস্ট্রিবিউটেড
ট্রানজ্যাকশন,
তাদের ইনডেক্স
এবং অন্যান্য
বিষয়গুলো
প্রয়োগ করার
চেষ্টা করছেন।
আমরা অনুভব
করেছি যে এর
দায়ভার
ডেটাবেস
ডেভেলপারের
উপরই থাকা উচিত
।
>> আমরা কি
অটোমেটিক
শার্ডিং নিয়ে
কথা বলতে পারি?
আমার মনে হয়
এটা ধরে নেওয়া
নিরাপদ যে
আমাদের
বেশিরভাগই
জানবে শার্ডিং
কী...কিন্তু
আসলে, চলুন
ম্যানুয়াল
শার্ডিং থেকে
শুরু করা যাক
এবং তারপর
কীভাবে আপনি
অটোমেটিক
শার্ডিং
প্রয়োগ করতে
পারেন, এবং যদি
আপনি আমাদের
এমন কিছু কৌশল
বলতে পারেন যা
ককরোচডিবি-র
মতো একটি
ডেটাবেস আপনার
উপর থেকে সেই
চাপটা কমানোর
জন্য করতে পারে
।
>> হ্যাঁ, হ্যাঁ।
তো আমার মনে হয়
শার্ডিং-এর
একদম প্রাথমিক
রূপটা অনেকটা
হ্যাশ টেবিলের
মতো। ধরা যাক,
আপনার কাছে
একটি
নির্দিষ্ট
সংখ্যক শার্ড
আছে। যেমন ধরুন
আপনার কাছে
মাত্র ১০০ টি
শার্ড আছে।
আপনার ডেটা
মডেলটি হলো
একজন
ব্যবহারকারী
এবং তার সাথে
অনেক ডেটা
যুক্ত আছে।
আপনি শুধু সেই
ব্যবহারকারীকে
নেন এবং বলেন যে
, ওহ, সে একটি
শার্ডে ম্যাপ
হবে এবং, আপনি
মোটামুটি সমান
বন্টন পাওয়ার
জন্য হ্যাশ
ফাংশনের উপর
নির্ভর করেন।
এটার সমস্যাটা
হলো, একটা
পর্যায়ে
আপনার কোনো
একটা শার্ড
পূর্ণ হয়ে
যাবে এবং
আপনাকে আবার
শার্ড করতে হবে,
আর এটা খুবই
কষ্টসাধ্য
একটা কাজ।
>> আর তারপর আবার
শার্ড করার সহজ
উপায় হলো, ধরুন
এটা একটা হার্ড
ড্রাইভের মতো,
যেখানে
প্রতিটি নোডে
ইউজার ডেটা
লেখা হয়, সেটা
পূর্ণ হয়ে গেল
এবং আপনি
ভাবলেন, আচ্ছা,
এখন আমাকে এটা
কোনোভাবে ভাগ
করতে হবে।
আমাকে এটা
সরাতে হবে।
আমাকে এটা
রিম্যাপ করতে
হবে। আমাকে
আমার মেটাডেটা
নতুন করে
সাজাতে হবে, যা
জানে এই ডেটা
কোথায় থাকে, এই
ধরনের জিনিস।
>> এটা নির্ভর করে
আপনি ইউজার
আইডি বা আপনার
শার্ড কী যা-ই
হোক না কেন, তা
থেকে শার্ড
পর্যন্ত ঠিক
কীভাবে
ম্যাপিং করছেন
তার উপর।
আপনাকে হয়তো
সবগুলোই
রিম্যাপ করতে
হতে পারে, তাই
না? এটা খুবই
সাধারণ একটা
ব্যাপার।
হ্যাঁ,
>> একদম ঠিক। মানে,
>> এটা হ্যাশ
টেবিলের
ক্ষেত্রেও ঘটে,
যেখানে
প্রায়শই
হ্যাশ টেবিলের
আকার বাড়ানোর
জন্য আপনাকে
মূলত একটি নতুন
হ্যাশ টেবিল
তৈরি করতে হয়,
আকার দ্বিগুণ
করতে হয় এবং
সমস্ত ডেটা কপি
করে দিতে হয়।
এখন, এটা অনেকটা
একদম প্রাথমিক
ও সহজ একটা
উপায় এবং এর
সাথে বিভিন্ন
স্তরের জটিলতা
যোগ করা যায়।
এর মধ্যে
একটিকে বলা হয়
কনসিস্টেন্ট
হ্যাশিং। এবং
এটা করার জন্য
বিভিন্ন কৌশল
রয়েছে। এগুলো
কীভাবে কাজ করে
তা বেশ
আকর্ষণীয়।
কিন্তু
কনসিস্টেন্ট
হ্যাশিং-এ, আপনি
একটি অতিরিক্ত
নোড যোগ করতে
পারেন এবং তখন
এটি প্রতিটি
শার্ড থেকে
ডেটার একটি
ভগ্নাংশ
সেখানে
স্থানান্তর
করে। এটা করার
জন্য বিভিন্ন
সিস্টেম
রয়েছে। আমার
বিশ্বাস, এটা
ক্যাসান্ড্রার
মতো একটি
পদ্ধতি।
ককরোচডিবি
যেভাবে কাজ করে
তা বিগ টেবিল,
স্প্যানার বা
এইচবেসের মতো,
যেখানে সরাসরি
হ্যাশিং করার
পরিবর্তে, আমরা
একটি
সিস্টেমের
সমস্ত কী-কে
একটি বড়
অবিচ্ছিন্ন কী
স্পেস হিসেবে
কল্পনা করি এবং
যেকোনো
সিস্টেমের
ক্ষেত্রেই এটা
সত্যি। এরপর
আমরা সেই
স্পেসের
অবিচ্ছিন্ন
স্প্যানগুলোকে
পার্টিশন করি।
এবং তারপরে
আপনাকে সেই
সংলগ্ন
স্প্যানগুলোর
উপরে একটি
ইনডেক্স তৈরি
করতে হবে এবং
আমি এইমাত্র যা
বর্ণনা করলাম
তা আসলে
অনেকটাই একটি
বি-ট্রি (B-tree)-এর
মতো শোনাচ্ছে।
তো, উপরে এই
ধরনের একটি
ইনডেক্স থাকে
যা আপনাকে
ম্যাপ করে, যেমন
ধরুন, আমার এই
রেঞ্জটি দরকার,
এটি কোন নোডে
আছে? এবং এটি
কিছুটা বি-ট্রি-
এর মতো, জানেন,
যদি আপনি একটু
চোখ কুঁচকে
তাকান, মানে
আমার মনে হয়
আপনি চোখ
কুঁচকে তাকালে
সবকিছুকেই হয়
বি-ট্রি অথবা
হ্যাশ টেবিল
এবং সেই
ইনডেক্স
কাঠামো বলে মনে
হবে।
>> কিন্তু এখন এটা
প্রায়
বোধগম্য হতে
শুরু করেছে
কারণ আমার মনে
আছে, আমি যখন বি-
ট্রি নিয়ে
উইকিপিডিয়ার
আর্টিকেলটি
পড়েছিলাম,
সেখানে বলা ছিল
যে এটি একটি
ডেটা
স্ট্রাকচার যা
ডেটাবেসে
প্রায়শই
ব্যবহৃত হয়।
এখন আমার এটা
মনে পড়ছে কারণ
আমি এটা নিয়ে
খুব বেশি
ভাবিনি। আমি
এমন কেউ নই যে
ডেটাবেস তৈরি
করে, কিন্তু এখন
যেহেতু আমরা
কথা বলছি, আমরা
স্বাভাবিকভাবেই
বারবার বি-ট্রি-
এর প্রসঙ্গ
টেনে আনছি।
>> এবং ডেটাবেসে
এর আরেকটি
ব্যবহার দেখা
যায়। এটি মূলত
ডিস্ট্রিবিউটেড
ডেটাবেসে
ব্যবহৃত হয়
এবং কেউই এটিকে
বি-ট্রি বলে না।
আমি মাঝে মাঝে
একটু মনোযোগ
দিয়ে দেখি এবং
আমার মনে হয়
এটি আসলে এক
ধরনের বি-ট্রি।
কিন্তু
ডেটাবেসে এর
আরেকটি
ব্যবহার হলো
ইনডেক্সের
জন্য। যেমন,
আপনার যদি একটি
টেবিল থাকে এবং
আপনার ইমেল
অ্যাড্রেসের
উপর একটি
ইনডেক্স থাকে
এবং আপনি সেই
ইমেল
অ্যাড্রেসগুলো
ক্রমানুসারে
দেখতে চান,
তাহলে
ডেটাবেসের
ভেতরে এটি একটি
বি-ট্রি। আর
যেকোনো ধরনের
ইনডেক্সই
সাধারণত
সর্টেড অর্ডার
প্রদান করে।
হ্যাশিং
ইনডেক্সও আছে,
কিন্তু
বেশিরভাগ সময়
এটি একটি বি-
ট্রি ইনডেক্স
হয় এবং
ডেটাবেসে
এগুলো
সর্বত্রই
বিদ্যমান।
আসলে ‘দ্য
ইউবিকুইটাস বি-
ট্রি’ নামে
একটি
গবেষণাপত্রও
আছে এবং আমি
মূলত এটি
শনাক্ত করেছি।
আমার মনে হয়
গবেষণাপত্রটি
৮০-এর দশকে লেখা
হয়েছিল এবং
আজও এগুলো
সর্বত্রই
ব্যবহৃত হয়।
এগুলো সিঙ্গেল
নোড ডেটাবেসের
ভিত্তি এবং আমি
যতগুলো ডেটা
সিস্টেমে কাজ
করেছি, তার
প্রায়
সবকটিতেই কোনো
না কোনো সময়ে
বি-ট্রি (B-tree) ছিল
।
>> আমি স্ট্রং
কনসিস্টেন্সি (
strong consistency)
সম্পর্কে
জানতে চাই।
ককরোচডিবি (
CockroachDB) স্ট্রং
কনসিস্টেন্সি
প্রদান করে।
এখন, যারা
ডিস্ট্রিবিউটেড
সিস্টেমে
কিছুটা নতুন,
তাদের জন্য
আমরা কি
কনসিস্টেন্সি
মডেলগুলো
নিয়ে কথা বলতে
পারি এবং তারপর
স্ট্রং
কনসিস্টেন্সি
কেন
গুরুত্বপূর্ণ
ও কেন এটি
বাস্তবায়ন
করা কঠিন?
>> তো, এই
বিষয়টিকে
দেখার একাধিক
উপায় আছে,
কিন্তু আপনি
যদি ডেটাবেস
ব্যবহার করে
থাকেন, তাহলে
সম্ভবত
ট্রানজ্যাকশন (
transactions) এর কথা
শুনেছেন।
ট্রানজ্যাকশন
হলো
অ্যাটমিকভাবে (
atomically) অনেকগুলো
পরিবর্তন (mutations)
করার একটি
উপায়। সুতরাং,
ডেটাবেস
অ্যাটোমিসিসিটি
(atomicity),
কনসিস্টেন্সি (
consistency), আইসোলেশন
(isolation),
ডিউরেবিলিটি (
durability) নিয়ে
আলোচনা করে।
ডিউরেবিলিটি
বিষয়টি খুবই
সহজ। যেমন, আমি
যখন ডেটাবেসে
কিছু লিখি, তখন
তা টেকসইভাবে
লেখা হতে হবে।
ফলে, যদি কিছু
ক্র্যাশ করে,
তবে তা আবার
আগের অবস্থায়
ফিরে আসে।
অ্যাটোমিসিসিটি
বলতে বোঝায়,
আমি যদি
অনেকগুলো
পরিবর্তন করতে
চাই, আমি চাই
সেগুলো যেন একই
সময়ে কমিট (commit)
বা অ্যাবোর্ট (
abort) হয়ে যায়।
এখন, আমি কোনো
ধরনের আংশিক
অপারেশন করতে
চাই না। আর এটা
কেন
গুরুত্বপূর্ণ?
অ্যাটোমিসিসিটি
কেন
গুরুত্বপূর্ণ?
আসলে,
অ্যাটোমিসিসিটিই
আপনাকে এমন
একটি পর্যায়ে
নিয়ে যায়
যেখানে একটি
অ্যাপ্লিকেশন
হিসেবে আমি
অনেকগুলো
অপারেশন করতে
পারি এবং যদি
কোনো ত্রুটি
ঘটে, তবে সবকিছু
রোলব্যাক হয়ে
যায় এবং এটি
কাজ করার জন্য
অনেক সহজ একটি
ডেভেলপমেন্ট
মডেল। আর তারপর
আছে
কনসিসটেন্সি
এবং আইসোলেশন,
যেগুলো কিছুটা
গুলিয়ে যায়।
আইসোলেশন বলতে
ট্রানজ্যাকশনগুলোর
মধ্যেকার
বিচ্ছিন্নতাকে
বোঝানো হচ্ছে।
আমি একবারে
শুধু একটি
ট্রানজ্যাকশন
চালাতে চাই না।
সেটা করা তো সহজ
, তাই না? আমি
অনেকগুলো
সমান্তরালে
চালাতে চাই।
>> ওহ, হ্যাঁ।
>> এবং এমনভাবে
করতে চাই যাতে
যখন সেগুলো
সমান্তরালে
চলবে, তখন
সেগুলো যতটা
সম্ভব
কনকারেন্টলি
চলে। কিন্তু,
আপনি চাইবেন যে
যখন সেগুলো
যতটা সম্ভব
কনকারেন্টলি
চলবে, তখন যেন
সেগুলোর মধ্যে
একটি সিরিয়াল
ক্রম থাকে।
সুতরাং, এটাই
হলো পুরো কৌশল,
আর আইসোলেশনের
জন্য যেটিকে
গোল্ড
স্ট্যান্ডার্ড
বলা হয়, তাকে
লিনিয়ারিজেবিলিটি
বলা হয়। ওটা
নিয়ে চিন্তা
করবেন না। এর
থেকে এক ধাপ
নিচে একটি
পদ্ধতি আছে,
যাকে বলা হয়
সিরিয়ালাইজেবিলিটি
(serializability)। এর
আক্ষরিক অর্থ
হলো আপনার
লেনদেনগুলোর
একটি ক্রমিক
বিন্যাস থাকা,
কিন্তু আপনাকে
এটি এমনভাবে
তৈরি করতে হবে
যাতে সবকিছু
যতটা সম্ভব
সমান্তরালভাবে
(concurrently) করা যায়
। আর এই
সিরিয়ালাইজেবিলিটির
সুবিধা হলো, এটি
অ্যাপ্লিকেশন
প্রোগ্রামের
জন্য একটি খুব
সহজ মডেল।
তাদের
প্রোগ্রামে
অদ্ভুত ধরনের
ত্রুটি ঘটা
নিয়ে চিন্তা
করতে হয় না। যে
ধরনের
ত্রুটিগুলো
ঘটতে পারে, তার
একটি চিরাচরিত
উদাহরণ হলো
একটি ব্যাংক,
তাই না? যেখানে
আমি হয়তো কোনো
অপারেশনের
মাধ্যমে জানতে
চাইব যে, আমার
ব্যাংক
অ্যাকাউন্টে
অন্য কোথাও
পাঠানোর জন্য
১০০ ডলার আছে কি
না। কিন্তু
আপনি হয়তো এমন
নিম্ন
আইসোলেশন
লেভেলের
ব্যবস্থা করতে
পারেন যে, আপনি
ওই ১০০ ডলার
দুবার বিয়োগ
করে ফেলতে
পারেন। আর এটা
তো খারাপ, তাই
না? আমরা আমাদের
ব্যাংক
অ্যাকাউন্টের
সঠিক হিসাব
রাখতে চাই।
অথবা, আমাদের
শপিং কার্টের
হিসাবও রাখতে
চাই। এর
ব্যবহারের
ক্ষেত্রগুলো
যেন অফুরন্ত।
আর আপনি যদি এটা
ভুল করেন, তাহলে
খুব মারাত্মক
বাগ তৈরি হবে।
>> কিন্তু এখন, উইক
কনসিস্টেন্সি
এবং স্ট্রং
কনসিস্টেন্সির
কথায় ফিরে আসা
যাক।
>> লিনিয়ারিজেবিলিটি
বা
সিরিয়ালিজেবিলিটির
চেয়ে কম
কিছুকে এক
ধরনের উইক
কনসিস্টেন্সি
হিসেবে
বিবেচনা করা
যেতে পারে,
কিন্তু
এছাড়াও
স্ট্রং
কনসিস্টেন্সি
এবং
ইভেনচুয়াল
কনসিস্টেন্সিও
আছে। তো,
ইভেনচুয়াল
কনসিস্টেন্সি
হলো এমন যে,
কখনও কখনও আমি
একটি অপারেশন
করতে পারি এবং
হয়তো সাথে
সাথেই সব আপডেট
দেখতে পাব না।
>> রিড রেজাল্টে
যে সবসময়
বর্তমান
আপডেটটি
থাকবেই, এমনটা
নয়।
>> কিন্তু সেগুলো
কোনো এক সময়ে
ফিরে আসবে, মানে
, আমি এর একটি
অংশ লিখেছি এবং
বাকিটা কোনো এক
সময়ে দেখা
যাবে। আর
প্রায়শই যখন
সবচেয়ে
>> সহজ উপায় হলো
আপনার ক্রেডিট
কার্ডের
ব্যালেন্স
দেখা, তাই না?
>> হ্যাঁ, হ্যাঁ।
হ্যাঁ, এবং
এভাবে করাটা
দ্রুততর।
সিস্টেম থেকে
যে
পারফরম্যান্স
পাওয়া যায়,
সেই হিসেবে এটি
দ্রুততর।
কিন্তু আবারও
বলছি,
>> অ্যাপ্লিকেশনটির
জন্য এটি
সামলানো একটু
কঠিন।
>> ডিস্ট্রিবিউটেড
ডেটাবেস বা যে
ডেটাবেসগুলোতে
কোনো ধরনের
রেপ্লিকেশন
থাকে, সেখানে এই
সমস্যাটি
প্রায়ই দেখা
যায়। যেমন, আমি
প্রাইমারি
রেপ্লিকাতে
ডেটা লিখলাম
এবং তারপর
সেকেন্ডারি
রেপ্লিকা থেকে
পড়লাম, কিন্তু
ডেটাটি তখনও
সেখানে
পৌঁছায়নি।
>> এটাই হলো
ইভেনচুয়াল
কনসিস্টেন্সি।
>> হ্যাঁ, এটাই
ইভেনচুয়াল
কনসিস্টেন্সি
এবং আপনি
প্রায়শই এর
একটি বিকল্প পথ
খুঁজে নিতে
পারেন, কিন্তু
এটি
অ্যাপ্লিকেশন
ডেভেলপারের
উপর একটি বড়
বোঝা চাপিয়ে
দেয়, কারণ
আপনাকে এই
বিষয়টির দিকে
মনোযোগ দিতে
হয়।
>> অন্যদিকে,
ককরোচডিবি-তে (
CockroachDB) রয়েছে
স্ট্রং
কনসিস্টেন্সি,
যার মানে হলো,
আপনি যখন
ডেটাবেসে ডেটা
লিখছেন বা
পড়ছেন, ঠিক
তখনই আপনি লেখা
ডেটাটি ফেরত
পেয়ে যান।
>> আপনি লেখা
ডেটাটিই ফেরত
পান, মানে, আপনি
যা লিখেছেন ঠিক
তাই পড়ছেন।
আপনি যে নোডে
ডেটা লিখেছেন,
সেখান থেকেই
আবার পড়ছেন কি
না, তাতে কিছু
যায় আসে না।
আপনি যদি অন্য
কোনো নোড থেকেও
ডেটা পড়েন,
তাহলেও আপনি
এইমাত্র লেখা
ডেটাটিই পাবেন
। এর
>> যৌক্তিক
অসুবিধা কি এই
নয় যে আপনার
ল্যাটেন্সি
বেড়ে যাবে?
কারণ স্ট্রং
কনসিস্টেন্সি
প্রয়োগ করতে
হলে, সহজ
পদ্ধতিতে বলতে
গেলে, আপনাকে সব
রেপ্লিকাতেই
ডেটা লিখতে হবে,
তাই না?
>> হ্যাঁ।
>> আপনি CockroachDB-এর
ভেতরে কী করছেন?
>> আচ্ছা, আমরা সব
রেপ্লিকাগুলোতে
লিখছি, তাই।
হ্যাঁ,
>> হ্যাঁ,
>> হ্যাঁ। তাহলে,
আপনি এটা দ্রুত
করছেন।
>> আপনি এটা দ্রুত
করছিলেন। আপনি
এটাকে দক্ষ করে
তুলছেন। আমার
মনে হয়,
সফটওয়্যার
ইন্ডাস্ট্রির
যে জিনিসটা
আমাকে সবসময়
মুগ্ধ করে, তা
হলো: আমরা
ক্রমাগত আরও
বেশি উন্নত
হওয়ার উপায়
খুঁজে চলেছি,
যাতে
অ্যাপ্লিকেশন
লেখা সহজ হয়,
কিন্তু সেটা
খুব উচ্চ
পারফরম্যান্সের
সাথে করা যায়।
এবং বছরের পর
বছর ধরে আমরা এই
বিষয়ে খুব খুব
দক্ষ হয়ে
উঠেছি। আর আমি
এই ক্ষেত্রটি
সম্পর্কে জানি,
অর্থাৎ
ডেটাবেস। এটা
সব জায়গায়
ঘটছে। যেমন,
গ্রাফিক্স
কতটা দ্রুত
হয়েছে তা দেখে
আমি মুগ্ধ। আমি
যখন এই
ইন্ডাস্ট্রিতে
প্রবেশ করি, তখন
আক্ষরিক
অর্থেই
প্রতিটি
পিক্সেল
আলাদাভাবে
লিখতে হতো। আর
এখন আপনার কাছে
এমন জিপিইউ আছে
যা প্রতি
সেকেন্ডে
বিলিয়ন
বিলিয়ন
ট্রায়াঙ্গেল
তৈরি করছে।
বর্তমান
সংখ্যা যাই হোক
না কেন। আর আমি
এটা দেখে
রীতিমতো অবাক
যে কম্পিউটার
সায়েন্সের
প্রতিটি
ক্ষেত্রে, আপনি
যেদিকেই তাকান
না কেন, কতটা
আধুনিকতা চলে
এসেছে।
>> CockroachDB নিয়ে আমি
আরও একটি জিনিস
জিজ্ঞাসা করতে
চাই, তা হলো Raft
consensus। Raft consensus
জিনিসটা কী?
>> হ্যাঁ। মানে,
কনসেনসাস
প্রোটোকলের
কথা বলছি, আসল
কনসেনসাস
প্রোটোকলটির
নাম ছিল Paxos এবং
এটি
বাস্তবায়ন
করা বেশ কঠিন
ছিল। Raft-কে আপনি
Paxos-এর একটি
ভ্যারিয়েন্ট
হিসেবে ভাবতে
পারেন। এটি ছিল
Paxos-এর একটি
বিকল্পের মতো,
কিন্তু আজ আমার
মনে হচ্ছে, এর
>> কনসেনসাস
অ্যালগরিদমটি
হলো, আপনার কাছে
তিন থেকে আরও
অনেক বেশি
সংখ্যক নোড
থাকবে এবং
তারপর আপনি
কীভাবে
তাদেরকে কোন
বিষয়ে একমত
করাবেন?
সাধারণত তারা
কোন বিষয়ে
একমত হয়?
>> হ্যাঁ, হ্যাঁ।
তো আপনারা একমত
হবেন যে রাইটটি
সম্পন্ন
হয়েছে। তো,
কনসেনসাস
নিয়ে ভাবার
উপায়টা হলো,
আপনি হয়তো
ভাবছেন আমি
ডেটা
রেপ্লিকেট
করতে চাই এবং
আমি এটি একটি
প্রাইমারিতে
লিখব এবং একটি
সেকেন্ডারিতেও
লিখব। কিন্তু
যখন আপনার কাছে
মাত্র দুটি
রেপ্লিকা থাকে,
তখন আপনি আসলে
কনসেনসাস পেতে
পারেন না। আর
কনসেনসাস না
থাকার কারণ হলো,
যদি কোনো
ক্র্যাশ হয়
এবং আমি
সেকেন্ডারিতে
থাকি, তাহলে আমি
কীভাবে জানব যে
প্রাইমারিতে
কিছু লেখা
হয়েছিল? আমি
প্রাইমারিতে
থাকলে, আমি
কীভাবে জানব যে
এটি
সেকেন্ডারিতে
লেখা হয়েছিল,
তাই না? আর আপনি
সবসময় এই
ধরনের এক
বিভ্রান্তিকর
পরিস্থিতিতে
পড়বেন, যেখানে
আপনাকে হয়
কিছুটা রোল
ব্যাক করতে হবে
অথবা কিছু ডেটা
হারাতে হবে। আর
কনসেনসাসের
জন্য অন্তত
তিনটি
রেপ্লিকা
প্রয়োজন, তবে
আপনি তিনটির
বেশি
রেপ্লিকার
মধ্যেও
কনসেনসাস
রাখতে পারেন।
আর কনসেনসাসের
মূল ধারণাটি
হলো: আমি তিনটি
জায়গায় লিখব,
এবং সাধারণত
আপনি যখন রিড
করেন, তখন
একাধিক জায়গা
থেকে পড়েন না।
কিন্তু যদি
কোনো ক্র্যাশ
হয়, আমাকে
রিকভারি করতে
হবে। তখন আমি
রিড করতে পারি,
ওহ, আমি তিনটির
মধ্যে যেকোনো
দুটি থেকে
পড়তে পারি, এবং
আমি জানি যে আগে
কী ঘটেছিল তা
আমি
মোটামুটিভাবে
নির্ধারণ করতে
পারব। আর
সাধারণত
রিকভারির
সময়েই আপনি এই
কনসেনসাস
রিডটি করে
থাকেন। সুতরাং,
রিড অপারেশন
সাধারণত শুধু
একটি রেপ্লিকা
থেকেই হয়।
আপনাকে তিনটি
রেপ্লিকাতেই
রাইট করতে হয়
এবং কোনো
ক্র্যাশ বা
ফেইলারের সময়
কনসেনসাস রিড
অপারেশনটি
সম্পন্ন হয়।
>> আর CockroachDB-এর
ভেতরে,
কনসেনসাসের
জন্য আপনি
কয়টি
রেপ্লিকা বেছে
নেন?
>> এটি সাধারণত
তিনটি হয়।
কিছু সিস্টেম
টেবিলের জন্য
এটি পাঁচটিও
হতে পারে এবং
গ্রাহকদেরও
এটি
নিয়ন্ত্রণ
করার ক্ষমতা
থাকে। ডাটাবেস
লেভেলে, আপনি
পাঁচটি বা
সাতটি
রেপ্লিকাতে
রাইট করতে
পারেন। পাঁচটি
রেপ্লিকা
ব্যবহার করার
কারণ হলো, আপনি
যদি ডেটার
স্থায়িত্ব
নিয়ে সত্যিই
চিন্তিত হন, তবে
আপনি এটি
ব্যবহার করতে
পারেন। কিন্তু
এতে একটি
স্লোডাউন বা
গতি কমে
যাওয়ার
ব্যাপার আছে,
কারণ আপনি যত
বেশি ডেটাতে
রাইট করবেন, তত
বেশি স্টোরেজ
স্পেসের
প্রয়োজন হবে।
>> আর আমরা এখানে
নোডগুলোর
কারণে হওয়া
স্লোডাউনের
কথা বলছি,
কিন্তু যদি
রেপ্লিকাগুলো
বিভিন্ন
রিজিয়নের
মধ্যে থাকে,
তাহলে
ভূমিকম্প বা
বিদ্যুৎ
বিভ্রাটের মতো
দুর্যোগের
জন্য আপনার
অনেক বেশি
রেসিলিয়েন্স
বা প্রতিরোধ
ক্ষমতা থাকবে,
কিন্তু এর ফলে
অতিরিক্ত
ল্যাটেন্সিও
দেখা দেবে। এটা
তো আলোর গতির
সাধারণ নিয়ম,
তাই না?
>> আলোর গতির
ল্যাটেন্সি,
তাই তো? আর এটা,
জানেনই তো,
কয়েক দশ, বা
কয়েকশ
মিলিসেকেন্ড,
এমনকি তারও
বেশি হতে পারে
যদি আপনি
বিশ্বজুড়ে
কাজ করেন।
সুতরাং, আপনার
কোয়েরিগুলো
কীভাবে
আর্কিটেক্ট
করবেন, সেই
বিষয়ে আপনাকে
খুব সতর্ক
থাকতে হবে।
ডিস্ট্রিবিউটেড
ডেটাবেসগুলোর
ক্ষেত্রে একটা
সাধারণ সত্য
হলো, আপনি
বারবার ডেটা
আদান-প্রদান
করতে চাইবেন না
। আপনি চাইবেন
আপনার সমস্ত
রিড অপারেশন
একটি
প্যারালাল রিড
সেটের মাধ্যমে
করতে, সেগুলো
ফেরত পেতে,
তারপর রাইট
অপারেশন করতে,
তাই না? কিন্তু
আপনি যদি
সিরিয়াল
অপারেশন করেন,
যেখানে আমি
একটি রো রিড করি
, একটি রো রাইট
করি, আবার একটি
রো রিড করি,
আবার একটি রো
রাইট করি, তাহলে
ল্যাটেন্সিগুলো
কেবল বাড়তেই
থাকে।
>> আমরা
ককরোচডিবি
প্রতিষ্ঠা
নিয়ে কথা
বলেছি, কিন্তু
কোম্পানিটি
কীভাবে বাড়ছে
এবং আপনারা আজ
কোথায় আছেন?
>> হ্যাঁ, হ্যাঁ।
মানে, আমরা মিশন
ক্রিটিক্যাল
অ্যাপ্লিকেশনগুলোতে
ব্যবহৃত হচ্ছি
। এটাই আমাদের
মূল কাজ।
>> যাইহোক, আপনি কি
মিশন
ক্রিটিক্যাল
বিষয়টি নিয়ে
আরেকটু
বিস্তারিত
বলতে পারেন,
কারণ এটা
অনেকটা...
>> হ্যাঁ।
>> আপনি যদি এমন
কোনো
ইন্ডাস্ট্রিতে
না থাকেন
যেখানে এর অর্থ
কী তা আপনি
জানেন, তবে
বাইরে থেকে
কোনটি মিশন
ক্রিটিক্যাল
তা নির্দিষ্ট
করে বলা কঠিন
মনে হতে পারে।
আমার SaaS, যা
বিজ্ঞাপন
দেখানোর মতো
কাজ করে, তা কি
মিশন
ক্রিটিক্যাল?
সম্ভবত না।
>> হ্যাঁ। তাই,
আমার মতে মিশন
ক্রিটিক্যাল
হলো সেই ধরনের
অ্যাপ্লিকেশন,
যেগুলোকে অন্য
পরিভাষায়
টিয়ার জিরো
অ্যাপ্লিকেশন
বলা হয়।
যেগুলো একটি
কোম্পানি
চালানোর
ক্ষেত্রে
একেবারে মূল
ভিত্তি বা
ক্রাউন
জুয়েলের মতো,
যেমন, একটি
ট্রেডিং
সিস্টেম।
আপনার ট্রেডিং
সিস্টেম ডাউন
হতে পারে না।
যদি ট্রেডিং
সিস্টেম ডাউন
হয়ে যায়, তবে
এটি সেই
ফার্মের জন্য
একটি গুরুতর
সমস্যা হয়ে
দাঁড়ায় যারা
ট্রেডিং
সিস্টেমটি
চালাচ্ছে।
যেমন, ব্যাংকিং
সিস্টেম।
কিন্তু
এছাড়াও, যেমন,
আমরা DoorDash-এর
সাথে কাজ করি,
তাই না? কিছু
লোক হয়তো মনে
করতে পারে যে
আপনার বুরিটো
ডেলিভারি করা
একটি মিশন-
ক্রিটিক্যাল
সিস্টেম। DoorDash-
এর জন্য তো
অবশ্যই, তাই না?
যদি সেটি ডাউন
হয়ে যায়, তবে
তা সমস্যাজনক।
আমরা শপিং
কার্ট চালাই,
মানে এই ধরনের
অন্যান্য
জিনিস চালাই।
ব্যাপারটা এমন
যে, যদি শপিং
কার্ট বন্ধ
হয়ে যায়,
তাহলে সেই
কোম্পানি
প্রতি ঘন্টায়
লক্ষ লক্ষ ডলার
লোকসান করবে।
সুতরাং, এটাই
হলো সেই গুরুতর
বিষয় যা নিয়ে
আপনাকে ভাবতে
হবে।
>> হ্যাঁ, আমি মনে
করি অবশ্যই
তাদের লোকসান
হচ্ছে, কিন্তু
এটা এমন একটা
সময় যখন তাদের
গ্রাহকরাও
এটাকে জলের
কলের মতো
স্বাভাবিকভাবে
চলতে দেখতে
অভ্যস্ত। আর
যখন এটা ঠিকমতো
চলে না, তখন
ব্যাপারটা ঠিক
আপনার
ইউটিলিটি
পরিষেবা নষ্ট
হয়ে যাওয়ার
মতোই, তাই না?
আপনার জল বা
বিদ্যুৎ চলে
গেলে আপনি
হয়তো টিকে
যাবেন, কিন্তু
যা আশা
করেছিলেন তা
হবে না।
>> হ্যাঁ, হ্যাঁ,
হ্যাঁ। আর সবাই
ভাবতে থাকে, এ
কী, এ কী, আমরা
কোন যুগে বাস
করছি যে
বিদ্যুৎ চলে
যায়? গুগলে
আমাদের মাথায়
এটা এমনভাবে
গেঁথে দেওয়া
হয়েছিল যে,
জিমেইল বন্ধ
হতে পারে না।
মানুষ এর ওপর
নির্ভর করে।
সার্চ বন্ধ হতে
পারে না, তাই না?
যদি এটা
বেশিক্ষণ বন্ধ
থাকে, মানুষ
অন্য সিস্টেমে
চলে যাবে। উম,
আর ব্যাপারটা
এমন নয় যে,
কিছু দিক থেকে
সার্চ ততটা
জরুরি নয়,
কিন্তু আরে
দাঁড়ান,
প্রত্যেকটা
সার্চের
পেছনেই
বিজ্ঞাপনের
টাকা থাকে, এবং
আপনি আসলে আয়ে
এর প্রভাবটা
লক্ষ্য করতে
পারবেন। আর এটা
শুধু আয়ের
সামান্য
প্রভাবই নয়,
সুনামেরও
ক্ষতি হয়।
মানে, আমার মনে
হয় এটাই
কোম্পানিগুলোকে
সবচেয়ে বেশি
বিষিয়ে তোলে,
যেমন ধরুন,
আপনার ব্যাংক
যদি বেশ
কিছুদিন ধরে
বন্ধ থাকে,
তাহলে সুনামের
যে ক্ষতি হবে তা
ভয়াবহ। আর,
জানেন তো, আমরা
প্রায়ই বলি, ওহ
, তাহলে তো
দিদিমা তার
ভাড়া দিতে
পারবেন না এবং
তাকে উচ্ছেদ
করা হবে।
আপনাকে এই
দায়িত্বটা
সত্যিই খুব, খুব
গুরুত্ব
সহকারে নিতে
হবে।
>> না, কিন্তু
জিমেইলও যে
অত্যন্ত জরুরি,
সেটাও একটা
বিষয়। এখানে
আসার পথেই, আমরা
পরে নম্বর
বিনিময়
করেছিলাম,
কিন্তু আমরা
ইমেইলের
মাধ্যমে
যোগাযোগ
করছিলাম। যেমন,
ওহ, আমি আপনাকে
বলছিলাম যে
আপনি এখানে
আছেন। আমি
ইমেইল
করেছিলাম, এবং
আমি এক
মুহূর্তের
জন্যও ভাবিনি
যে এটা বন্ধ
হয়ে যেতে পারে
। আর আমার মনে
হয় আমরা ৩০
সেকেন্ডের
মধ্যেই সাড়া
দিচ্ছিলাম, তাই
না? আর আমি জানি
যে এটা আছে।
যেমন, আমি আলাদা
কোনো
যোগাযোগের
লাইন খোলার
ঝামেলায়
যাইনি, তাই।
>> হ্যাঁ, হ্যাঁ।
হ্যাঁ,
ব্যাপারটা হলো
যখন
ব্যবহারকারীদের
সাথে আপনার এই
ধরনের
বিশ্বাসের
সম্পর্ক তৈরি
হয়, তখন আপনাকে
তা বজায় রাখতে
হবে এবং এতে
বিনিয়োগ করতে
হবে। কিন্তু, এর
ফলে
ব্যবহারকারীর
জন্যও এক ধরনের
স্বাধীনতা
তৈরি হয়,
যেখানে আপনাকে
ভাবতেই হয় না
যে, 'আমাকে এটা
নিয়ে চিন্তা
করতে হবে না।
এটা এমনিতেই
কাজ করবে।' আর
কোম্পানির কথা
বলতে গেলে,
আপনাদের
মোটামুটি কতজন
ইঞ্জিনিয়ার
আছে?
>> আমাদের প্রায়
১০০ জন আছে।
>> আমি আসলে
ইঞ্জিনিয়ারের
সঠিক সংখ্যাটা
জানি না, ১১০ জন,
তবে সব মিলিয়ে
R&D-তে ১৫০ জন
থাকতে পারে।
শুধু
ইঞ্জিনিয়ার
ছাড়াও আরও
অনেকে আছেন,
যেমন আমি
স্পষ্টতই একজন
ইঞ্জিনিয়ারিং
ম্যানেজার।
তারাও
ইঞ্জিনিয়ার।
আর তারপর, আমরা
তো ক্রমাগত
উন্নতি করছি।
একটি
ডিস্ট্রিবিউটেড
ডেটাবেস তৈরি
করতে বেশ
কিছুটা সময়
লাগে। এটা
দুর্বল
চিত্তের
মানুষের কাজ
নয়। তো, আমাদের
কয়েক বছর
লেগেছিল।
>> কয়েকবার।
হ্যাঁ।
>> আমি একটি
ডিস্ট্রিবিউটেড
স্টোরেজ
সিস্টেম এবং
একটি
ডিস্ট্রিবিউটেড
ডেটাবেস তৈরি
করেছি। এটা
দুর্বল
চিত্তের
মানুষের কাজ
নয়, তাই না?
সুতরাং, একটি
নির্দিষ্ট
স্তরের
স্থিতিশীলতায়
পৌঁছানো, তারপর
সেই
স্থিতিশীলতার
স্তর ছাড়িয়ে
আরও উন্নত
মানের কাজ করা,
সমস্ত বাগ দূর
করা, এবং তারপর
ক্রমাগত
উদ্ভাবন করে
সিস্টেমে আরও
পারফরম্যান্স
যোগ করা,
এন্টারপ্রাইজগুলোর
মধ্যে আরও
ভালোভাবে
ইন্টিগ্রেট
করার জন্য নতুন
নতুন
ফাংশনালিটি
যুক্ত করার মতো
অনেক কাজ করতে
হয়। আমাদের
আয় বছরের পর
বছর ধরে
স্থিরভাবে
বাড়ছে এবং এখন
এটি এমন একটি
জায়গায় এসে
দাঁড়িয়েছে
যেখানে আমরা
ভবিষ্যতের
সাফল্যের পথও
দেখতে পাচ্ছি।
>> আর আমি আপনাকে
আপনার কোডিং
অভ্যাস
সম্পর্কে
জিজ্ঞাসা করতে
চাই। তো, যখন
আপনি
কোম্পানিটি সহ-
প্রতিষ্ঠা
করেছিলেন,
প্রথম কয়েক
বছরে আপনি কতটা
কোড লিখেছিলেন?
>> আমি অনেক
লিখেছিলাম।
আমি বরাবরই
একজন খুব
প্রলিফিক
কোডার। শুরুর
দিকে আমি অনেক
কোড লিখেছিলাম
। আর শুরুর
দিনগুলোতে,
মানে, আমি আর
বেন স্পেন্সার
ছিলাম
টেকনিক্যাল কো-
ফাউন্ডার। আর
আমরা
ইতিমধ্যেই
অনেক কোড লিখে
ফেলেছিলাম এবং
আমিও তার
ব্যতিক্রম
ছিলাম না।
কিন্তু, জানেন,
আমি যদি আমার
গিটহাবের
কাজের দিকে
ফিরে তাকাই,
তাহলে দেখব যে
সেরা
বছরগুলোতে
বছরে হয়তো
১,০০,০০০ লাইন
কোড লিখেছি, যা
অনেক। হ্যাঁ।
হ্যাঁ। তো,
>> আমরা সবাই তখন
>> প্রি-এআই যুগের
কথা বলছি।
>> প্রি-এআই, তাই
না? এটা সেই
সময় যখন এই
কাজগুলো হাতে-
কলমে করতে হতো,
তাই তো? একটা
সময় আমরা RocksDB
নামের একটা
সিস্টেম
ব্যবহার করা
শুরু করি, যেটা
একটা LSM (লাইনস
সিস্টেম)। একটা
সময়, আমার মনে
হয় সেটা ২০১৯
সালের দিকে,
আমরা এটার কিছু
সীমাবদ্ধতার
সম্মুখীন হই।
আমি ঠিক করি যে,
আমরা এটা নতুন
করে লিখব। আর
এটা লেখার মূল
কারণ ছিল
প্রায় ৪০, ৫০
হাজার লাইনের
কোড। আর তারপর
আরও কিছু লোক
এগিয়ে এসে
সাহায্য করেছে,
এবং আপনি যখন
সেই কাজের
পরিমাণটা
দেখেন, তখন আমার
শুধু মনে হয়, "
বাপরে, এত কিছু
মাথায় রাখা তো
অনেক কঠিন ছিল।"
অনেক। শুধু
টাইপ করাই অনেক
বড় একটা কাজ।
জানেন, ১,০০,০০০
লাইন কোড।
ইন্ডাস্ট্রিতে
গড়পড়তা যেটা
বলা হয়, তা হলো
একজন
ইঞ্জিনিয়ার
মাসে ৩,০০০ লাইন
কোড লেখেন। আর
আপনি যদি এটাকে
গুণ করেন, তাহলে
বছরে হয়তো
৩৬,০০০ লাইন।
এটা ভালো, তাই
না? সুতরাং,
আমরা অনেক কাজ
করছি। জানেন,
আমি যখন এটা
দেখি, তখন মনে
হয় যেন একবারে
মাথায় রাখার
মতো একটা
সর্বোচ্চ সীমা
আছে। আমি যখন
প্রথম এই
ইন্ডাস্ট্রিতে
এসেছিলাম, তখন
থেকে টুলসগুলো
অনেক উন্নত
হয়েছে। আমরা
আরও ভালো
ডিবাগিং কৌশল,
আরও ভালো
টেস্টিং কৌশল
পেয়েছি,
কিন্তু এখনও
বেশ
উল্লেখযোগ্য
পার্থক্য
রয়েছে।
>> আর আপনি শুরু
থেকেই সিটিও
ছিলেন, সহ-
প্রতিষ্ঠাতা
সিটিও, কিন্তু
২০২২ সালের
দিকে এমন একটা
সময় এসেছিল
যখন আপনি
কিছুটা কম
হস্তক্ষেপ
করার
সিদ্ধান্ত
নিয়েছিলেন,
তাই না?
>> হ্যাঁ, হ্যাঁ।
>> আপনি কি আমাকে
সে সম্পর্কে
বলতে পারেন?
>> মানে,
ইঞ্জিনিয়ারিং
লিডারদের জন্য
সাধারণ
নিয়মটা হলো,
আপনার নিজের
একটা টিম থাকতে
হবে, আপনাকে
আপনার টিমকে
পরিচালনা করতে
হবে। আর আমাদের
একজন ভিপি অফ
ইঞ্জিনিয়ারিং
ছিলেন, কিন্তু
আমি এমন একটা
পর্যায়ে
পৌঁছে
যাচ্ছিলাম যে,
আচ্ছা, আমার
কোডিং করার দিন
কি শেষ হয়ে
গেছে, মানে, আমি
সরাসরি
ঊর্ধ্বতন
কর্তৃপক্ষের
কাছ থেকে এই
পরামর্শটা
পেয়েছিলাম।
এবং জানেন, আমি
দীর্ঘ সময় ধরে
এই পরামর্শটা
পাচ্ছিলাম এবং
আমি এর
বিরোধিতা
করেছিলাম,
কিন্তু একটা
সময়ে আমি মেনে
নিয়েছিলাম।
এবং আমার মনে
হয় পরামর্শটা
সঠিক ছিল। আমি
বলছি না যে
পরামর্শটা তখন
ভুল ছিল, কিন্তু
২০২২ থেকে ২০২৪
সালের মধ্যে
এমন একটা সময়
ছিল যখন আমার
কাজের পরিমাণ
কমে গিয়েছিল।
আমার মনে হয়
আমি ওই সময়ে
সুইস টেবিলের
কাজটা
করেছিলাম,
কিন্তু আমি
>> ব্যবসার মূল
অংশে তেমন কিছু
করছিলাম না।
>> হ্যাঁ, ব্যবসার
মূল অংশে। আমি
সেখানে গিয়ে
কিছু কাজ করতাম,
কিন্তু
সারাদিন
মিটিংয়ে
থাকলে কোডিং
করাটা সত্যিই
খুব কঠিন। এবং
আমার মনে হয়
এটাই মূল
দ্বন্দ্ব।
আপনার মনে হয়
যে,
>> আপনি
মিটিংয়ের
বোঝা,
সমন্বয়ের
বোঝা এবং সেইসব
>> কাজগুলো নিজের
কাঁধে তুলে
নিয়েছেন যা
আমার করার কথা
ছিল। সঠিকভাবে
বলতে গেলে, আগে
আপনি আপনার
মস্তিষ্কের
বেশিরভাগ অংশ
কোডের পেছনে
ব্যয় করতেন, আর
এখন আপনি কোডের
ঊর্ধ্বে থাকা
ব্যবসা,
ইঞ্জিনিয়ারিং
, গ্রাহক বা এই
জাতীয়
অন্যান্য
বিষয় নিয়ে
ভাবছেন। এর
সাথে
>> একজন
এক্সিকিউটিভের
দায়িত্বও
পালন করতে
হচ্ছে, বুঝতেই
পারছেন। তাই,
একই সাথে এই সব
দায়িত্ব পালন
করা খুবই কঠিন।
আর এরপর আমি
আবার এই কাজে
ফিরে আসি কারণ
এআই (AI) এর
আবির্ভাব ঘটতে
শুরু করে।
>> তো, আপনি কখন
এআই ব্যবহার
করা শুরু করলেন,
কখন থেকে
কোডিংয়ের
ক্ষেত্রে
এটিকে দরকারি
বলে মনে হতে
লাগল?
>> হ্যাঁ,
ব্যাপারটা বেশ
মজার ছিল, কারণ,
আপনি জানেন,
অটোকমপ্লিটের
উন্নত
সংস্করণগুলোর
মতো এর
প্রাথমিক
সংস্করণগুলো
যখন এলো,
>> আমরা গিটহাব
কপাইলট, কার্সর
বা এর প্রথম
দিকের
সংস্করণগুলোর
কথা বলছি।
>> ওটার সাথেই
আমার প্রথম
পরিচয় হয়।
আমরা তখন
কার্সর নিয়ে
কিছুটা কাজ
করেছিলাম,
কিন্তু ওগুলো
সবই ছিল এক
ধরনের উন্নত
অটোকমপ্লিট।
এটা বেশ অদ্ভুত
ছিল যে আপনি
কিছু একটা টাইপ
করা শুরু করলেই
ফাংশনের বাকি
অংশটা পূরণ
হয়ে যেত। আপনি
সেটার দিকে
তাকিয়ে
ভাবতেন, আরে,
এটা তো ঠিকই
লিখেছি।
ব্যাপারটা
অদ্ভুত, তাই না?
আর, জানেন, আমরা
আমাদের
ইঞ্জিনিয়ারদের
এটা ব্যবহার
করতে উৎসাহিত
করার চেষ্টা
করছিলাম, এবং
একটা পর্যায়ে,
আমার ঠিক মনে
নেই এটা আমার
আইডিয়া ছিল
নাকি আমার সহ-
প্রতিষ্ঠাতার
বা অন্য কারো,
এবং মূলত,
মানুষকে এটা
কীভাবে
ব্যবহার করতে
হবে সে
সম্পর্কে
ভালোভাবে পথ
দেখাতে হলে,
আপনাকে নিজেই
একজন
ব্যবহারকারী
হতে হবে। জানেন,
আমার মনে হয়
এটা
সাধারণভাবে
ইঞ্জিনিয়ারিং
ম্যানেজমেন্টের
ক্ষেত্রেও
সত্যি। যেমন,
আপনি যদি
ইঞ্জিনিয়ারদের
পরিচালনা করতে
চান, তাহলে
আপনাকে জানতে
হবে কীভাবে
একজন
ইঞ্জিনিয়ার
হতে হয়। আপনি
যদি একজন ভালো
ইঞ্জিনিয়ার
হতে না জানেন,
তাহলে অন্য
ইঞ্জিনিয়ারদের
পরিচালনা করা
সত্যিই খুব
কঠিন।
>> আমার মনে হয়,
অন্ততপক্ষে
তাদের সাথে
মানিয়ে নিতেই
আপনার কষ্ট হবে
।
>> একদম। একদম।
তাই, আমি একরকম
দায়িত্বটা
নিজের কাঁধে
তুলে নিলাম,
যেমন, না, মানে
এটা খুব
তাড়াতাড়িই
স্পষ্ট হয়ে
গিয়েছিল যে
এটা সম্ভবত
কোনো দিকে যাবে,
কিন্তু এটা ঠিক
পরিষ্কার ছিল
না যে কতদূর, কত
দ্রুত যাবে। আর
আপনি যখন এটা
নিয়ে
ঘাঁটাঘাঁটি
শুরু করলেন, আমি
ভাবলাম, ওহ,
আচ্ছা। কিন্তু
এটা যথেষ্ট
ভালো নয়। এটা...
পুরোপুরি
যথেষ্ট ভালো না,
কিন্তু কী আর
করা, কোডিংয়ে
আবার ফেরা যাক।
খুব দ্রুতই,
আপনি প্রাণের
স্পন্দন দেখতে
শুরু করলেন,
যেমন ধরুন, ওপাস
মডেলগুলো আসতে
শুরু করল।
প্রথমে সনেট,
তারপর ওপাস, আর
আপনি এগুলো
দেখে ভাবলেন, ওহ
, ওয়াও, আচ্ছা।
বেশ, এগুলো
দিয়ে তো অনেক
কিছুই করা যায়,
কিন্তু কোডটা
তখনও খুব একটা
ভালো না।
কিন্তু তারপর
এটা ছিল
ক্রমাগত
উন্নতির এক
ধারাবাহিকতা,
আর আমি সনেট
দিয়ে অনেক কাজ
করতে শুরু
করেছিলাম এবং
তারপর ওপাস
ব্যবহার করতে
শুরু করি। আর
জানেন, অন্য
সবার মতো আমারও
সেই একই
মুহূর্ত
এসেছিল, আর এটা
ছিল গত বছর, গত...
>> হ্যাঁ, যখন
>> নভেম্বর,
ডিসেম্বর,
শীতের ছুটি
চলছিল, তাই না?
>> হ্যাঁ,
থ্যাঙ্কসগিভিংয়ের
সময় ছিল। আমার
পরিষ্কার মনে
আছে কারণ,
>> আপনি তো আরাম
করছিলেন না,
আপনি কোডিং
করছিলেন, তাই না
? আপনি এজেন্টের
কাজ করছিলেন।
>> আমিও অন্য সবার
মতোই এজেন্টের
কাজ করছিলাম।
কিন্তু হ্যাঁ,
আমার এমন একটা
কাজ ছিল যা আমি
অনেকদিন ধরে
করতে
চেয়েছিলাম।
ককরোচডিবি (
CockroachDB)-র উপর, আমি
আসলে
ককরোচডিবি-র
বিভিন্ন
কনফিগারেশন
পরীক্ষা করতে
চেয়েছিলাম,
যেমন—বিভিন্ন
ভার্টিকাল
স্কেলিং জুড়ে:
যেমন একটি নোডে
কয়টি সিপিইউ
আছে, কয়টি
স্টোর বা ডিস্ক
আছে, সিস্টেমে
কয়টি নোড আছে,
এবং এই বিশাল
ম্যাট্রিক্স
জুড়ে পরীক্ষা
করতে
চেয়েছিলাম।
এটা এমন একটা
কাজ ছিল যার
অগ্রাধিকার
আমি কখনোই
ঠিকমতো ঠিক
করতে পারিনি,
কারণ এটাকে
কখনোই খুব
জরুরি বলে মনে
হয়নি, কিন্তু
আমার সবসময়
একটা
স্বতঃস্ফূর্ত
ধারণা ছিল যে এর
মধ্যে কিছু
একটা আছে। আর
তারপর প্রায় ৪
দিনের মধ্যে,
কোডটা যেন
আপনাআপনি তৈরি
হয়ে গেল যখন
আমি ওপাস ৪৭ (Opus 47)
ব্যবহার
করছিলাম, নাকি
৪৫? সংখ্যাটা যা
-ই হোক না কেন।
আমার যতদূর মনে
পড়ে, আমি বেশ
দ্রুত টাইপ
করতে পারি। আর
আমার শুধু মনে
আছে যে আমার এমন
একটা অনুভূতি
হচ্ছিল, যেন
কোডটা আমার
চোখের সামনেই
তৈরি হয়ে
যাচ্ছে। আপনি
এই জিনিসগুলো
চাইতেন। আমি
আসলে টাইপ করার
অভ্যাসটা
ছেড়ে
দিয়েছিলাম।
আপনি শুধু
চাইতেন। কোনো
কিছুর জন্য, তা
বাস্তবে রূপ
নেয়। আচ্ছা,
আপনি যদি কখনো
ওই ধরনের কোনো
সিনেমা দেখে
থাকেন, যেখানে
একজন
সফটওয়্যার
ইঞ্জিনিয়ার
কিবোর্ডের
সামনে এসে টাইপ
করা শুরু করে
এবং স্ক্রিনে
তা দেখানো হয়,
মনে হয় যেন
টাইপ করার গতি
মানুষের
স্বাভাবিক
গতির চেয়ে
অনেক বেশি। আর
তারপর
ব্যাপারটা ছিল
ঠিক সেরকম, তাই
না? আমার
>> মনে হয়, একজন
সফটওয়্যার
ইঞ্জিনিয়ার
ভাবত, আমরা
এগুলো দেখে
হাসতাম। আমার
এখনও 'সোর্ডফিশ'
সিনেমার কথা
মনে আছে, যখন
তারা
জিনিসগুলো
চলতে বা কোড
ভেসে উঠতে
দেখাত, জানেন?
আপনি দেখতেন যে
লোকটি টাইপ
করছে এবং তারপর
সেটা একটা বড়
লাইন হয়ে যেত,
আর একজন
সফটওয়্যার
ইঞ্জিনিয়ার
ভাবত, আমরা
হাসছি কারণ
ব্যাপারটা
আসলে সেরকম নয়,
কিন্তু ওই
ইফেক্টটা
সত্যিই
অসাধারণ, তাই না
?
>> হ্যাঁ, হ্যাঁ।
কিন্তু দেখুন,
এটা ওই
ইফেক্টের
চেয়েও ভালো,
তাই না?
>> কারণ এবার এটা
সত্যিই কাজ করে
।
>> আর
তুলনামূলকভাবে
এটা এতটাই ধীর
যে, তা তার
চেয়েও দ্রুত
বাস্তবে রূপ
নেয়। মানে,
আপনি আক্ষরিক
অর্থেই বলতে
পারেন, আমরা তো
কথাই বলছিলাম...
বি-ট্রি নিয়ে
অনেক কিছু জানি
। আমি গত মাসে
আরেকটি বি-ট্রি
ইমপ্লিমেন্ট
করেছি।
>> হ্যাঁ, এবং
প্রায় ১০,০০০
লাইনের
অত্যন্ত
অপটিমাইজড
রাস্ট (Rust) কোড
ইমপ্লিমেন্ট
করতে প্রায় ৩০
মিনিট সময়
লেগেছে। মানে,
এটা ভাবলে মাথা
ঘুরে যায়।
মানে, আমাদের
পরে ১০,০০০ লাইন
কোডটা দেখা
উচিত। এটা একটা
অবিশ্বাস্য
পরিমাণ। আপনি
শারীরিকভাবে
এত দ্রুত টাইপ
করতে পারবেন না
।
>> আপনি কোডিংয়ে
ফিরে আসতে শুরু
করেছেন। আমরা
কি ভাইব কোডিং
বা
প্রোটোটাইপিংয়ের
কথা বলছি, নাকি
আপনি
ককরোচডিবি-তে (
CockroachDB) যা করছেন
তার সমমানের,
প্রোডাকশন-
রেডি কোড
কন্ট্রিবিউট
করা শুরু
করেছেন?
>> আচ্ছা, এটা শুরু
হয়েছিল একটা
টুল দিয়ে, যেটা
ছিল এক ধরনের
বেঞ্চমার্কিং
টুল যা একটি
ম্যাট্রিক্স
পরীক্ষা করত।
আমি সিটিও (CTO)।
আমাদের একটি
সিটিও অফিস আছে
। সিটিও অফিসের
মূল উদ্দেশ্য
হলো উদ্ভাবন
করা। এবং আমি
এমন জায়গা
খুঁজছিলাম
যেখানে আমরা
উদ্ভাবন করতে
পারি। এবং যে
বিষয়গুলোতে
আমরা উদ্ভাবন
করতে
চেয়েছিলাম
তার মধ্যে একটি
ছিল, আরও ভালো...
ককরোচডিবি
ক্লাস্টারের
অটো-স্কেলিং।
আর জানুয়ারির
দিকে, আমি এমন
একটা কিছু
আবিষ্কার করি
যাকে আপনি
গবেষণামূলক
যুগান্তকারী
সাফল্য বলতে
পারেন। এটা
সম্ভব হয়েছিল
কারণ আমি এই
ক্ষেত্রটিতে
কেবল
হাতড়াচ্ছিলাম
এবং মডেলগুলো
নিয়ে কাজ করে
তা বোঝার
চেষ্টা
করছিলাম। আর
তারা শুধু
কোডিংয়েই
দক্ষ নয়, তারা
আপনাকে
ডিজাইনের
ধারণাগুলো
অন্বেষণ করতে
সাহায্য করতেও
পারদর্শী। এবং
আমার মনে হয়
এটাই সবচেয়ে
আকর্ষণীয়
বিষয়, যেখানে
আপনাকে এই
মানসিকতা থেকে
বেরিয়ে আসতে
হবে যে, "আমি ঠিক
জানি আমি কী
তৈরি করতে
যাচ্ছি।" বরং
ভাবতে হবে, "আরে,
আমাদের এই
সমস্যাটা আছে।
এটা নিয়ে
আলোচনা করুন।
আমার সাথে
অংশীদার হোন।"
>> হুম।
>> আর এটা
>> একটা স্পারিং
পার্টনার হতে
যাচ্ছে।
>> পার্টনার।
জানেন, একটা
পরামর্শ আছে যা
আপনি হয়তো
শুনে থাকবেন যে,
যদি আপনি কোনো
সমস্যায় আটকে
যান, তাহলে
আপনার উচিত '
ইয়েলো ডাক'
হয়ে যাওয়া। '
>> রাবার ডাক' হয়ে
যাওয়া। '
>> রাবার ডাক' হয়ে
যাওয়া। উম,
আমার মনে হয়
আমি এটাকে '
ইয়েলো ডাক'
হিসেবেই
শুনেছি, জানেন।
শুধু কোনো
কিছুর সাথে কথা
বলুন। সেটার
উত্তর
দেওয়ারও
আপনার
প্রয়োজন নেই।
কিন্তু এখন
আপনি এই
সিস্টেমের
সাথে, এই
বুদ্ধিমত্তার
সাথে কথা বলতে
পারবেন এবং এটি
আপনাকে
বিভিন্ন তথ্য
ফিরিয়ে দেবে।
আর এটা সবসময়
সঠিক হয় না।
মানে, আজও এটাই
সত্যি। এই
মডেলগুলো
অসাধারণ। ফেবল
অসাধারণ।
অ্যাস্ট্রা
অসাধারণ। আর
এগুলো সবসময়
সঠিক হয় না,
কিন্তু তারা
যেন এত কিছু
জানে। এটা
একেবারে
বিশ্বকোষীয়।
আর আপনি খুব খুব
দ্রুত বিভিন্ন
ধারণা যাচাই
করতে পারবেন।
এবং তারপর বলতে
পারবেন, "আচ্ছা,
আচ্ছা, এটা আমার
কাছে ঠিক মনে
হচ্ছে না।" আর
তখন এটা বলবে, "
ওহ, হ্যাঁ, আপনি
একদম ঠিক
বলেছেন।" জানেন,
আমি এই অসুস্থ
জাঁকজমকটা
ঘৃণা করি। এটা
আমাকে শেষ করে
দেয়। অথবা
আপনি ঠিকই
করেছেন, আপনি
ঠিকই করেছেন।
এটা একটা নতুন
পর্ব। হ্যাঁ,
এবং তারপরেও এত
দ্রুত উন্নতি
করতে সক্ষম
হয়েছে। এবং
আমি এটাকে
একেবারে
অবিশ্বাস্য
মনে করি। এত
দ্রুত শুধু
কিছু পার্শ্ব
কাজ, কিছু টুলস
তৈরি করা থেকে
সরে এসে, গত ৮
মাসে, অর্থাৎ
জানুয়ারি
থেকে, আমরা একটি
নতুন লঞ্চের
দিকে এগিয়ে
যাচ্ছি। এবং এর
বেশিরভাগই
তৈরি করেছে
জেন্টলি
পাওয়ারড
ইঞ্জিনিয়াররা
এবং এখন পুরো
কোম্পানিই এর
সাথে যুক্ত
হয়েছে, যেখানে
আমার মনে হয়
প্রায় ১০০%
ইঞ্জিনিয়ারই
কমবেশি এটি
ব্যবহার করছে।
এবং প্রচুর কোড
তৈরি হচ্ছে এবং
আমার মনে হয়
এটি খুব উচ্চ-
মানের কোড। এই
মডেলগুলো ততটা
নির্ভুলভাবে
পরীক্ষা করা
হচ্ছে না। তারা
পারফরম্যান্সের
দিকে যথেষ্ট
মনোযোগ দেয় না
। কিন্তু আপনি
যদি তাদের পথ
দেখাতে পারেন।
সঠিক উপায় হলো,
এবং আমি মনে করি
যারা আগে
ম্যানেজমেন্টের
কাজ করেছেন
তাদের জন্য এতে
একটি বিশাল
সুবিধা রয়েছে
। এটা অনেকটা
মানুষের
ম্যানেজার
হওয়ার মতো,
যেখানে আপনি
একটি বড় দলের
ম্যানেজার,
আপনি কোডের
প্রতিটি লাইন
দেখছেন না,
কিন্তু আপনি
অবশ্যই
সিস্টেমটির
আর্কিটেকচার
তৈরিতে
সাহায্য করছেন
। আমি মনে করি
এখানে একটি খুব
জোরালো
সাদৃশ্য
রয়েছে। আমি
>> একজন
ইঞ্জিনিয়ারিং
ম্যানেজার
ছিলাম। আমার
মতে, এই
এজেন্টদের
সাথে কাজ করা
ম্যানেজমেন্টের
মতো নয়, কারণ
ম্যানেজমেন্টে
অনেক বেশি
মানবিক বিষয়
থাকে। যেমন,
একজন
ম্যানেজার
হিসেবে আমি যখন
এই বিষয়গুলোর
কথা ভাবি, তখন
আমি মানুষের
দিকটা, মানুষের
মধ্যেকার
দ্বন্দ্ব,
পারফরম্যান্স
রিভিউ, মিটিং
ইত্যাদি অনেক
কিছুর
সম্মুখীন
হয়েছি।
কিন্তু আপনার
কাছে এর কিছুই
নেই। আপনার
কাছে
অর্কেস্ট্রেশন
আছে। যেমন, আমি
আবারও বলছি, এটা
অনেকটা আমার
ম্যানেজমেন্টের
একটি খুব সরল
পদ্ধতির মতো,
যেখানে তারা
বাধা দেয় না।
তারা কাজ শুরু
করে দেয়। কখনও
কখনও তারা
অবিশ্বস্ত হয়,
কিন্তু আমি
অর্কেস্ট্রেশন
শব্দটি একটু
বেশি ব্যবহার
করতে পছন্দ করি
কারণ আমার মনে
হয়
ম্যানেজমেন্ট
আরও অনেক বেশি
জড়িত। যেমন
আমি মনে করি এটা
ব্যাপারটা
অনেকটা এরকম যে,
একজন টেক লিডের
কোনো
ম্যানেজমেন্টের
দায়িত্ব নেই,
কিন্তু তার
অধীনে একদল
ইন্টার্ন আছে,
এবং তাদের
পারফরম্যান্স
বা অন্য কোনো
কিছু নিয়ে
তাকে মাথা
ঘামাতে হয় না।
মানে,
ব্যাপারটা
অনেকটা সেরকমই,
যদি আপনি বোঝেন
আমি কী বলতে
চাইছি।
>> হ্যাঁ, আমি একমত
। আমি এটাকে "
ইঞ্জিনিয়ারিং
ম্যানেজার" বলে
ব্যবহার করতাম,
কিন্তু আসল
ব্যাপারটা হলো
৩০ বা ৪০ জনের
কোনো
প্রতিষ্ঠানের
টেক লিড হওয়া,
বুঝলেন? অথবা
এমন একজন
আর্কিটেক্ট
হওয়া, যার জন্য
আর্কিটেক্ট
শব্দটা আমার
কাছে একটু
অপছন্দের মনে
হয়। কিন্তু
আপনি যদি এমন
একজন
আর্কিটেক্ট হন
যিনি মাঠ
পর্যায়েও কাজ
করেন, একজন হাতে
-কলমে কাজ করা
আর্কিটেক্ট,
এবং আপনার কোনো
ম্যানেজমেন্টের
ঝামেলা নেই, যা
একাধারে
আশীর্বাদ এবং
অভিশাপ, কিন্তু
এটা বেশ
অসাধারণ যে
আপনি এই
জিনিসগুলো
দ্রুত শুরু
করতে পারেন।
যদি তারা কোনো
ভুল করে, আপনি
তাদের ঠিক না
করা পর্যন্ত
শুধরে দিতে
পারেন। আমরা
মানবিক দিক
থেকে সবসময়ই
এটা করতে
পেরেছি, এবং আমি
এখন এটা আরও
দ্রুত করতে
পারি। আমার মনে
হয়, এর
চূড়ান্ত ফল
হলো, আপনাকে
আপনার সব কাজ
নিয়ে আরও বেশি
উচ্চাকাঙ্ক্ষী
হতে হবে। করতে
হবে। আপনি আরও
বেশি, উচ্চতর
পারফরম্যান্স,
উচ্চতর গুণমান
এবং আরও
সুরক্ষিত
জিনিস তৈরি
করতে পারবেন।
তাই, আমাদের
উচ্চাকাঙ্ক্ষা
বাড়াতে হবে।
>> আপনি এটাও
উল্লেখ করেছেন
যে, এআই-এর সাথে
আপনারা যেমন
নতুন নতুন
জিনিস তৈরি
করছেন, তেমনি
ককরোচডিবি (
CockroachDB)-এর
মাধ্যমেও
আপনারা এখন এমন
কিছু তৈরি
করছেন যা এআই-এর
সাথেও
সম্পর্কিত।
আপনি কি এ
বিষয়ে কথা
বলতে পারেন?
>> হ্যাঁ, হ্যাঁ।
আমরা একাধিক
জিনিস তৈরি
করছি। মানে, এআই
-ই ভবিষ্যৎ।
>> এটা এখানে
স্থায়ীভাবে
থাকবে। আমি মনে
করি এটা
নিশ্চিত।
>> হ্যাঁ। মানে,
আমাদের একটা
থিসিস হলো, যা
খুব একটা
অবাস্তব নয়,
ভবিষ্যতে
প্রতিটি
অ্যাপ্লিকেশন
এআই দ্বারা
লেখা হবে। আমার
মনে হয়, কিছু
বিশেষ ধরনের
সফটওয়্যার,
মানে হাতে তৈরি
সফটওয়্যার
থাকবে। আমরা
দেখব যে সেগুলো
টিকে থাকবে, ঠিক
যেমন মানুষ
এখনও
অ্যাসেম্বলি
কোড লেখে, তাই
না? কিন্তু
সেগুলোর আকার
ছোট হতে থাকবে।
সুতরাং,
অসীমতটীয়ভাবে
প্রায় ১০০%
সফটওয়্যার
এআই দ্বারা
তৈরি হবে, তাই
না?
>> হ্যাঁ। এটা
কঠিন। এটা বলা
কঠিন যে, মানুষ
কখন এজেন্ট
হিসেবে কাজ
করবে, অর্থাৎ এর
পেছনের
চালিকাশক্তি ও
রূপকল্প
সরবরাহ করবে।
আমার মনে হয়,
এই অবস্থা আরও
অনেক বছর টিকে
থাকতে পারে।
কিন্তু আমার
ধারণা, কোড মূলত
এআই-ই লিখবে।
এবং আমার মনে
হয়, আমরা
অ্যাপ্লিকেশনের
এক বিস্ফোরণ
দেখতে পাব।
আমরা ককরোচ
ল্যাবসের
ভেতরে এবং
অন্যান্য
জায়গাতেও এটা
দেখছি। এই
বছরের শুরুতে,
আমরা একটি
অভ্যন্তরীণ
প্ল্যাটফর্ম
চালু করেছিলাম
যেখানে নন-
ইঞ্জিনিয়াররা
ছোট ছোট
অ্যাপ্লিকেশন
লিখতে পারতেন।
মানে, আপনি
অন্যান্য
কোম্পানিতেও
এমনটা শুনছেন।
আমরাও একই কাজ
করেছি। এবং
মাত্র কয়েক
মাসের মধ্যে,
৫০০ থেকে ১০০০
অ্যাপ্লিকেশন
তৈরি হয়েছে।
>> নন-
ইঞ্জিনিয়ারদের
দ্বারা। মূলত
নন-
ইঞ্জিনিয়ারদের
দ্বারাই। এবং
আমার কাছে এটা
অসাধারণ
লেগেছে।
আমাদের এইচআর
টিম এই ছোট ছোট
অ্যাপ্লিকেশনগুলো
তৈরি করছে। আমি
সবসময় এই
কাজটি করার
স্বপ্ন দেখেছি
এবং এগুলো কখনও
জরিপ ছিল না।
আমি সব জায়গার
সিএফওদের কথা
শুনি এবং
আমাদের সিএফও-ও
তাই বলেন। এর
ব্যতিক্রম নয়,
তারা এমন
ড্যাশবোর্ড
তৈরি করছে যা
তারা আগে কখনো
তৈরি করতে পারত
না। এবং আমি মনে
করি এটা খুবই
ক্ষমতায়নকারী
। আমি বিবাহিত।
আমার একজন
স্ত্রী আছে।
তার
সফটওয়্যার
প্রয়োজন। সে
নিজে সেই
সফটওয়্যার
তৈরি করতে পারে
না এবং আমি আসলে
তাকে
সফটওয়্যার
তৈরিতে কখনো
সাহায্য করিনি,
যা আমার নিজের
ব্যর্থতা,
কিন্তু আমি মনে
করি ভবিষ্যতে
এমন একটা
পৃথিবী আসবে
যেখানে সেও
অন্যদের মতো
তাদের জন্য
কাস্টম
সফটওয়্যার
তৈরি করিয়ে
নিতে পারবে।
এবং আপনি আরও
দেখবেন যে
প্রতিটি
কোম্পানি আরও
উন্নত
অ্যাপ্লিকেশন
এবং উচ্চ মানের
সিস্টেম তৈরি
করছে।
>> আজ, আপনার
স্ট্যাক কী?
হার্ডওয়্যার,
মডেলের দিক
থেকে আপনি কী
নিয়ে কাজ করেন,
আপনি কীভাবে
এজেন্ট চালান?
এটা কি একটি
এজেন্ট? নাকি
একাধিক? আপনি
কোন ধরনের
টার্মিনাল
ব্যবহার করেন?
>> হ্যাঁ, হ্যাঁ।
সময়ের সাথে
সাথে এর
বিবর্তন ঘটেছে
। তো, জানেন,
যেমন আমি যখন
আবার এআই-এর
জিনিস নিয়ে
কাজ শুরু করি,
তখন ছিল গিটহাব
কপাইলট। আমি
প্রায় ২০
বছরের বেশি
সময় ধরে
ইম্যাক্স
ব্যবহারকারী
ছিলাম। ভিএস
কোডের জন্য এটা
অভদ্রতা। সে সব
এখন চলে গেছে।
এক পর্যায়ে
আমি ক্লড কোড (
Claude Code) ব্যবহার
করা শুরু করি।
যে কারণেই হোক,
আমি
টার্মিনালে
ক্লড কোড
ব্যবহার করা
শুরু করেছিলাম
। ইদানীং আমি
দুটোর মিশ্রণ
ব্যবহার করি।
তো, আমি আমার
বর্তমান
সেটআপটা
বর্ণনা করছি।
আমি ক্লড
ডেস্কটপ অ্যাপ
ব্যবহার করি,
ক্লড ডেস্কটপ
অ্যাপের
মাধ্যমেই ক্লড
কোড ব্যবহার
করি। এটা
অসাধারণ।
অ্যানথ্রোপিক (
Anthropic) খুব ভালো
কাজ করেছে। আমি
মাঝে মাঝে
কোডেক্স (Codex)
ডেস্কটপ
অ্যাপও
ব্যবহার করি,
যাতে আমাদের
কিছু অত্যন্ত
গুরুত্বপূর্ণ
কাজের জন্য
আমার কাছে একটি
বিকল্প মডেল
থাকে। আমি মাঝে
মাঝে সেরা
মডেলগুলোর
মধ্যে একটি
বেছে নিই।
প্রায়শই আমি
সেরা মডেলটি
ব্যবহার করি,
যেমন ফেবল (Fable),
আমি সম্প্রতি
এটি ব্যবহার
করা শুরু করেছি
। কখনও কখনও
অ্যাস্ট্রা (Astra)
ব্যবহার করি।
কখনও অন্যগুলো
। কিন্তু ধরুন,
একজন একটি
ডিজাইন তৈরি
করল, আর অন্যজন
বলল, "আমার
সহকর্মী এটা
তৈরি করেছে।
তুমি কি এটা
একটু তছনছ করে
অ্যাডভার্সারিয়াল
রিভিউ করতে
পারবে?" আর এটা
সবসময় নিখুঁত
হয় না, তাই না?
কিন্তু আমার
মনে হয় এর
উপযোগিতা আছে,
বিশেষ করে
অত্যন্ত
গুরুত্বপূর্ণ
কোনো কিছুর
জন্য। আমরা খুব
শীঘ্রই একটি
লঞ্চের দিকে
এগোচ্ছি এবং
একরকম শেষ
মুহূর্তের
দিকে
তাড়াহুড়ো
করছি। আমি
টিমের লোকজনকে
বলছি, বিশেষ করে
আমাদের খুব
সিনিয়রদের,
আপনাদের এখনই
সেরা মডেলটি
ব্যবহার করা
উচিত। হ্যাঁ।
এটা করাটা
লাভজনক। আমি
সাধারণত সেরা
মডেলটিই
ব্যবহার করি।
আর এর একটা কারণ
হলো, আমি আসলে
জানি না যে আমি
এর থেকে অনেক
বেশি
ইন্টেলিজেন্স
পাচ্ছি কি না,
কিন্তু আমি
প্রতিটি
ক্ষেত্রে
আলাদাভাবে
সিদ্ধান্ত
নেওয়ার
মানসিক চাপ
নিতে চাই না।
>> হ্যাঁ।
>> আমি কি সনেট
ব্যবহার করব?
আমি কি ওপাস
ব্যবহার করব?
আমি কি ফেবল
ব্যবহার করব?
আমি কি সোলার
অ্যাস্ট্রা
ব্যবহার করব? আর
আমার মনে হয়,
হয়তো যদি আমার
সত্যিই গতির
প্রয়োজন হয়,
তাহলে আমি সেই
সিদ্ধান্ত নেব
। কিন্তু
প্রায়শই, আমি
সমান্তরালভাবে
কাজ করি। তো,
আপনি জিজ্ঞেস
করছেন আমি
কয়টা এজেন্ট
চালু করছি?
আচ্ছা, এটা
নির্ভর করে।
যেমন, প্রায়শই
এমন হয় যে আপনি
একটি
নির্দিষ্ট
সংখ্যক সেশন
ব্যবহার করছেন
। আমি দেখি যে
আমার মানসিক
চাপ একই সাথে
প্রায় পাঁচ
থেকে দশটি সেশন
পর্যন্ত থাকে।
কিন্তু কখনও
কখনও সেই
সেশনগুলোতে
অনেক সাব-
এজেন্ট
বিভিন্ন কাজ
করে।
>> হ্যাঁ।
>> এবং
>> সেগুলো দীর্ঘ
সময় ধরে চলে।
>> হ্যাঁ, এটা
নির্ভর করে আমি
কী করছি তার উপর
।
>> হ্যাঁ।
>> এখানে আসার
সময়, ট্রেনে
থাকাকালীন, আমি
সামান্য
গবেষণার জন্য
কিছু একটা চালু
করেছিলাম, এবং
সেটায় সম্ভবত
মাত্র তিনটি
সাব-এজেন্ট
ব্যবহার করা
হয়েছিল। অন্য
সময়ে, ২০ টি
সাব-এজেন্টও
থাকতে পারে,
জানেন তো,
অ্যানথ্রোপিকের
ডাইনামিক
ওয়ার্কফ্লো
আছে। কোডেক্স
জিনিসটার নাম
কী তা আমার মনে
নেই, কিন্তু
তাদের কাছে
এজেন্টদের
গ্রাফ তৈরি
করার এবং
সেগুলোকে
চালানোর
বিভিন্ন উপায়
আছে। মানে, আমার
মনে হয় কখনও
কখনও আমি
সম্ভবত ১০০ টি
সাব-এজেন্ট
ব্যবহার করি,
আবার কখনও
মাত্র পাঁচটি।
এটা নির্ভর করে
কী ঘটছে তার উপর
। এবং কখনও কখনও
আমি এই এজেন্ট
সংক্রান্ত
কোনো কাজই করি
না কারণ আমি
অন্য কিছু
নিয়ে ভাবি।
>> আপনি তো ২০ বছর
ধরে ইম্যাক্স
ব্যবহার
করেছেন,
টার্মিনাল
ব্যবহার করতেন,
তাই না? বা বলা
ভালো,
ইম্যাক্সই।
কিন্তু আপনি
এজেন্টসহ
গ্রাফিক্যাল
ইন্টারফেসে
কেন চলে এলেন?
অনেকেই তো এখনও
টার্মিনাল
ইউআই ব্যবহার
করে।
>> হ্যাঁ, হ্যাঁ।
আসলে, আমি
ইম্যাক্স থেকে
ভিএস কোডে চলে
আসি। আমার এক
সহকর্মী বলল, "
এই আইডিইগুলো
তো খুব ভালো।
তোমার এগুলো
ব্যবহার করে
দেখা উচিত।" আমি
বললাম, "
ইম্যাক্স তো
একটা আইডিই।"
তারপর আমি অন্য
দিকে গেলাম এবং
আমার মনে হলো, "
এর কিছু জিনিস
অনেক বেশি
সাবলীল।" আর,
ইম্যাক্স
ক্রমাগত
এগিয়ে যাচ্ছে
। সবসময়ই মনে
হয় এটা ছয় মাস
থেকে এক বছর
পিছিয়ে আছে।
আর যখনই ওদের
নতুন ভার্সন
আসত, আমার
সেটআপটা ভেঙে
পড়ত, আর আমি
এতে ক্লান্ত
হয়ে
পড়েছিলাম।
তাই, আমি ভিএস
কোডে চলে গেলাম,
কিন্তু তারপর
দেখলাম, ভিএস
কোডে আমার
অনেকগুলো
টার্মিনাল
খোলা থাকত।
আমার সেটআপটা
সবসময় ভিএস
কোডের ট্যাবে
টার্মিনালের
মতো থাকত,
ট্যাবের মধ্যে
প্রায় আটটা
টার্মিনাল
খোলা থাকত আর
তারপর সেগুলো
জায়গা দখল করে
নিত। আগে
টার্মিনালে
শুধু ক্লড কোডই
চলত।
>> হ্যাঁ, হ্যাঁ।
>> হ্যাঁ। আর
তারপর, জানেন,
সম্প্রতি কোনো
এক সময়, ধরুন
ছয় সপ্তাহ আগে,
আমার এক
সহকর্মী বলল, "
তুমি কি
সম্প্রতি ক্লড
ডেস্কটপ
অ্যাপটা
ব্যবহার করে
দেখেছ? এটা
সত্যিই খুব
ভালো।" আমি
বললাম, "হ্যাঁ,
না, না, আমি খুব,
আমি খুব খুশি।"
আর আমি ওটাতে
চলে গেলাম এবং
প্রথমে একটু
অদ্ভুত লাগছিল,
তারপর হঠাৎ
আমার মনে হলো, "
বাপরে, এটা তো
দারুণ।"
>> আপনি
এজেন্টদের
আরেকটু
ভালোভাবে
পরিচালনা করতে
পারবেন,
সেশনগুলো আরও
সহজ হবে।
>> হ্যাঁ,
সেশনগুলো
পাশেই আছে,
বুঝলেন তো, এবং
এগুলো অনেকটা
ট্যাবের মতো।
আর এটা
অ্যানথ্রোপিকের
করা পুরো
ইন্টিগ্রেশনকে
একত্রিত করবে
এবং ওপেন এআইও
এখন একই কাজ
করছে। আর
যাইহোক, আমি
কার্সর,
ফ্যাক্টরি এবং
কগনিশনকে ছোট
করে দেখছি না,
তারা সবাই একই
জিনিস নিয়ে
কাজ করছে। এই
সিস্টেমগুলো
এখন কত দ্রুত
উদ্ভাবন করছে
এবং বিকশিত
হচ্ছে তা
অবিশ্বাস্য।
আপনার কী মনে
হয়, এআই আসার
আগের ৪ বছর আগের
তুলনায় আজকের
দিনে ভালো
সফটওয়্যার
ইঞ্জিনিয়ারিং
কেমন দেখতে? এটা
কি বদলে গেছে?
ভালোর কি কোনো
পরিবর্তন
হয়েছে নাকি
তেমন কোনো
পরিবর্তন
হয়নি? হ্যাঁ।
আমার মনে হয়
উচ্চাকাঙ্ক্ষা
বাড়াতে হবে,
বুঝলেন তো? আমার
মনে হয় গুণমান
আরও উন্নত হতে
হবে, নিরাপত্তা
আরও বাড়াতে
হবে। আপনি
গুণমানের কথা
উল্লেখ করায়
আমি খুশি। আমরা
কি
>> এটা নিয়ে কথা
বলতে পারি, কারণ
আমি পুরো
ইন্ডাস্ট্রিতেই
গুণমানের পতন
দেখছি, যার জন্য
পুরোপুরি এআই-
কে দায়ী করা
যায় না, কিন্তু
প্রায়শই এর
জন্য এআই-ই
দায়ী। লোকেরা
কেবল আরও বেশি
বেশি কোড তৈরি
করে চলেছে এবং
এখানে-সেখানে
ছোটখাটো
রিগ্রেশনের
দিকে মনোযোগ
দিচ্ছে না।
আবার, ধরুন আপনি
একটি ডেটাবেস
তৈরি করছেন,
>> হ্যাঁ, হ্যাঁ।
>> আপনি কি কোনো
কোয়ালিটি
রিগ্রেশন
লক্ষ্য করেছেন
বা সে সম্পর্কে
কোনো ফিডব্যাক
পেয়েছেন? অথবা
যদি না পেয়ে
থাকেন, তাহলে
কেন? কারণ এটা
তো খুবই সাধারণ
একটা বিষয়,
যেমন আমরা
পদার্থবিজ্ঞানের
সূত্র নিয়ে
কথা বলি, এটা
একটা
পর্যবেক্ষণযোগ্য
বিষয় যে যখন
আপনার আউটপুট
বাড়তে শুরু
করে, আপনি আপনার
ডেপ্লয়মেন্ট
ফ্রিকোয়েন্সি
বাড়ান, তখন
প্রায়শই,
সবসময় না,
কিন্তু
প্রায়শই
আপনার আরও বেশি
রিগ্রেশন এবং
আরও বেশি বাগ
দেখা দেয়।
>> আপনি যদি একটি
নির্দিষ্ট
সংখ্যক লাইন
কোড তৈরি করেন,
তাহলে সম্ভবত
প্রতি লাইন
কোডে একটি
নির্দিষ্ট
সংখ্যক
ডিফেক্ট থাকবে
। এবং এখন আপনি
আরও বেশি লাইন
কোড তৈরি করতে
পারেন, তাই
সম্ভবত আপনার
আরও বেশি
ডিফেক্ট থাকবে,
তাই না? কিন্তু
যে বিষয়টি এর
বিরুদ্ধে যায়
তা হলো, আপনি এই
এজেন্টদের
বলতে পারেন যে,
আপনাকে এই
বিষয়ে তাদের
বেশ কঠোরভাবে
নিয়ন্ত্রণ
করতে হবে। আমি
আশা করি মডেল
প্রোভাইডাররা
এই বিষয়টি
শুনছেন।
আপনাকে তাদের
বেশ কঠোরভাবে
নিয়ন্ত্রণ
করতে হবে। তারা
এই বিষয়ে
কিছুটা অলস
হয়ে পড়ে।
টেস্টিংয়ের
দিকটা। এবং
আপনাকে
নিশ্চিত করতে
হবে যে
পরীক্ষাগুলো
যেন ব্যাপক হয়,
কিন্তু সেই
সাথে তারা যেন
সমস্ত
প্রযুক্তিগত
টেস্টিং কৌশলও
ব্যবহার করে।
এবং অনেক
টেস্টিং কৌশল
রয়েছে।
কীভাবে
ভালোভাবে
টেস্টিং করতে
হয় সে
সম্পর্কে
আমাদের অনেক
জ্ঞান আছে। এবং
জানেন কি?
এজেন্টরা অলস।
মানুষও কিছুটা
অলস। তাই,
মানুষকে তাদের
টেস্টিংয়ের
ব্যাপারে
সত্যিই খুব
শৃঙ্খলাপরায়ণ
করে তোলাটাও
বেশ
চ্যালেঞ্জিং।
আমার মনে হয়,
এজেন্টদের
ক্ষেত্রে এটা
আসলে সহজ। আপনি
জানেন, আপনি এটা
তাদের মধ্যে
গেঁথে দিতে
পারেন। আপনি
তাদের
প্রস্তুত করে
দিতে পারেন।
আপনাকে তাদের
নির্দেশনা
দিতে হবে।
প্রপার্টি-
বেসড টেস্টিং
ব্যবহার করুন।
মেটামরফিক
টেস্টিং
ব্যবহার করুন।
এই ধরনের উন্নত
টেস্টিং
কৌশলগুলো
ব্যবহার করুন।
ডিটারমিনিস্টিক
সিমুলেশন
টেস্টিং।
জানেন, এমন অনেক
কৌশল আছে যা
আপনি ব্যবহার
করতে পারেন। আর
মানুষেরা
সবসময় এমন যে,
আমি নিজেই অলস।
আমি
টেস্টিংয়ের
ব্যাপারে
শৃঙ্খলাপরায়ণ
হতে বেশ ভালোই
পারি। একটা
পর্যায়ে আপনি
ভাবেন, ঠিক আছে,
যথেষ্ট হয়েছে
। এবার আমাদের
শিপ করতে হবে।
এবং এখন আপনি
আরেকটু কঠোর
এবং দৃঢ় হতে
পারেন। আমার
মনে হয়,
নিরাপত্তার
ক্ষেত্রেও একই
কথা প্রযোজ্য।
পারফরম্যান্সের
দিকটা। মানে,
ককরোচে আমরা
ইন্ডাস্ট্রিতে
বরাবরই
সিকিউরিটি
কোডিং
প্র্যাকটিস
সম্পর্কে জানি
।
>> হ্যাঁ।
>> আপনি আক্ষরিক
অর্থেই
প্রতিটি
কমিটের
প্রতিটি কোড
লাইন একজন
সিকিউরিটি
এক্সপার্টকে
দিয়ে রিভিউ
করাতে পারেন,
যিনি
>> একজন এজেন্ট বা
একাধিক
এজেন্টের
মাধ্যমে একটি
প্রতিকূল
নিরাপত্তা
পর্যালোচনার
মতো কাজ করেন।
তাই
>> না? আর জানেন,
আমরা এখন
ইন্ডাস্ট্রিতে
হ্যাকিং,
সিকিউরিটি লিক
এবং এই জাতীয়
বিষয় নিয়ে
একটি কঠিন
সময়ের মধ্যে
দিয়ে যাচ্ছি।
সফটওয়্যারে
সীমিত সংখ্যক
বাগ থাকতে পারে
। মানে, আমরা
সিকিউরিটি এবং
কোয়ালিটির
দিক থেকে
সেগুলোকে ঠিক
করে ফেলি। আর
যখন আমি
কোয়ালিটির
কথা বলি, তখন
আমি বাগের কথা
বলি, কিন্তু এর
মধ্যে ছোটখাটো
জিনিসও থাকে।
যেমন, ওহ, ওই
ইউএক্স
এলিমেন্টটা
ভুল। আর এখন এর
কোনো অজুহাত
চলে না। এটা ঠিক
করা খুবই সহজ।
আর আমরা এটাও
দেখতে শুরু
করেছি যে,
ডিজাইনাররা
ফিগমা ব্যবহার
করছে। আমার মনে
হয়, এটা এখন
অতীত হয়ে
যাওয়া উচিত,
তাই না? এখন,
আমাদের
ডিজাইনার
সরাসরি HTML, CSS এবং
JavaScript নিয়ে কাজ
করেন। এবং মাঝে
মাঝে তিনি পুল
রিকোয়েস্ট,
মানে PRs, তৈরিও
করেন, যেটা তিনি
খুব পছন্দ করেন
। আমরা সবাই এটা
পছন্দ করি।
সবাই এতে খুশি।
এখানে
ওয়াটারফল
হ্যান্ডঅফের
মতো কোনো
ব্যাপার নেই।
তিনি
>> প্রোডাকশন
কোডবেসের জন্য
পুল
রিকোয়েস্ট
তৈরি করছেন।
>> হ্যাঁ। হ্যাঁ।
আর জানেন, এটা UX
সাইডের কাজ, কোর
ডেটাবেসের নয়
।
>> অবশ্যই, কিন্তু
এটাই সেই
জায়গা যেটা
তিনি নিজের
নিয়ন্ত্রণে
রেখেছেন, তাই না
?
>> হ্যাঁ, হ্যাঁ।
ঠিক আছে। মানে,
তিনি এটা খুব
পছন্দ করেন।
সবাই এটা পছন্দ
করে। মানে, এর
কোনো খারাপ দিক
নেই।
>> এটা নতুন কিছু
নয়।
>> হ্যাঁ।
>> অবশ্যই।
>> হ্যাঁ, হ্যাঁ।
>> কোড রিভিউ
সম্পর্কে কী
বলবেন? কোড
রিভিউ নিয়ে
আপনার মতামত কী?
আমার মনে হয়
এটা বেশ
বিতর্কিত হতে
শুরু করেছে।
যেমন, এটা কি
থাকবে নাকি
থাকবে না? কারণ
এটা এমন একটা
পদ্ধতি যা অনেক
দিন ধরেই চলে
আসছে। যেমন
ধরুন, আপনি
গুগলে কাজ
করেছেন। গুগল
কোড রিভিউর
ব্যাপারে খুবই
সচেতন। আমি
যতদূর জানি,
তারা দুই ধরনের
কোড রিভিউ
ব্যবহার করত,
তাই না? মূল
বিশেষজ্ঞ
পর্যালোচনা,
এবং তারপর ভাষা
বিশেষজ্ঞ
পর্যালোচনাও
আছে। তো আপনি
সেটার মধ্যে
দিয়ে গেছেন।
আপনি এটা নিয়ে
কী ভাবতেন, এবং
এখন কী ভাবছেন?
>> আমি একসময় C ++
কোডিং-এর প্রথম
দিকের
সদস্যদের একজন
ছিলাম।
>> আমি আপনাকে
জিজ্ঞেস করছি,
ঠিক আছে, আপনার
জোরালো মতামত
থাকবে। বলুন।
>> হ্যাঁ, হ্যাঁ।
মানে, আমি মনে
করি AI-এর যুগের
আগে কোড রিভিউ
বেশ জরুরি ছিল,
কিন্তু এখন
আমরা এমন এক
পর্যায়ে
পৌঁছেছি
যেখানে আমি কোড
রিভিউ করছি এবং
দেখছি। আমি
এখনও এজেন্টের
তৈরি করা
বেশিরভাগ কোডই
দেখি, এবং
তারপরেও মনে
হয় যেন আপনি
এটাকে একই
স্তরের
সূক্ষ্মভাবে
পরীক্ষা করছেন
না, তাই না? আর
এটা সবসময়ই
এমন ছিল। আপনি
যদি একজন
জুনিয়র
ইঞ্জিনিয়ারের
কাছ থেকে একটি
পুল
রিকোয়েস্ট
পান, তবে আপনার
সবচেয়ে
সিনিয়র
ইঞ্জিনিয়ারের
কাছ থেকে
পাওয়ার চেয়ে
আপনাকে এটি আরও
বেশি
সূক্ষ্মভাবে
পরীক্ষা করতে
হবে। এবং আপনি
যেকোনো টেক লিড,
যেকোনো
ইঞ্জিনিয়ারিং
ম্যানেজার,
যেকোনো
সফটওয়্যার
ইঞ্জিনিয়ারকে
জিজ্ঞেস করুন,
তারা বলবে,
হ্যাঁ, হ্যাঁ।
জুনিয়র
ইঞ্জিনিয়ার
বা কোডবেসে
নতুন কেউ, আপনি
জানেন, আপনাকে
আরও বেশি
খুঁটিয়ে
দেখতে হবে। আর
আমি যা দেখছি তা
হলো, এজেন্টরা
আরও ভালো হচ্ছে,
আপনাকে ক্রমশ
কম খুঁটিয়ে
দেখতে হচ্ছে।
তবুও আপনাকে
কিছু কিছু
বিষয় এখনও
খুঁটিয়ে
দেখতে হবে।
যেমনটা আমি
বললাম,
ব্যাপারটা এমন
যে টেস্টিং
অসম্পূর্ণ
থাকবে। আর
হয়তো তারা
সিকিউরিটির
নিয়মগুলো
অনুসরণ করেনি।
হয়তো,
পারফরম্যান্সে
কোনো অবনতি
হয়েছিল। আর
আমার মনে হয়,
সিস্টেমের ওপর
এক ধরনের
সীমাবদ্ধতা
নিশ্চিত করা
হয়েছে, যাতে
তাদের পক্ষে
ভুল কিছু করা
কঠিন হয়। আমার
সন্দেহ হয় যে,
আমি জানি না এটা
এই বছর হবে নাকি
পরের বছর, আমরা
হয়তো কোডকে
সেভাবে দেখা
বন্ধ করে দেব
যেভাবে আমরা
এখন আর
অ্যাসেম্বলি
দেখি না।
>> হ্যাঁ।
>> যেমন, আমরা
>> কম্পাইলারের
ওপর ভরসা করি যে
এটি বেশ ভালো
অ্যাসেম্বলি
তৈরি করবে।
>> আমরা
কম্পাইলারের
ওপর ভরসা করি যে
এটি ভালো
অ্যাসেম্বলি
তৈরি করবে।
>> যদি না আপনি সেই
ধরনের মানুষ হন
যাদের জন্য এটা
সত্যিই
গুরুত্বপূর্ণ,
আপনি হয়তো
একজন গেম
ডেভেলপার বা
অন্য কেউ এবং
আপনি দেখুন,
কিন্তু এই
ধরনের লোকের
সংখ্যা দিন দিন
কমে আসছে।
>> হ্যাঁ। এবং
তারপরেও, আমার
মনে হয় আমরা
যেদিকে এগোব তা
হলো, মানুষকে
কেন
অ্যাসেম্বলি
দেখতে হবে? এআই-
এরই তো
অ্যাসেম্বলি
দেখা উচিত।
যেমন, আমি এখন
এমন একটা কাজ
করছি যেখানে
আমি এমন একটা
অ্যাবস্ট্রাকশন
চাই যার কোনো
ওভারহেড থাকবে
না, এমন একটা
কাজের জন্য যা
টেস্ট টাইমে
করা হবে এবং
প্রোডাকশনে
গেলে কম্পাইল
হয়ে যাবে।
তারা আমার জন্য
একটা ছোট
সিস্টেম তৈরি
করে দেবে
যেখানে এটি
ডিকম্পাইল করা
কোড দেখবে এটা
যাচাই করার
জন্য যে সেখানে
মাত্র কয়েকটি
আসল
ইনস্ট্রাকশন
বসানো হয়েছে।
আমি হয়তো
কখনোই ওটা
বসাতাম না,
কিন্তু এখন এর
একটা গার্ডরেল
আছে যে যখনই এটি
কিছু পরিবর্তন
করবে, এটি যাচাই
করতে পারবে যে
কোনো রিগ্রেশন
হচ্ছে না। এবং
আমার মনে হয়
আপনি এই ধরনের
জিনিস আরও বেশি
দেখতে পাবেন
যেখানে আপনি এক
ধরনের
গার্ডরেল
বসিয়ে
দিচ্ছেন। আমার
মনে হয় মডেল
এটা পছন্দ করে
কারণ এটি সেই
গার্ডরেলের
মধ্যে থেকেই
কাজ করতে পারে।
>> এখন, প্রায় ২০
বছরেরও বেশি
সময় ধরে, আপনি
এত কোড লিখেছেন
। আমি নিশ্চিত
আপনি তখন কাজের
মধ্যে ডুবে
ছিলেন। আপনার
কি সেই সময়ের
কথা মনে আছে? আর
আপনি তো প্রচুর
প্রোডাকশন-
রেডি কোড
লিখেছেন। এখন
যেহেতু আপনি
এআই (AI) দিয়ে
কোডিং করছেন,
আপনি কি সেই '
জোন'-এ ঢুকে যান?
>> হ্যাঁ। অবশ্যই
।
>> আর সেই 'জোন'টা
কেমন? এটা কি
একই রকম? নাকি
আলাদা?
>> এটা
নিশ্চিতভাবেই
কিছুটা আলাদা
মনে হয়। এটা
হয়তো কিছুটা
কম তীব্র,
কিন্তু আপনাকে
মানসিকভাবে
আরও অনেক কিছু
সামলাতে হয়।
>> আচ্ছা, আপনি কি
আমাকে বর্ণনা
করতে পারবেন যে
এই মুহূর্তে
যখন আপনি' জোন '-এ
থাকেন, তখন ঠিক
কী অবস্থা হয়?
>> হ্যাঁ। আসলে,
আমি এমন সব
আইডিয়া নিয়ে
ভাবি যেগুলো
নিয়ে পরীক্ষা-
নিরীক্ষা করতে
সাধারণত আমার
এক সপ্তাহ লেগে
যেত। আর আমি এই
ধরনের একাধিক
পরীক্ষার কথা
ভাবি এবং
সবগুলো একসাথে
চালিয়ে দিই।
আর তারপর আমি
পর্যালোচনা
করতে থাকি যে,
যখন ওগুলো শেষ
হচ্ছে, তখন আর
কী করা উচিত।
কখনও কখনও আমি
পর্যালোচনা
করতে থাকি যখন
তারা আমাকে
কাজের
অগ্রগতির
আপডেট দেয়,
যেমন, "ওহ, এই
জিনিসটা আসছে।
আমরা এই
জিনিসগুলো
দেখছি।" আর আমি
ভাবি, "আচ্ছা,
এটা তো ঠিক মনে
হচ্ছে না।
আচ্ছা, এটা কেমন
হয়?" নাকি আমরা
এটা ঠিকভাবে
করছি? হতে পারে
আমার কাছে
ডিজাইন ছিল এবং
ডিজাইনটা
পুরোপুরি
নিখুঁতভাবে
প্রয়োগ করা
হচ্ছে না।
কিন্তু আমার
কেমন যেন একটা
অনুভূতি হচ্ছে
যে, আমি কলেজের
অধ্যাপক ছিলাম
না, কিন্তু যদি
আমি একজন
অধ্যাপক হতাম
এবং আমার
একঝাঁক গবেষণা
সহকারী থাকত, আর
তারা সবাই
নিজেদের কাজে
চলে যেত, আর এখন
কাজগুলো ফিরে
আসছে। খুব
দ্রুত ফিরে
আসছে।
>> সত্যিই খুব
দ্রুত। আপনাকে
মাস বা সপ্তাহ
ধরে অপেক্ষা
করতে হচ্ছে না।
>> আমি মাস বা
সপ্তাহ ধরে
অপেক্ষা করছি
না। আর তারপর
আমি বারবার
চেষ্টা করছি।
আমি ভাবছি, ওহ,
ওটা ব্যর্থ
হয়েছে। ঠিক
আছে, ছেড়ে দিতে
হবে। আর এটাই
হলো আমার তৈরি
করা
সফটওয়্যারের
প্রকৃতি। আমার
মনে হয়,
অন্যান্য
ক্ষেত্রে আপনি
খুব দ্রুত একটা
ওয়েবসাইট বা
এমন কিছু তৈরি
করে ফেলতে
পারেন, যেটা
এতটা চুলচেরা
বিশ্লেষণের
মধ্যে দিয়ে
যায় না।
কিন্তু আমি এই
বিষয়ে কথা
বলার সময় আমার
কাছে অনেকগুলো
উপমা আছে।
>> চলুন উপমা
নিয়ে কথা বলা
যাক। কৃত্রিম
বুদ্ধিমত্তা (AI)
ব্যবহার করার
বিষয়ে আপনার
কাছে কী কী উপমা
আছে? আমি
>> গত বছরের শেষের
দিকে এবং এই বছর
দুটো উপমার
পক্ষে কথা
বলছিলাম,
যেগুলো হলো—AI
আমাদের দিকে
আসছে। এটা
এখানে, তাই না?
আর এটা অনেকটা
এরকম যে, আপনি
সফটওয়্যার
তৈরি করছেন,
আপনি রাস্তা
দিয়ে হেঁটে
যাচ্ছেন। আর
মাঝে মাঝে, কেউ
আপনাকে পাশ
কাটিয়ে চলে
যাবে। তারা
দৌড়াচ্ছে।
তাদের একটি
দক্ষ গেট এবং
আরও অনেক কিছু
আছে। কিন্তু
প্রত্যেকেই
তার নিজের
গতিতে চলছে। আর
এই সক্রিয়
কোডিং
এজেন্টগুলো
এলো এবং
ব্যাপারটা ছিল
অনেকটা এরকম যে,
আপনার পাশে
একটি গাড়ি এসে
থামল। আপনি
গাড়িতে উঠলেন,
আপনি গাড়ি
চালাতে জানেন
না, আপনি
কন্ট্রোলগুলো
বোঝেন না,
কিন্তু আপনাকে
গাড়িতে উঠতেই
হবে এবং আপনি
গ্যাস পেডালে
চাপ দেওয়ার
জন্য লড়াই
শুরু করলেন আর
গাড়িটা ছুটে
গিয়ে একটা
গাছে ধাক্কা
খেল। কিন্তু
আপনাকে গাড়ি
চালানো শিখতে
হবে, তাই না?
আমার মনে হয়,
এই সমস্ত কোডিং
টুল ব্যবহার
করাটা এমনি
এমনি হয়ে যায়
না। এটা অনেকটা
গাড়ি চালানো
শেখার মতো।
আমার মনে হয়
আমরা এখন এফ-
ওয়ান (F1)
ড্রাইভারদের
যুগে আছি,
অর্থাৎ যারা
সত্যিই দক্ষ,
তারা এই
সিস্টেমগুলোকে
তাদের চেয়ে
অনেক বেশি
কঠিনভাবে, অনেক
দ্রুত চালাতে
পারে, যারা কেবল
এগুলো ব্যবহার
শুরু করছে।
আপনি যদি কখনও
কোনো এজেন্টিক
কোডিং টুল
ব্যবহার না করে
থাকেন, তাহলে
এমন একজনের
সাথে বিশাল
পার্থক্য
দেখতে পাবেন
যিনি এতে
সত্যিই
বিশেষজ্ঞ,
জানেন কোথায়
সমস্যা হচ্ছে
এবং সেদিকে
মনোযোগ দিতে
পারেন, আর এমন
একজনের সাথে
যিনি এইমাত্র
প্রথমবার এটি
ব্যবহার শুরু
করেছেন।
>> আমি একটা উপমা
শুনেছি, আমরা
একসময় '১০ গুণ
দক্ষ
ইঞ্জিনিয়ার'(10x
engineer) নিয়ে কথা
বলতাম, আপনার
মনে আছে? এটা
নিয়ে অনেক দিন
ধরে বিতর্ক ছিল,
এটা কি সত্যি
নাকি সত্যি নয়?
কিন্তু এখন আমি
'১০০ গুণ দক্ষ
ইঞ্জিনিয়ার'(100x
engineer) এর কথা
শুনছি।
>> হ্যাঁ। তাহলে
>> আপনি বলছেন যে
আপনি এমন কিছু
লোককে দেখছেন
যারা হয়তো '১০০
গুণ দক্ষ
ইঞ্জিনিয়ার'
শব্দটি
ব্যবহার না করে,
বরং একজন এফ-
ওয়ান (F1)
ড্রাইভারের
মতো, যিনি এতে
সত্যিই খুব
ভালো। আপনি এমন
একজন
ব্যক্তিকে
কীভাবে বর্ণনা
করবেন যাকে
আপনি দেখেছেন?
এটা কি শুধু
ইঞ্জিনিয়ারিংয়ের
মজবুত মৌলিক
বিষয়গুলো
শেখার মতো, আর
তারা এই
টুলগুলো
ব্যবহার করতে
শুরু করেছে,
নাকি
ব্যাপারটা
অন্যরকম?
>> হ্যাঁ, হ্যাঁ।
মানে, এটা
অনেকটা এমন যে,
যারা আগে থেকেই
ভালো
সফটওয়্যার
ইঞ্জিনিয়ার,
তাদের জন্য এটা
একটা
দিকনির্দেশনামূলক
বিষয়। মানে,
আমি মাঝে মাঝে
ভাবি যে,
সফটওয়্যার
ইঞ্জিনিয়ারিংয়ে
সবাই দক্ষতার
একটা
নির্দিষ্ট
পরিসরের মধ্যে
থাকে, আর এটা
যেন সেই
সীমারেখাটাকে
টেনে আরও
বিস্তৃত করে
দিচ্ছে, যা
পুরোপুরি
সত্যি নয়।
জানেন, আমার মনে
হয় এটা
অন্যদের চেয়ে
কিছু মানুষকে
বেশি সাহায্য
করেছে, কিন্তু
মনে হয় যেন এটা
শুধু
বিষয়টাকে
প্রসারিত
করেছে। ফলে,
আপনার আগের
দক্ষতা এখন
বহুগুণে বেড়ে
গেছে।
>> আমি এটা জানতে
সবসময় আগ্রহী,
যেমন বরিস
চের্নি, টিবোর
সান্তা (
ওপেনএআই-এর),
তারা দুজনেই
সত্যিই খুব
ভালো
সফটওয়্যার
ইঞ্জিনিয়ার
ছিলেন। বরিস
প্রথম দিকের
টাইপস্ক্রিপ্ট
বইগুলোর একটি
লিখেছিলেন।
ও'রাইলি থেকে
প্রকাশিত
প্রথম
টাইপস্ক্রিপ্ট
বইটি। তিনি
কিছু বিশাল
সিস্টেম তৈরি
করেছিলেন। একই
কথা টিবোরের
ক্ষেত্রেও
প্রযোজ্য, যিনি
এটি তৈরি
করেছিলেন এবং
এখন আপনি
দেখছেন যে, ওহ,
এই লোকেরা যারা
এই সমস্ত টুল
তৈরি করছে এবং
উদ্ভাবন করছে,
তারা আগে থেকেই
খুব ভালো ছিল।
>> হ্যাঁ, হ্যাঁ।
আচ্ছা, মানে,
এআই (AI)-এর মতো
অনুভূতি
সম্পর্কে
আপনাকে
দেওয়ার জন্য
আমার কাছে আরও
দুটি উপমা আছে।
আপনি
নিঃসন্দেহে
পেয়ার
প্রোগ্রামিং (pair
programming) শব্দটি
শুনেছেন।
>> হ্যাঁ, পেয়ার
প্রোগ্রামিং।
>> হ্যাঁ, পেয়ার
প্রোগ্রামিং।
জানেন, পেয়ার
প্রোগ্রামিং-
এর পেছনের
ধারণাটি হলো,
একটি কিবোর্ড,
একটি মনিটর এবং
দুজন
ইঞ্জিনিয়ার
একসাথে কাজ
করলে ভালো হয়।
একজন কিবোর্ডে
এবং অন্যজন তার
পাশে বসে
কাঁধের ওপর
দিয়ে দেখে
নির্দেশনা
দেয়। এবং আমি
মনে করি, এই
অনুভূতির একটি
দিক আছে যেখানে
আমি
চ্যাটজিপিটি (
ChatGPT)-কে দিয়ে এর
একটি ছোট ছবি
তৈরি করিয়েছি,
যেখানে
অ্যান্ড্রয়েডটি
কম্পিউটারে
টাইপ করছে এবং
আপনি শুধু
নির্দেশ
দিচ্ছেন।
কিন্তু এক বছর
আগে হয়তো
অনুভূতিটা
এমনই ছিল। আমার
মনে হয় এখন
অনুভূতিটা
একটু ভিন্ন।
আমি সম্প্রতি
যে কথাটা বলতে
শুরু করেছি তা
হলো, আমার মনে
হয় যে ডোমেইন
বিশেষজ্ঞরা,
অর্থাৎ যারা
আগে খুব
শক্তিশালী
ছিলেন, তারা এখন
ব্যাপকভাবে
প্রসারিত
হয়েছেন। আপনি
কি এই সব
গাণিতিক জিনিস,
যেমন এই সব
অদ্ভুত
প্রমাণগুলো
দেখেছেন?
>> আচ্ছা, আমি
এগুলো করি না,
কিন্তু আমি
>> এগুলো বুঝিও না
।
>> হ্যাঁ। হ্যাঁ।
>> তো, আমি আপনাকে
বলেছিলাম যে
আমি গণিতে খুব
একটা ভালো
ছিলাম না।
জানেন,
ব্যাপারটা এমন
যে আমি কলেজের
প্রথম বর্ষেই
পড়া ছেড়ে
দিয়েছিলাম,
তাই না? কিন্তু,
জানেন, আমি এই
অগ্রগতিগুলো
একরকম দেখতেই
থাকতাম। আর,
জানেন, টেরেন্স
টাও, তিনি
সম্ভবত
সবচেয়ে
বিখ্যাত জীবিত
গণিতবিদ, জানেন,
একজন সুপার
জিনিয়াস।
তিনি আসলে এই
সেশনটি পোস্ট
করেছিলেন।
সম্প্রতি একটি
যুগান্তকারী
আবিষ্কার
হয়েছিল, বা
আমার মনে হয়
এটাকে
জ্যাকোবিয়ান
কনজেকচার বলা
হয়। আমি এর
অর্থও জানি না।
কিন্তু, তিনি এই
চ্যাটজিপিটি (
ChatGPT) সেশনটি
পোস্ট
করেছিলেন
যেখানে তিনি
একটি
বুদ্ধিমত্তার
সাথে
আলাপচারিতা
করছেন, আমার মনে
হয় ওটা
চ্যাটজিপিটি-ই
ছিল এবং আপনি
তাকে এই
বুদ্ধিমত্তার
সাথে
আলাপচারিতা
করতে দেখতে
পাবেন। আর,
ব্যাপারটা ছিল
অবিশ্বাস্য,
কারণ সে এটার
সাথে একজন
সমকক্ষ
সহকর্মী
হিসেবে কথা
বলছিল এবং এটিও
সাড়া দিচ্ছিল
। সত্যি বলতে,
দেখে মনে
হচ্ছিল আমি
সবাইকে এটা
খুঁজে দেখতে
উৎসাহিত করব।
এটাকে প্রায়
একটা বিদেশি
ভাষার মতো মনে
হচ্ছিল। মনে
হচ্ছিল যেন সে
যে সিস্টেমের
সাথে কাজ করছে,
তার মাধ্যমে
তার বিশেষ
জ্ঞান বহুগুণে
বেড়ে যাচ্ছে।
আর, আপনি দেখতে
পাবেন সে
কীভাবে খুব
দ্রুত বিভিন্ন
ধারণা শিখছে
এবং অন্বেষণ
করছে। এখন, এআই
গণিত নিয়ে
অনেক বিতর্ক
আছে, কিন্তু
আমার মনে যে
উপমাটা আসে তা
হলো, বিশেষ
ক্ষেত্রের
বিশেষজ্ঞরা
তাদের নিজ নিজ
ক্ষেত্রে
অনেকটা
জাদুকরের মতো।
যেমন, মাটির
জাদুকর, জলের
জাদুকর
ইত্যাদি। আর,
যদি আপনি জাদুর
মন্ত্র, সঠিক
শব্দ, সঠিক ক্রম
জানেন, তবে আপনি
সত্যিই
জাদুকরী কিছু
একটা পাবেন। আর
যদি না জানেন,
তবে আপনি কেবল
কিছু ঝলমলে
জিনিস পাবেন
যার পেছনে কোনো
ভিত্তি নেই।
যেমন, আপনি
সম্ভবত
ডিস্ট্রিবিউটেড
ডেটাবেস
সম্পর্কে খুব
বেশি কিছু
জানেন না। আপনি
যদি Fable বা Astra-কে
বলেন, "আমার
জন্য CockroachDB-এর
মতো একটি
ডিস্ট্রিবিউটেড
ডেটাবেস তৈরি
করো", তাহলে
আপনি হয়তো
কিছু একটা
পাবেন, কিন্তু
সেটার ভেতরটা
আসলে ফাঁপা হবে
। কিন্তু, আপনি
যদি ডেটাবেসে
একজন বিশেষজ্ঞ
হন এবং এটিকে
একটি
ডিস্ট্রিবিউটেড
ডেটাবেস তৈরি
করতে বলেন,
তাহলে আপনি
ডিস্ট্রিবিউটেড
ডেটাবেস
সম্পর্কে
জানার মতো
সমস্ত
বিষয়গুলো
উল্লেখ করতে
পারবেন। যেমন—
এই বিষয়গুলো
নিয়ে আপনাকে
ভাবতে হবে,
স্টোরেজ
লেয়ার,
নেটওয়ার্কিং
লেয়ার। এখানে
বিভিন্ন ডেটা
স্ট্রাকচার,
ভেতরের
রানটাইম। আপনি
আসলে এর থেকে
খুব, খুব দ্রুতই
বেশ জাদুকরী
কিছু একটা পেতে
পারেন।
>> তো, মধ্যম থেকে
উচ্চ-স্তরের
সেইসব
ইঞ্জিনিয়ারদের
জন্য আপনার
পরামর্শ কী হবে,
যারা এই AI-এর
যুগে কোডিং
শিখে
শক্তিশালী
ইঞ্জিনিয়ার
হতে চান?
>> আচ্ছা, প্রথমত,
আপনার হাতের
কাছেই সবচেয়ে
অসাধারণ একজন
শিক্ষক
প্রস্তুত আছেন
। আর আমি বলতে
চাচ্ছি, আমার
পুরো
ক্যারিয়ার
জুড়ে আমি যে
কাজটা সবসময়
করতাম, যদিও এখন
আমি সেটা করা
প্রায় বন্ধ
করে দিয়েছি,
কিন্তু এর
কারণটা খুব
শীঘ্রই স্পষ্ট
হয়ে যাবে, আর
তা হলো আমি
সবসময়
অন্যদের কোড
দেখতাম। তো, আমি
শুরুর দিকে
গুগলে ছিলাম।
আপনারা হয়তো
জেফ ডিনের নাম
শুনেছেন। জেফ
ডিন একজন
অসাধারণ কোডার
ছিলেন। তার
সহকর্মী,
সঞ্জয়
ঘেমাওয়াতও
একজন
অবিশ্বাস্য
কোডার ছিলেন।
আর, আমি তাদের
পুল
রিকোয়েস্টগুলো
দেখতাম। আমি
তাদের
পরিবর্তনগুলো
দেখতাম। গুগলে
এটাকে পুল
রিকোয়েস্ট
বলা হতো না। এর
একটা ভিন্ন নাম
আছে। কিন্তু,
আমি আমার সিএল (CL
) দেখতাম,
>> তাই না?
>> হ্যাঁ। সিএল।
এটা একটা পি ৪ (P4),
এটা একটা ভিন্ন
ভার্সন
কন্ট্রোল
সিস্টেম।
কিন্তু, আমি
তাদের
পরিবর্তনগুলো
দেখতাম আর
ভাবতাম, "ওরা যা
করেছে তা
কীভাবে করেছে,
তাই না?" আমি
তাদের কোড
দেখতাম। ওহ্
মাই গড,
সঞ্জয়ের কোড
সত্যিই সবসময়
খুব চমৎকার,
জানেন।
জেফেরটা হাই-
পারফরম্যান্স।
সে এটা কীভাবে
করছে, বুঝলেন?
মানে, সে কীভাবে
কাজটা করছে? এর
কিছু কিছু
বিষয় এমন যে
আপনি
স্বাভাবিকভাবেই
শিখে ফেলেন।
কিন্তু এখন,
আপনি শুধু
স্বাভাবিকভাবেই
শিখে ফেলবেন না,
বরং আপনি
আক্ষরিক
অর্থেই, মানে,
আমি উৎসাহিত
করব যদি আপনি
একজন জুনিয়র
ইঞ্জিনিয়ার
হন এবং জানেন যে
আশেপাশে একজন
সিনিয়র
ইঞ্জিনিয়ার
আছেন, তাহলে
আপনি তাকে
জিজ্ঞেস করতে
পারেন যে তারা
যা করছে তা
কীভাবে করছে।
কিন্তু আপনি
এআই-কে বলতে
পারেন তারা যা
করেছে তা
ব্যবচ্ছেদ করে
আপনাকে
ব্যাখ্যা করতে,
এবং বিভিন্ন
ভিন্ন ভিন্ন
স্তরে
ব্যাখ্যা করতে
। যেমন, "এই
কোডটা কীভাবে
কাজ করে? এটা কী
করছে? আমাকে
একটা
ডায়াগ্রাম
দাও। আমাকে
এমনভাবে
ব্যাখ্যা করো
যেন আমার বয়স
পাঁচ। আমাকে
এমনভাবে
ব্যাখ্যা করো
যেন আমার বয়স
দশ। আমাকে
ফরাসি ভাষায়
ব্যাখ্যা করো।"
আপনার যা খুশি।
মানে,
মৌলিকভাবে,
কিছুটা হলেও,
এআই হলো একটি
অনুবাদ যন্ত্র
। সুতরাং, এটি
যে ভাষাতেই
থাকুক না কেন,
তা থেকে অনুবাদ
করুন এবং
যতক্ষণ না এটি
বুঝতে পারছেন,
ততক্ষণ প্রশ্ন
করতে থাকুন, এতে
আপনার বোঝার
ক্ষমতা বাড়বে
।
>> আপনি বলছিলেন
কীভাবে ডোমেইন
বিশেষজ্ঞদের
গুরুত্ব অনেক
বেড়ে যায়।
আমার মনে হয়,
একজন
সফটওয়্যার
ইঞ্জিনিয়ার
হিসেবে একটি
কৌশল হলো,
অবশ্যই একজন
সেরা
সফটওয়্যার
ইঞ্জিনিয়ার
হয়ে ওঠা এবং
এটিকে একটি টুল
হিসেবে
ব্যবহার করা।
আপনি অনেক
দ্রুত কাজ করতে
পারবেন। আপনি
ডিস্ট্রিবিউটেড
সিস্টেমগুলো
ভালোভাবে
বুঝতে পারবেন।
যেমন, আমি মোটেও
ডিস্ট্রিবিউটেড
ডেটাবেস
বিশেষজ্ঞ নই,
কিন্তু আমি
কিছু জিনিস আগে
থেকে বোঝার
জন্য AI ব্যবহার
করি, যা খুব
সহায়ক ছিল।
এবং আগে এটা
বুঝতে আমার
অনেক বেশি সময়
লাগত। সুতরাং,
আমি এটা
ব্যবহার করতে
পারি।
>> কিন্তু, আমি
ভাবছি এর অন্য
কোনো দিক আছে
কিনা, যেমন একজন
সফটওয়্যার
ইঞ্জিনিয়ার
হিসেবে আপনি
যেখানেই কাজ
করছেন, সেখানে
আরও বেশি
ডোমেইন
বিশেষজ্ঞ
হওয়ার জন্য
এটি ব্যবহার
করতে পারেন।
যদি এটি একটি
পেমেন্ট
কোম্পানি হয়,
মানে, পেমেন্ট
সম্পর্কে
জানার জন্যও
এটি ব্যবহার
করুন। সুতরাং,
আপনি ব্যবসাকে
সাহায্য করতে
পারবেন, আপনি
আপনার টিমকে
সাহায্য করতে
পারবেন, এবং
সত্যি বলতে,
আপনি আরও বেশি
শিখবেন, তাই না?
>> হ্যাঁ। হ্যাঁ।
আমার মনে হয়,
আমি সবাইকে
উৎসাহিত করব যে
আপনাদের মধ্যে
কিছুটা কৌতূহল
থাকা উচিত, তাই
না? আপনি যে
ক্ষেত্রে কাজ
করছেন, শুধু
সেটার মধ্যেই
নিজেকে আবদ্ধ
রাখবেন না। এর
বাইরেও
অন্বেষণ করুন,
বুঝলেন? আমি
জিমেইল নিয়ে
কাজ করছিলাম,
কিন্তু গুগলের
মূল সার্চ
ইঞ্জিন কীভাবে
কাজ করে তা দেখে
আমি মুগ্ধ
হয়েছিলাম।
আমি বিগটেবলের
অভ্যন্তরীণ
কার্যপ্রণালী
দেখেও মুগ্ধ
হয়েছিলাম,
যদিও আমি
সরাসরি
বিগটেবল নিয়ে
কাজ করছিলাম না
। শুধু অন্বেষণ
করা, এই
জিনিসগুলো
দেখা। আর সেটা
অনেক সহজ ছিল,
কারণ সেখানে
ব্যাখ্যা করার
জন্য একটি
অত্যন্ত উন্নত
ও ধৈর্যশীল
বুদ্ধিমত্তা
রয়েছে, যেমন—
আপনার কী মনে
হয়, এটা কেন
এভাবে করা
হয়েছে? এবং
তারপর, একবার
আপনি বিশেষজ্ঞ
হয়ে গেলে, আপনি
পুরোপুরি বলতে
পারবেন, 'আমি
দেখেছি এটা
এভাবে করা
হয়েছে। আমরা
এটা পরিবর্তন
করছি না কেন?
এটা কি সহায়ক
হবে?' আর জানেন,
এভাবেই আপনি
শুধু শেখা থেকে
বাস্তবে অবদান
রাখার দিকে
এগিয়ে যান।
আমার মনে হয়,
এটা করার জন্য
প্রত্যেকের
ব্যক্তিগত
উদ্যোগ থাকা
উচিত। জানেন,
আপনি যদি শুধু
বসে থেকে
অপেক্ষা করেন
যে কেউ আপনাকে
এটা কীভাবে
করতে হয় তা
শিখিয়ে দেবে,
তাহলে এই
মুহূর্তে এটা
সত্যিই খুব
কঠিন হবে। কারণ
যে কেউ যদি এসে AI
কীভাবে
ব্যবহার করতে
হয় বা কীভাবে
আরও ভালো
সফটওয়্যার
ইঞ্জিনিয়ার
হতে হয় তা
ব্যাখ্যা করে,
তাহলে তাদের
জ্ঞান তো
সেকেলে হয়ে
যাবে, তাই না?
আপনাকে শুধু
নিজে থেকেই এই
টুলগুলো সব
সময় ব্যবহার
করতে হবে এবং
শেখার জন্য
এগুলোকে কাজে
লাগাতে হবে।
আমার মনে হয়,
আমি সম্ভবত গত
এক বছরে তার
আগের পাঁচ
বছরের মোট
সময়ের চেয়েও
বেশি শিখেছি, যা
বেশ অদ্ভুত।
>> আপনার
কর্মজীবনের
গতিপথ এবং
>> আপনি যে
পরিবেশে কাজ
করছিলেন, তা
বিবেচনা করলে,
তাই না?
>> মানে, যারা এই
ইন্ডাস্ট্রিতে
বেশ কিছুদিন
ধরে আছে, তাদের
সবার মতোই আমিও
একজন
নিশ্চিতভাবে
ভালো কোডার।
আমি যখন প্রথম
এই
ইন্ডাস্ট্রিতে
আসি, তার চেয়ে
১০ বছর আগে আমি
আরও ভালো কোডার
ছিলাম।
ব্যাপারটা এমন
যে, আমি প্রতি
দশকে ফিরে
তাকালে বুঝতে
পারি যে আমি
অনেক ভালো
হয়েছি। আর
আমার মনে হয়,
এই গত এক বছরে
আমি আরও অনেক
ভালো হয়েছি।
>> আর এটাও একটা
কারণ ছিল যার
জন্য আমি আপনার
সাথে কথা বলতে
খুব আগ্রহী
ছিলাম, কারণ যখন
আমাদের মধ্যে
মেসেজ আদান-
প্রদান শুরু
হয়, আমি যখন
আপনাকে
জিজ্ঞেস
করেছিলাম, "আরে,
কেমন চলছে?", তার
জবাবে আপনি
আমাকে প্রথম যে
উত্তরটা
দিয়েছিলেন, তা
হলো...আপনি
বলেছিলেন, "আপনি
বিশ্বাস করবেন
না, কিন্তু আমার
কোডিং আউটপুট
অসাধারণ এবং
এটি উচ্চ মানের,
এমনকি ডাটাবেস
কোয়ালিটির
মতো।" আর এই
জিনিসগুলো আমি
সাধারণত দেখি
না। আমি
সাধারণত দেখি
যে, আমি হয়তো
বেশি কোড তৈরি
করছি না, কিন্তু
সেটা খুবই বাজে
। কিন্তু আবারও
বলছি, আমার কাছে
এটা এক ধরনের
অনুপ্রেরণা।
দেখুন, একজন
সফটওয়্যার
ইঞ্জিনিয়ার
হিসেবে নিজেকে
আরও উন্নত করতে
আপনি এই
টুলগুলো
ব্যবহার করতে
পারেন। আপনি তো
একটা উদাহরণ,
তাই না? আশা করি,
এমন আরও অনেকেই
আছেন।
>> হ্যাঁ, হ্যাঁ।
না, এবং ককরোচ
ল্যাবসে আমি
একা নই, আমাদের
এখানে আরও
অনেকেই এটা
করছেন। আমার
কাছে এটা খুবই
উত্তেজনাপূর্ণ
মনে হয়, জানেন,
এখন কিছুটা
ক্লান্তিকর
হলেও বেশ
রোমাঞ্চকর।
আমি
সফটওয়্যার
ইঞ্জিনিয়ারিংয়ে
এসেছিলাম কারণ
আমি জিনিস তৈরি
করতে ভালোবাসি
এবং আমি দ্রুত
জিনিস তৈরি
করতে পারি।
জানেন, অতীতে যে
বিষয়গুলোতে
হয়তো আপোস
করতে হতো, এখন
আপনি সেই
আপোসগুলো বাদ
দিতে পারেন।
মানে, আপনি
এখনকার
সফটওয়্যারের
ইউজার
এক্সপেরিয়েন্সের
(UX) ক্ষেত্রেও
এটা দেখতে
পাবেন। আমার
মনে হয় ইউএক্স
(UX) অনেক উন্নত।
আপনি ওয়েব
অ্যানিমেশন
এবং এই জাতীয়
সব চমৎকার
জিনিস দেখতে
পান। এটা তো
কেবল
উপরিভাগের
বিষয়। এর
পরিধি এর
চেয়েও অনেক,
অনেক গভীরে
বিস্তৃত।
>> পিটার, এটা
অসাধারণ ছিল। ধ-
পডকাস্টে আসার
জন্য ধন্যবাদ।
>> হ্যাঁ, এটা
চমৎকার। আমাকে
আমন্ত্রণ
জানানোর জন্য
ধন্যবাদ।
>> পিটারের সাথে
কথা বলতে আমি যে
কারণে আগ্রহী
ছিলাম, তার একটি
কারণ হলো, তিনি
এআই (AI)-এর আগে
থেকেই একজন
অত্যন্ত
পরিচিত এবং
কর্মঠ
ইঞ্জিনিয়ার
ছিলেন, যিনি
প্রোডাকশনে
থাকা সবচেয়ে
স্থিতিশীল
কিছু
ডিস্ট্রিবিউটেড
সিস্টেম তৈরি
করেছেন। ককরোচ
ডিবি (Cockroach DB) তার
স্থিতিশীলতার
জন্য পরিচিত
এবং এর একটি
বিশেষত্ব হলো,
কয়েকটি নোড
নষ্ট হয়ে
গেলেও
ডেটাবেসটি
কোনো ডেটা নষ্ট
না হয়েই কাজ
করতে থাকে।
মূলত, তেলাপোকা
দূর করা যতটা
কঠিন, একে দূর
করাও ততটাই
কঠিন, আর
একারণেই এর এমন
নামকরণ।
আমাদের
আলোচনার একটি
আকর্ষণীয় অংশ
ছিল কীভাবে
পিটার প্রচলিত
কোডিং
লাইব্রেরির
চেয়েও বেশি
কার্যকর ডেটা
স্ট্রাকচার
তৈরি করেছিলেন
। এর জন্য তাকে
এবং তার
সহকর্মীদের
ধন্যবাদ, যারা
লাইব্রেরির
ধীরগতির
অংশগুলোর দিকে
মনোযোগ
দিয়েছিলেন।
তিনি এটি
করেছিলেন সি ++
এসটিএল ম্যাপ (C
++ STL map) এবং গো (Go)-
তে সুইস টেবিল (
Swiss table)
ইমপ্লিমেন্টেশনের
জন্য। আমার
কাছে এই দুটি
ঘটনাই একটি
ভালো
অনুস্মারক বলে
মনে হয়েছে যে,
আপনি বিদ্যমান
লাইব্রেরি বা
এমনকি
ভাষাটিকেও
উন্নত করতে
পারেন, বিশেষ
করে যদি আপনি
পরিমাপ করেন যে
কোন অংশগুলো
ধীরগতির মনে
হচ্ছে। এই
কথোপকথনের
আরেকটি অংশ যা
আমার ভালো
লেগেছে, তা হলো
পিটার যেভাবে
একটি বৃত্ত
সম্পূর্ণ
করেছেন। একজন
অত্যন্ত কর্মঠ
ইঞ্জিনিয়ার
এবং সিটিও (CTO)
হিসেবে তিনি
বছরে ১,০০,০০০
লাইন কোড
লিখতেন। ২০২২
থেকে ২০২৪
সালের মধ্যে
ইঞ্জিনিয়ারদের
কোচিং করানোর
লক্ষ্যে তিনি
কোড লেখা বন্ধ
করেননি। এবং
তারপর তিনি
আবার কোড করা
শুরু করেন, কারণ
এআই (AI) টুলস
ব্যবহার করে
তিনি তার
ইঞ্জিনিয়ারদের
আরও ভালোভাবে
কোচিং করাতে
চেয়েছিলেন,
কিন্তু নিজে
টুলসগুলো
ব্যবহার না
করলে তা করা
কঠিন। এবং এখন
তিনি নিজেকে
অত্যন্ত কর্মঠ
হিসেবে দেখতে
পান। এবং এবার
তার চারপাশের
দলটিও কর্মঠ।
এবং আমরা পাঁচ
কোয়ার্টার
সফটওয়্যারের
কথা বলছি না,
বরং ডেটাবেস-
উপযোগী, উচ্চ-
মানের কোড তৈরি
করে
প্রোডাকশনে
কমিট করার কথা
বলছি। পিটার
নিশ্চিত যে এআই
বিদ্যমান
দক্ষতাকে আরও
বাড়িয়ে তোলে,
এবং সম্ভবত এই
কারণেই তিনি গত
এক বছরে এআই
নিয়ে কাজ করতে
গিয়ে তার আগের
পাঁচ বছরের মোট
জ্ঞানের
চেয়েও বেশি
শিখেছেন। এবং
আমি এটিকে একটি
মূল্যবান
অনুস্মারক
হিসেবে দেখি যে
সফটওয়্যার
ইঞ্জিনিয়ারিংয়ে
শেখা এবং গভীর
দক্ষতা তৈরি
করা অত্যন্ত
মূল্যবান। এবং
পরিশেষে, আমি
পিটারের এই
কথাটির
প্রশংসা করি যে
তিনি শুধু
উত্তেজিতই নন,
বরং ক্লান্তও।
শেখার অনেক
কিছু আছে,
কিন্তু এটা
ক্লান্তিকর।
আর সে বা আমার
পরিচিত কেউই এর
থেকে মুক্ত নয়
। তাই, এআই
নিয়ে যা কিছু
ঘটছে তাতে
আপনিও যদি
ক্লান্ত হয়ে
থাকেন, তবে জেনে
রাখুন যে আপনি
একা নন। গুগলের
ইঞ্জিনিয়ারিং
সংস্কৃতি এবং
ডিস্ট্রিবিউটেড
সিস্টেমের উপর
প্র্যাগম্যাটিক
ইঞ্জিনিয়ারের
আরও গভীর
আলোচনার জন্য
শো নোটস দেখুন।
এই পর্বটি যদি
আপনার ভালো
লেগে থাকে, তবে
অনুগ্রহ করে
আপনার পডকাস্ট
প্লেয়ারে
সাবস্ক্রাইব
করে নিন। আর
আপনি যদি একটি
রেটিং দেন, তার
জন্য বিশেষ
ধন্যবাদ।
ধন্যবাদ, এবং
পরের পর্বে
আবার দেখা হবে।
Ask follow-up questions or revisit key timestamps.
এই পডকাস্ট পর্বে পিটার ম্যাটিস, ককরোচ ল্যাবস-এর সহ-প্রতিষ্ঠাতা এবং সিটিও, তার কর্মজীবন, গুগল-এর অভিজ্ঞতা, এবং এআই (AI) এর সাথে সফটওয়্যার ইঞ্জিনিয়ারিংয়ের পরিবর্তনের প্রভাব নিয়ে আলোচনা করেছেন। পিটার গিম্প (GIMP)-এর মতো সফটওয়্যার তৈরি থেকে শুরু করে গুগল-এর জিমেইল ও কলোসাস ডিস্ট্রিবিউটেড স্টোরেজ সিস্টেম তৈরিতে তার অবদানের কথা জানান। আলোচনার মূল অংশ জুড়ে ছিল ডাটাবেস তৈরির ক্ষেত্রে বি-ট্রি (B-tree) এর গুরুত্ব, এআই এজেন্টের মাধ্যমে কোডিংয়ের বিবর্তন এবং কীভাবে এআই এখন একজন অভিজ্ঞ ইঞ্জিনিয়ারের উৎপাদনশীলতা এবং দক্ষতা বহুগুণ বাড়িয়ে দিচ্ছে।
Videos recently processed by our community