Fahim Shariar Shoumik

Backend Engineer | Golang Specialist | Distributed Systems Architect

Dhaka, Bangladesh
Fahim Shariar Shoumik

About

Tech entrepreneur and backend specialist with 10+ years of experience building scalable systems using Golang, gRPC, and Docker-based microservices. Proven leadership in startups and developer platforms. Passionate about API-first design, plugin-based extensibility, and headless CMS architectures. Currently building Apito.io, an API development platform. Past projects include FHIR-compliant EHR systems, DevOps consulting, and open-source tooling.

Back to Blog

মাইক্রোসার্ভিস কেন ? কখন ? কিভাবে ? | পর্ব ২

MicroservicesArchitectureGolangBengali

মাইক্রোসার্ভিস আর্কিটেকচার, শুনে অনেক ভাল লাগলেও আগে জানতে হবে কখন কেন এবং কোথায় এটার ব্যবহার  ।  না  বুঝে এই আর্কিটেকচার  গ্রহণ করলে লাভের থেকে ক্ষতি হবে বেশি । শুধু মানুষের কাছ থেকে শুনে , অনেকে করছে বলে আমাদের কেও করতে হবে ব্যাপারটা এরকম করা যাবে না । অনেক প্রোজেক্ট আছে যেসব মনলিথ থাকলেই ভাল মাইক্রোতে যাবার দরকার পরে না , গেলে অনেক কাজ করতে হয় যেটা ওই প্রোজেক্টের জন্য অনেক OverKill । তাই আগে জানা উচিত কেন অমি এই আর্কিটেকচার অবলম্বন করব ও কখন ?

প্রথমে, প্রয়জনিতা বুজুন 

আগে চিন্তা করেনিন যে আপনি যে প্রোজেক্টটা বানাবেন অথবা আপনার এখন যে প্রোজেক্ট আছে যার জন্য মাইক্রোসার্ভিসের কথা ভাবছেন সেটা এই আর্কিটেকচার অবলম্বনে কতটা সুফল আসতে পারে , আমার কি পরে কোন সুবিধা হবে ? আর আমার বিদ্যমান টিম কি নতুন এই আর্কিটেকচারের সাথে খাপ খাওয়াতে পারবে ?

তবে নীচের দিক গুলো যদি কোন প্রোজেক্ট এ থাকে তাহলে মাইক্রোসার্ভিস ব্যবহার করলে প্রবর্তিতে অনেক সুবিধা পাওয়া জেতে পারে ! যেমন,

  • অ্যাপ্লিকেশানের গ্রাহক অনেক বেশি যারা কিনা প্রতিদিন অ্যাপটা ব্যবহার করে ।
  • অ্যাপ যদি কোন সামাজিক যোগাযোগের ওয়েবসাইট মত হয় ।
  • যদি অ্যাপটি বিগ ডাটার সাথে সম্পর্ক থাকে আর গবেষণার এক পর্যায়ে ডাটা বাড়লে আপনাকে অতিতিক্ত CPU & RAM সংযোগ করতে হতে পারে।
  • যদি অ্যাপটির ডেভ্লপমেন্ত আর রিলিস চক্রে যদি Agile Development Stategy  মানা হয়, সোজা ভাষায় বললে, যদি আপনি চান যে, আপনার প্রোজেক্টের ছোট ছোট পরিবর্তনও দ্রুত আপনার গ্রাহকদের কাছে পৌঁছাক এবং তাঁদের চাহিদা মোতাবেক আপনি আপনার সার্ভিস ও সারভারের ক্ষমতা বাড়াতে কমাতে চান ।
  •  আরও অনেক  ……

**আগে মনলিথ তারপর মাইক্রো
**

একটা প্রোজেক্টের শুরু থেকেই মাইক্রোসার্ভিস আর্কিটেকচার অবলম্বন করার কথা চিন্তা করা ঠিক না । তবে টিমে দক্ষ মেম্বার থাকলে করা যেতে পারে, মাইক্রোসার্ভিস অবলম্বনের কি কি জটিলতার আসতে পারে তা সঠিক না জেনে মাইক্রোসার্ভিসে যাওয়ার জন্য আমি নিজেই পরামর্শ দিব না !

যদিও প্রোজেক্টের শুরুতে এটা বলা খুব কঠিন যে কি কি সার্ভিস লাগতে পারে, কিন্তু যদি প্রোজেক্টে একের পরে এক প্ররিবরতন আসে তাহলে যেগুলো পরিবর্তন হচ্ছে না সেগুলো এক একটা সার্ভিসের আওতায় নেও যেতে পারে , তবে এখানে খেয়াল রাখতে হবে যে প্রত্যেক সার্ভিস জেন স্বাধীন কাজ করতে পারে , যদি একটা সার্ভিস আর একটা সার্ভিসের উপড়ে নির্ভর হয়ে পরে তাহলে API Gateway প্যাটার্ন ফলো করতে হবে, েসব নিয়ে পরের পর্বে আশাকরি আলোচনা করব ।

তবে আগে মনলিথ তারপরে মাইক্রোতে যাওয়া উচিত। অর্থাৎ আপনি প্রোজেক্ট আগে পুরোটাই সব সার্ভিস একসাথে করে ফেলা উচিত, যেমনটা সাধারণত আমারা করি ভিবিন্ন ফ্রেমওয়ার্ক ব্যবহার করে । এর পরেই মোটামটি যেগুলো আলাদা ভাবে কাজ করতে সক্ষম বা অতিরিক্ত সংযোগ অ্যাপে সেগুলো মাইক্রোতে নিয়ে যাওয়া উচিত, যেমন যদি একটা ই-কমার্স অ্যাপের কথা চিন্তা করি তাহলে, Search, Recomendation Engine, Order, Operation সব আলাদা আলাদা মাইক্রোসার্ভিসে ভাগ করা উচিত ।

সময় হলে এর পরের পর্বে মাইক্রোসার্ভিস প্যাটার্ন ও অ্যান্টি-প্যাটার্ন নিয়ে লিখব ……