برنامه نویسی

چگونه با استفاده از Cloudflare تأخیر API خود را 50٪ کاهش دادیم

در Xata ما همیشه به دنبال راه هایی برای بهبود عملکرد و تجربه کاربری خود هستیم. یکی از راه‌های رسیدن به این هدف، کاهش تأخیر پاسخ‌های API ما است. در این پست، تجربه مهاجرت به Cloudflare و مزایایی که به دست آورده‌ایم را به اشتراک می‌گذاریم.

ابتدا، بیایید در مورد Time to First Byte (TTFB) صحبت کنیم – زمانی که طول می کشد تا اولین بایت پاسخ به کاربر ارسال شود. TTFB تحت تأثیر عوامل بسیاری از جمله تأخیر شبکه، زمان پردازش سرور و مدت زمان جستجوی DNS قرار می گیرد. به عنوان یک قانون کلی، اکثر سایت ها باید تلاش کنند تا TTFB 0.8 ثانیه یا کمتر داشته باشند.

شما نمی توانید آنچه را که اندازه گیری نمی کنید بهبود ببخشید، بنابراین بیایید ببینیم زمان پاسخ دهی Xata زمانی که ما کار روی این مورد را شروع کردیم چقدر بود:

$ curl -so /dev/null https://us-east-1.xata.sh -w "| dnslookup: %{time_namelookup} \n| connect: %{time_connect} \n| appconnect: %{time_appconnect} \n| pretransfer: %{time_pretransfer} \n| starttransfer: %{time_starttransfer} \n| total: %{time_total} \n| size: %{size_download}\n"

| dnslookup: 0.144752
| connect: 0.254816
| appconnect: 0.493482
| pretransfer: 0.493587
| starttransfer: 0.610611
| total: 0.610689
| size: 110
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما آزمایش های بیشتری انجام دادیم تا تصویر روشنی از وضعیت فعلی داشته باشیم. ما همچنین از برنامه تأخیر داده های لبه Vercel استفاده کرده ایم. این برنامه به دو روش مختلف پرس و جوهای ساده را در جدول پایگاه داده Xata خاص انجام می دهد:

منطقه ای: 10 درخواست را به یک تابع Vercel ارسال می کند که برای اجرا در منطقه ویرجینیای شمالی (us-east-1) پین شده است. به این درخواست‌های «منطقه‌ای» می‌گویند.

جهانی: 10 درخواست را به یک تابع Vercel ارسال می کند که به یک منطقه پین ​​نشده است، منطقه ای را نزدیک به جایی که تابع Vercel را از آنجا اجرا می کنیم انتخاب می کند – در مورد ما، اسپانیا (اروپا).

تأخیر_توزیع1

زمان‌های پاسخ «جهانی» بدتر از زمان‌های پاسخ «منطقه‌ای» است، اما با بررسی عمیق‌تر، دیدیم که با ارسال مداوم درخواست‌ها زمان‌ها کاهش می‌یابد، اما نه به اندازه‌ای که انتظار داشتیم. این ما را بر آن داشت تا به دنبال بهبود باشیم و ما یک اثبات مفهومی برای آزمایش خدمات Cloudflare انجام دادیم.

Cloudflare یک شبکه تحویل محتوا (CDN) است که خدمات مختلفی را ارائه می دهد که برای بهبود عملکرد و امنیت وب سایت ها و برنامه ها طراحی شده اند. این شبکه یک شبکه جهانی از سرورها را در بیش از 285 شهر در سراسر جهان اجرا می کند و اطمینان می دهد که آنها تا حد امکان به کاربران نهایی نزدیک هستند.

ما Cloudflare را در جلوی API خود قرار می دهیم و اجازه می دهیم تا وضوح DNS و خاتمه TLS را نزدیکتر به کاربر انجام دهد. حل‌کننده DNS Cloudflare سریع و قابل اعتماد است و سوابق DNS را ذخیره می‌کند تا اطمینان حاصل شود که درخواست‌های بعدی حتی سریع‌تر هستند. ما با استفاده از شبکه DNS توزیع شده جهانی Cloudflare بهبودهایی را در زمان‌های جستجوی DNS مشاهده کردیم، از ~ 150 میلی‌ثانیه بدون Cloudflare به ~ 10 میلی‌ثانیه با استفاده از Cloudflare.

هنگامی که یک کاربر درخواستی را به API ما می‌کند، حل‌کننده DNS Cloudflare درخواست را به نزدیک‌ترین سرور Cloudflare هدایت می‌کند. این بدان معنی است که درخواست نیازی به سفر به این اندازه ندارد و در نتیجه تأخیر کمتر و زمان‌های TTFB سریع‌تر می‌شود. شبکه Anycast Cloudflare همچنین می‌تواند با مسیریابی ترافیک به نزدیک‌ترین سرور با کمترین تأخیر، تأخیر را بیشتر کاهش دهد و از الگوریتم‌های مسیریابی هوشمند برای بهینه‌سازی مسیرهای شبکه استفاده می‌کند.

