Microservices və System Design
İşləyən Java/backend mühəndisləri üçün 16 həftəlik müəllim rəhbərliyi ilə proqram: arxitektura trade-off-ları, DDD, Kafka, outbox və saga, PostgreSQL yük altında, Kubernetes, AWS Well-Architected, observability və AI ilə mühəndislik. Bütün kurs boyu bir paylanmış sistemi inkişaf etdirir və yekunda onu işlək kod, ADR-lər, yük testi və uğursuzluq ssenarisi ilə müdafiə edirsiniz. Planlaşdırılmış sillabusdur, qrupa görə dəyişə bilər; iş zəmanəti yoxdur.
- Müddət
- 16 həftə
- Canlı dərslər
- həftədə 2 dərs, hər biri 90 dəqiqə
- Mərhələ
- 4 mərhələ
- Dil
- Azərbaycan və ya ingilis dili (qrupa görə)
- Həftəlik yük
- Laboratoriyalarla birlikdə həftədə ən azı 6 saat praktika planlayın
- Necə bitir
- ADR-lər, yük testi və uğursuzluq ssenarisi ilə arxitektura müdafiəsi
Kurs boyu qurulan sistem
Bir paylanmış sistem, on altı həftə
Bilet platformasını addım-addım böyüdürsünüz. Pattern seçin: hansı problemi həll etdiyini, necə sındığını və hansı həftədə öyrədildiyini görün.
Problem
Sifarişi yazmaq və hadisəni dərc etmək eyni anda uğurlu olmalıdır.
Necə sınır
Broker dayanır və hadisə itir, ya da təkrar mesaj iki bildiriş göndərir.
Öyrədilir
Həftə 7
Diaqram kursun tədris sistemini göstərir (real şirkət deyil). Kubernetes labları pulsuz lokal klasterdə (kind/k3d), AWS isə ödənişli resurs yaratmadan öyrədilir.
Proqram haqqında
Kimin üçün
Java backend developerlər (junior+ və middle) və Java & Backend Engineering məzunları: servis sərhədlərini çəkmək, servisləri etibarlı əlaqələndirmək və system design qərarlarını əsaslandırmaq istəyənlər.
İlkin tələblər
- Spring Boot ilə REST API yazırsınız
- SQL, tranzaksiyalar və JPA ilə işləmisiniz
- Git, testlər və Docker əsasları
Texnologiyalar
- Java 21
- Spring Boot
- PostgreSQL, Flyway
- Kafka
- Outbox, saga, CQRS
- OpenAPI, contract testləri
- Resilience4j
- Redis
- OpenTelemetry, Micrometer
- Docker, CI/CD
- OAuth2/OIDC
Necə tamamlanır
- Mərhələ yoxlama nöqtələri: context map və contract testi olan iki servis; outbox, idempotent consumer və saga; yük testi, trace-lər, SLO və rollback planı
- Yekun: öz qurduğunuz servis sistemi, dizayn sənədi, ADR-lər, insident ssenarisi və rubrika ilə texniki müdafiə
Mentorluq və rəy
Canlı dərsləri müəllim aparır; hər həftəlik tapşırıq 100 ballıq rubrika ilə yoxlanılır və yazılı rəy alırsınız. Mərhələ sonlarında yoxlama nöqtəsi var; zəif sahələr vaxtında göstərilir.
16 həftə
Həftə-həftə tədris planı
Planlaşdırılan tədris planıdır: sıra və dərinlik qrupa uyğun dəyişə bilər. İş təminatı və ya vəzifə vədi deyil.
01 · 1–4-cü həftələr
Arxitektura əsasları
Mərhələnin məqsədi: Keyfiyyət atributlarından başlayaraq sistemi nə vaxt və necə bölməyi, müqavilələri və verilənlər bazasını yük altında idarə etməyi öyrənmək.
Həftə 1
Arxitektura, keyfiyyət atributları və trade-off-lar
- Keyfiyyət atributları: əlçatanlıq, gecikmə, dəyişkənlik, xərc
- Modulyar monolit və mikroservislər: nə vaxt bölməmək
- ADR və C4 diaqramları
- Kurs boyu sistem: Seatwise-ın paylanmış versiyası
Laboratoriya: Tədris monolitinin C4 kontekst və konteyner diaqramlarını çəkib iki keyfiyyət atributu üçün ssenari yazmaq.
Tapşırıq: ADR: monolit qalmaq, yoxsa bir modulu ayırmaq — əsaslandırma və alternativlərlə.
Həftə 2
Domain-driven design və servis dekompozisiyası
- Ubiquitous language, bounded context, context map
- Aggregate-lər və invariantlar
- Data sahibliyi: hər servisin öz bazası
- Strangler fig ilə tədrici çıxarma
Laboratoriya: Event storming: bilet platformasında kontekstləri, aggregate-ləri və data sahiblərini tapmaq.
Tapşırıq: Context map və strangler fig ilə ilk servisin çıxarılma planı.
Həftə 3
Servis müqavilələri: REST, gRPC və asinxron əlaqə
- Sinxron və asinxron əlaqə: coupling və uğursuzluq
- OpenAPI və gRPC ilə contract-first
- Versiyalaşdırma və geriyə uyğunluq
- Consumer-driven contract testləri və API Gateway
Laboratoriya: Çıxarılan servis üçün OpenAPI müqaviləsi, gateway marşrutu və onu qoruyan contract testi.
Tapşırıq: Müqaviləni pozmadan yeni versiya buraxmaq; pozan dəyişikliyi CI-ın tutduğunu göstərmək.
Həftə 4
PostgreSQL miqyasda: sorğular, izolyasiya və kilidlər
- EXPLAIN ANALYZE və indeks dizaynı
- İzolyasiya səviyyələri, kilidlər və deadlock-lar
- Connection pooling (HikariCP) və tükənmə
- Sıfır dayanmalı miqrasiyalar
Laboratoriya: Yavaş sorğu və deadlock-u yük altında yaradıb ölçmək, sonra düzəltmək.
Tapşırıq: Ölçmələrlə (əvvəl/sonra) performans hesabatı və geri qaytarıla bilən miqrasiya.
Yoxlama nöqtəsi: ADR, C4, context map, contract testi və ölçülmüş performans düzəlişi.
02 · 5–8-cü həftələr
Paylanmış data və hadisələr
Mərhələnin məqsədi: Servisləri Kafka ilə məlumat itirmədən və təkrar emal etmədən əlaqələndirmək, konsistentliyi şüurlu seçmək.
Həftə 5
Paylanmış sistemlərin əsasları
- Replikasiya və partitioning
- Konsistentlik modelləri və CAP haqqında yanlış təsəvvürlər
- Çatdırılma semantikası və sıralama
- Uğursuzluğun aşkarlanması və koordinasiya
Laboratoriya: Şəbəkə gecikməsi və bölünməsini simulyasiya edib iki replikanın davranışını müşahidə etmək.
Tapşırıq: Sistemin hər əməliyyatı üçün konsistentlik tələbi cədvəli və əsaslandırması.
Həftə 6
Kafka və hadisə əsaslı sistemlər
- Partition, consumer group, offset və rebalancing
- Çatdırılma zəmanətləri və idempotent producer
- Schema təkamülü və hadisə müqavilələri
- Retry, dead-letter topic və consumer lag
Laboratoriya: Uğursuzluq laboratoriyası: yavaş istehlakçı lag yaradır və rebalancing fırtınası başlayır — diaqnoz və düzəliş.
Tapşırıq: Hadisə müqaviləsi, DLT siyasəti və lag üçün xəbərdarlıq həddi.
Həftə 7
Outbox, idempotentlik və saga-lar
- Dual write problemi və transactional outbox
- İdempotent istehlakçı
- Saga: xoreoqrafiya və orkestrasiya, kompensasiya
- Paylanmış tranzaksiyaların alternativləri
Laboratoriya: Sifariş → ödəniş → yer rezervasiyası saga-sı; broker dayananda heç bir hadisə itmir.
Tapşırıq: Hər uğursuzluq nöqtəsi üçün davranışı göstərən testlər və saga vəziyyət diaqramı.
Həftə 8
CQRS, event sourcing və keşləmə
- Read model-lər və eventual consistency-ni istifadəçiyə göstərmək
- Event sourcing: nə vaxt dəyər, nə vaxt yox
- Redis keş strategiyaları və invalidasiya
- Cache stampede və konsistentlik
Laboratoriya: Hadisələrdən read model qurmaq, sıfırdan yenidən qurmaq və keşi yük testində ölçmək.
Tapşırıq: ADR: event sourcing istifadə etmək və ya etməmək — sistemin bir konteksti üçün.
Yoxlama nöqtəsi: Outbox, idempotent consumer, kompensasiyalı saga, read model və Kafka uğursuzluq laboratoriyası.
03 · 9–12-cü həftələr
Cloud-native əməliyyatlar
Mərhələnin məqsədi: Sistemi dayanıqlı etmək, Kubernetes-də deploy və debug etmək, müşahidə etmək və insidentləri idarə etmək.
Həftə 9
Dayanıqlıq və performans
- Timeout büdcələri, retry və backoff (jitter)
- Circuit breaker və bulkhead
- Backpressure, rate limiting və yükün atılması
- Yük testi və bottleneck analizi
Laboratoriya: Uğursuzluq laboratoriyası: yavaş asılılıq retry fırtınası yaradır — Resilience4j və limitlərlə qorumaq, k6 ilə sübut etmək.
Tapşırıq: Yük testi nəticələri, seçilmiş limitlərin əsaslandırılması və insident hesabatı.
Həftə 10
Konteynerlər və Kubernetes I
- OCI image-lər və təhlükəsiz Dockerfile
- Kubernetes arxitekturası: control plane, node, pod
- Deployment, Service, Ingress/Gateway
- ConfigMap, Secret, probe-lar, requests və limits
Laboratoriya: Servisləri lokal kind/k3d klasterinə deploy etmək və sınmış probe-u debug etmək (pulsuz, öz kompüterinizdə).
Tapşırıq: Manifestlər, resurs limitlərinin əsaslandırılması və troubleshooting qeydləri.
Həftə 11
Kubernetes II: buraxılış, miqyas və təhlükəsizlik
- Rolling update, rollback və buraxılış strategiyaları
- HPA və autoscaling
- Helm, namespace və GitOps prinsipləri
- RBAC, network policy və klaster təhlükəsizliyi
Laboratoriya: Uğursuzluq laboratoriyası: səhv konfiqurasiyalı rollout — aşkarlamaq, geri qaytarmaq və Helm chart-ı düzəltmək.
Tapşırıq: Helm chart, network policy və rollback runbook-u.
Həftə 12
Observability və istehsalat əməliyyatları
- OpenTelemetry: trace, metrika, log
- Prometheus, Grafana və xəbərdarlıq dizaynı
- SLI, SLO və error budget
- İnsident idarəsi, RCA və runbook-lar
Laboratoriya: Uğursuzluq laboratoriyası: gecikmə reqressiyası trace-lərlə tapılır; SLO pozuntusunun RCA-sı.
Tapşırıq: Dashboard, SLO, iki xəbərdarlıq və blameless postmortem.
Yoxlama nöqtəsi: Yük testi, Helm chart, rollback runbook-u, SLO və postmortem.
04 · 13–16-cü həftələr
Bulud arxitekturası, AI və yekun layihə
Mərhələnin məqsədi: Bulud və təhlükəsizlik qərarlarını əsaslandırmaq, AI alətlərindən tənqidi istifadə etmək və sistemi müdafiə etmək.
Həftə 13
AWS və bulud arxitekturası (Well-Architected)
- VPC, IAM və şəbəkə əsasları
- EKS, RDS və idarə olunan mesajlaşma: nə vaxt hansı
- Yüksək əlçatanlıq, disaster recovery və sirlər
- Xərc idarəsi və Well-Architected review
Laboratoriya: Sistemin AWS üzərində hədəf arxitekturası, IAM siyasətləri və aylıq xərc hesablaması (ödənişli resurs yaratmadan).
Tapşırıq: Well-Architected sütunları üzrə review və DR planı (RPO/RTO).
Həftə 14
System design: metod və təhlükəsizlik arxitekturası
- Tələblər, tutum hesablaması və miqyas
- Partitioning və keşlə dizayn qərarları
- Threat modeling, servis identifikasiyası və OAuth2/OIDC
- Dizayn review-u: trade-off-ları müdafiə etmək
Laboratoriya: Mentorla canlı system design review: yekun layihənin dizayn sənədi.
Tapşırıq: Dizayn sənədi: tələblər, tutum, C4, threat model və ADR-lər.
Həftə 15
AI ilə mühəndislik: Claude Code, review və risklər
- Agentic iş axınları, layihə təlimatları və MCP anlayışları
- AI ilə test yaratmaq və code review — nəticəni yoxlamaq
- Prompt injection, data sızması və insan təsdiqi sərhədləri
- Xərc, token intizamı və təkrarlana bilən qiymətləndirmə
Laboratoriya: Claude Code ilə bir feature və onun testləri; AI-ın yazdığı kodda ən azı iki səhvi tapıb sübut etmək.
Tapşırıq: AI istifadə siyasəti: hansı işlər, hansı yoxlamalar, hansı məlumat heç vaxt göndərilmir.
Həftə 16
Yekun arxitektura layihəsi və texniki müdafiə
- İşlək servislər, asinxron mesajlaşma və konsistentlik strategiyası
- Deploy manifestləri, monitorinq və avtomatik testlər
- Yük testi, uğursuzluq simulyasiyaları və təhlükəsizlik review-u
- Xərc hesablaması, ADR-lər və müdafiə
Laboratoriya: Canlı demo və mentorun verdiyi uğursuzluq ssenarisi altında sistemin davranışı.
Tapşırıq: Rubrika ilə qiymətləndirilən yekun texniki müdafiə (həm implementasiya, həm arxitektura əsaslandırması).
Yoxlama nöqtəsi: Dizayn sənədi, xərc hesablaması, AI istifadə siyasəti və rubrika ilə yekun müdafiə.