মূল বিষয়বস্তুতে যান

নিবন্ধ

পলিগ্লট বেঞ্চমার্কস: সঠিক কাজের জন্য সঠিক টুল নির্বাচন করা

আট রানটাইম (njs, Lua, Python, Go, Rust, Bun, Java, Kotlin), সাতটি HTTP পরীক্ষা, পুনরুত্পাদনযোগ্য ডকার জোতা: সিদ্ধান্ত ম্যাট্রিক্স, ARB প্রমাণ, কর্মপ্রবাহ-উদাহরণ রেপো, এবং polyglot-benchmarks.fictionally.org লাইভ ড্যাশবোর্ড

  • 11 মিনিটে পড়া
এই পৃষ্ঠায়

এটি দীর্ঘ-রূপ গভীর-ডুব। একটি দ্রুত, স্কিম-পঠনযোগ্য সংস্করণের জন্য, দেখুন সহচর ব্লগ পোস্ট.

পলিগ্লট বেঞ্চমার্ক কভার — সঠিক টুল, সঠিক কাজ

1. ভূমিকা: অভ্যাস স্ট্যাক বনাম বাস্তব কাজের চাপ

প্রাপ্তবয়স্ক সংস্থাগুলিতে প্রযুক্তি পছন্দগুলি খুব কমই ব্যর্থ হয় কারণ কেউ একটি বেঞ্চমার্ক ব্লগ পোস্ট পড়ে না। তারা ব্যর্থ হয় কারণ প্রক্রিয়া নির্বাচন করার জন্য দুর্বল: একটি উচ্চস্বরে সিনিয়র ইঞ্জিনিয়ারের পছন্দ, একটি ভাষায় পূর্ণ একটি নিয়োগ পাইপলাইন, বা একটি সম্মেলনে একটি একক চিত্তাকর্ষক ডেমো৷ ইতিমধ্যে পণ্যটি লেটেন্সি-সংবেদনশীল APIs, ব্যাচ পুনর্মিলন, NGINX-এ প্রান্ত প্রমাণীকরণ, অভ্যন্তরীণ CLIs এবং মাঝে মাঝে সার্ভারহীন স্পাইক মিশ্রিত করে। একটি রানটাইম এই সমস্ত আকারের জন্য সর্বোত্তম হতে পারে না।

এই নিবন্ধটি ব্যাখ্যা করে পলিগ্লট বেঞ্চমার্ক — একটি লাইভ তুলনা ড্যাশবোর্ড এবং খোলা কর্মপ্রবাহ-উদাহরণ/বেঞ্চমার্ক এর পিছনে জোতা - একটি হিসাবে সিদ্ধান্ত কাঠামো, ফ্যানবয় লিডারবোর্ড নয়। লক্ষ্য হল প্রমাণ যে আপনি একটি আর্কিটেকচার ডিসিশন রেকর্ড (ADR) এর সাথে সংযুক্ত করতে পারেন: একই শেষ পয়েন্ট, একই লোড জেনারেটর, একই কন্টেইনার লেআউট, একাধিক ভাষা।

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

পলিগ্লট বেঞ্চমার্ক চার-পদক্ষেপ পদ্ধতি: কাজের চাপ সংজ্ঞায়িত করুন, জোতা চালান, তুলনা করুন, সিদ্ধান্ত নিন
এক নজরে সিদ্ধান্তের কাঠামো — কাজের চাপ সংজ্ঞায়িত করুন, জোতা চালান, লাইভ ড্যাশবোর্ডে তুলনা করুন, তারপর পরিমাপিত প্রমাণ দ্বারা সমর্থিত একটি ADR দিয়ে সিদ্ধান্ত নিন।

2. পলিগ্লট বেঞ্চমার্ক কি?

