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

ডকার (Docker) কি | পর্ব – ১

DockerContainerizationDevOpsBengali

ডকার হল একধরনের লিনাক্স কন্টেইনার টেকনোলজি । এর কাজ হল ডেভেলপমেন্ট এর জন্য আপনার অ্যাপ্লিকেশান লেয়ার কে সিস্টেম লেয়ার থেকে আলাদা করা । এটা একটা Cross Platform টুল যেটা উইন্ডোজ , লিনাক্স , ম্যাক , পাওয়ার পিসি সহ অনেক অনেক অপারেটিং সিস্টেম এ চলে ।

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

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

এর থেকে ভাল একটা উদাহরন হল ধরুন একটা প্রোজেক্ট রেভিউ করার জন্য বস/ সিনিয়র ডেভেলপার কে জমা দিতে হবে । ধরলাম সে Xampp এর নতুন ভার্সন চালায় অথবা অনেক পুরনো, আবার যে পিসি তে অ্যাপটি ডেভেলপ করা হল সেটা PHP এর একটা নিরদিষ্ঠ ভার্সন দিয়ে বানানো যেখানে  অ্যাপটি চালানোর জন্য অনেক কিছু কাস্টম কনফিগার করা আছে , যার জন্য প্রোজেক্ট টা ঠিকমত চলছে , কিন্তু যাকে প্রোজেক্টটা হস্তান্তর করা হল তার পিসি তে সেসব করা নেই ! তিনি যখন প্রোজেক্ট রান করার চেষ্টা করবে তখন সেটা ঠিকমত চলবে না ।

তখন একটা কথাই  মুখে আসে যে , “আমার পিসি তে তো ঠিক মত চলল !“। কিন্তু যদি প্রোজেক্টের সোর্স কোড এবং সব সফটওয়্যার , কনফিগার এবং ডাটাবেস  সহ একসাথে  দিয়ে দেওয়া যেত ! যেগুলো অ্যাপ ডেভেলপ করার সময় এসব ব্যবহার করা হয়েছিল এবং কনফিগার করা হয়েছিল। অর্থাৎ প্রোজেক্ট টা কি ল্যাঙ্গুয়েজ দিয়ে বানানো হয়েছিল আর কোন ডাটাবেস ব্যবহার করা হয়েছিল বানানোর সময় সব কিছুই একটা ফাইল এর মদ্ধে লিখে দেওয়া থাকবে আর প্ররজেক্ট  চালু করার সময় আপনা আপনি সব ডাউনলোড হয়ে  অটো কনফিগার হয়ে যেত !! তাহলে চিন্তা করতে হত না যে তার পিসি তে যদি না চলে অথবা লোকাল মেশিন এ তো ঠিকঠাক চলল , যদি প্রোডাকশন সার্ভারে ঠিকমত না কাজ করে ?

জাভার উদাহরণ দিয়ে বলি,  আপনি যখন একটা জাভা কোড নয়তবা প্রোজেক্ট অন্য একজনকে দেন তখন অবশ্যই চিন্তা করেন না যে সেটা তার কম্পিউটারে ঠিক মত কাজ করবে কি না , সে যে অপারেটিং সিস্টেম ই ব্যবহার করুক না কেন সেটা কাজ করবে , কারণ জাভার JVM কোড কে বুজতে দেই না যে সে কোন প্লাটফরম এ রান হচ্ছে। তাই অনেকেই বলে যে , “একবার কোড করে অনেক সিস্টেম এ রান করা যায় জাভাতে” , ঠিক তেমনি একবার Docker Environment সেটআপ করে ডেভেলপমেন্ট করলে এবং একবার একটা প্রোজেক্ট এর জন্য একবার একটা ডক্যার ফাইল লিখলে সেই প্রোজেক্ট নিশ্চিন্তে হস্তান্তর করা যাবে যে কাউকেই আর যেকোনো মেশিনে।

ডকার ফাইল এ যা লিখা থাকবে, ডকার তার হাব/রেজিস্ট্রি থেকে সেসব সফটওয়্যার আপনা আপনি নামিয়ে , আপনার কনফিগার ফাইল নিয়ে পুরো প্রোজেক্টের সাথে লিঙ্কআপ করবে কিন্তু একটা সফটওয়্যার ও আপনার পিসি তে ইন্সটল হবে না ! এবং কাজ শেষে আপনার সব ডাটা সংরক্ষিত থাকবে ।

লোকাল মেশিন থেকে ডেভেলপমেন্ট/প্রোডাকশন সার্ভার অথবা যদি কারো কাছে প্রোজেক্ট ট্রান্সফার করতে হয় তাহলে সোর্স কোডের সাথে Dockerfile টি দিয়ে দিলেই আর কিছু কনফিগার করা লাগবে না । তাকে চিন্তাও করতে হবে না Dependency নিয়ে । শুধু তার কম্পিউটারে ডকার ইন্সটল থাকলে আর ইন্টারনেটের সাথে কানেক্ট থাকতে হবে ।

ডকারের আরও অনেক সুবিধা আছে , আস্তে আস্তে আমরা সব নিয়ে আলোচনা করব ।  এর পরের পর্বে ডকার দিয়ে Web Development Environment সেটআপ করা নিয়ে আলোচনা করব ।