پذیرش پروژه‌های جدید · تیم فقط متشکل از افراد ارشد · اولویت کار از راه دور PWN-ALL · استودیوی نرم‌افزار سفارشی

نرم‌افزار در Rust و Python که دوام می‌آورد تیمی که آن را عرضه کرد.

ما یک استودیوی متشکل از افراد با تجربه هستیم که به عمد نرم‌افزار سفارشی را با دو زبان برنامه‌نویسی می‌سازیم: راست (Rust) جایی که اشتباه کردن هزینه زیادی دارد، و پایتون (Python) جایی که عرضه نکردن به‌موقع نرم‌افزار هزینه زیادی دارد.

بهبود میانگین p99 در مجموع ۴۰ مهاجرت
کاهش حافظه ۰٪ در مقایسه با معیارهای پایه JVM / Node
خدمات در تولید 0 از سال ۲۰۲۴
حوادث امنیتی ارسال‌شده ۰ در سراسر تاریخچه ما
تیم‌هایی که به کد ما اعتماد دارند
۰۱ دو زبان. نه پنج.

یک پشته، با هدف انتخاب‌شده.

آژانس‌های چندزبانه در یک ارائه‌ی فروش عالی به نظر می‌رسند. اما در مرحله‌ی تولید به معنای سه سیستم ساخت، چهار نوع null و یک گورستان از سرویس‌های نیمه‌حفظ‌شده هستند. ما دو زبان را انتخاب کردیم که ۹۵٪ از بارهای کاری واقعی را پوشش می‌دهند — و در هر دو بسیار، بسیار خوب شدیم.

مسیر داغ · سیستم‌ها · ایمنی

زنگ

۹.۶ امتیاز تناسب داخلی

ایمن از نظر حافظه بدون جمع‌کننده زباله. عاری از رقابت داده‌ای در زمان کامپایل. سخت‌گیرترین بازبین کدی که تا به حال داشته‌اید — و وقتی از آن عبور کردید، سرویس شما یکشنبه شما را بیدار نمی‌کند.

وقتی به سراغش می‌رویم

  • زیرساخت‌های پرداخت و هر چیزی که به پول یا اطلاعات شخصی حساس (PII) مربوط می‌شود
  • دروازه‌های API داغ با SLAهای پنج نُه
  • موتورهای تطبیق کم‌latency، معاملات، زمان‌واقعی
  • ماژول‌های WebAssembly ارسال‌شده به مرورگر
  • ابزارهای CLI و دیمون‌هایی که باید در میلی‌ثانیه راه‌اندازی شوند

موازینه‌ای که آن را نادیده نمی‌گیریم

  • دوره آماده‌سازی برای استخدام‌های جدید: حدود ۲–۴ هفته تا رسیدن به بهره‌وری
  • زمان‌های کامپایل روی فضاهای کاری عظیم (ما با sccache این مشکل را حل می‌کنیم)
  • اکوسیستم جوان‌تر از جاوا — در موارد مهم بالغ است
چسب · داده · یادگیری ماشین · سرعت

پایتون

۹.۳ امتیاز تناسب داخلی

سریع‌ترین مسیر از تخته سفید تا یک سیستم عملیاتی. غنی‌ترین اکوسیستم روی زمین برای داده‌، یادگیری ماشین و اتوماسیون. پایتون مدرن — ۳.۱۲، uv، ruff، pydantic، FastAPI — زبانی دقیق، دارای نوع داده و به اندازه کافی سریع برای اکثر نیازهای شماست.

وقتی به سراغش می‌رویم

  • ابزارهای داخلی، داشبوردها، پنل‌های مدیریت
  • ETL، خطوط لوله داده، Airflow / Dagster / Prefect
  • ML — آموزش، ارائه، ارزیابی
  • اتوماسیون‌ها و یکپارچه‌سازی‌ها با APIهای فروشندگان
  • محصولات حداقلی قابل عرضه در این سه‌ماهه، نه سال آینده