পলিগ্লট বেঞ্চমার্ক এ হোস্ট করা হয় polyglot-benchmarks.fictionally.org (ওয়ার্কফ্লো-উদাহরণ ইকোসিস্টেমে কাল্পনিকভাবে-ব্র্যান্ডেড অবকাঠামো)। ল্যান্ডিং শিরোনাম তুলনা করে:

  • NGINX njs — স্টক NGINX এর ভিতরে জাভাস্ক্রিপ্ট মডিউল
  • ওপেনরেস্টি লুয়া — ওপেনরেস্টির প্রান্তে লুয়া
  • পাইথন ফাস্টএক্সপিআর0এক্স — Uvicorn ASGI অ্যাপ
  • নেট/http যান - স্ট্যান্ডার্ড লাইব্রেরি সার্ভার
  • জং Actix-web — অ্যাক্টিক্সে HTTP অ্যাসিঙ্ক করুন
  • বান — নেটিভ HTTP সার্ভারের সাথে জাভাস্ক্রিপ্ট রানটাইম
  • জাভা (Javalin / Jetty) — Jetty-এ হালকা JVM HTTP
  • Kotlin (Ktor / Netty) — Netty-এ কোরোটিন-বান্ধব JVM HTTP

লাইভ শিরোনাম একটি 8-ভাষা তুলনা: এনজেএস বনাম লুয়া বনাম পাইথন বনাম গো বনাম মরিচা বনাম বান বনাম জাভা বনাম Kotlin. সাবটাইটেলটি উদ্দেশ্যকে ফ্রেম করে: এর জন্য পারফরম্যান্স দীর্ঘ পোলিং / চ্যাট / সারি / API কাজের চাপ — সংযোগ-ভারী, JSON-ভারী, এবং একটি একক "হ্যালো ওয়ার্ল্ড" রথ দৌড়ের পরিবর্তে রাউটিং-ভারী পথ। JVM দোকানগুলি অবশেষে একটি পৃথক "এন্টারপ্রাইজ" উপাখ্যানের পরিবর্তে Go/Rust/Bun এর মতো একই ন্যায্য পৃষ্ঠ পায়।

2.1 ড্যাশবোর্ড কি দেখায়

যখন একটি দৌড় অগ্রসর হয়, তখন UI পোল হয় /data/results.json প্রতি দুই সেকেন্ড এবং রেন্ডার:

  • অনুরোধ/সেকেন্ড (থ্রুপুট) — থেকে একত্রিত wrk পরীক্ষা প্রতি ভাষা প্রতি
  • গড় বিলম্ব এবং P99 টেইল লেটেন্সি — wrk এর লেটেন্সি মডেল থেকে মিলিসেকেন্ডে
  • TTFB (প্রথম বাইট থেকে সময়) — wrk এর পাশাপাশি কার্ল টাইমিং JSON থেকে
  • সারাংশ টেবিল — সেরা কক্ষে ★ মার্কার সহ প্রতি-পরীক্ষায় বিজয়ী
  • বিস্তারিত পরীক্ষার কার্ড — বার চার্ট এবং মেট্রিক টেবিল (P50, P90, P99.9, ত্রুটি)
  • বিলম্বের শতাংশ বন্টন — পরীক্ষা জুড়ে গড়
  • রায় - আপনার ব্যবহারের ক্ষেত্রে সেরা — স্ট্যাটাস একবার আখ্যান complete

এই কাঠামোটি ইচ্ছাকৃতভাবে ARB-বান্ধব: স্লাইডের জন্য চার্ট, স্প্রেডশীটের জন্য টেবিল, ADR-এর ঝুঁকি বিভাগের জন্য বর্ণনা।

3. কর্মপ্রবাহ-উদাহরণ জোতা

পুনরুত্পাদনযোগ্য সবকিছুর অধীনে থাকে benchmarks/ মধ্যে কর্মপ্রবাহ- উদাহরণ ভান্ডার শীর্ষ-স্তরের বিন্যাস:

benchmarks/
  bench.sh              # orchestrates tests, writes results.json
  wrk_json.lua          # wrk done() → JSON summary (RPS, percentiles)
  docker-compose.yml    # eight app services + dashboard + bench runner
  njs/                  # NGINX + njs module
  lua/                  # OpenResty nginx.conf
  python/               # FastAPI + Dockerfile
  golang/               # net/http main.go
  rust/                 # Actix-web + Cargo
  bun/                  # Bun server.ts
  java/                 # Javalin on Jetty
  kotlin/               # Ktor on Netty
  dashboard/            # static index.html + nginx.conf

3.1 ডকার কম্পোজ টপোলজি

