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

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) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...