جهت مشاهدهی چالش هفتهی قبل اینجا کلیک کنید.
پیشزمینه:
شما در شرکت Flight.Com مشغول توسعهی یک اپلیکیشن در زمینهی فروش بلیت هواپیما هستید. شما پروازهای مختلف را از یک API که توسط شرکت FlightProvider.Com میباشد، گرفته و به کاربران نمایش میدهید. FlightProvider.Com یک API به شما داده است که میتوانید تاریخ پرواز، مبدا و مقصد مورد نظر را داده و لیستی از پروازهایی که در آن روز از مبدا مورد نظر شما به سمت مقصد میروند را به شما بر میگرداند. شما این لیست را به کاربران نمایش داده و کاربران از بین لیست پروازها یکی را انتخاب میکند.
سناریو:
همانطور که در تصویر بالا مشاهده میکنید API شرکت FlightProvider.Com تمامی مسیرهایی که از پاریس شروع شده و به آمستردام ختم میشوند را به شما بر میگرداند. ولی این امکان را به شما نمیدهد که فقط مسیرهایی که شامل یک یا دو leg هستند را درخواست کنید. قیمت بلیت مسیرهایی از پاریس تا آمستردام بسته به تعداد leg های آن متفاوت هستند. همچنین قوانین پروازی و روادید در مسیرهایی دارای چندین leg نیز ممکن است برای مشتری مشکلاتی را ایجاد کنید.
صورت مسئله:
با توجه به سناریو بالا، فرض کنید شما میخواهید که این قابلیت را داشته باشید که مسیرهایی از پاریس تا آمستردام را بر اساس تعداد leg های پروازی بین آنها تفکیک کنید و به کاربر نمایش دهید. با توجه به این صورت مسئله به سوالات زیر پاسخ دهید:
- در کدام لایه از برنامه این منطق را پیادهسازی میکنید؟
- چه مکانیزمی جهت leak نشدن این منطق به لایه دومین خواهید داشت؟
- فرض کنید شرکت MyFlightProvider.Com را نیز به لیست پروایدرهای پرواز اضافه کردید. اکنون دو پروایدر پرواز دارید. در این حالت این منطق را کجا و چگونه پیادهسازی میکنید؟
- میانگین زمان پاسخ API شرکت FlightProvider.Com، هفت ثانیه میباشد. شما باید ظرف مدت ۸ ثانیه پاسخ را به کاربر برگردانید، در غیر اینصورت مکانیزم Circuit Breaker فعال میشود. در این حالت پاسخ خود را تشریح کنید. کد مورد نظر را بنویسید؟