[Balun.Courses] System Design (2023)
[Balun.Courses] System Design (2023)
ΠΠ½Π°ΠΊΠΎΠΌΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ?
ΠΠ° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡΡ middle+ ΠΏΡΠΎΡΡΡ ΠΏΡΠΎΠΉΡΠΈ system design ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ, Π° Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Ρ
ΠΠ° ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ°ΡΡΠΈΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π° Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ Π·Π½Π°Π½ΠΈΠΉ Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠΌΠΎΡΡ
ΠΡΡΡ Π±Π°Π·Π° ΠΏΠΎ system design, Π½ΠΎ Π·Π°ΠΏΠ°Π΄Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΠΌΡ ΠΈ Π΄Π΅ΡΠ°Π»ΠΈ. ΠΠ΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ / Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π΄Π΅Π»Π°Ρ ΠΈΠ»ΠΈ Π½Π΅Ρ
ΠΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΏΠΎ ΡΠΈΠΏΡ Β«Π’Π΅Π»Π΅Π³ΡΠ°ΠΌΒ», Β«Π―Π½Π΄Π΅ΠΊΡ.Π’Π°ΠΊΡΠΈΒ», Β«OzonΒ»
ΠΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡ Π² ΡΠ΅ΡΠΈ
ΠΠ΅ ΠΌΠΎΠ³Ρ ΠΏΡΠΎΡΠ²ΠΈΡΡ ΡΠ΅Π±Ρ Π½Π° ΡΠ°Π±ΠΎΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ΅Ρ Π·Π½Π°Π½ΠΈΠΉ Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
ΠΠ° ΡΡΠΎΠΌ ΠΊΡΡΡΠ΅ 95% Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΏΠΎ system design Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΏΠΎ system design ΡΡ Π·Π°ΠΊΡΠΎΠ΅ΡΡ ΠΠ° ΡΡΠΎΠΌ ΠΊΡΡΡ:
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡΡ ΠΊ ΡΡΡΠ΄ΠΎΡΡΡΡΠΎΠΉΡΡΠ²Ρ Π² ΡΠΎΠΏΠΎΠ²ΡΡ IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ middle+ - ΠΏΠΎΠΉΠΌΠ΅ΡΡ, ΠΈΠ· ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΠΈΡ system design ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ ΠΈ Π½Π°ΡΡΠΈΡΡΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅
Π£Π·Π½Π°Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΡΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΡΠ΅ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ
ΠΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² ΠΈ ΠΏΡΠΈΠ΅ΠΌΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π£Π·Π½Π°Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅
ΠΠ°ΡΡΠΈΡΡΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΡΡΠΈΡΠ°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ, ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ API, Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Π²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ΅Π»ΠΎΠΌ
ΠΠΎΠ²ΡΡΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΠ ΠΈ ΡΠ²ΠΎΡ ΡΠ΅Π½Π½ΠΎΡΡΡ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠ°ΠΊ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°:
Π£ΡΠΎΠΊ 1. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π’Π΅ΡΠΌΠΈΠ½Ρ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
Π€Π°ΠΉΠ»-ΡΠ΅ΡΠ²Π΅Ρ / ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅Ρ / P2P
ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ / ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ / ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ / Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌ
ΠΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ / Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅)
ΠΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΠ΅ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Stateless ΠΈ statefull ΡΠ΅ΡΠ²ΠΈΡΡ
Latency ΠΈ Throughput
SLA / SLO / SLI
Data / compute intensive ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π°Π³ΡΡΠ·ΠΊΠΈ (ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ), (DNS ΠΈ geoDNS Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ°), (l4 / l7), (round robin / weighted round robin / least connections / least response time / least bandwidth / sticky sessions)
ΠΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (forward / reverse)
ΠΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π²Π½ΡΡΡΠ΅Π½Π΅Π΅ / Π²Π½Π΅ΡΠ½Π΅Π΅), (lazy caching / write-through / read-through / write-around), (ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΠ΅Π»Π°Π΄ΠΈ, LRU, SLRU, MRU, LFU, LIFO, FIFO, 2Q, MQ)
API (SOAP, REST, gRPC, GraphQL), (under / over fetching)
Observability (ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠ΅ΠΉΡΠΈΠ½Π³, Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π°Π½Π°Π»ΠΈΠ· ΡΠ±ΠΎΠ΅Π²)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: Π·Π½Π°Π΅ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Ρ, Π±Π΅Π· ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎΠ½ΡΡ: Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ API Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π£ΡΠΎΠΊ 2. Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
OLAP / OLTP
Data retention
ΠΠΎΠΈΡΠΊΠΎΠ²ΡΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ
Π Π΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠ΅ / Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ / key-value / Π³ΡΠ°ΡΠΎΠ²ΡΠ΅ / Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ² / ΠΊΠΎΠ»ΠΎΠ½ΠΎΡΠ½ΡΠ΅ / Blob storage Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Persistent ΠΈ in-memory Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Embedded ΠΈ single file Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠ½Π΄Π΅ΠΊΡΡ (BTree / Hash / Bitmap / Spatial / Inverted), (ΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΡΠ΅ / Π½Π΅ΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΡΠ΅), (ΠΏΠΎΠΊΡΡΠ²Π°ΡΡΠΈΠ΅)
ACID ΠΈ BASE
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ (WAL), (MVCC, 2PL), (Deferrable)
Constraints (NOT NULL, UNIQUE, FOREIGN KEY, CHECK, DEFAULT)
Π₯ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΡΡΠΈΠ³Π³Π΅ΡΡ ΠΈ materialized view
ΠΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ (READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE)
ΠΡΠΎΠΊΠ΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (Kafka, RabitMQ)
CDN
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΈ Π³Π΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ β ΡΠ°Π·Π±Π΅ΡΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΈ ΠΏΠΎΠΉΠΌΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΊΠ°ΠΊΡΡ ΠΈΠ· Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
ΠΠΎΠ½ΡΡ: Π½Π° ΡΡΠΎΠΊΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
Π£ΡΠΎΠΊ 3. Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΡΠΊΠ°ΠΏΡ
CAP ΡΠ΅ΠΎΡΠ΅ΠΌΠ°
Strong / Eventual Consistency
Π Π΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ (ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ / Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ / ΠΏΠΎΠ»Ρ-ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ), (Ρ ΠΎΠ΄Π½ΠΈΠΌ Π²Π΅Π΄ΡΡΠΈΠΌ ΡΠ·Π»ΠΎΠΌ / Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π²Π΅Π΄ΡΡΠΈΠΌΠΈ ΡΠ·Π»Π°ΠΌΠΈ / Π±Π΅Π· Π²Π΅Π΄ΡΡΠΈΡ ΡΠ·Π»ΠΎΠ²), (statement based / row based / mixed), (Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ / ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠ°Ρ), (pull / push), (failover), (hot standby)
Replication lag (ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ / ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ / ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅)
Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΉ
ΠΠ΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π¨Π°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (range based / key based / directory based), (client / proxy / coordinator routing)
ΠΠ΅ΡΠ΅Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° (virtual buckets)
Resharding (consistent / randezvous hashing)
ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kafka
CDC (Debezium
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡ, ΠΊΠ°ΠΊ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ , Π·Π°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠ½ΡΡ: Π½Π° ΡΡΠΎΠΊΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π£ΡΠΎΠΊ 4. ΠΠ°ΡΡΠ΅ΡΠ½Ρ ΠΈ ΠΏΡΠΈΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
CQRS
Pub / sub
Low-latency ΠΈ High-troughput ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Realtime ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ²
Map Reduce
Service discovery
Push ΠΈ pull ΠΌΠΎΠ΄Π΅Π»Ρ
Π’ΠΎΠ»ΡΡΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ
Π’Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΡΡΠ°
Π’ΡΠ΅Ρ Π·Π²Π΅Π½Π½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°
ΠΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ
Polling / long polling / streaming
Retries (ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎΡΡΡ / backoff)
Circuit breaker
Gracefull degradation (fallback)
Rolling, Blue/Green ΠΈ Canary ΡΠ΅Π»ΠΈΠ·Ρ
CΠΎΠ±ΡΡΠΈΠΉΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° (Event Notification / State Transfer / Event Collaboration)
ΠΠΎΠ½ΡΠ΅Π½ΡΡΡ (ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° / Π²ΡΠ±ΠΎΡ Π»ΠΈΠ΄Π΅ΡΠ° / ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: Π·Π½Π°Π΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΠΈ ΠΏΡΠΈΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π»ΡΠ±ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎΠ½ΡΡ: Π²ΠΌΠ΅ΡΡΠ΅ Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡΡ ΡΡΠΈΠΌ ΠΏΠ°ΡΡΠ΅ΡΠ½Π°ΠΌ ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π½Π°ΡΡΠΎΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ»ΠΎΠ².
Π£ΡΠΎΠΊ 5. ΠΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ
ΠΠΈΠ·Π°ΠΉΠ½ Telegram
ΠΠΈΠ·Π°ΠΉΠ½ Π»Π΅Π½ΡΡ Π΄ΡΡΠ·Π΅ΠΉ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅
ΠΠΈΠ·Π°ΠΉΠ½ Π―Π½Π΄Π΅ΠΊΡ Go
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡ Π²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ Ρ ΡΡΠΎΠΊΠΎΠ² Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΠΌΠ΅Π΅ΡΡ ΡΡΡΠΎΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ.
Π£ΡΠΎΠΊ 6. ΠΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ#2
ΠΠΈΠ·Π°ΠΉΠ½ LeetCode
ΠΠΈΠ·Π°ΠΉΠ½ Booking.com
ΠΠΈΠ·Π°ΠΉΠ½ Google Drive
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡ Π²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ Ρ ΡΡΠΎΠΊΠΎΠ² Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΠΌΠ΅Π΅ΡΡ ΡΡΡΠΎΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ.
ΠΠ½Π°ΠΊΠΎΠΌΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ?
ΠΠ° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡΡ middle+ ΠΏΡΠΎΡΡΡ ΠΏΡΠΎΠΉΡΠΈ system design ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ, Π° Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Ρ
ΠΠ° ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ°ΡΡΠΈΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π° Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ Π·Π½Π°Π½ΠΈΠΉ Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠΌΠΎΡΡ
ΠΡΡΡ Π±Π°Π·Π° ΠΏΠΎ system design, Π½ΠΎ Π·Π°ΠΏΠ°Π΄Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΠΌΡ ΠΈ Π΄Π΅ΡΠ°Π»ΠΈ. ΠΠ΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ / Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π΄Π΅Π»Π°Ρ ΠΈΠ»ΠΈ Π½Π΅Ρ
ΠΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΏΠΎ ΡΠΈΠΏΡ Β«Π’Π΅Π»Π΅Π³ΡΠ°ΠΌΒ», Β«Π―Π½Π΄Π΅ΠΊΡ.Π’Π°ΠΊΡΠΈΒ», Β«OzonΒ»
ΠΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡ Π² ΡΠ΅ΡΠΈ
ΠΠ΅ ΠΌΠΎΠ³Ρ ΠΏΡΠΎΡΠ²ΠΈΡΡ ΡΠ΅Π±Ρ Π½Π° ΡΠ°Π±ΠΎΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ΅Ρ Π·Π½Π°Π½ΠΈΠΉ Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
ΠΠ° ΡΡΠΎΠΌ ΠΊΡΡΡΠ΅ 95% Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΏΠΎ system design Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΏΠΎ system design ΡΡ Π·Π°ΠΊΡΠΎΠ΅ΡΡ ΠΠ° ΡΡΠΎΠΌ ΠΊΡΡΡ:
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡΡ ΠΊ ΡΡΡΠ΄ΠΎΡΡΡΡΠΎΠΉΡΡΠ²Ρ Π² ΡΠΎΠΏΠΎΠ²ΡΡ IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ middle+ - ΠΏΠΎΠΉΠΌΠ΅ΡΡ, ΠΈΠ· ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΠΈΡ system design ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ ΠΈ Π½Π°ΡΡΠΈΡΡΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅
Π£Π·Π½Π°Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΡΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΡΠ΅ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ
ΠΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² ΠΈ ΠΏΡΠΈΠ΅ΠΌΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π£Π·Π½Π°Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅
ΠΠ°ΡΡΠΈΡΡΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΡΡΠΈΡΠ°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ, ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ API, Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Π²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ΅Π»ΠΎΠΌ
ΠΠΎΠ²ΡΡΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΠ ΠΈ ΡΠ²ΠΎΡ ΡΠ΅Π½Π½ΠΎΡΡΡ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠ°ΠΊ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°:
Π£ΡΠΎΠΊ 1. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π’Π΅ΡΠΌΠΈΠ½Ρ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
Π€Π°ΠΉΠ»-ΡΠ΅ΡΠ²Π΅Ρ / ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅Ρ / P2P
ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ / ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ / ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ / Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌ
ΠΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ / Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅)
ΠΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΠ΅ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Stateless ΠΈ statefull ΡΠ΅ΡΠ²ΠΈΡΡ
Latency ΠΈ Throughput
SLA / SLO / SLI
Data / compute intensive ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π°Π³ΡΡΠ·ΠΊΠΈ (ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ), (DNS ΠΈ geoDNS Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ°), (l4 / l7), (round robin / weighted round robin / least connections / least response time / least bandwidth / sticky sessions)
ΠΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (forward / reverse)
ΠΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π²Π½ΡΡΡΠ΅Π½Π΅Π΅ / Π²Π½Π΅ΡΠ½Π΅Π΅), (lazy caching / write-through / read-through / write-around), (ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΠ΅Π»Π°Π΄ΠΈ, LRU, SLRU, MRU, LFU, LIFO, FIFO, 2Q, MQ)
API (SOAP, REST, gRPC, GraphQL), (under / over fetching)
Observability (ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠ΅ΠΉΡΠΈΠ½Π³, Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π°Π½Π°Π»ΠΈΠ· ΡΠ±ΠΎΠ΅Π²)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: Π·Π½Π°Π΅ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Ρ, Π±Π΅Π· ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎΠ½ΡΡ: Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ API Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π£ΡΠΎΠΊ 2. Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
OLAP / OLTP
Data retention
ΠΠΎΠΈΡΠΊΠΎΠ²ΡΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ
Π Π΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠ΅ / Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ / key-value / Π³ΡΠ°ΡΠΎΠ²ΡΠ΅ / Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ² / ΠΊΠΎΠ»ΠΎΠ½ΠΎΡΠ½ΡΠ΅ / Blob storage Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Persistent ΠΈ in-memory Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Embedded ΠΈ single file Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠ½Π΄Π΅ΠΊΡΡ (BTree / Hash / Bitmap / Spatial / Inverted), (ΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΡΠ΅ / Π½Π΅ΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΡΠ΅), (ΠΏΠΎΠΊΡΡΠ²Π°ΡΡΠΈΠ΅)
ACID ΠΈ BASE
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ (WAL), (MVCC, 2PL), (Deferrable)
Constraints (NOT NULL, UNIQUE, FOREIGN KEY, CHECK, DEFAULT)
Π₯ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΡΡΠΈΠ³Π³Π΅ΡΡ ΠΈ materialized view
ΠΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ (READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE)
ΠΡΠΎΠΊΠ΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (Kafka, RabitMQ)
CDN
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΈ Π³Π΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ β ΡΠ°Π·Π±Π΅ΡΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΈ ΠΏΠΎΠΉΠΌΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΊΠ°ΠΊΡΡ ΠΈΠ· Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
ΠΠΎΠ½ΡΡ: Π½Π° ΡΡΠΎΠΊΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
Π£ΡΠΎΠΊ 3. Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΡΠΊΠ°ΠΏΡ
CAP ΡΠ΅ΠΎΡΠ΅ΠΌΠ°
Strong / Eventual Consistency
Π Π΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ (ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ / Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ / ΠΏΠΎΠ»Ρ-ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ), (Ρ ΠΎΠ΄Π½ΠΈΠΌ Π²Π΅Π΄ΡΡΠΈΠΌ ΡΠ·Π»ΠΎΠΌ / Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π²Π΅Π΄ΡΡΠΈΠΌΠΈ ΡΠ·Π»Π°ΠΌΠΈ / Π±Π΅Π· Π²Π΅Π΄ΡΡΠΈΡ ΡΠ·Π»ΠΎΠ²), (statement based / row based / mixed), (Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ / ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠ°Ρ), (pull / push), (failover), (hot standby)
Replication lag (ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ / ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅ / ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅)
Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΉ
ΠΠ΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π¨Π°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (range based / key based / directory based), (client / proxy / coordinator routing)
ΠΠ΅ΡΠ΅Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° (virtual buckets)
Resharding (consistent / randezvous hashing)
ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kafka
CDC (Debezium
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡ, ΠΊΠ°ΠΊ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ , Π·Π°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠ½ΡΡ: Π½Π° ΡΡΠΎΠΊΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π£ΡΠΎΠΊ 4. ΠΠ°ΡΡΠ΅ΡΠ½Ρ ΠΈ ΠΏΡΠΈΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
CQRS
Pub / sub
Low-latency ΠΈ High-troughput ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Realtime ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ²
Map Reduce
Service discovery
Push ΠΈ pull ΠΌΠΎΠ΄Π΅Π»Ρ
Π’ΠΎΠ»ΡΡΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ
Π’Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΡΡΠ°
Π’ΡΠ΅Ρ Π·Π²Π΅Π½Π½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°
ΠΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ
Polling / long polling / streaming
Retries (ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎΡΡΡ / backoff)
Circuit breaker
Gracefull degradation (fallback)
Rolling, Blue/Green ΠΈ Canary ΡΠ΅Π»ΠΈΠ·Ρ
CΠΎΠ±ΡΡΠΈΠΉΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° (Event Notification / State Transfer / Event Collaboration)
ΠΠΎΠ½ΡΠ΅Π½ΡΡΡ (ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° / Π²ΡΠ±ΠΎΡ Π»ΠΈΠ΄Π΅ΡΠ° / ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: Π·Π½Π°Π΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΠΈ ΠΏΡΠΈΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π»ΡΠ±ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎΠ½ΡΡ: Π²ΠΌΠ΅ΡΡΠ΅ Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡΡ ΡΡΠΈΠΌ ΠΏΠ°ΡΡΠ΅ΡΠ½Π°ΠΌ ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π½Π°ΡΡΠΎΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ»ΠΎΠ².
Π£ΡΠΎΠΊ 5. ΠΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ
ΠΠΈΠ·Π°ΠΉΠ½ Telegram
ΠΠΈΠ·Π°ΠΉΠ½ Π»Π΅Π½ΡΡ Π΄ΡΡΠ·Π΅ΠΉ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅
ΠΠΈΠ·Π°ΠΉΠ½ Π―Π½Π΄Π΅ΠΊΡ Go
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡ Π²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ Ρ ΡΡΠΎΠΊΠΎΠ² Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΠΌΠ΅Π΅ΡΡ ΡΡΡΠΎΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ.
Π£ΡΠΎΠΊ 6. ΠΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ#2
ΠΠΈΠ·Π°ΠΉΠ½ LeetCode
ΠΠΈΠ·Π°ΠΉΠ½ Booking.com
ΠΠΈΠ·Π°ΠΉΠ½ Google Drive
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡ Π²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ Ρ ΡΡΠΎΠΊΠΎΠ² Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΠΌΠ΅Π΅ΡΡ ΡΡΡΠΎΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ.
favorite
0
star
0
