Yol xəritələri · L3
Senior Backend Developer
Senior backend developer yalnız öz tapşırığını yox, onun sistemə təsirini də məsuliyyətinə götürür. Mürəkkəb və qeyri-müəyyən problemləri həll edir, etibarlılıq və dəyişdirilə bilənlik üzrə qərarlar verir, digər mühəndislərin böyüməsinə kömək edir.
Əvvəlki səviyyədən fərqi
Middle bir servisin daxilində yaxşı iş görür. Senior servislər arası qarşılıqlı təsiri, xəta ssenarilərini və uzunmüddətli nəticələri nəzərə alır. O, yalnız həll etmir, hansı problemin həll olunmağa dəyər olduğunu da seçir və başqalarının keyfiyyətinə təsir edir.
Gözlənilən biliklər
- Paylanmış sistemlərdə xəta modeli: timeout, retry, backoff, circuit breaker, bulkhead
- Mesajlaşma semantikası: at-least-once, idempotent consumer, transactional outbox
- Verilənlər bazası dərinliyi: isolation səviyyələri, locking, migrasiya strategiyaları
- Idempotency və təkrar sorğuların təhlükəsiz emalı
- JVM: yaddaş modeli, GC seçimi, container limitləri, virtual thread-lərin üstünlük və məhdudiyyətləri
- Observability: log, metric, trace və simptom əsaslı alert dizaynı
- Servis sərhədləri, data ownership, modular monolith və microservices arasında seçim
- API təhlükəsizliyi: object-level authorization, rate limiting, secrets idarəsi
Praktik bacarıqlar
- Qeyri-müəyyən tələbdən sistem dizaynı hazırlamaq və trade-off-ları açıq yazmaq
- Yük və xəta altında sistemin davranışını proqnozlaşdırmaq və yoxlamaq
- Incident zamanı səbəbi daraltmaq, sonra blameless postmortem yazmaq
- Riskli migrasiyanı mərhələlərlə və geri dönüş planı ilə aparmaq
- Kodun və dizaynın review-sunda səbəblə fikir bildirmək
- Mentorluq: junior və middle mühəndislərə konkret rəy vermək
Tipik səhvlər
- Hər problemi microservice ilə həll etməyə çalışıb paylanmış monolit yaratmaq
- Verilənlər bazasına yazı və mesaj göndərməni eyni atomik əməliyyat saymaq (dual write)
- Retry-ı backoff və jitter olmadan əlavə edib xətanı gücləndirmək
- Alert-ləri səbəbə yox, hər kiçik göstəriciyə qurmaq
- Bütün qərarları özü verib komandanı müstəqilləşdirməmək
- Texnologiyanı problemdən əvvəl seçmək
Öyrənmə prioritetləri
- 1Etibarlılığı dizaynın bir hissəsi etməkHər xarici çağırışda timeout, retry siyasəti və xəta davranışı əvvəldən düşünülsün.
- 2Paylanmış verilənlər və mesajlaşmanı dərindən bilməkOutbox, idempotent consumer, ardıcıllıq və eventual consistency-nin istifadəçi təcrübəsinə təsiri.
- 3Sistem dizaynı üzrə sistemli düşünməkTələbləri dəqiqləşdirin, kobud qiymətləndirin, trade-off-ları və xəta rejimlərini açıq deyin.
- 4Observability və əməliyyat mədəniyyətiSimptom əsaslı alert, runbook və postmortem. Sistemi gecə 3-də başa düşə bilmək lazımdır.
- 5Mentorluq və təsirReview, dizayn müzakirəsi və biliyi yaymaq vasitəsilə komandanın səviyyəsini qaldırmaq.
Arxitektura yetkinliyi
Senior səviyyədə arxitektura qərarları xüsusi sərhədlər, data ownership və keyfiyyət atributları (etibarlılıq, performans, təhlükəsizlik, dəyişdirilə bilənlik) baxımından qiymətləndirilir. Mühəndis alternativləri müqayisə edir, hər qərarın bədəlini açıq deyir və geri dönüş yolunu nəzərdə tutur. Prinsipləri (məsələn, clean architecture, DDD) ceremoniya üçün yox, konkret problemi həll etdiyi yerdə tətbiq edir.
Nümunə suallar
- Verilənlər bazasına yazı və Kafka mesajı arasında ardıcıllığı necə təmin edərdiniz?
- Retry fırtınası necə yaranır və onu necə qarşısını alarsınız?
- Consumer mesajı iki dəfə alanda nə baş verir və buna necə hazırlaşırsınız?
- Üçüncü tərəf API-si yavaşlayanda sistemin qalan hissəsini necə qorursunuz?
- Modular monolith əvəzinə microservices seçməyi nə vaxt əsaslandırarsınız?
- GC pauzaları artıbsa, araşdırmaya haradan başlayarsınız?
- URL qısaldıcı sistemini dizayn edin və trade-off-ları izah edin.
Özünüz edə biləcəyiniz tapşırıqlar
- Transactional outbox və relay ilə «sifariş yaradıldı» hadisəsini göndərin; relay-i öldürüb təkrar emalı yoxlayın.
- Xarici servisə qarşı circuit breaker və bulkhead qurun, xətanı simulyasiya edib davranışı ölçün.
- Ödəniş endpoint-inə idempotency key əlavə edin və paralel eyni sorğuları test edin.
- Mövcud monolitin bir modulunu sərhədlərinə görə ayırmaq üçün qərar sənədi (ADR) yazın.
- Real servisin metric və log-larından üç simptom əsaslı alert və runbook hazırlayın.
Bu səviyyə üçün məqalələr
- Paylanmış sistemlərDistributed sistemlərdə uğursuzluğun idarəsi
- Event-driven arxitekturaDelivery semantics, idempotent consumer və outbox pattern
- Tranzaksiyalar və ardıcıllıqPostgreSQL-də transaction isolation səviyyələri və lost update
- Paylanmış sistemlərTəhlükəsiz retry üçün idempotency pattern-ləri
- ObservabilityObservability: log, metrik və trace
- System DesignSystem design nümunəsi: URL shortener
- Advanced JavaServis developerləri üçün Java yaddaşı və garbage collection
- MicroservicesMikroservis sərhədlərini necə çəkmək olar
Uyğun proqramlar
Bu səviyyəyə nə qədər yaxınsınız?
Bacarıq testi cavablarınıza əsaslanan şəxsi boşluq hesabatı hazırlayır. Nəticə tövsiyədir, sertifikat deyil.