প্রকল্প সম্পর্কে
Argos হল একটি ঘোষণামূলক OpenTelemetry ইনস্ট্রুমেন্টেশন লাইব্রেরি, যা Go মাইক্রোসার্ভিসের জন্য লক্ষ্য করা হয়েছে এবং শূন্য-অ্যালোকেশন শৃঙ্খলা অনুসরণ করে। README এটিকে Go ইকোসিস্টেমের দুটি অন্যান্য পদ্ধতির বিকল্প হিসেবে উপস্থাপন করে: Java‑এর -javaagent বাইটকোড ইনস্ট্রুমেন্টেশনের সমতুল্য কিছু নেই, এবং "zero-code" বিকল্প (eBPF) উচ্চতর অনুমতি, সাম্প্রতিক Linux কার্নেল প্রয়োজন এবং শুধুমাত্র সীমিত লাইব্রেরি কভার করে। Argos পরিবর্তে লো-কোড পদ্ধতি গ্রহণ করে: স্টার্টআপে একটি ইনিশিয়ালাইজেশন কল, এরপর ব্যবহৃত প্রতিটি ক্লায়েন্ট লাইব্রেরির জন্য স্পষ্ট, ড্রপ‑ইন র্যাপার, কোনো মনকি-প্যাচিং বা হট পাথে রিফ্লেকশন ছাড়া।
Setup এবং lifecycle
একটি একক argos.Run কল Init, SIGINT/SIGTERM‑ট্রিগার্ড শাটডাউন এবং Shutdown একসাথে সংযুক্ত করে, এবং WithServiceName এর মতো ফাংশনাল অপশন গ্রহণ করে। README উল্লেখ করে যে আরও নিয়ন্ত্রণের প্রয়োজন হলে নিম্ন-স্তরের Init/Shutdown জোড়া উপলব্ধ। কনফিগারেশন ফাংশনাল অপশন অথবা YAML ফাইল থেকে লোড করা যেতে পারে। রুট মডিউল Trace/TraceFunc হেল্পার, Resource, Propagation, Logger (গ্লোবাল অ্যাম্বিয়েন্ট লগিং সহ) এবং একটি argostest প্যাকেজ প্রকাশ করে। ডিফল্টভাবে ট্রেস এবং মেট্রিক OTLP মাধ্যমে localhost:4317 এ এক্সপোর্ট হয় এবং ফেইল‑ওপেন হয়, ফলে কোনো কালেক্টর না চললেও রিকোয়েস্ট কাজ করে থাকে।
Integrations
প্রতিটি ভেন্ডর SDK র্যাপার নিজস্ব Go মডিউলে থাকে এবং নিজস্ব go.mod সহ, তাই একটি ইম্পোর্ট করা অন্যটির ট্রান্সিটিভ ডিপেনডেন্সি টেনে আনে না। ডকুমেন্টেড কভারেজে অন্তর্ভুক্ত রয়েছে HTTP সার্ভার (net/http, chi, gin, echo, fiber, gorilla/mux), যেকোনো http.RoundTripper কে HTTP ক্লায়েন্ট হিসেবে, যেকোনো database/sql ড্রাইভার, GORM, go-redis v9, MongoDB ড্রাইভার v2, gocql for Cassandra, Sarama for Kafka, amqp091-go for RabbitMQ, Azure Service Bus, GCP Pub/Sub v2, gRPC, pkg/sftp এবং net/smtp। প্রতিটি মডিউল বাস্তব টেস্ট, বেসলাইন‑বনাম‑ইনস্ট্রুমেন্টেড বেন্চমার্ক সরবরাহ করে এবং golangci-lint, gosec এবং govulncheck পাস করে। লাইব্রেরি যা এখনও কভার করা হয়নি তাদের জন্য একটি কন্ট্রিবিউশন টেমপ্লেট এবং ডিসিশন ট্রি প্রদান করা হয়েছে। রুট মডিউল ইচ্ছাকৃতভাবে শূন্য ভেন্ডর SDK ডিপেনডেন্সি রাখে।
Samples এবং tooling
আটটি চালনাযোগ্য মাইক্রোসার্ভিস ডকুমেন্টেড, প্রতিটির নিজস্ব docker-compose.yml এবং README রয়েছে। ছয়টি একটি রাউটারকে ডেটা বা মেসেজিং স্ট্যাকের সঙ্গে জোড়া করে (উদাহরণস্বরূপ gin + GORM/PostgreSQL + Kafka, অথবা fiber + Cassandra + SFTP); inventory‑api এবং inventory‑worker একটি সহযোগী জোড়া গঠন করে, যার রিকোয়েস্ট একক ট্রেস উৎপন্ন করে যা উভয় প্রক্রিয়াকে আচ্ছাদন করে। একটি cmd/doctor CLI Go প্রকল্পের ইম্পোর্ট স্ক্যান করে এবং কোনো মেলানো Argos ইন্টিগ্রেশন যা এখনও ওয়্যার্ড আপ হয়নি তা সুপারিশ করে; -strict সুপারিশকে CI ফেইল্যারে রূপান্তর করে, এবং -init একটি starter argos.config.yaml এবং main.go স্নিপেট স্ক্যাফোল্ড করে। রেপোজিটরি একটি Go ওয়ার্কস্পেস মাল্টি‑মডিউল লেআউট, যার মধ্যে কোর্স মডিউল, ইন্টিগ্রেশন, cmd/doctor, স্যাম্পল, উদাহরণ, mkdocs-material ডকুমেন্টেশন সাইট এবং Grafana LGTM ও OTel Collector স্ট্যাকসহ Docker সেটআপ রয়েছে, যা স্যাম্পলগুলিতে ব্যবহৃত ব্যাকএন্ড সিস্টেমগুলোকে অন্তর্ভুক্ত করে। Make টার্গেটগুলো বিল্ড, টেস্ট, বেঞ্চ, লিন্ট, ফরম্যাটিং, সিকিউরিটি স্ক্যানিং এবং টেলিমেট্রি বা ব্যাকএন্ড স্ট্যাককে আপ ও ডাউন করার কাজ কভার করে।
Stability এবং উল্লেখিত সীমাবদ্ধতা
সব মডিউল এখনও v0.x এ রয়েছে, তাই কোনো মডিউলের পাবলিক API মাইনর ভার্সনের মধ্যে পরিবর্তিত হতে পারে, যদিও বিদ্যমান রিলিজ রেজলভযোগ্য থাকে। প্রয়োজনীয়তা এবং প্রমাণ স্পষ্ট সতর্কতার সঙ্গে বর্ণিত: Go 1.26 বা তার পরের সংস্করণ প্রয়োজন, পূর্বের সংস্করণ সমর্থিত নয়। অপ্ট‑ইন ক্যাপচার এবং মাস্কিং ফিচারগুলো শুধুমাত্র আংশিকভাবে হার্ডেন্ড—capture.MaskSQL ধারাবাহিক ফাজ টেস্টের মাধ্যমে যাচাই করা হয়েছে যা একটি বাস্তব বাগ খুঁজে পেয়ে ঠিক করেছে, তবে HTTP ক্লায়েন্ট, HTTP সার্ভার এবং gRPC ইন্টিগ্রেশনের হেডার ও বডি ক্যাপচার ইউনিট টেস্টে কভার করা হয়েছে কিন্তু একই ফাজিং পাস পায়নি। inventory‑api/inventory‑worker জোড়ায় এক ঘণ্টার সোক টেস্ট, যা HTTP, gRPC, SQL, Redis, Kafka, MongoDB এবং Cassandra কে মিশ্র সফল ও ত্রুটি ট্র্যাফিক (~245k রিকোয়েস্ট) দিয়ে চালায়, কোনো গোরুটিন বা মেমরি বৃদ্ধি দেখায়নি, তবে এটি কেবলমাত্র পরীক্ষিত ইন্টিগ্রেশনগুলোর জন্য প্রমাণ, সার্বজনীন গ্যারান্টি নয়—RabbitMQ, GCP Pub/Sub, Azure Service Bus, SFTP এবং SMTP এর জন্য কোনো নিবেদিত সোক টেস্ট নেই, এবং এক ঘণ্টার বেশি রান কভার করা হয়নি। বেঞ্চমার্কগুলো স্বল্প‑বার্স্টের উপর ভিত্তি করে, ধারাবাহিক লোড ভেরিফিকেশন নয়। প্রকল্পটি MIT লাইসেন্সযুক্ত।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.