docker-compose.yml একটি ভাগ করা নেটওয়ার্কে বিচ্ছিন্ন পরিষেবাগুলি সংজ্ঞায়িত করে:

  • nginx-njs — পোর্ট 8081, কনফিগার থেকে ./njs
  • openresty-lua — পোর্ট 8082
  • python-fastapi — পোর্ট 8084, থেকে নির্মিত ./python
  • go-server — পোর্ট 8085
  • rust-actix — পোর্ট 8086
  • bun-server — পোর্ট 8087
  • java-server — পোর্ট 8088, Javalin / Jetty থেকে ./java
  • kotlin-server — পোর্ট 8089, Ktor / Netty থেকে ./kotlin
  • dashboard — পোর্ট 8083, এইচটিএমএল পরিবেশন করে এবং মাউন্ট করে results ভলিউম এ /data
  • bench — আলপাইন ধারক যা ইনস্টল করা হয় curl, wrk, jq, নির্ভরতার জন্য অপেক্ষা করে, রান করে bench.sh

বেঞ্চ রানার শেয়ার করেন results ড্যাশবোর্ডের সাথে ভলিউম যাতে ম্যানুয়াল কপি ছাড়াই ফলাফল লাইভ দেখা যায়।

3.2 bench.sh পদ্ধতি

শেল ড্রাইভার সুস্পষ্টভাবে ন্যায্যতা নিয়ম এনকোড করে:

  • সময়কাল: 10s প্রতি ভাষা প্রতি শেষ বিন্দু
  • থ্রেড: 4
  • সংযোগ: 100 সমবর্তী
  • ওয়ার্মআপ: 50 রাউন্ড আঘাত /hello নির্ধারিত পরীক্ষার আগে প্রতিটি সার্ভারে
  • সার্ভার প্রতি: কার্ল টাইমিং JSON (dns, connect, ttfb, total) প্লাস wrk এর সাথে wrk_json.lua

স্ক্রিপ্টে সাতটি পরীক্ষা পাইপ-ডিলিমিটেড:

আইডি নাম অভিপ্রায় শেষবিন্দু
1প্লেইন টেক্সটবেসলাইন — ন্যূনতম প্রতিক্রিয়া, ফ্রেমওয়ার্ক ওভারহেড/hello
2JSON সিরিয়ালাইজেশন100-আইটেম JSON অ্যারে তৈরি করুন এবং সিরিয়াল করুন/json
3CPU-বাউন্ড (fib 30)রিকার্সিভ ফিবোনাচি(30) — বিশুদ্ধ CPU/cpu?n=30
4স্ট্রিং ম্যানিপুলেশনতৈরি করুন, বিভক্ত করুন, বড় হাতের অক্ষর, 1000টি সেগমেন্টে পুনরায় যোগ দিন/string
5পরিদর্শনের অনুরোধ করুনশিরোনাম, পদ্ধতি, আর্গস → JSON/request_info?foo=bar&baz=123
6সাবরিকোয়েস্ট + ট্রান্সফর্মঅভ্যন্তরীণ সাবরিকোয়েস্ট, JSON পার্স করুন, রূপান্তর করুন/subrequest
7রাউটিং লজিকক্যোয়ারী প্যারামে শর্তসাপেক্ষ রাউটিং/route?action=greet&name=bench

প্রতিটি ভাষা একই রুট পৃষ্ঠ প্রয়োগ করে (দেখুন golang/main.go, python/main.py, java/, kotlin/, NGINX কনফিগারেশন, ইত্যাদি) তাই পার্থক্যগুলি রানটাইম এবং ফ্রেমওয়ার্ককে প্রতিফলিত করে, অমিলযুক্ত চশমা নয়।

4. কেন "পলিগ্লট" গুরুত্বপূর্ণ (ধর্মান্ধতা ছাড়া)

