Arhitectură
De la aplicații pe un singur server la sisteme distribuite globale. Alegeri de storage, replicare, streaming, orchestrare, costuri, și studiile de caz care arată cum se face la scară mare.
-
Lecția 1
Ce este de fapt arhitectura software
Definiții care nu sunt inutile. Arhitectura ca setul de decizii care sunt scumpe de schimbat mai târziu. Regula 'dacă e greu de schimbat, e arhitectură'.
-
Lecția 2
Cerințe funcționale vs non-funcționale
Capcana de a te concentra pe funcționalități. Calitățile care conduc arhitectura: latență, throughput, disponibilitate, durabilitate, consistență, securitate, evoluabilitate.
-
Lecția 3
Modelul C4: context, container, component, code
O convenție de diagramare cu patru niveluri de zoom care se potrivește cu conversațiile reale despre sisteme.
-
Lecția 4
Architectural Decision Records (ADR-uri)
Cum capturezi deciziile cu alternativele și consecințele lor. Formatul Michael Nygard pe care s-au pus de acord majoritatea echipelor.
-
Lecția 5
Trade-off-urile sunt totul
Latency vs throughput, consistency vs availability, simplu vs flexibil. Catalogul de trade-off-uri cu nume și de ce 'le vrem pe toate' e cea mai scumpă cerere din cameră.
-
Lecția 6
Prima arhitectură: o aplicație web single-server + bază de date
Cum arată un sistem funcțional la scală de startup: un VM, un Postgres, un proces și de ce e un punct de plecare perfect respectabil.
-
Lecția 7
Când prima arhitectură nu mai e de ajuns
Simptomele care spun că aplicația pe un singur server și-a atins plafonul. Contenție pe baza de date, deploy-ul care provoacă outage, backup-ul zilnic care durează mai mult de o zi.
-
Lecția 8
Trei studii de caz despre 'ar fi trebuit să începem mai simplu'
Stripe rămânând pe Postgres mult mai mult decât se aștepta lumea, poziția Shopify pe monolit și majestuosul monolit Basecamp. Pledoarie pentru a nu supra-inginerii devreme.
-
Lecția 9
De ce sistemele distribuite sunt grele: cele 8 fallacies
Lista lui Peter Deutsch, restated pentru 2026. The network is reliable, latency is zero, bandwidth is infinite și cum fiecare fallacy strică săptămâna cuiva.
-
Lecția 10
Teorema CAP, în practică
Ce spune CAP de fapt, ce nu spune și de ce 'sistem AP' e doar jumătate de propoziție. Exemple reale: DNS, registre bancare, Cassandra.
-
Lecția 11
PACELC: ce a ratat CAP
Extensia lui Daniel Abadi. Chiar și în absența partițiilor, dai latency pentru consistency.
-
Lecția 12
Consistency models: strong, eventual, causal, monotonic
Spectrul de garanții pe care le poate oferi un sistem, cu un exemplu concret care arată ce promite și ce strică fiecare model.
-
Lecția 13
Timpul în sistemele distribuite: ceasuri, ordonare, vector clocks
Timpul fizic e o minciună. Lamport timestamps, vector clocks, TrueTime de la Google și de ce 'când s-a întâmplat asta' e una dintre cele mai grele întrebări.
-
Lecția 14
Consensus: Paxos și Raft, pe înțelesul tuturor
Garanțiile de safety/liveness ale protocoalelor de consensus, de ce Raft a înlocuit Paxos în sistemele moderne și sistemele care depind de ele.
-
Lecția 15
Two-phase commit și problemele lui
Protocolul de manual pentru tranzacții distribuite, problema de coordinator failure care îl bântuie și de ce sistemele moderne se sprijină pe pattern-ul Saga în schimb.
-
Lecția 16
Idempotency, exactly-once, at-least-once, at-most-once
Ce promite cu adevărat fiecare garanție de livrare, de ce 'exactly-once' e mai mult o afirmație de marketing, și cum procesarea idempotentă o face irelevantă.
-
Lecția 17
Baze de date relaționale: când SQL este răspunsul potrivit
Postgres ca alegere implicită. ACID, scheme, joins, platforma stabilă de 20 de ani care alimentează discret majoritatea sistemelor tranzacționale ale lumii.
-
Lecția 18
Key-value stores: Redis, DynamoDB, când câștigă
Viteză pură, simplitate pură. Cazurile de utilizare în care un key-value store este răspunsul potrivit: caching, sesiuni, rate limits, leaderboards.
-
Lecția 19
Document stores: MongoDB și ascensiunea/căderea/renașterea
Când datele imbricate sunt modelul, ce costă schema-on-read și lecțiile operaționale pe care MongoDB le-a dat industriei.
-
Lecția 20
Wide-column: Cassandra, ScyllaDB, BigTable
Tranzacția 'scală infinită, schemă legată de query'. Ce promit bazele wide-column, ce sacrifică și când merită târgul.
-
Lecția 21
Baze de date time-series: Influx, Timescale, Prometheus
Când timestamp-plus-valoare e 99% din datele tale. Optimizările care permit store-urilor time-series să bată bazele de date generale cu un factor de 10x sau mai mult.
-
Lecția 22
Baze de date graf: Neo4j, când relațiile sunt datele
Query-urile dureroase în SQL și triviale în Cypher: friend-of-a-friend, drum minim, sisteme de recomandare construite pe traversare de relații.
-
Lecția 23
Baze de date vectoriale: Pinecone, Qdrant, era LLM
Embeddings ca noul index, căutare ANN (approximate nearest neighbor) și noua infrastructură a stack-ului LLM 2024-2026.
-
Lecția 24
Polyglot persistence: când să amesteci
Când aplicația ta beneficiază de mai multe baze de date, când una e suficientă și costul operațional al rulării a patru data stores în loc de unul.
-
Lecția 25
Pattern-uri de replication: leader/follower, multi-leader, leaderless
Cele trei familii de replication pentru baze de date, trade-off-urile pe care fiecare le face pentru consistency și availability, și unde se potrivește fiecare în sistemele reale.
-
Lecția 26
Replication lag și consistency read-after-write
Bug-ul utilizator-a-văzut-date-stale. De ce se întâmplă cu replication async și pattern-urile care îl previn: read-your-writes, sticky sessions, monotonic reads.
-
Lecția 27
Partitioning: după cheie, după hash, după range
Când un singur nod nu mai poate ține datele, le împarți. Cele trei strategii de partitioning și query-urile pe care le permite fiecare.
-
Lecția 28
Hot keys și problema de rebalancing
Utilizatorul-celebritate cu un milion de followeri. Cum detectezi un hot key, trei strategii pentru a-l gestiona și de ce rebalancing-ul unui cluster live e mai greu decât pare.
-
Lecția 29
Strategii de sharding și capcanele lor
Sharding la nivel de aplicație, sharding nativ în baza de date, Citus și Vitess. Realitățile practice ale rulării unei baze de date SQL sharded.
-
Lecția 30
Split brain: ce este și de ce strică totul
Partiția de rețea în care ambele jumătăți ale unui cluster cred că sunt liderul. De ce quorum e singura apărare fiabilă.
-
Lecția 31
Query-uri cross-shard: fan-out vs co-location
Când datele sunt împărțite pe mai multe mașini, fiecare query are un cost proporțional cu numărul de shard-uri pe care le atinge. Strategiile pentru a ține numărul ăsta cât mai mic.
-
Lecția 32
Caz real: călătoria Discord de la MongoDB la Cassandra la ScyllaDB
Cum a trecut storage-ul de mesaje al Discord de la MongoDB la Cassandra la ScyllaDB pe parcursul a zece ani, ce a costat fiecare migrare și care sunt lecțiile pentru toți ceilalți.
-
Lecția 33
ETL vs ELT: unde trăiește transformarea
Ordinea operațiilor s-a schimbat când warehouse-urile au devenit ieftine. De ce ELT (extract, load, transform) a înlocuit ETL pentru majoritatea stack-urilor de date moderne.
-
Lecția 34
Fundamentele procesării batch: lecțiile Hadoop
Ce a făcut bine MapReduce, ce a făcut prost și forma de procesare batch care a supraviețuit.
-
Lecția 35
Spark și batch-ul modern
Înlocuitorul in-memory pentru Hadoop, lecțiile pe care le-a păstrat și stack-ul batch modern din 2026.
-
Lecția 36
Arhitectura medallion: bronze, silver, gold
Trei straturi de rafinare a datelor pentru un lakehouse. De ce fiecare echipă de date modernă folosește o variantă a acestei denumiri, chiar și când nu o numesc 'medallion'.
-
Lecția 37
Lakehouses: Delta, Iceberg, Hudi
Tranzacții ACID peste object storage. Războiul formatelor din 2023-2025 și unde a ajuns industria în 2026.
-
Lecția 38
Batch idempotent: cum faci job-urile sigur de re-rulat
Overwrite vs append vs upsert. Tiparul MERGE. De ce 'job-ul ăsta a rulat de două ori' ar trebui să fie un non-eveniment.
-
Lecția 39
Backfilling și replay
Momentul în care descoperi un bug vechi de șase luni și trebuie să re-rulezi fiecare zi de atunci. Tiparele care fac backfill-urile rutină în loc de terifiante.
-
Lecția 40
Caz real: cum rulează Netflix batch zilnic pe petabyți
Orchestratorul Maestro, adoptarea Iceberg, straturile de optimizare a costurilor care fac batch-ul zilnic pe petabyți să funcționeze.
-
Lecția 41
De ce streaming: date mărginite vs nemărginite
Schimbarea conceptuală de la batch la streaming. De ce 'stream' este doar 'batch cu loturi foarte mici' la limită, și de ce acea limită schimbă designul.
-
Lecția 42
Kafka: log-ul dominant
De ce Kafka a devenit coloana de integrare a arhitecturii moderne. Topic-uri, partiții, consumer groups, offset-uri și garanția at-least-once.
-
Lecția 43
Stream processing: Flink, Kafka Streams, Spark Structured Streaming
Trei motoare pentru procesarea stream-urilor, când se potrivește fiecare și de ce Flink este alegerea grea pentru procesare stateful complexă.
-
Lecția 44
Event time vs processing time, watermarks
Datele care sosesc târziu sunt problema de streaming despre care nu te avertizează nimeni. Event time, watermark-uri și pattern-urile care fac agregările pe ferestre corecte.
-
Lecția 45
Semantici exactly-once în stream-uri
Ce oferă de fapt tranzacțiile Kafka, problema coordonării sursă-sink, limitele și de ce exactly-once peste servicii este greu.
-
Lecția 46
CDC (Change Data Capture) și problema dual-write
Debezium, Maxwell, AWS DMS. Problema dual-write și pattern-ul outbox care o rezolvă.
-
Lecția 47
Arhitectura Lambda vs kappa
Contextul istoric: de ce a existat Lambda, de ce a înlocuit-o Kappa și unde mai are Lambda un rost în 2026.
-
Lecția 48
Caz real: pipeline-urile real-time de la Uber (Marmaray, originea Hudi)
Evoluția Uber de la batch-only la streaming-first, problema de ingestion și proiectul Hudi care a ieșit din ea.
-
Lecția 49
Git pentru echipele de inginerie: strategii de branching care funcționează
Trunk-based, GitHub flow, gitflow. Realitățile la scară mică vs scară mare, când se potrivește fiecare și pattern-urile care au supraviețuit 15 ani de practică.
-
Lecția 50
Trunk-based development: de ce au convers aici majoritatea echipelor moderne
Branch-uri scurte, feature flags, integrare continuă. Pattern-ul pe care Google, Facebook și Microsoft l-au adoptat la scară mare și ce cere ca să funcționeze.
-
Lecția 51
CI pentru data pipelines: testare fără să arzi un cluster
Unit testing pe transformări, integration tests pe sample data, loop-ul de dezvoltare local-first. De ce CI pentru date e diferit de CI pentru servicii web.
-
Lecția 52
CD pentru date: pattern-uri de deployment pentru batch și streaming
Blue-green, canary, dark launch. De ce job-urile de streaming au nevoie de pattern-uri de deploy diferite față de serviciile web și cum se deploy-uiesc job-urile de batch prin propriul lor schedule.
-
Lecția 53
Infrastructure as code: Terraform, Pulumi, CDK
Infrastructură declarativă, problema fișierului de state, workflow-ul GitOps. Trei unelte și unde se potrivește fiecare.
-
Lecția 54
Containere: Docker pentru job-uri de date
Pattern-uri de Dockerfile, multi-stage builds, imaginea de bază potrivită, registry-uri de imagini. Fundamentele de containere pe care fiecare data engineer ar trebui să le știe.
-
Lecția 55
Kubernetes pentru date: ce e bun, ce e rău, ce e necesar
Când e k8s unealta potrivită, când e exagerat, operator pattern și integrările Spark/Airflow care fac data engineering pe Kubernetes să funcționeze.
-
Lecția 56
Caz real: pipeline-ul de deployment al Stripe
Viteza merge-to-deploy, plasa de siguranță a testelor automate, cultura deploy-ca-non-eveniment. Ce dezvăluie practicile de inginerie publicate de Stripe despre CI/CD la scară.
-
Lecția 57
Orchestrare în profunzime: Airflow, Prefect, Dagster, Argo Workflows
Cei patru pretendenți, când câștigă fiecare, încadrarea task-oriented vs asset-oriented și decizia gestionat vs self-hosted.
-
Lecția 58
Orchestrare orientată pe asset-uri (lecția Dagster)
Modelarea tabelelor și fișierelor ca obiecte de prim rang. De ce această abordare se amortizează la scară și ce schimbă în felul în care echipele gândesc pipeline-urile.
-
Lecția 59
Observabilitate pentru date: loguri, metrici, trace-uri, lineage
Cei trei piloni plus lineage. OpenTelemetry, Datadog, Honeycomb. Unelte de lineage (Marquez, OpenLineage, DataHub).
-
Lecția 60
SLO-uri, SLA-uri, error budgets pentru produse de date
Framework-ul Google SRE aplicat la date: 'dashboard-ul actualizat până la 9 dimineața' ca un angajament măsurabil și defensibil.
-
Lecția 61
Calitatea datelor: Great Expectations, Soda, dbt tests
Testarea declarativă a datelor. Cele trei unelte, tiparele care funcționează și capcana supra-testării.
-
Lecția 62
Incident response: runbook-uri, postmortem-uri, cultura blameless
Ciclul de viață al incidentelor de la Google SRE, formatul de runbook care funcționează, postmortem-ul blameless și de ce a repara procesul bate a repara oamenii.
-
Lecția 63
On-call pentru data engineering
Realitățile rotației. Pager hygiene, escalation, hand-off și argumentul pentru mai puține alerte.
-
Lecția 64
Caz real: cum își rulează Airbnb platforma de date
Povestea originii Airflow (Airbnb l-a construit), stratul de metrici Minerva, sistemul de descoperire a datelor Dataportal și framework-ul pentru calitatea datelor. Ce dezvăluie practicile publicate de Airbnb despre rularea unei platforme de date la scară.
-
Lecția 65
Costul cloud-ului: modelul aisbergului
Compute-ul e linia pe care toată lumea o urmărește. Storage, egress, NAT, cross-AZ, request-uri și ingestia de loguri sunt aisbergul de sub linia apei. Unde se duce de fapt factura, și de ce există FinOps.
-
Lecția 66
Optimizarea costului de storage: tiering, lifecycle, compactare
Datele hot sunt o fracțiune mică din totalul de date, dar primesc majoritatea acceselor. Tiering, lifecycle policies și compactarea Parquet sunt pârghiile care aliniază costul de storage cu modul în care datele sunt folosite efectiv.
-
Lecția 67
Optimizarea costurilor de compute: spot, autoscaling, right-sizing
Trei pârghii mută cea mai mare parte a facturii de compute: spot instances pentru workload-uri care tolerează întreruperea, autoscaling care răspunde la încărcare fără să oscileze și right-sizing-ul VM-urilor care sunt în mare parte supradimensionate. Capacitatea rezervată acoperă baseline-ul predictibil.
-
Lecția 68
Costul de rețea: egress, cross-AZ, factura surpriză
Linia cea mai trecută cu vederea de pe factura de cloud. Pricing-ul de egress, traficul cross-AZ, NAT gateways, VPC endpoints și pattern-urile arhitecturale care țin costurile de rețea de la a deveni costul dominant.
-
Lecția 69
Scaling de 10x: ce se rupe, ce supraviețuiește
Exercițiul 10x. Care componente scalează liniar cu putere de calcul, care lovesc ziduri și pattern-urile arhitecturale care supraviețuiesc unui salt de un ordin de mărime în încărcare.
-
Lecția 70
Strategii de caching: CDN, aplicație, bază de date
Cele trei niveluri de cache, cele patru pattern-uri canonice, problema invalidării și cum aperi o cheie fierbinte împotriva stampede-ului care doboară baza de date.
-
Lecția 71
Decizia 'rebuild it cheaper'
Când factura de la vendor devine destul de dureroasă încât a-l construi in-house începe să arate atractiv. Matematica onestă, când rebuild-ul funcționează, când nu și hibridul care învinge des.
-
Lecția 72
Caz real: cum și-a tăiat Pinterest costul de data infra la jumătate
Un program de reducere a costurilor de mai mulți ani pe o platformă de date AWS de mai mulți petabytes. Storage tiering, eficiență Spark, rescrieri de query, right-sizing și schimbările culturale care au făcut economiile să dureze.
-
Lecția 73
Microservices: când da, când nu, revenirea monolitului
Boom-ul microservices din 2015-2020, contraofensiva de după 2021 și modular monolith ca drum de mijloc. Legea lui Conway, taxa pe sisteme distribuite și cum alegi în funcție de mărimea echipei și profilul de scalare.
-
Lecția 74
Event-driven architecture: saga, choreography, orchestration
Servicii care vorbesc emițând evenimente, alegerea între choreography și orchestration, pattern-ul saga și setul de unelte din 2026 (Temporal, Step Functions, Camunda, Argo).
-
Lecția 75
Deployment-uri multi-region: active-active, active-passive, follow-the-sun
De ce echipele aleg multi-region (latență, DR, conformitate, capacitate), cele trei forme de deployment, problemele grele (replicare, conflicte, cost) și când să nu te obosești.
-
Lecția 76
Disaster recovery: RTO, RPO, exercițiul
Ce înseamnă de fapt disaster recovery în practică. Cele patru niveluri DR, RTO și RPO ca butoane de proiectare și disciplina exercițiului care dovedește că planul funcționează.
-
Lecția 77
Arhitectura de securitate: least privilege, defense in depth
Principiile de securitate de care fiecare sistem are nevoie ca arhitectură de portanță. Least privilege, defense in depth, zero trust și controalele IAM și de rețea care transformă principiile în realitate.
-
Lecția 78
Privacy și conformitate: GDPR, CCPA, data residency
Reglementările de privacy ca factori arhitecturali. Dreptul la ștergere, data residency, customer-managed keys și infrastructura de consimțământ și audit pe care cadrele de conformitate le cer.
-
Lecția 79
Arhitectura unei platforme ML: feature store, model registry, serving
Cele cinci straturi pe care s-au standardizat platformele ML moderne, problema de train-serve skew pentru care a fost inventat feature store-ul și calculul build-versus-buy pentru fiecare strat în 2026.
-
Lecția 80
Capstone: proiectează o arhitectură completă pentru o companie fictivă la trei scări
Optzeci de lecții de arhitectură de sistem, condensate într-un singur exercițiu de design. Aceeași companie SaaS fictivă, trei scări, trei arhitecturi, și un tur ghidat al ce se schimbă și de ce. Lecția de încheiere a cursului.