مبادلات را نادیده نمی‌گیریم

  • نرخ پردازش تک‌هسته‌ای ۲۰–۵۰ برابر کندتر از Rust است
  • حافظه بیشتر به ازای هر درخواست — برای برخی بارهای کاری فاجعه‌بار است
  • نوع‌دهی پویا بدون mypy / pydantic سخت‌گیرانه، دردسرساز است
Rust که اشتباه کردن در آن پرهزینه است. پایتون جایی که عرضهٔ کند پرهزینه است. یک تیم. صفر دگما.
۰۲ اعداد، نه حس و حال

Rust و پایتون در برابر مظنونان همیشگی.

روی یک معیار کلیک کنید تا ببینید هر زبان در چه زمینه‌ای قرار می‌گیرد. نمرات ۰ تا ۱۰ هستند که از بنچمارک‌های خودمان به علاوه منابع عمومی (Techempower R22، CLBG، مهاجرت‌های واقعی که انجام داده‌ایم) گردآوری شده‌اند.

معیار پایثون پایتون برو سی‌پلاس‌پلاس جاوا Node.js
عملکرد خام (p99، تک‌هسته‌ای) ۱۰ ۳ ۷ ۱۰ ۷ ۵
ایمنی حافظه و رقابت‌های داده‌ای 10 ۹ 8 2 8 ۷
زمان تا نمونهٔ اولیهٔ کارا ۵ ۱۰ 7 ۳ ۶ ۸
گستردگی اکوسیستم 8 10 7 ۹ 10 ۹
هم‌زمانی بدون اشک 10 ۶ ۹ ۴ ۶ ۷
هزینه عملیاتی به ازای هر درخواست 10 ۵ 8 ۹ پنج ۶
در دسترس بودن استعدادهای ارشد ۶ 10 7 8 10 ۹
قابلیت نگهداری ۱۰ ساله 10 8 8 ۵ 8 ۵
03 از → به

چه چیزهایی هنگام مهاجرت تغییر می‌کند.

یک زبان مبدا را انتخاب کنید. تأثیر مهاجرت به Rust یا Python را مشاهده کنید. اعداد میانگین‌های ۴۰ پروژه مهاجرت اخیر ما هستند، نه شعارهای بازاریابی.

در حال حاضر در

سی / سی++

سریع، بله. اما هر اشاره‌گر null یک آسیب‌پذیری CVE بالقوه، هر رشته یک رقابت داده‌ای بالقوه است، و سیستم ساخت شما شغل تمام‌وقت شخص دیگری است.

درد معمول
  • CVEهای ایمنی حافظه
  • رفتار تعریف‌نشده
  • پراکندگی سیستم ساخت
حرکت به

Rust

نرخ پردازش ×۶.۴
ردپای حافظه −۷۸٪
سقوط‌های زمان اجرا −۹۹٪
صورتحساب محاسبات ماهانه −۶۵٪

بهترین حالت زمانی است که در حال حاضر با باگ‌های null-pointer، رقابت‌های داده‌ای یا حافظه‌ای که به طور نامحدود رشد می‌کند، دست و پنجه نرم می‌کنید. Rust سرعت را حفظ می‌کند و این تله‌های ناخواسته را حذف می‌کند.

انتقال به

پایتون

سرعت توسعه ×3.1
خطوط کد −۵۵٪
زمان انتشار −۶۰٪
بار سربار زمان اجرا +۴۰٪

بهترین حالت زمانی است که هزینه واقعی، زمان مهندسی باشد، نه CPU. پهنای‌باند خام را با یک حلقه بازخورد کوتاه‌تر، کتابخانه‌های غنی‌تر و کدی که انسان‌ها واقعاً می‌توانند بخوانند، معاوضه کنید.

چگونه این اعداد را اندازه‌گیری می‌کنیم

