সরাসরি প্রধান সামগ্রীতে চলে যান

Docker Compose বাদ দিয়ে .NET Aspire ব্যবহার করার সহজ উপায়

Introduction

এই ভিডিওতে মিলান জোভানোভিচ দেখিয়েছেন কীভাবে একটি প্রজেক্টে Docker Compose সরিয়ে .NET Aspire ব্যবহার করা যায়। সহজ কথায়, আমরা যখন বড় কোনো সফটওয়্যার বানাই (যেমন- ডাটাবেস, এপিআই, লগিং সার্ভিস সব একসাথে), তখন সেগুলোকে একসাথে ম্যানেজ করার জন্য আগে Docker Compose ব্যবহার হতো। কিন্তু এখন .NET ডেভেলপারদের জন্য Aspire অনেক সহজ এবং পাওয়ারফুল একটা টুল হিসেবে এসেছে। ভিডিওতে একটি To-Do অ্যাপের মাধ্যমে এই পুরো মাইগ্রেশন বা পরিবর্তনের প্রক্রিয়াটি দেখানো হয়েছে।


১. কেন Docker Compose থেকে Aspire-এ যাবেন?

ভিডিওর শুরুতে মিলান দেখিয়েছেন যে তার একটি .NET 10 এপিআই আছে যা Docker Compose দিয়ে চলছিল। এখানে ডাটাবেস হিসেবে Postgres এবং লগিং-এর জন্য Seq ব্যবহার করা হয়েছে।

Reference: [00:49] Docker Compose-এ আমাদের ম্যানুয়ালি docker-compose.yml ফাইল লিখতে হয় এবং নেটওয়ার্কিং বা কানেকশন স্ট্রিং সেটআপ করা একটু ঝামেলার হতে পারে। কিন্তু Aspire-এ এই কাজগুলো কোড দিয়েই অটোমেটিক করা যায়।

  • সহজ ব্যাখ্যা: * Orchestration (অরকেস্ট্রেশন): অনেকগুলো ছোট ছোট সার্ভিস (যেমন: ডাটাবেস, এপিআই) একসাথে মিলিয়ে একটা সিস্টেম চালানো।

    • Open Telemetry: আপনার অ্যাপের ভেতরে কী হচ্ছে (এরর, স্পিড) তা ট্র্যাক করার একটি সিস্টেম।

২. .NET Aspire সেটআপ করা

ভিডিওতে Visual Studio 2026 ব্যবহার করে প্রজেক্টে Aspire সাপোর্ট অ্যাড করা হয়েছে।

Reference: [01:11] রাইট ক্লিক করে "Add .NET Aspire Orchestrator Support" সিলেক্ট করলেই প্রজেক্টে দুটো নতুন পার্ট তৈরি হয়:

  1. AppHost: এটা মেইন কন্ট্রোলার যা ঠিক করে কোন সার্ভিস কখন চলবে।

  2. ServiceDefaults: এখানে ওপেন টেলিমেট্রি এবং হেলথ চেকের মতো কমন সেটিংস থাকে।

  • কঠিন শব্দের ব্যাখ্যা: * Central Package Management (CPM): যখন একটা বড় প্রজেক্টে অনেকগুলো লাইব্রেরি থাকে, তখন সবগুলোর ভার্সন এক জায়গা থেকে কন্ট্রোল করার সিস্টেম।

৩. ডাটাবেস এবং সার্ভিস অ্যাড করা (কোডিং)

মিলান দেখিয়েছেন কীভাবে Aspire-এর মাধ্যমে Postgres ডাটাবেস এবং Seq (লগিং টুল) অ্যাড করতে হয়। এজন্য কিছু NuGet প্যাকেজ ইনস্টল করতে হয়েছে।

Reference: [04:53]

কোড উদাহরণ (AppHost-এ):

C#

var builder = DistributedApplication.CreateBuilder(args);

// Postgres ডাটাবেস অ্যাড করা
var postgres = builder.AddPostgres("postgres")
                      .WithDataVolume()
                      .WithPersistence();

var db = postgres.AddDatabase("to-doist");

// Seq (লগিং) অ্যাড করা
var seek = builder.AddSeq("seek");

// এপিআই-এর সাথে এগুলো কানেক্ট করা
builder.AddProject<Projects.WebAPI>("webapi")
       .WithReference(db)
       .WaitFor(db)
       .WithReference(seek)
       .WaitFor(seek);