পলিগ্লট আর্কিটেকচার মানে এই নয় যে প্রত্যেক ইঞ্জিনিয়ার আটটি ভাষা শেখে। এর মানে আবদ্ধ প্রসঙ্গ উপযুক্ত রানটাইম পান:

  • প্রান্ত সমতল — auth, রেট লিমিট, রাউটিং: NGINX এর ভিতরে Lua বা njs আপনি ইতিমধ্যেই পরিচালনা করছেন
  • কোর API সমতল — SLO-এর সাথে ব্যবসায়িক যুক্তি: Go or Rust
  • জেভিএম প্লেন — বিদ্যমান স্প্রিং/জাকার্তা এস্টেট, শেয়ার্ড লাইব্রেরি, নিয়োগের গভীরতা: জাভা (Javalin) বা Kotlin (Ktor)
  • ডেটা প্লেন — ETL, নোটবুক, এমএল আঠা: পাইথন
  • রিয়েল-টাইম জেএস প্লেন — WebSockets, ফ্রন্টএন্ড সহ ভাগ করা প্রকার: বান বা নোড যেখানে বেগ জেতে

ইউনিফর্ম স্ট্যাক এইচআর এবং সংগ্রহকে অপ্টিমাইজ করে। পলিগ্লট বেঞ্চমার্ক অপ্টিমাইজ করে কাজের চাপ প্রতি ফিট টেবিলে পরিমাপযোগ্য ট্রেড-অফ সহ।

5. মাত্রা যে ব্যাপার

Raw req/s হল মেট্রিক যা Slack-এ সবচেয়ে দ্রুত ভ্রমণ করে। এটি ভুল পড়াও সবচেয়ে সহজ। একটি মাল্টি-কলাম রুব্রিক ব্যবহার করুন:

মানদণ্ড আধিপত্য বিস্তার করে যখন… জোতা সংকেত
p50 / p99 লেটেন্সিব্যবহারকারী-মুখী APIs, চ্যাট, দীর্ঘ ভোটwrk লেটেন্সি পার্সেন্টাইল; ড্যাশবোর্ড P99 চার্ট
থ্রুপুট (আরপিএস)উচ্চ ফ্যান-আউট গেটওয়ে, ব্যাচ এগ্রিগেটরwrk RPS; সারাংশ বিজয়ী কলাম
সংযোগ প্রতি মেমরিঅলস ওয়েবসকেট হাজার হাজারগুণগত + উত্পাদন প্রোফাইলিং (পুরোপুরি জোতা নয়)
টিটিএফবিCDN মিস, কোল্ড পাথ, মোবাইল নেটওয়ার্ককার্ল time_starttransfer ফলাফল JSON
LOC / জটিলতাস্টার্টআপ, নিয়ন্ত্রিত পরিবর্তন নিয়ন্ত্রণফোল্ডার জুড়ে বাস্তবায়ন তুলনা করুন
বিল্ড এবং সিআই সময়ঘন ঘন স্থাপন, অনেক পরিষেবাডকার ভাষা প্রতি প্রোফাইল বিল্ড
অপস বোঝাছোট প্ল্যাটফর্ম দলবিদ্যমান NGINX দক্ষতা → Lua/njs; অন্য পাত্রে
হোস্টিং খরচসর্বদা-অন বনাম স্কেল-থেকে-শূন্যমেমরি থেকে প্রাপ্ত + CPU আন্ডার লোড (উৎপাদন)

6. সিদ্ধান্ত ম্যাট্রিক্স

নীচের চিত্রটি হল গুণগত মানচিত্র যা আমরা পর্যালোচনাগুলিতে ব্যবহার করি — চিত্রিত নেতা, আপনার কিটে জোতা চালানোর বিকল্প নয়।

কাজের চাপ বনাম মানদণ্ড সিদ্ধান্ত ম্যাট্রিক্স — বিজয়ী সারি অনুসারে পরিবর্তিত হয়

প্রথমে সারি পড়ুন: আপনার কাজের চাপের আকার বেছে নিন, তারপর ওজন কলাম। যদি দুটি মানদণ্ডের দ্বন্দ্ব হয় (যেমন সেরা RPS বনাম সর্বনিম্ন LOC), সেই উত্তেজনা হল ADR আলোচনার মূল্য।

7. কেস প্যাটার্ন (উদাহরণ লেবেলিং)

নিম্নলিখিত মানচিত্রগুলি স্থাপত্য পছন্দের জন্য পরিবারগুলিকে পরীক্ষা করে৷ আপনার মেশিনে লিডাররা দৌড়ানোর পরে ড্যাশবোর্ডে উপস্থিত হয় — এই বিভাগটিকে নির্দিষ্ট স্কোর হিসাবে বিবেচনা করবেন না।