میانگین‌ها در ۴۰ مهاجرت تکمیل‌شده بین سال‌های ۲۰۲۳ تا ۲۰۲۶. نرخ پردازش در لایهٔ برنامه اندازه‌گیری شده (p50 از ابتدا تا انتها تحت بار واقعی، نه بنچمارک‌های میکرو). حافظه در حالت پایدار، RSS است. هزینه، محاسبات ماهانه درخواستی در AWS/GCP است، در سایر شرایط یکسان. نتایج فردی متفاوت است — ما آن‌هایی را که طبق برنامه پیش نرفته‌اند نیز بنا به درخواست منتشر می‌کنیم.

04 اعداد بدون ستاره

درخواست‌ها در ثانیه تحت بار واقعی.

بار کاری یکسان — اعتبارسنجی JSON ← پرس‌وجوی Postgres ← رندر — اندازه‌گیری شده بر روی یک رابطهٔ واحد AMD Ryzen 7. این‌ها میکروبنچ‌مارک نیستند. منبع و روش‌شناسی ↓

  1. ۱ Rust · Axum
    ۲۱٬۰۳۰ درخواست در ثانیه
  2. ۲ سی‌شارپ دات‌نت · ASP.NET Core
    ۱۴٬۷۰۷ درخواست در ثانیه
  3. ۳ Node.js · Fastify
    ۹٬۳۴۰ درخواست در ثانیه
  4. ۴ سی‌پلاس‌پلاس · دروگون
    ۷۲۰۰ درخواست در ثانیه
  5. ۵ گو · جین
    ۳٬۵۴۶ درخواست در ثانیه
  6. ۶ پایتون · FastAPI (Uvicorn)
    ۱٬۱۸۵ درخواست در ثانیه
  7. ۷ PHP · لاراول
    ۲۹۹ درخواست در ثانیه

این را درست بخوانید: پایتون در پایین این نمودار قرار دارد و این مشکلی نیست. ما FastAPI را روی مسیر داغ اجرا نمی‌کنیم. ما آن را جایی اجرا می‌کنیم که 1,185 درخواست در ثانیه (req/s) در حال حاضر تقریباً ۱۰ برابر بیشتر از نیاز بار کاری است، و ساعت‌های مهندسی ارزش بیشتری نسبت به چرخه‌های CPU دارند. روش‌شناسی: AMD Ryzen 7، لینوکس، داکر، یک نمونه واحد، یک فریم‌ورک محبوب برای هر زبان. اعداد میانگین چندین اجرای متوالی هستند.

05 هزینه واقعی کد خراب

هزینه‌ی واقعی یک قطعی برای شما.

«پنج نُه» بازاریابی نیست. در زیر هزینه یک ساعت از کار افتادگی برنامه‌ریزی‌نشده، بر اساس صنعت — با منابع، آمده است. ما Rust را می‌سازیم، جایی که این اعداد وجود دارند.

هزینه‌های انباشته از زمان باز کردن این بخش
مالی / مراقبت‌های بهداشتی $0 حدود ۸۳ هزار دلار در دقیقه · ۵ میلیون دلار در ساعت
خودروسازی $0 حدود ۳۸ هزار در دقیقه · ۲.۳ میلیون در ساعت
شرکت بزرگ $0 $23,750 در دقیقه · ۱.۴ میلیون دلار در ساعت
شرکت متوسط $0 حدود ۵۰۰۰ دلار در دقیقه · ۳۰۰ هزار دلار در ساعت
مالی و مراقبت‌های بهداشتی بیش از ۵ میلیون دلار در ساعت

حوزه‌های با بیشترین ریسک. پلتفرم‌های معاملاتی، سیستم‌های تسویه و سیستم‌های بالینی می‌توانند در طول یک قطعی جدی، بیش از ۵ میلیون دلار در ساعت هزینه داشته باشند — این در حالی است که هزینه‌های نظارتی یا حقوقی هنوز محاسبه نشده‌اند.

