[Desafio] – 10 چالش ساده طراحی سیستم
محتوای اصلی در https://twitter.com/zanfranceschi/status/1638232577646669824
آنها توسعه دادند
وقتی در مورد طراحی سیستم صحبت می کنیم، معمولاً به راه حل های پیچیده، مقیاس های بزرگ و غیره فکر می کنیم. اما اکثر شرکت ها به راه حل های ساده نیاز دارند.
در این تاپیک، 10 چالش سادهتر و بیاهمیتتر طراحی سیستم را برای شما پیشنهاد میکنم تا تمرین کنید.
موضوع را دنبال کنید. ↓
سلب مسئولیت: آنها چالش های کاملی از نظر ارائه الزامات دقیق، حوزه های تجاری، محدودیت ها و غیره نیستند. آنها ایده های کلی تری برای شما هستند که می توانید یک مشکل/راه حل پیدا کنید – آنها ایده هایی هستند که شاید شما را تشویق کنند تا چالش خود را ایجاد کنید.
بیا بریم!
چالش 0: تقسیم یک پایگاه داده به دو بخش
چگونه میتوانید یک پایگاهداده رابطهای قدیمی را به دو قسمت تقسیم کنید، به طوری که فقط سوابق تا 6 ماهگی را در یک پایگاه داده و رکوردهای قدیمیتر را در پایگاه داده دیگر نگه میدارد؟
مواردی مانند صفحه بندی، جستجو، قابلیت استفاده و غیره را در نظر بگیرید.
چالش 1: یکپارچه سازی از طریق فایل ها
این یک کلاسیک است. شما مسئول تعریف نحوه ادغام از طریق فایل ها (~10 گیگابایت فایل در روز) بین دو شرکت هستید. از کدام فناوری استفاده می کنید؟ FTP، VPN، GCS، S3 و غیره؟ بایگانیها فقط پس از 3 سال قابل پاکسازی هستند.
چالش 2: پردازش فایل ناتوان
یک راه حل پردازش بی قدرت برای فایل های حجیم (~ 10 گیگابایت) طراحی کنید. آیا ناتوانی برای پرونده به طور کلی خواهد بود یا ثبت بر اساس رکورد؟ آیا همه اینها در حافظه جا می شود یا در حال پردازش جریان است؟
چالش 3: تبدیل پردازش همزمان یک API به ناهمزمان
این هم کلاسیک است. چگونه یک API که دارای پردازش همزمان است را به ناهمزمان تبدیل کنیم؟ به مسائل مربوط به کد وضعیت بازگشت، ضمانت پردازش، قابلیت استفاده API و غیره فکر کنید.
چالش 4: خدمات ابزار برای معیارهای کسب و کار در زمان واقعی
هرچند باورنکردنی به نظر می رسد، به نظر من با وجود ابزارهای موجود، بسیاری از شرکت ها این کار را انجام نمی دهند یا آن را به روشی بسیار ابتدایی انجام می دهند. چگونه این را حل می کنید؟ نکته: از لاگ استفاده نکنید، از معیارها استفاده کنید!
چالش 5: ادغام با رویدادها از طریق Webhook
یک راه حل API ایجاد کنید که اعلان های رویداد را از طریق webhook دریافت کند. به تحمل خطا، سرعت پردازش و غیره فکر کنید. بپرسید که آیا کسی که وب هوک را فراخوانی می کند، دوباره تلاش می کند، کدام کدهای وضعیت پذیرفته می شوند و غیره.
چالش 6: خدمات داخلی را در معرض دید شرکا قرار دهید
شما یک API داخلی دارید، اما کسب و کار تصمیم گرفته است که آن را در اختیار شرکت های دیگر قرار دهد (چند ده). چگونه سرویسی را که در یک شبکه خصوصی است در معرض شرکت های شریک قرار می دهید؟ (ادامه)
جنبههای زیرساخت شبکه (موجود در یک شبکه عمومی و کنترل شده از طریق فایروال/ACL یا از طریق اتصال خصوصی)، احراز هویت/مجوز/توکنهای دسترسی، محدودیتهای درخواست (گسست)، و غیره را در نظر بگیرید.
چالش 7: هش کردن رمزهای عبور در یک پایگاه داده
شما یک پایگاه داده قدیمی دارید که دارای سوابق رمزگذاری شده MD5 است. راه حلی برای انتقال رمز عبور طراحی کنید تا با الگوریتم دیگری (مثلا Argon2 یا Bcrypt) ذخیره شود؟
چالش 8: انتقال پایگاه داده به ابر
شرکت شما به ابر مهاجرت خواهد کرد. راه حلی برای همگام نگه داشتن پایگاه داده های داخلی و ابری طراحی کنید تا بتوانید از یک محیط یا محیط دیگر با یک پیکربندی ساده و به سرعت استفاده کنید؟ (ادامه)
اغلب، سختترین بخش مهاجرت به فضای ابری، مولفههای حالتدهنده است – 90 درصد مواقع، پایگاههای داده. برنامههای کاربردی وب بدون حالت یا فرار در اکثر مواقع راحتتر منتقل میشوند. یک استراتژی بازگشتی بانکی می تواند یک استراتژی خوب باشد.
چالش 9: توکن های دسترسی غیر شفاف
راه حلی برای احراز هویت/مجوز طراحی کنید که در آن امکان استفاده از نشانه های دسترسی غیر شفاف در بیش از یک سرویس وجود داشته باشد. صدور توکن و ابطال/ انقضا باید متمرکز باشد.
این 10 چالش هستند!
تمام آنچه در اینجا پیشنهاد کردهام، چالشهایی است که قبلاً با آنها روبرو بودهام. برخی از آنها کمی کمتر پیش پا افتاده هستند، اما هیچ کدام فقط برای شرکت های غول پیکر/مرجع نیستند و پیدا کردن بسیاری از آنها کاملاً معمول است.
امیدوارم از تاپیک لذت برده باشید ❤️