MongoDB থেকে Postgres
এটি সম্পর্কে কী?
একটি কোম্পানিতে একটি পদের জন্য সাক্ষাৎকারের সময়, আমাকে নিম্নলিখিত প্রশ্নটির উত্তর দিতে বলা হয়েছিল: আপনি কি অনুগ্রহ করে আপনার দ্বারা সমাধান করা সবচেয়ে কঠিন সমস্যাটি বর্ণনা করতে পারেন? সারাংশ হিসেবে, আমি যে সবচেয়ে কঠিন সমস্যাটি সমাধান করেছি তা ঘটেছিল যখন আমি eBay-তে কাজ করছিলাম, যেখানে আমি 2023 সালে eBay-এর একটি বড় অভ্যন্তরীণ প্রকল্পকে MongoDB থেকে Postgres-এ মাইগ্রেট করেছিলাম। তবে, এই প্রশ্নটি আমাকে কীভাবে এই কঠিন সমস্যাটি সমাধান করেছি সে সম্পর্কে গভীরভাবে চিন্তা করতে বাধ্য করল এবং আমাকে আমার ডেভেলপার যাত্রা সম্পর্কে পুনর্বিবেচনা করার সুযোগ দিল। এই কারণে, আমি সেই প্রশ্নের একটি খুব বিস্তারিত এবং সুসংহত উত্তর লিখেছি, এবং আমি আমার ওয়েবসাইটে আমার উত্তরটি শেয়ার করতে চেয়েছি।
প্রশ্নটি কী ছিল?
আপনি কি অনুগ্রহ করে আপনার দ্বারা সমাধান করা সবচেয়ে কঠিন সমস্যাটি বর্ণনা করতে পারেন? অনুগ্রহ করে ৪টির চেয়ে কম অনুচ্ছেদে উত্তর দিন এবং আমাদের জানাবেন:
- আপনি কী করেছিলেন
- কীটিকে কঠিন করেছে
- আপনি এই অভিজ্ঞতা থেকে কী শিখলেন
- ফলস্বরূপ আপনি কীভাবে বৃদ্ধি পেয়েছেন
আমার উত্তর কী ছিল?
1 - আপনি কী করেছিলেন
বর্তমান সময়ে, আমার ক্যারিয়ারে আমি যে সবচেয়ে কঠিন সমস্যা সমাধান করেছি তা ঘটেছিল আমার বর্তমান অবস্থায় eBay-তে কাজ করার সময়। বর্তমানে eBay-তে, যেখানে আমি Hitachi Vantara-এর মাধ্যমে কনট্র্যাক্টেড, আমি একটি অভ্যন্তরীণ টুল উন্নয়ন ও রক্ষণাবেক্ষণ করি যাকে Storage Management System বা STMS বলা হয়। STMS হল একটি টুল যা eBay-এর Service & Storage Infrastructure (SSI) দল দ্বারা ডেটা সেন্টার জুড়ে ডিভাইসগুলো মনিটর ও পরিচালনা করার জন্য ব্যবহৃত হয়। STMS ইঞ্জিনিয়ারকে বহু অ্যারে, সুইচ, হোস্ট, ডিস্ক গ্রুপ, ক্লাস্টার, এবং ডেটাবেসের মেট্রিক্স মনিটর করার সক্ষমতা দেয়। পাশাপাশি এটি সুইচ এবং অ্যারের জন্য এলার্টিং পরিচালনা করে এবং ইঞ্জিনিয়ারকে হোস্ট বরাদ্দের মতো উন্নত কাজগুলি সহজে সম্পন্ন করতে দেয়। STMS প্রতি মিনিটে ১.৫ মিলিয়নেরও বেশি মেট্রিকস ইনজেস্ট করে, যা eBay-এর ডেটা সেন্টার জুড়ে ডজন/শতাধিক অ্যারে, সুইচ, হোস্ট, ডিস্ক গ্রুপ এবং ক্লাস্টারকে কভার করে। এটি SSI দলের জন্য eBay-এর স্টোরেজ অবকাঠামো মনিটর ও পরিচালনার একটি মহত্ত্বপূর্ণ টুল হিসেবে কাজ করে, যা eBay-এর মূল সার্ভিস ও ব্যবসায়িক মডেলের জন্য অত্যন্ত জরুরি। এই সমস্ত জিনিস জানার পর, eBay-তে কাজ করার সময় আমার সবচেয়ে কঠিন সমস্যা ছিল STMS-কে MongoDB ডাটাবেস ব্যবহার থেকে Postgres ডাটাবেস ব্যবহার এ মাইগ্রেট করানো।
2 - এটি কীভাবে কঠিন হয়ে উঠল
এই সমস্যাটি কঠিন হয়েছিল কারণ MongoDB এবং Postgres মৌলিকভাবে ভিন্ন ধরনের ডাটাবেস। MongoDB একটি ডকুমেন্ট-ভিত্তিক ডাটাবেস (NoSQL), অর্থাৎ ডেটা একটি collection-এ JSON হিসেবে সংরক্ষিত হয় (ফাইলিং ক্যাবিনেটের মতো ডকুমেন্ট), এবং Postgres একটি রিলেশনাল ডাটাবেস (SQL), অর্থাৎ ডেটা একটি টেবিলে সারি হিসেবে সংরক্ষিত হয় (স্প্রেডশীটের মতো)। তদুপরি, STMS-এর পুরো ব্যাকএন্ডটি JSON হিসেবে ডেটা প্রক্রিয়া ও পরিচালনা করার জন্য তৈরি করা ছিল, এবং ডাটাবেস অপারেশনের জন্য এমন প্যাকেজগুলোর উপর নির্ভরশীল ছিল যা শুধুমাত্র MongoDB-র সাথে সামঞ্জস্যপূর্ণ ছিল। এছাড়া, এই মাইগ্রেশনের সময় কোনো ডাউনটাইম থাকতে পারত না এবং প্রায় সব ফিচার কাজ করে চলতে হত কারণ STMS একটি অভ্যন্তরীণ টুল হিসেবে অত্যন্ত গুরুত্বপূর্ণ। এই মাইগ্রেশন সম্পূর্ণরূপে কয়েক মাসের মধ্যে সম্পন্ন করতে হত, কোনো ডাউনটাইম ছাড়াই, এবং এর কার্যকর করার জন্য কোনো স্পষ্ট পরিকল্পনা ছিল না। আমার আগেই Postgres-এর সাথে বেশি অভিজ্ঞতাও ছিল না এবং আমার সকল সহকর্মীর কাছেও একটি বড় লিগ্যাসি কোডবেসকে NoSQL থেকে SQL-এ মাইগ্রেট করার অভিজ্ঞতা ছিল না।
3 - আপনি এই অভিজ্ঞতা থেকে কী শিখলেন
STMS কোড মাইগ্রেশন MongoDB থেকে Postgres-এ সফলভাবে সম্পন্ন হয়েছে কোনো ডাউনটাইম ছাড়াই এবং প্রায় সব ফিচার ও কার্যকারিতা বজায় রেখে। এর জন্য ব্যাপক গবেষণা, শেখা, টেস্টিং এবং ট্রাবলশুটিং প্রয়োজন ছিল। আমি আমাদের ডেটা স্ট্রাকচারগুলোকে পুনর্গঠন করেছি যাতে রিলেশনাল ডাটাবেসগুলোর সাথে আরও কার্যকরভাবে কাজ করতে পারে এবং সেইসব প্যাকেজগুলোর পরিবর্তে নতুন প্যাকেজ তৈরি করেছি যেগুলো Postgres-এ ইন্টিগ্রেট হয়। সার্বিকভাবে, মাইগ্রেশনটি প্রত্যাশা ছাড়িয়ে গিয়ে নির্বিঘ্নে এবং কোনো উল্লেখযোগ্য ত্রুটি ছাড়াই চলে। এই প্রক্রিয়ার মধ্যে আমি অনেক কিছু শিখেছি। প্রযুক্তিগতভাবে, আমি Postgres, SQL, parse trees, ORMs, Sequelize, Prisma, query builders, equivalence checking, primary-standby ডাটাবেস সেটআপ, এবং ডাটাবেস-সংক্রান্ত ইউনিট টেস্টিং সম্পর্কে আরও ভাল বোঝাপড়া অর্জন করেছি। মূলত, আমি একটি জটিল সমস্যাকে ছোট ছোট অংশে ভাগ করে সেই অংশগুলোর জন্য কার্যকর সমাধান বাস্তবায়ন কীভাবে করা যায় তা আরও কার্যকরভাবে শিখেছি। তদুপরি, আমি কীভাবে একজন নেতা হওয়া যায় এবং অনেক সীমাবদ্ধতা, ব্যর্থতা এবং অজানার মুখে রেখে এই প্রজেক্টকে তার সমাপ্তি পর্যন্ত নেতৃত্ব দেওয়া যায় তাও শিখেছি।
4 - ফলস্বরূপ আপনি কীভাবে বৃদ্ধি পেয়েছেন
আমি আমার অধীনস্থ জীবনে রোবটিক্সে আমার ক্যারিয়ার শুরু করেছিলাম কিন্তু eBay-তে চাকরি পাওয়ার পরে আমি ওয়েব ডেভেলপমেন্টের দিকে সরে এসেছি, এমন এক ক্ষেত্রে যেখানে আমার পূর্বের কোনো অভিজ্ঞতা ছিল না। এই ট্রান্সিশনটি একটি ধারাবাহিক শেখা এবং অভিযোজন দ্বারা সংজ্ঞায়িত একটি ক্যারিয়ারের ভিত্তি স্থাপন করেছিল। STMS-কে MongoDB থেকে Postgres-এ মাইগ্রেট করার চ্যালেঞ্জটি আমার ক্যারিয়ারের একটি গুরুত্বপূর্ণ লাফ ছিল, যা আমার পেশাগত উন্নয়নে ব্যাপকভাবে অবদান রেখেছে। এটি কেবল ডাটাবেস সম্পর্কে আমার বোঝাপড়া বাড়ানো বা সমস্যা সমাধানের দক্ষতা উন্নত করাই ছিল না। এই প্রজেক্টটি আমাকে নতুন ভূখণ্ডে ঠেলে দিয়েছিল, যা নির্ভুল পরিকল্পনা এবং কোনো ডাউনটাইম নিয়ে প্রতিশ্রুতি দাবি করেছিল। বড়-স্কেলের ডাটাবেস ট্রানজিশনে পূর্বের অভিজ্ঞতা ছাড়াই মাইগ্রেশন নেতৃত্ব দেওয়ার মাধ্যমে আমি পরিষ্কার যোগাযোগ, দলগত কাজ এবং জটিল চ্যালেঞ্জগুলোকে পরিচালনাযোগ্য অংশে ভাগ করার মূল্য শিখেছি। এই অভিজ্ঞতা আমার প্রযুক্তিগত দক্ষতাগুলোকে প্রসারিত করল এবং পাশাপাশি আমার আত্মবিশ্বাসও বাড়াল, যা আমাকে আরও উচ্চাকাঙ্ক্ষী লক্ষ্য এবং প্রকল্পের দিকে এগিয়ে যেতে উৎসাহিত করেছে। আমার ক্যারিয়ারের এই মাইলফলকটি কেবল একজন ডেভেলপার ও লিডার হিসেবে আমার বৃদ্ধি প্রদর্শন করেনি বরং একজন সমস্যা-সমাধানকারী হিসেবে দেখিয়েছে যে অজানা গ্রহণ করে সফল হওয়াই ব্যক্তিগত ও পেশাগত উন্নয়নের চাবিকাঠি।
উপসংহার কী?
আমার উত্তরগুলো আমাকে ঐ কোম্পানিতে সাক্ষাৎকারের দ্বিতীয় পর্যায়ে নিয়ে গেছে, যা আমাকে দলের একজন ডেভেলপারের সঙ্গে একটি মনোরম কথোপকথন করার সুযোগ দিয়েছিল, যা বেশ ভাল ছিল। কিন্তু প্রধানত, এই নিয়োগ আমাকে eBay-এ কাজ করার সময় আমার ক্যারিয়ারে আমি যে সবচেয়ে চ্যালেঞ্জিং প্রযুক্তিগত সমস্যাটি সমাধান করেছি তা নিয়ে পুনর্বিবেচনা করার সুযোগ দিয়েছে। এটি আমাকে একজন ডেভেলপার/ইঞ্জিনিয়ার হিসেবে আমার বৃদ্ধির কথা ভাবতে, নতুন দক্ষতা অর্জন করতে এবং জটিল সমস্যাগুলোতে অভিযোজিত হয়ে সমাধান করার ব্যাপারে আমার আত্মবিশ্বাস বাড়াতে সক্ষম করেছে।