منبع: مطالعه فورچون ۵۰۰ گارتنر ۲۰۲۴؛ هزینه ساعتی از کار افتادگی ITIC ۲۰۲۴.
تولید خودرو ۲.۳ میلیون دلار در ساعت

یک خط تولید متوقف‌شده تقریباً ۶۴۰ دلار در ثانیه هزینه دارد. قطعی کراوداسترایک در ژوئیه ۲۰۲۴ تنها برای شرکت هواپیمایی دلتا ۳۸۰ میلیون دلار در پنج روز هزینه داشت.

منبع: تجزیه و تحلیل صنعتی گروه ارودوود ۲۰۲۵؛ گزارش پس از سانحه کراوداسترایک آنتی‌تز.
شرکت بزرگ (میانگین) ۱.۴ میلیون دلار در ساعت

عدد شرکت BigPanda برای سال ۲۰۲۴ برای شرکت‌های بزرگ: ۲۳٬۷۵۰ دلار در هر دقیقه. ITIC گزارش می‌دهد که ۴۱٪ از شرکت‌های بزرگ در هر ساعت قطعی، بین ۱ تا ۵ میلیون دلار ضرر می‌کنند.

منبع: تحقیقات BigPanda 2024؛ یازدهمین گزارش سالانه هزینه ساعتی از کار افتادگی ITIC.
Global 2000 (Oxford Economics) ۴۰۰ میلیارد دلار در سال

مجموع هزینه‌های پنهان از کار افتادگی غیرمنتظره در میان ۲۰۰۰ شرکت بزرگ جهان، بر اساس مطالعه سال ۲۰۲۴ آکسفورد اکونومیکس — با میانگین تأثیر ۲۰۰ میلیون دلاری برای هر شرکت هنگامی که درآمد، بهره‌وری و جبران خسارات با هم جمع می‌شوند.

منبع: اکونومیست آکسفورد ۲۰۲۴، «هزینه‌های پنهان از کار افتادگی».
متوسط و بزرگ (ساعت معمولی) بیش از ۳۰۰ هزار دلار در ساعت

نظرسنجی سال ۲۰۲۴ ITIC: بیش از ۹۰٪ از شرکت‌های متوسط و بزرگ اکنون هزینه یک ساعت توقف غیربرنامه‌ریزی‌شده را بالاتر از این حداقل در نظر می‌گیرند — به استثنای جریمه‌های قانونی، مدنی یا نظارتی.

منبع: گزارش هزینه ساعتی از کار افتادگی ITIC در سال ۲۰۲۴.
کوچک و متوسط (SMB) ۲۵ هزار تا ۱۵۰ هزار دلار در ساعت

مطالعه مشترک ITIC / Calyptix در سال ۲۰۲۵ نشان می‌دهد که بسیاری از کسب‌وکارهای کوچک و متوسط (SMB) به ازای هر ساعت این مقدار را از دست می‌دهند؛ سیمنز گزارش می‌دهد که کسب‌وکارهای کوچک و متوسط (SMEs) که با قطعی مواجه می‌شوند، می‌توانند تا ۱۵۰,۰۰۰ دلار در ساعت ضرر کنند. میانگین یک رویداد قطعی ۸۷ دقیقه طول می‌کشد.

منبع: ITIC + Calyptix 2025؛ هزینه واقعی از کار افتادگی زیمنس 2024.
06 آثار منتخب

سه پروژه. سه آتش‌سوزی متفاوت.