7.1 API লেটেন্সি-সংবেদনশীল (পরীক্ষা 1-2, 5-7)

JSON APIs এবং রাউটিং-হেভি হ্যান্ডলার মিরর টেস্ট 2, 5, এবং 7। সংকলিত অ্যাসিঙ্ক রানটাইম (Rust Actix, Go) সাধারণত এই শ্রেণীর সিন্থেটিক HTTP বেঞ্চমার্কে থ্রুপুট এবং টেইল লেটেন্সির উপর নেতৃত্ব দেয়; বান প্রায়শই JS এরগনোমিক্সের সাথে JSON-ভারী পাথের কাছাকাছি বসে। জাভা (Javalin) এবং Kotlin (Ktor) JVM টিমগুলিকে একই রুটে সেই নেতাদের বিরুদ্ধে একটি ন্যায্য পাঠ দিন — যখন প্রশ্নটি "একটি হালকা স্ট্যাকের সাথে JVM-এ থাকুন" বনাম "Go/Rust-এ পুনর্লিখন" হয় তখন দরকারী। Python FastAPI ডেভেলপমেন্টের গতির জন্য কাঁচা RPS লেনদেন করে — ড্যাশবোর্ডের রায় এটিকে স্পষ্টভাবে বলে।

7.2 CPU-বাউন্ড মাইক্রো-ওয়ার্ক (পরীক্ষা 3)

Fibonacci(30) I/O ছাড়া CPU বিচ্ছিন্ন করে। আশা মরিচা এবং চকমক যান; ব্যাখ্যা করা স্ট্যাক ওভারহেড বেতন; JVM JIT একটি ঠান্ডা 10s উইন্ডোর চেয়ে ওয়ার্মআপের পরে আরও শক্তিশালী দেখতে পারে — যদি এটি আপনার আসল প্রোফাইল হয় তবে সময়কাল বাড়িয়ে দিন। যদি আপনার প্রকৃত পরিষেবা I/O আবদ্ধ হয়, তাহলে এই সারির ওজন বেশি করবেন না — এটি কম্পিউট-হেভি মিডলওয়্যারের জন্য একটি স্ট্রেস টেস্ট, সাধারণ CRUD নয়।

7.3 এজ ট্রান্সফর্ম (টেস্ট 6-7, NGINX ভেরিয়েন্ট)

Subrequest এবং রাউটিং পরীক্ষা যেখানে ওপেনরেস্টি লুয়া এবং NGINX njs অন্তর্ভুক্ত: শূন্য অতিরিক্ত হপ, শেয়ার্ড ওয়ার্কার মেমরি, অপস টিম ইতিমধ্যেই এনজিআইএনএক্স পরিচালনা করে। হারনেসের রায়ে কোর চ্যাট/কিউ ব্যাকএন্ড এবং প্রান্তে Lua/njs-এর জন্য Go/Rust-এর সুপারিশ করা হয়েছে — একটি বোধগম্য বিভক্ত অনেক উদ্যোগ ইতিমধ্যেই অনানুষ্ঠানিকভাবে চালিত।

7.4 ব্যাচ ETL এবং ডেটা পাইপলাইন

HTTP জোতা স্পার্ক বা গুদাম লোড অনুকরণ করে না। ব্যাচের জন্য, দলগুলি সাধারণত পাইথন ইকোসিস্টেম এবং অর্কেস্ট্রেশন (এয়ারফ্লো, ড্যাগস্টার) বা গো কর্মীদের থ্রুপুটের জন্য অগ্রাধিকার দেয়। এর জন্য পলিগ্লট বেঞ্চমার্ক ব্যবহার করুন API পৃষ্ঠতল এবং নিয়ন্ত্রণ প্লেন যারা কাজ প্রকাশ, ব্যাচ ইঞ্জিন নিজেই জন্য না.

7.5 দ্রুত অভ্যন্তরীণ টুল

