𝗙𝗿𝗼𝗺 𝗦𝘂𝗽𝗮𝗯𝗮𝘀𝗲 𝘁𝗼 𝗣𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝗼𝗻 𝗚𝗼: 𝗠𝗼𝗻𝘁𝗵 𝟭

দুই মাস আগে, আমি Info Links তৈরি করেছি। এটি Le CNAM Lebanon-এর শিক্ষার্থীদের জন্য একটি ফ্রি রিসোর্স প্ল্যাটফর্ম। এটি ৩০০ জন শিক্ষার্থী এবং ৫০টি কোর্সের সেবা প্রদান করে।

শুরুতে, ব্যাকএন্ডে সরাসরি Supabase ব্যবহার করা হতো। এটি কাজ করছিল, কিন্তু আমি একটি টেকনিক্যাল ইন্টারভিউতে এটি ডিফেন্ড করতে পারতাম না। আমার প্রথম মাসের লক্ষ্য শুধু Go syntax শেখা ছিল না। আমি এমন একটি সিস্টেম তৈরি করতে চেয়েছিলাম যা একজন সিনিয়র ইঞ্জিনিয়ার সম্মান করবেন।

এখানে কী কী পরিবর্তন হয়েছে:

  • ব্যাকএন্ডটি শুধুমাত্র Supabase থেকে একটি Go REST API-তে রূপান্তরিত হয়েছে।
  • কোডবেস ৬টি ফাইল থেকে বেড়ে ১০০টিরও বেশি ফাইল হয়েছে।
  • আমি একটি লেয়ার্ড আর্কিটেকচার (layered architecture) ইমপ্লিমেন্ট করেছি: API, Service, Repository, এবং Middleware।
  • গ্লোবাল ভেরিয়েবল সরানোর জন্য আমি dependency injection যোগ করেছি।
  • আমার সিদ্ধান্তগুলো ব্যাখ্যা করার জন্য আমি ৬টি Architecture Decision Records (ADRs) লিখেছি।

নতুন কাঠামোটি একটি স্পষ্ট পথ অনুসরণ করে: HTTP request → Router → Handler → Service → Repository → Postgres।

আমি এই সংযোজনগুলোর মাধ্যমে প্রোডাকশন রেডিনেস (production readiness)-এর ওপর গুরুত্ব দিয়েছি:

  • slog দিয়ে স্ট্রাকচার্ড লগিং (Structured logging)।
  • হেলথ চেক (Health checks) এবং মেট্রিক্স।
  • অপব্যবহার রোধ করতে রেট লিমিটিং (Rate limiting)।
  • race detection এবং linting সহ CI।
  • মাল্টি-স্টেজ Docker বিল্ড।
  • উচ্চ টেস্ট কভারেজ (API-এর জন্য ৯৩% এবং Service-এর জন্য ৯৬%)।

আমি k6 দিয়ে লোড টেস্টিংও করেছি। আমি প্রতি সেকেন্ডে ৪,৪০০টি রিকোয়েস্ট দিয়ে API-তে হিট করেছি। রেট লিমিটার ১ মিলি-সেকেন্ডের কম সময়ে অতিরিক্ত ট্রাফিক ব্লক করে দেয়। সিস্টেমটি ক্র্যাশ করেনি।

একটি বড় শিক্ষা ছিল AI ব্যবহারের ক্ষেত্রে আমার নিয়ম। আমি প্রতিদিন ৪৫ মিনিট AI ছাড়া কাজ করি। আমি এই সময়টি কোড রিফ্যাক্টর (refactor) করতে বা কোনো ফাইল উচ্চস্বরে ব্যাখ্যা করতে ব্যবহার করি। যদি আমি সেটি ব্যাখ্যা করতে না পারি, তবে আমি সেটি শিপ (ship) করি না। এটি "এটি কাজ করছে" এবং "আমি বুঝি কেন এটি কাজ করছে"-এর মধ্যকার ব্যবধান কমিয়ে দেয়।

ইঞ্জিনিয়ারিং এখন মিশনের সাথে সামঞ্জস্যপূর্ণ। প্রোডাক্টটি শিক্ষার্থীদের জন্য ফ্রি থাকছে, কিন্তু ব্যাকএন্ডটি এখন ইন্টারভিউ-গ্রেড (interview-grade)।

আগামী মাসে, আমি goroutines এবং context ব্যবহার করে লিঙ্কের হেলথ চেক করার জন্য একটি সহযোগী Go সার্ভিস তৈরি করব।

Live site: infolinks.app GitHub: github.com/MohamadObeid9/Info_Links Telegram: @Info_Links9

Source: https://dev.to/mohamadobeid9/from-supabase-only-to-production-go-month-1-of-rebuilding-info-links-3a4p