در مواردی که قرارداد عدم افشا (NDA) ایجاب می‌کند ناشناس‌سازی شده و در مواردی که نتایج، تفصیل را موجه می‌سازد، با جزئیات ارائه شده‌اند. این‌ها پروژه‌هایی هستند که ابتدا یک خریدار فنی را به سمت آن‌ها هدایت می‌کنیم.

  1. مورد ۰۱ پایتون پایگاه داده کریپتو GDPR

    گنجینه داده فین‌تک: ۴ برابر کوچک‌تر، ۵٫۵ برابر سریع‌تر، منطبق با استانداردهای جهانی.

    مشتری یک خوشهٔ ۱.۸ ترابایتی Postgres داشت که با ستون‌های قدیمی، نمایه‌های بلااستفاده و BLOBهای رمزگذاری‌شدهٔ درون‌خطی که طی هفت سال رشد کرده بودند، متورم شده بود. Crypto روی کتابخانه‌ای منسوخ اجرا می‌شد که در سه بازرسی جداگانه پرچم‌گذاری شده بود. در معرض مقرراتی واقعی بود؛ حسابرسان در حال کمین بودند.

    کاری که ما کردیم

    • بازبینی کامل طرحواره + استفاده، حذف ستون‌ها و شاخص‌های بلااستفاده، معرفی پارتیشن‌بندی مناسب.
    • انتقال خط لوله رمزنگاری از یک کتابخانه قدیمی به یک استک مدرن، حسابرسی‌شده AEAD با کلیدهای چرخشی.
    • تبدیل رمزگذاری درون‌خطی BLOB به رمزگذاری پاکت مرجع + KMS اختصاصی.
    • هماهنگ‌سازی جریان‌های نگهداری داده‌ها و دسترسی موضوع با GDPR، CCPA و APPI.
    نتیجه

    همان داده‌ها، یک‌چهارم هزینهٔ ذخیره‌سازی، ۵٫۵ برابر نرخ انتقال، و گواهی سلامت کامل برای ناظر بعدی که در زد.

  2. مورد ۰۲ راست C++ ← Rust امنیت ذخیره‌سازی

    سرویس C++ در Rust بازنویسی شد: بیش از ۱۰۰ باگ در کلاس CVE در ۹ هفته برطرف شد.

    سرویس پردازش فایل رو به کاربر در C++، که هر ۴–۵ روز یک‌بار از کار می‌افتاد و هر بار به‌صورت موقت وصله‌گذاری می‌شد. بازرسی ما بیش از ۱۰۰ باگ واقعی را آشکار کرد: مسیرهای منع سرویس (denial-of-service)، سرریز بافر (buffer overflows) و پردازش نامحدود درخواست‌ها. خطاهای ۵۰۰ در ساعات اوج، یک رویداد هفتگی بود. در سمت ذخیره‌سازی، آپلودهای کاربران به باتلاقی از فایل‌های تکراری تبدیل شده بود که فضای باکت (bucket) را اشغال می‌کرد.

    کاری که انجام دادیم

    • بازنویسی کامل با زبان Rust (axum + tokio) همراه با اعتبارسنجی سخت‌گیرانه ورودی و محدودیت‌های منابع.
    • تست‌های مبتنی بر ویژگی + فُزز کارگو بر روی هر پارسر و مرز فرمت سیمی.
    • لایهٔ ذخیره‌سازی با آدرس‌دهی محتوا و حذف تکراری‌سازی در زمان نوشتن.
    • راه‌اندازی بلو-گرین پشت یک پنجرهٔ یکپارچه‌سازی ۴ ساعته، بدون وقفه در سرویس.
    نتیجه

    سرویس از «شکننده و نیازمند وصله‌ی هفتگی» به «دیگر به پیجر نگاه نمی‌کردیم» ارتقا یافت. هزینه‌های ذخیره‌سازی با حذف تکراری‌سازی داده‌ها کاهش یافت، تیکت‌های پشتیبانی مربوط به خطاها و وضعیت‌های 503 به کلی خشکید، و بازنویسی کد در همان سه‌ماهه هزینه‌هایش را جبران کرد.

  3. مورد ۰۳ Rust پایتون eBPF / XDP CRM · ۴ هزار کاربر

    سیستم CRM سازمانی، بازسازی‌شده: از ۱۸ سرور به ۵ سرور، کاهش هزینه‌ها بیش از ۶۰٪.

    سیستم CRM داخلی به بیش از ۴۰۰۰ کاربر در حوزه‌های IAM، SOC، ثبت متمرکز، چت، اشتراک‌گذاری فایل، VoIP و داده‌های رمزگذاری‌شده از ابتدا تا انتها خدمات‌رسانی می‌کند. هجده سرور، Cloudflare در لایه بالا، و یک صورت‌حساب ابری که صرف‌نظر از تعداد کارکنان، مدام در حال رشد بود. ما مسیر اصلی (hot path) را با پایتون بازسازی کردیم، پایتون را در لایه یکپارچه‌سازی و گزارش‌دهی حفظ کردیم و یک فیلتر eBPF/XDP را مستقیماً در جلوی ورودی قرار دادیم.

    کاری که انجام دادیم

    • خدمات Rust برای احراز هویت (IAM)، پیام‌رسانی بلادرنگ، سیگنال‌دهی VoIP و انتقال فایل.
    • پایتون برای رابط‌های کاربری مدیریتی، گزارش‌گیری، همبسته‌سازی رویدادهای SOC و یکپارچه‌سازی با APIهای فروشندگان.
    • پاکسازی ربات‌ها و فیلترینگ سوءاستفاده با eBPF/XDP در سطح کرنل — جایگزین Cloudflare برای این بار کاری شد.
    • خط لوله ثبت ساختارمند بر اساس طرح صفر-کپی بازنویسی شد.
    نتیجه

    سیزده سرور کمتر، دیگر هیچ ردیف بودجه‌ای برای کلودفلر وجود ندارد، تیم SOC سیگنال‌های تمیزتری را از طریق خط لوله لاگ‌گیری مشاهده می‌کند، و مدیر ارشد مالی دیگر سوالات ناخوشایندی در مورد بودجه زیرساخت نمی‌پرسد.