কম QPS এবং উচ্চ পরিবর্তনের হার সহ অভ্যন্তরীণ প্রশাসক API: পাইথন বা বান/নোড প্রায়শই বেগ এবং নিয়োগে জয়ী হয়। ওভারহেড গ্রহণযোগ্য কিনা তা নিশ্চিত করতে পরীক্ষা 2 (JSON) এবং পরীক্ষা 5 (পরিদর্শন) চালান; যদি p99 100 সংযোগের নিচে স্পাইক করে, গ্রাহক-মুখী স্তরে উন্নীত করার আগে পুনর্বিবেচনা করুন।

7.6 JVM এস্টেট (জাভা এবং Kotlin)

অনেক প্রতিষ্ঠান ইতিমধ্যেই শেয়ার্ড লাইব্রেরি, কমপ্লায়েন্স টুলিং এবং নিয়োগের গভীরতার জন্য Java বা Kotlin চালায়। জোতা এর java-server (Jetty-এ Javalin, পোর্ট 8088) এবং kotlin-server (Netty, পোর্ট 8089-এ Ktor) Go এবং Rust-এর মতো একই সাতটি শেষ পয়েন্ট প্রয়োগ করুন, যাতে আপনি পুনর্লিখনের আগে একটি প্রদত্ত SLO-এর জন্য একটি হালকা JVM HTTP স্ট্যাক "যথেষ্ট ভাল" কিনা তা পরিমাপ করতে পারেন। Kotlin পছন্দ করুন যখন কোরোটিন-স্টাইলের একযোগে এবং Kotlin-প্রথম দলগুলি গুরুত্বপূর্ণ; জাভা পছন্দ করুন যখন পার্শ্ববর্তী এস্টেট এবং লাইব্রেরি গ্রাফ ইতিমধ্যেই জাভা-কেন্দ্রিক হয়। লাইভ ড্যাশবোর্ড সারি ব্যবহার করুন — স্প্রিং বুট নম্বরগুলিকে Javalin/Ktor সংখ্যার সমান মনে করবেন না।

8. ওয়ার্কফ্লো ডায়াগ্রাম

পলিগ্লট বেঞ্চমার্ক ওয়ার্কফ্লো সাঁতারের লেন

পুনরুত্পাদনযোগ্য লুপ: কাজের চাপ নির্দিষ্ট করুন → রচনা জোতা চালান → কাল্পনিক ড্যাশবোর্ডে ফলাফল প্রকাশ করুন (বা আপনার অভ্যন্তরীণ ক্লোন) → কনফিগার মেটাডেটা সহ একটি ADR রেকর্ড করুন → রানটাইম বা হার্ডওয়্যার পরিবর্তন হলে পুনরায় চালানো৷

9. কীভাবে আপনার নিজের তুলনা চালাবেন

  1. ক্লোন: git clone https://github.com/bwalia/workflow-examples.git && cd workflow-examples/benchmarks
  2. স্ট্যাক শুরু করুন: docker compose up --build — সমস্ত ভাষার ছবি তৈরি করে, পোর্ট 8083-এ ড্যাশবোর্ড শুরু করে, স্বয়ংক্রিয়ভাবে বেঞ্চ চালায়।
  3. ঘড়ি: খোলা http://localhost:8083 (অথবা সর্বজনীন সাইট যখন হোস্ট করা রান সক্রিয় থাকে)।
  4. প্রসারিত করুন: একটি ফোল্ডার যোগ করুন myruntime/, মিরর এন্ডপয়েন্ট পাথ, একটি পরিষেবা নিবন্ধন করুন docker-compose.yml, সার্ভার যোগ করুন SERVERS মধ্যে bench.sh.
  5. লোড কাস্টমাইজ করুন: সম্পাদনা DURATION, THREADS, CONNECTIONS শীর্ষে bench.sh - আপনার ADR-এ নথির পরিবর্তন।
  6. উত্পাদন আকৃতির পরীক্ষা যোগ করুন: যেমন auth মিডলওয়্যার, ORM ক্যোয়ারী, 50KB পেলোড — ভাষা জুড়ে সমতা বজায় রাখুন।

CI-এর জন্য, রাত্রিকালীন ওয়ার্কফ্লো, আর্কাইভে রচনা চালান results.json একটি আর্টিফ্যাক্ট হিসাবে, এবং শুধুমাত্র আপনার সংজ্ঞায়িত রিগ্রেশন থ্রেশহোল্ডগুলিতে ব্যর্থ হন (যেমন p99 +20% সপ্তাহে পরীক্ষা 2)।