builder.Build().Run(); 

ব্যাখ্যা:

  • AddPostgres: আপনার জন্য একটি ডাটাবেস কন্টেইনার তৈরি করে দিবে।

  • WithReference: এপিআই-কে বলে দিচ্ছে যে তোমার এই ডাটাবেস লাগবে।

  • WaitFor: এপিআই চালু হওয়ার আগে ডাটাবেস তৈরি হওয়া পর্যন্ত অপেক্ষা করবে। এটি কানেকশন এরর কমায়।


৪. Aspire ড্যাশবোর্ড এবং মনিটরিং

অ্যাপটি রান করার পর একটি সুন্দর ওয়েব ড্যাশবোর্ড ওপেন হয়।

Reference: [08:03] এই ড্যাশবোর্ড থেকে আপনি দেখতে পাবেন:

  • কোন সার্ভিস চলছে আর কোনটা বন্ধ।

  • সার্ভিসের লগ (Logs) এবং ট্রেস (Traces)।

  • একেকটা রিকোয়েস্ট ডাটাবেসে গিয়ে কতক্ষণ সময় নিচ্ছে।

ভিডিওতে দেখানো হয়েছে কীভাবে Swagger দিয়ে একটি ইউজার রেজিস্টার করার পর সাথে সাথে Aspire ড্যাশবোর্ডে তার ট্র্যাকিং চলে আসে। [09:21]


৫. আবার Docker Compose-এ ফিরে যাওয়া (Full Circle)

Aspire-এর সবচেয়ে মজার ফিচার হলো, আপনি Aspire ব্যবহার করে আবার Docker Compose ফাইল তৈরি করতে পারবেন।

Reference: [10:13] এজন্য Aspire.Hosting.Docker প্যাকেজ ব্যবহার করে কমান্ড লাইনে নিচের কোডটি লিখতে হয়:

Bash

dotnet aspire publish --output docker-compose-artifacts 

এটি অটোমেটিক একটি docker-compose.yml ফাইল বানিয়ে দেয়। এর ফলে আপনি লোকালি Aspire-এ ডেভেলপ করবেন, কিন্তু সার্ভারে আগের মতোই Docker Compose দিয়ে ডেপ্লয় করতে পারবেন।


এনালাইসিস এবং আমার চিন্তাভাবনা

কন্টেন্ট ক্রিয়েটর যা বোঝাতে চেয়েছেন: মিলান বোঝাতে চেয়েছেন যে, ডেভেলপারদের জন্য docker-compose.yml ফাইলের জটিল কনফিগারেশন লেখার চেয়ে C# কোড দিয়ে সার্ভিস ম্যানেজ করা অনেক বেশি সহজ এবং ভুল হওয়ার সম্ভাবনা কম। বিশেষ করে Aspire-এর ড্যাশবোর্ড ডেভেলপারদের অনেক সময় বাঁচিয়ে দেয়।

বাস্তবসম্মত ধারণা ও পরামর্শ:

  • কেন ভালো: আপনি যদি .NET ইকোসিস্টেমে কাজ করেন, তবে Aspire ব্যবহার করা আপনার প্রোডাক্টিভিটি অনেক বাড়িয়ে দেবে। এর অটোমেটিক সার্ভিস ডিসকভারি এবং কানেকশন স্ট্রিং ম্যানেজমেন্ট অসাধারণ।

  • বিকল্প: আপনি যদি জাভা বা পাইথন ব্যবহার করেন, তবে Docker Compose-ই সেরা। কিন্তু .NET-এর জন্য Aspire এখন এক ধাপ এগিয়ে।

  • পরামর্শ: নতুন প্রজেক্ট শুরু করলে সরাসরি Aspire দিয়ে শুরু করুন। আর যদি পুরাতন প্রজেক্ট থাকে, তবে ভিডিওর মতো করে ধীরে ধীরে মাইগ্রেট করতে পারেন। তবে মনে রাখবেন, Aspire এখনো কিছুটা নতুন, তাই কিছু প্যাকেজ 'প্রি-রিলিজ' বা প্রিভিউ মোডে থাকতে পারে।

সহজ ভাষায় শেষ কথা: Docker Compose-এ আমাদের অনেক কিছু ম্যানুয়ালি লিখতে হতো, যা অনেক সময় বোরিং ছিল। .NET Aspire সেই কাজগুলোকে C# কোডের আওতায় এনে সহজ এবং আরও পাওয়ারফুল করে তুলেছে।