۰۷ نحوه کار ما

چرخ‌ها را بچرخانید. ببینید که طرح چگونه تغییر می‌کند.

هر پروژه سرعت، هزینه و قابلیت اطمینان را متعادل می‌کند. برآورد پنج‌مرحله‌ای زیر در برابر میانگین‌های صنعت کالیبره شده است (کشف ۲–۶ هفته، معماری ۱–۴ هفته، پیاده‌سازی ۴–۲۰ هفته، مستحکم‌سازی ۲–۸ هفته، تحویل ۱–۲ هفته — بر اساس گزارش‌های ۲۰۲۴–۲۰۲۶ از NIX United، Agilie، SOLTECH، OTG Lab). اسلایدرها را حرکت دهید؛ طرح به صورت زنده مجدداً وزن‌دهی می‌شود.

01

کشف

۳ هفته

کدتان را بخوانید، با تیم عملیات مصاحبه کنید، موارد نامشخص را فهرست کنید و برای هر مؤلفه زبان مناسب را انتخاب کنید.

  • مصاحبه‌های حوزه و بازبینی کد
  • ثبت‌نام ریسک و اهداف SLA
  • تصمیم‌گیری در مورد زبان برای هر سرویس
02

معماری

۲ هفته

قراردادها قبل از کد. OpenAPI / پروتوباف، مدل‌های داده، توپولوژی استقرار، اسکلت‌های کتاب راهنمای اجرا.

  • RFCها برای هر قرارداد عمومی
  • مدل داده + طرح مهاجرت
  • پایه زیرساخت به‌عنوان کد
03

پیاده‌سازی

۸ هفته

پچ‌های کوچک، CI سبز از روز اول، استقرار در هر ادغام، بازبینی توسط یک سینیور دوم.

  • Rust: axum · tonic · sqlx
  • پایتون: FastAPI · Pydantic · SQLAlchemy
  • دموهای هفتگی + changelog