10. বিরোধী নিদর্শন

  • শুধুমাত্র টেস্ট 1 এর বিজয়ী বাছাই করা - প্লেইন টেক্সট ন্যূনতম স্ট্যাকের পক্ষে; এটি JSON, CPU, এবং রাউটিং ব্যথা উপেক্ষা করে।
  • দলের দক্ষতা উপেক্ষা করা - পরামর্শদাতা ছাড়া উৎপাদনে মরিচা ঘটনার সময় ব্যয়বহুল।
  • হোস্টিং খরচ উপেক্ষা করা — 2× RPS অকেজো যদি প্রতি পড মেমরি আপনার বিল দ্বিগুণ করে।
  • অর্গানাইজেশন জুড়ে একটি ভাষা বাধ্যতামূলক করা — বৈধ প্রান্ত বনাম মূল বিভাজন ধ্বংস করে।
  • উৎপাদন প্রোফাইলিং প্রতিস্থাপন — সিন্থেটিক HTTP ≠ আপনার ORM, ক্যাশে বা আঞ্চলিক লেটেন্সি।
  • হার্ডওয়্যারের বিপরীতে তুলনা করা — ল্যাপটপ ডকার ≠ বেয়ার মেটাল ≠ K8s সীমা; ADR-এ ক্লাস নোট করুন।

11. ইঞ্জিনিয়ারিং নেতৃত্বের জন্য সুবিধা

  • ARB প্যাক — ড্যাশবোর্ড স্ক্রিনশট + রপ্তানি করুন results.json + হ্যাশ রচনা করুন।
  • বিক্রেতা-নিরপেক্ষ প্রমাণ - একটি একক ক্লাউড বা ফ্রেমওয়ার্ক বিক্রেতার কাছ থেকে কোনও বিক্রয় ডেক নেই।
  • অনবোর্ডিং স্বচ্ছতা — নতুন নিয়োগকারীরা দেখুন *কেন* পরিষেবা A হল Go এবং পরিষেবা B হল পাইথন৷
  • ঝুঁকি হ্রাস — পুনর্লিখনের আগে ছায়া পরিষেবায় রানার-আপ পাইলট।
  • FinOps কথোপকথন — অটোস্কেলিং এবং মেমরি হেডরুমের সাথে লেল লেটেন্সি লিঙ্ক করুন।
  • প্ল্যাটফর্ম রোডম্যাপ — NGINX দক্ষতা বিনিয়োগ বনাম অন্য K8s মাইক্রোসার্ভিসকে ন্যায্যতা দিন।

12. সীমাবদ্ধতা

  • সিন্থেটিক কাজের চাপ — সাতটি HTTP পরীক্ষা কাফকা গ্রাহক, GPU কাজ, বা জটিল ORM গ্রাফ উপস্থাপন করতে পারে না।
  • ডকার নেটওয়ার্কিং - ওভারহেড যোগ করে; পরম সংখ্যা খালি ধাতু থেকে পৃথক.
  • একক মেশিন ক্লাস — হোস্ট করা ফলাফল কাল্পনিকভাবে যে হার্ডওয়্যার ব্যবহার করে তা প্রতিফলিত করে; আপনার সংখ্যা ভিন্ন হবে।
  • কোন অধ্যবসায় স্তর — ডাটাবেস এবং ক্যাশে প্রভাব নকশা দ্বারা অনুপস্থিত.
  • স্বল্পমেয়াদী সময়কাল — প্রতি পরীক্ষায় 10 সেকেন্ড GC পজ বা ওয়ার্মআপ ক্লিফগুলি প্রকাশ নাও করতে পারে; চাপ প্রচারণার জন্য প্রসারিত.

উত্পাদনের জন্য সত্যের উত্স হিসাবে অবিচ্ছিন্ন প্রোফাইলিং (eBPF, APM, স্টেজিংয়ের বিরুদ্ধে লোড পরীক্ষা) রাখুন। পলিগ্লট বেঞ্চমার্কগুলিকে সংকীর্ণ করে ভাষা এবং কাঠামো পুনরুত্পাদনযোগ্য বেসলাইন সঙ্গে বিতর্ক.