[

I Replaced Docker Compose With Aspire (Here's Why)

Milan Jovanović · 1.1K views

](http://www.youtube.com/watch?v=eszmPLzxjc0)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

জাভা ফিডব্যাক এবং স্ট্রাকচার্ড কনকারেন্সি: বিবর্তনের গল্প

Introduction এই ভিডিওর নির্দিষ্ট অংশে জাভা ল্যাঙ্গুয়েজ আর্কিটেক্ট ব্রায়ান গোয়েটজ (Brian Goetz) আলোচনা করেছেন কীভাবে জাভার নতুন ফিচারগুলো তৈরি হয় এবং এতে সাধারণ ডেভেলপারদের মতামতের গুরুত্ব কতটুকু। বিশেষ করে Structured Concurrency -এর মতো জটিল ফিচারগুলো কেন বারবার 'Preview' অবস্থায় থাকে এবং কীভাবে কমিউনিটির ফিডব্যাক সেই ফিচারগুলোকে আরও নিখুঁত করতে সাহায্য করে, তা এখানে সহজভাবে বোঝানো হয়েছে। ১. ভালো ফিডব্যাক আসলে কী? ভিডিও রেফারেন্স: [ 34:53 ] ব্রায়ান গোয়েটজ বলছেন যে, জাভা টিম যখন কোনো নতুন ফিচারের খসড়া (Draft) বা প্রস্তাব (JEP) প্রকাশ করে, তখন তারা এমন কিছু জানতে চায় যা তারা নিজেরা আগে ভাবেনি। বিস্তারিত: একজন ডেভেলপার হিসেবে আমরা যখন কোনো নতুন ফিচার দেখি, আমাদের প্রথম প্রতিক্রিয়া হয় সেটার Syntax বা লেখার ধরন নিয়ে। কিন্তু ব্রায়ানের মতে, "এই লেখাটা কেন এমন হলো?" বা "এটা কোটলিন বা স্কালা-র মতো কেন নয়?"—এই ধরনের ফিডব্যাক খুব একটা কাজে আসে না। আসল দামী ফিডব্যাক হলো সেইটা, যা নতুন কোনো বাস্তব সমস্যা (Edge Case) তুলে ধরে। আমার চিন্তা: আপনি যদি কেবল দ...

[Master Post] Machine Learning for Everybody – Full Course

URL: https://youtu.be/i_LwzRVP7bg?t=0 Title: Machine Learning for Everybody – Full Course Topics:- মেশিন লার্নিংয়ের হাতেখড়ি এবং গুগল কোল্যাব সেটআপ মেশিন লার্নিংয়ের খুঁটিনাটি ও ফিচারের সহজ পাঠ Classification বনাম Regression এবং মডেল ট্রেনিংয়ের সহজ পাঠ মেশিন লার্নিংয়ের জন্য ডেটা তৈরি এবং প্রসেসিং করার সহজ গাইড K-Nearest Neighbors (KNN) থিওরির সহজ পাঠ কে-নিয়ারেস্ট নেইবারস (KNN) ইমপ্লিমেন্টেশন সহজ বাংলায় নেইভ বেইজ থিওরি এবং এর প্রয়োগ: সহজ পাঠ লজিস্টিক রিগ্রেশন: থিওরি ও ইমপ্লিমেন্টেশন SVM থিওরি এবং ইমপ্লিমেন্টেশন সহজ পাঠ নিউরাল নেটওয়ার্ক এবং টেনসরফ্লোর সহজ পাঠ টেনসরফ্লো দিয়ে নিউরাল নেটওয়ার্ক ক্লাসিফিকেশন শেখার সহজ গাইড লিনিয়ার রিগ্রেশন: সহজ কথায় মূল ধারণা ও গণিত লিনিয়ার রিগ্রেশন: সহজ ভাষায় খুঁটিনাটি ও হাতে-কলমে শেখা লিনিয়ার রিগ্রেশন এবং নিউরন মডেলের সহজ পাঠ TensorFlow দিয়ে রিগ্রেশন নিউরাল নেটওয়ার্ক তৈরি - পার্ট ১ টেনসরফ্লো দিয়ে রিগ্রেশন নিউরাল নেটওয়ার্ক তৈরি - পার্ট ২ আনসুপারভাইজড লার্নিং: কে-মিনস ক্লাস্টারিংয়ের সহজ পাঠ Principal C...