04

سخت‌گیری امنیتی

۳ هفته

فزینگ، تست‌های مبتنی بر ویژگی، تست‌های بار در برابر ترافیک واقعی، مدل تهدید.

  • cargo-fuzz · proptest · hypothesis
  • تست‌های بار k6 مرتبط با SLOها
  • بازبینی امنیتی و حسابرسی وابستگی‌ها
05

واگذاری

۱ هفته

راهنماهای عملیاتی (Runbooks)، چرخش شیفت تماس (on-call)، راه‌حل‌های بازیابی خودکار (ADR) و تیمی که قبلاً یک‌بار این کار را تحویل داده است.

  • راهنماهای عملیاتی + ماتریس تماس اضطراری
  • لاگ ADR و نمودارهای معماری
  • پشتیبانی ۳۰ روزه پس از راه‌اندازی
۰۸ مشکل مشابه، دو زبان

همان نقطه پایانی در هر یک چگونه به نظر می‌رسد.

یک کاربر را بازیابی کنید، ورودی را اعتبارسنجی کنید، در Postgres ذخیره کنید، JSON برگردانید. بین زبان‌ها جابجا شوید — هر دو کد واقعی هستند که ما واقعاً منتشر خواهیم کرد.

SQL_CREATE_USER = "insert into users(email,name) values(lower($1),$2) returning id,email,name"
Name = Annotated[str, StringConstraints(strip_whitespace=True, min_length=1, max_length=120)]

class UserIn(BaseModel):
    email: EmailStr
    name: Name

class UserOut(UserIn):
    id: int

@router.post("/users", response_model=UserOut, status_code=201)
async def create_user(u: UserIn) -> UserOut:
    try:
        row = await pool.fetchrow(SQL_CREATE_USER, str(u.email), u.name)
   except UniqueViolationError as exc:
        raise HTTPException(status_code=409, detail="ایمیل قبلاً وجود دارد") from exc
    if row is None:
        raise HTTPException(status_code=500, detail="عملیات درج ناموفق بود")
    return UserOut.model_validate(dict(row))
#[derive(Deserialize, Validate)]
#[serde(deny_unknown_fields)]
pub struct UserIn {
    #[validate(email)]
    pub email: String,
    #[validate(custom(function = "valid_name"))]
    pub name: String,
}

pub async fn create_user(
    State(pool): State<PgPool>,
    ValidatedJson(u): ValidatedJson<UserIn>,)
 -> Result<(StatusCode, Json<UserOut>), ApiError> {
   let user = sqlx::query_as!(UserOut,
        "insert into users(email,name) values(lower($1),$2) returning id,email,name",
        u.email.as_str(),
        u.name.trim(),
    )
    .fetch_one(&pool)
    .await
    .map_err(ApiError::from_db)?;

    Ok((StatusCode::CREATED, Json(user)))
}
خطوط کد
۱۶ ۲۲
نرخ انتقال
۱٬۱۸۵ درخواست در ثانیه ۲۱٬۰۳۰ درخواست در ثانیه
تاخیر p50
۲۱.۰ میلی‌ثانیه ۱.۶ میلی‌ثانیه
حافظه رم در حالت بیکاری
۴۱.۲ مگابایت ۸.۵ مگابایت
ما ظرف ۱ روز کاری پاسخ می‌دهیم. جدی می‌گوییم.

شما کل صفحه را خواندید.
بیایید آن را بسازیم.

به ما بگویید مشکل استک شما چیست، یا می‌خواهید از صفر چه چیزی بسازید. نظر یک مهندس واقعی دریافت خواهید کرد — نه یک ارائه فروش.

  • بدون مهندس تازه‌کار. بدون برون‌سپاری.
  • گزینه‌های قیمت ثابت برای کارهای مشخص‌شده.
  • قرارداد عدم افشا (NDA) قبل از هر سوالی امضا می‌شود.