در طول اثبات مفهوم، ما مسیریابی هوشمند Cloudflare Argo را نیز امتحان کردیم. Argo سرویسی است که با استفاده از ترکیبی از مسیریابی هوشمند و بهینه سازی پروتکل، تحویل محتوا را از طریق شبکه Cloudflare بهینه می کند. نتایج حین استفاده از Argo بهبود جزئی را در زمان پاسخ نشان داد، اما برای مورد استفاده ما معنی‌دار نبود.

ما آزمایش‌های بارگذاری را برای مقایسه پیکربندی‌های مختلف ارسال درخواست‌ها به مدت 120 ثانیه بدون استفاده مجدد از همان اتصال در هر درخواست انجام دادیم، رزومه نتایج در زیر نشان داده شده است:

load_test_table

برای تأیید بیشتر یافته‌های خود، ما همچنین چندین آزمایش از پایان به انتها (E2E) خود را برای جمع‌آوری داده‌های بیشتر در مورد تفاوت عملکرد اجرا کردیم. از یک طرف، آزمایش‌های معمول خود را با پیکربندی پیش‌فرض خود اجرا کردیم، از طرف دیگر، یک دامنه ثانویه را در Cloudflare پیکربندی کردیم و درخواست‌ها را به API خود پروکسی کردیم. نتایج نشان داد که استفاده از پیکربندی Cloudflare به طور قابل توجهی طول مدت آزمایشات ما را کاهش داد. ما به طور متوسط ​​حدود 60 ثانیه (بیش از 25٪) در منطقه Xata eu-west-1 ذخیره کردیم، همانطور که در زیر نشان داده شده است:

Before
Test Files 15 passed (15) Tests 172 passed | 2 skipped (174) Start at 11:07:13 Duration 221.77s (transform 793ms, setup 2ms, collect 7.42s, tests 203.69s)

Now
Test Files 15 passed (15) Tests 172 passed | 2 skipped (174) Start at 08:32:56 Duration 157.63s (transform 822ms, setup 2ms, collect 7.09s, tests 141.18s)
We considered after this PoC that the benefits Cloudflare brought us were enough to make the change, so we migrated our production DNS to Cloudflare and switched our traffic to the Cloudflare network to proxy the requests to our API.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه گیری

ما با استفاده از DNS Cloudflare و پروکسی کردن ترافیک از طریق شبکه Cloudflare، زمان پاسخ API خود را با موفقیت کاهش دادیم.

نتایج آزمایش بار ما نشان می‌دهد که استفاده از Cloudflare در مقابل API به ما امکان می‌دهد عملکرد کلی خود را بهبود بخشیم. قبل از استفاده از Cloudflare، زمان پاسخ ما از نتیجه آزمایش بارگذاری ما نمی‌توانست کمتر از 360 میلی‌ثانیه باشد. با این حال، با Cloudflare، ما به طور مداوم به زمان پاسخ سریع‌تری دست یافتیم که منجر به تجربه کاربری بهتری شد.

تأخیر_توزیع2

فواید:

  • شبکه DNS توزیع شده جهانی Cloudflare زمان جستجوی DNS را بهبود می بخشد.
  • Cloudflare می تواند بهبود قابل توجهی را در زمان پاسخگویی به هنگام وجود ترافیک ثابت به سرورهای ما ارائه دهد.
  • Cloudflare ویژگی‌های مختلفی را در اختیار ما قرار می‌دهد که در نهایت می‌توانیم آن‌ها را فعال کنیم، مانند مسیریابی هوشمند Argo. Argo زمان انتقال شبکه را بهینه می کند، می تواند تاخیر اینترنت را به طور متوسط ​​تا 30% کاهش دهد و می تواند به صورت پویا بهترین مسیر را برای هر درخواست بر اساس عواملی مانند تراکم شبکه، تاخیر و ظرفیت موجود انتخاب کند.

اشکالاتی:

  • Cloudflare همیشه Time To First Byte (TTFB) اتصالات سرد را بهبود نمی بخشد، به خصوص زمانی که ترافیک کم است.
  • هنگامی که درخواست در نزدیکی سرورها شروع می شود، بهبود در زمان پاسخ ممکن است قابل توجه نباشد.

Xata قبلاً از Cloudflare Workers for Platform برای میزبانی از عملکردهای بدون سرور ما استفاده می کند و برخی از ویژگی های جدید هیجان انگیز که به زودی برای Xata ارائه می شوند نیز از خدمات Cloudflare استفاده می کنند. آماده هستید تا زمان پاسخگویی سریع ما را تجربه کنید و شروع به ساخت چیزی شگفت انگیز در Xata کنید؟ اکنون ثبت نام کنید و به انجمن ما در Discord بپیوندید. ما نمی توانیم صبر کنیم تا ببینیم چه چیزی می سازید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا