Architecture Decision Lab
Qərar verin. Nəticəsini görün.
Hər ssenari real komanda situasiyasıdır. Bir variant seçin — nə baş verəcəyini, trade-off-u və hansı şəraitdə başqa variantın daha yaxşı olacağını görəcəksiniz.
Ssenarilər Azərbaycan dilindədir.
0 / 6 ssenari
01 · Middle
Sifariş yaradılanda anbar və e-poçt xəbərdar olunmalıdır
Order service sifarişi PostgreSQL-ə yazır, sonra anbar (inventory) servisini məlumatlandırmalı və müştəriyə təsdiq e-poçtu göndərdirməlidir. Pik vaxtda təxminən 200 sifariş/saniyə gözlənilir (qəbul edilmiş fərziyyə). E-poçt provayderi bəzən yavaşlayır və ya qısa müddətlik əlçatmaz olur. Komanda artıq Kafka cluster-i işlədir.
Məhdudiyyətlər
- Sifariş qəbulu e-poçt provayderinin yavaşlığından asılı olmamalıdır.
- Təsdiqlənmiş sifariş üçün anbar bildirişi itirilməməlidir.
- Komanda 4 nəfərdir və yeni infrastruktur əlavə etmək istəmir.
02 · Middle
Məhsul kataloqu: sürətli oxuma, amma qiymət tez görünməlidir
Kataloq API-si oxuma-ağırlıqlıdır: təxminən 2000 oxuma/saniyə, yazma isə dəqiqədə bir neçə dəfə (qəbul edilmiş fərziyyə). Məhsul məlumatı PostgreSQL-dədir və verilənlər bazası pikdə yüklənir. Qiymət dəyişikliyi müştərilərə ən çox bir dəqiqə ərzində görünməlidir. Komandada Redis artıq istifadə olunur.
Məhdudiyyətlər
- Qiymət dəyişikliyi görünmə gecikməsi ən çox 1 dəqiqə.
- Verilənlər bazasına oxuma yükü azalmalıdır.
- Mürəkkəb invalidation məntiqini idarə edəcək vaxt yoxdur.
03 · Senior
Deploy yavaşdır, komanda mikroservis istəyir
5 nəfərlik komanda bir Spring Boot monolitini işlədir; kod modullara bölünüb, amma modullar arasında sərhədlər qanuni deyil, bir verilənlər bazası var. Deploy-lar yavaşdır, çünki CI pipeline-ı bütün testləri işlədir və hər buraxılış əl ilə yoxlanılır. Komanda "yavaş deploy" problemini həll etmək üçün mikroservislərə keçmək istəyir. Platforma/DevOps mütəxəssisi yoxdur.
Məhdudiyyətlər
- Cəmi 5 mühəndis, ayrıca platforma komandası yoxdur.
- Əsas ağrı deploy sürətidir, müstəqil miqyaslanma ehtiyacı yoxdur.
- Biznes yeni funksiyaları gecikdirməməlidir.
04 · Senior
İki servisdə iki hesab arasında pul köçürməsi
Hazırda hesablar iki ayrı servisdə və ayrı verilənlər bazalarında saxlanılır: biri yerli hesablar, digəri xarici ödəniş hesabları üçün. İstifadəçi bir hesabdan digərinə pul köçürmək istəyir. Hər halda pul nə itməli, nə də iki dəfə yaranmalıdır. Servislər HTTP ilə danışır və şəbəkə nasazlığı mümkündür.
Məhdudiyyətlər
- Pul itməməli və ikiqat yaranmamalıdır.
- Servislər və bazalar ayrıdır, birgə transaction meneceri yoxdur.
- Hər addım audit üçün izlənə bilməlidir.
05 · Senior
Hesabat paneli əməliyyat bazasını yavaşladır
Daxili hesabat paneli iş saatlarında ağır aqreqasiya sorğuları işlədir və eyni PostgreSQL-i paylaşan sifariş əməliyyatları yavaşlayır. Əməliyyat bazası bir primary instance-dır. İşçilər hesabatın bir neçə dəqiqə köhnə olmasına dözür, amma bəzi menecerlər "bu günkü satış" rəqəminin təxminən təzə olmasını istəyir. Büdcə məhduddur.
Məhdudiyyətlər
- Əməliyyat sorğularının gecikməsi hesabatlardan təsirlənməməlidir.
- Hesabat verilənləri bir neçə dəqiqə köhnə ola bilər.
- Komanda yeni sistem əlavə etməkdə məhdud təcrübəyə malikdir.
06 · Architect
LLM "assistent" müştəri sifarişlərini dəyişə bilsin
Məhsul komandası müştərilərə sifarişlərini dəyişməyə (ünvan, miqdar, ləğv) kömək edən LLM əsaslı assistent istəyir. Backend-də bu əməliyyatlar üçün artıq doğrulama və səlahiyyət qaydaları olan API-lər var. Model bəzən yanlış anlaya və ya istifadəçinin mətnində gizlədilmiş təlimatlara (prompt injection) məruz qala bilər. Sifariş dəyişiklikləri maliyyə və müştəri təsiri daşıyır.
Məhdudiyyətlər
- Yalnız müştəri öz sifarişini dəyişə bilməlidir.
- Yanlış və ya manipulyasiya edilmiş əməliyyat zərər verməməlidir.
- Əməliyyatlar izlənə və geri çağırıla bilməlidir (audit).
Bu qərarları real layihədə müdafiə etməyi öyrənmək istəyirsiniz?
System Design və Solution Architecture proqramlarına baxın və ya case müsahibəsini sınayın.