13. উপসংহার

ডিফল্ট-স্ট্যাক পক্ষপাত আরামদায়ক; দলগুলি কীভাবে কাজের জন্য ভুল রানটাইম পাঠায় তাও এটি। পলিগ্লট বেঞ্চমার্ক এবং কর্মপ্রবাহ- উদাহরণ জোতা পালা "কোন ভাষা জিতেছে?" "কোন ভাষা জিতেছে এই কাজের চাপ সারি জন্য?" — চার্ট সহ আপনার ARB উদ্ধৃত করতে পারে।

রেপো ফোর্ক করুন, আপনার হট পাথগুলির মতো দেখতে শেষ পয়েন্টগুলি যোগ করুন, রচনা চালান এবং পরবর্তী আর্কিটেকচার সিদ্ধান্তে ফলাফলগুলি সংযুক্ত করুন৷ সঙ্গী ব্লগ পোস্ট ভাগ করার জন্য পাঁচ মিনিট সংস্করণ; এই নিবন্ধটি রেফারেন্স।

দ্বারা প্রকাশিত TenthMatrix (tenthmatrix.com)। বেঞ্চমার্ক ড্যাশবোর্ড এ হোস্ট করা হয়েছে polyglot-benchmarks.fictionally.org কাল্পনিক উদাহরণ ইকোসিস্টেমে।


এই নিবন্ধের জন্য এসইও স্ন্যাপশট

  • SEO শিরোনাম: পলিগ্লট বেঞ্চমার্কস: কাজের জন্য সঠিক টুল
  • মেটা বর্ণনা: njs, Lua, Python, Go, Rust, Bun, Java, এবং Kotlin একই HTTP ওয়ার্কলোডের সাথে তুলনা করুন। প্রজননযোগ্য জোতা, লাইভ ড্যাশবোর্ড, স্থপতিদের জন্য সিদ্ধান্ত ম্যাট্রিক্স।
  • প্রাথমিক কীওয়ার্ড: পলিগ্লট বেঞ্চমার্ক, ভাষার তুলনা, আর্কিটেকচারের সিদ্ধান্ত, ওয়ার্কফ্লো উদাহরণ, পারফরম্যান্স বেঞ্চমার্ক, রাস্ট বনাম গো, জাভা বনাম Kotlin, FastAPI, Javalin, Ktor
  • Twitter / X (280 অক্ষরের নিচে): পলিগ্লট বেঞ্চমার্কস: এনজেএস, লুয়া, পাইথন, গো, রাস্ট, বান, জাভা, Kotlin জুড়ে একই 7 টি HTTP পরীক্ষা — লাইভ ড্যাশবোর্ড + ওয়ার্কফ্লো-উদাহরণ জোতা। একজন বিজয়ী নয়; একটি সিদ্ধান্ত কাঠামো। #Rust #GoLang #Java #Kotlin #Bunjs #polyglot
  • লিঙ্কডইন পোস্ট: আমরা পলিগ্লট বেঞ্চমার্কের উপর একটি গভীর ডাইভ প্রকাশ করেছি — কীভাবে অভ্যাস থেকে একটি অর্গান-ওয়াইড স্ট্যাক বাছাই করা বন্ধ করা যায় এবং কাজের চাপের সাথে রানটাইম মেলানো শুরু করা যায়। আটটি ভাষা (জাভা/Javalin এবং Kotlin/Ktor সহ), সাতটি তুলনামূলক পরীক্ষা, ডকার কম্পোজ + wrk, polyglot-benchmarks.fictionally.org-এ লাইভ ফলাফল, github.com/bwalia/workflow-examples/tree/main/benchmarks-এ উত্স। সিদ্ধান্ত ম্যাট্রিক্স, অ্যান্টি-প্যাটার্ন এবং ADR নির্দেশিকা অন্তর্ভুক্ত। TenthMatrix ইঞ্জিনিয়ারিং থেকে। #Rust #GoLang #Java #Kotlin #Bunjs #Lua #Python #njs #FastAPI #Javalin #Ktor #OpenResty #polyglot #benchmarks