ساخت API های “درجه تولید” در .NET

بسیاری از مهندسان API ها را در تولید می سازند و مستقر می کنند.
بنابراین ما یک API داریم دویدن در تولید – آیا این به معنای واقعی آن است درجه تولید؟
بیشتر اوقات ، جواب این است هیچبشر
ما کد را می نویسیم ، آن را به صورت محلی آزمایش می کنیم (معمولاً به تنهایی ، روی یک دستگاه ، با یک کاربر) و با افتخار به تجارت می گویم “سلام ، آماده است!”
شاید حتی یک محیط QA وجود داشته باشد که شخصی از محصول به آن یک کلیک سریع بدهد و تأیید کند ، “به نظر من خوب است!”
و بعد … بررسی واقعیت ها.
آخر هفته تماس می گیرید:
“کاربران نمی توانند وارد سیستم شوند.”
یا بدتر:
“مشتری سفارش داد و از بین رفته است.”
حالا شما در حال تقلا هستید ، فکر می کنید:
“ای کاش سیاهههای مربوط به آنجا اضافه می کردم.”
“چرا ما این را زودتر گرفتیم؟”
“چگونه قرار است این کار را در تولید اشکال زدایی کنیم؟”
اگر آن سناریو احساس آشنایی کند ، این پست برای شما مناسب است.
بیایید آنچه را که من می دانم طی کنیم حداقل نوار برای اینکه یک API واقعاً باشد درجه تولید – و نحوه ساخت یکی در .NET.
چه چیزی به عنوان “درجه تولید” شناخته می شود؟
بیشتر API ها در طول توسعه “کار می کنند”. اما درجه تولید API ها برای رفتار پیش بینی شده تحت فشار طراحی شده اند. هنگامی که سنبله های ترافیکی ، چیزی از بین می رود ، یا مشتری برای انجام کار خود به سیستم شما متکی است.
برای من ، درجه تولید به معنای “این از QA می گذرد” نیست ، این بدان معنی است که این سیستم به شکلی ساخته شده است زندگی برای مهندسان و مصرف کنندگان راحت تر است یکسان
یعنی:
-
API است شهودی برای استفاده مصرف کنندگان لازم نیست بپرسند که چگونه کار می کند. آنها بلیط را باز نمی کنند و می پرسند که چرا آنها دریافت کرده اند
500
بشر این قابل پیش بینی ، خود مستند و سازگار است. -
این است قابل مشاهدهبشر شما می توانید بگویید که سیستم چه کاری انجام می دهد ، در صورت عدم موفقیت ، و چرابشر متوجه می شوید مشکلی پیش آمده است پیش از مشتریان شما انجام می دهند ساعت 10 شب تعجب آور نیست.
-
این است مقاومبشر هر API که بار را کنترل می کند ، سرانجام شکست خواهد خورد. بنابراین شما در قطع کننده های مدار ، ترمیم ها و محدودیت های نرخ ایجاد می کنید پیش از شما به آنها احتیاج دارید
-
این است ایمن به طور پیش فرضبشر اگر API شما عمومی است ، کسی سعی خواهد کرد آن را بشکند. اراده خوبی را از کاربران خود فرض نکنید. از تجارت خود محافظت کنید. به خصوص در نرم افزار B2B که در آن یک نشت یا بهره برداری می تواند به طور دائم به اعتبار شما آسیب برساند.
-
این است امن برای کاربران خود هیچ اطلاعات کاربر در سیاهههای مربوط نیست. هیچ اثری در معرض پشته وجود ندارد. اگر این اعتماد را بشکنید ، کاربران از شما متنفر خواهند بود و ممکن است شما نیز با مشکلات قانونی روبرو شوید.
-
این است خودکار و قابل تستبشر شما از دستگاه خود منتشر نمی کنید. استقرار باید یک خط لوله قابل تکرار و خودکار با آزمایش مناسب باشد. حتی اگر مشاغل شما چندین بار در روز آزاد نشود (مانند پزشکی یا هوافضا) ، شما هنوز هم از CI/CD بهره مند می شوید. چون شما همیشه دارید ساخت قابل حمل و آزمایش شده و حلقه های بازخورد سریع.
یک چارچوب “آماده تولید” برای دنبال کردن
این طرز فکر را می توان در پنج حوزه اصلی تقطیر کرد. نه به عنوان یک لیست چک ، بلکه به عنوان چارچوبی برای طراحی API هایی که فراتر از Dev و QA است.
به همین دلیل من آن را به پنج منطقه اصلی تقسیم می کنم. چارچوبی که من هر بار که یک API را طراحی می کنم ، انتظار دارم که از دنیای واقعی استفاده کنم.
1. تجربه و مستندات توسعه دهنده
حتی اگر قابل اطمینان ترین API باشد اگر مصرف آن گیج کننده باشد ، شکست خواهد خورد. مسیرهای تمیز ، رفتار مداوم ، خطاهای معنی دار ، نسخه سازی و اسناد خوب ضروری است.
ترتیب. مشاهده و تشخیص
ورود به سیستم ، آثار ، معیارها و بررسی های بهداشتی به شما امکان می دهد آنچه را که در تولید اتفاق می افتد درک کنید و هنگام بروز ناگزیر از مشکلات اشکال زدایی.
3. مقاومت و ثبات
API شما باید شکست های دنیای واقعی را تحمل کند: احیای مجدد ، قطع کننده های مدار ، زمان بندی ، استراتژی های برگشتی و محدود کردن نرخ به عملکرد آن تحت استرس کمک می کند.
4. امنیت و ایمنی
احراز هویت ، مجوز ، اعتبار سنجی ورودی ، رسیدگی به استثناء و گزارش خطای مناسب – همه برای محافظت از داده های کاربر و جلوگیری از سوءاستفاده بسیار مهم هستند.
5. استقرار و اتوماسیون
خطوط لوله CI/CD ، زیرساخت ها به عنوان کد ، آزمایش هرم ، آزمایش دود و بار و روشهای استقرار ایمن (به عنوان مثال ، آبی/سبز ، قناری). اینها اطمینان می دهند که API شما اغلب بدون ترس می تواند به روز شود.
این پست بخشی از سری وبلاگ های من است: ساختمان API های درجه تولید در .NET.
برای بقیه سریال ها و پست های فنی عمیق تر به وبلاگ من مراجعه کنید.