ΠΠ΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ Π½ΡΠ»Ρ. ΠΡΠ΅ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π±ΡΠΊΠ΅Π½Π΄Π°, ΡΡΠΎΠ²Π΅Π½Ρ junior, middle, ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ: β’ Node.js β’PostgreSQL β’Redis β’S3 (MinlO/AWS/Yandex Cloud) β’BullMQ / Rabbit MQ β’Meilisearch / Elasticsearch 1. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΄ΡΠΎ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Real-time (Collaboration En β’ Π‘Π΅ΡΠ²Π΅Ρ WebSocket / WebRTC: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ
Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ
ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΈΠ½Π³ΠΎΠ² (heartbeat). β’ Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ (CRDT / OT): β’ ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π±ΡΠΊΠ΅Π½Π΄-ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄Π»Ρ Y.js (Node.js + Hocuspocus) β’ Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²: Π΅ΡΠ»ΠΈ Π΄Π²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ»ΠΎΠ²ΠΎ, Π±ΡΠΊΠ΅Π½Π΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ±Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. β’ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ½Π°ΡΠ°ΠΌΠΈ (Rooms/Presence): ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅, ΠΈ Π²Π΅ΡΠ°Π½ΠΈΠ΅ (broadcast) ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΈΡ
ΠΊΡΡΡΠΎΡΠΎΠ² ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌ ΡΠ΅ΡΠ΅Π· Redis Pub/Sub. 2. Π‘ΠΎΠ·Π΄Π°ΡΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β’ Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² (Snapshots & Deltas): β’ Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° (ΡΠ»Π΅ΠΏΠΎΠΊ/ΡΠ½ΠΈΠΌΠΎΠΊ). β’ Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Π΄Π΅Π»ΡΡ), ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Β«ΠΎΡΠΊΡΡΡΠΈΡΡΒ» Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. β’ ΠΡΡΠΎΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ (Version Control): ΠΠΎΠ³ΠΈΠΊΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ
ΡΠΎΡΠ΅ΠΊ (Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 10 ΠΌΠΈΠ½ΡΡ ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ). Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ
Π²Π΅ΡΡΠΈΠΉ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°. β’ ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ
: ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡ
Π΅ΠΌΡ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΠ (PostgreSQL) Π΄Π»Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
(ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, ΠΏΠ°ΠΏΠΊΠΈ, ΠΏΡΠ°Π²Π°) ΠΈ NoSQL/Blob-Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ². 3. Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° (Auth & RBAC) β’ ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: Π½ΠΎΠΌΠ΅ΡΡ ΡΠ΅Π»Π΅ΡΠΎΠ½Π° ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ β’ ΠΠ°ΡΡΠΈΡΠ° ΠΏΡΠ°Π² (RBAC/ABAC): ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠ°Π² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅: β’ ΠΠ»Π°Π΄Π΅Π»Π΅Ρ (Owner), Π Π΅Π΄Π°ΠΊΡΠΎΡ (Editor), ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΎΡ (Commenter), Π§ΠΈΡΠ°ΡΠ΅Π»Ρ (Viewer). β’ ΠΠ°ΡΠΈΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ ΠΎΡ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ β’ ΠΠ°ΡΡΡΠΎΠΈΡΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π·Π°Π΄Π°Ρ (Task Queues): ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ (BullMQ Π΄Π»Ρ Node.js) β’ ΠΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ ΠΈ ΠΠΊΡΠΏΠΎΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ²: β’ ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ PDF ΠΈΠ· HTML/JSON Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° (ΡΠ΅ΡΠ΅Π· Headless Chrome / Puppeteer). β’ ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ .docx ΡΠ°ΠΉΠ»ΠΎΠ² (ΡΠ΅ΡΠ΅Π· Pandoc ΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ). β’ ΠΠ°ΡΡΠΈΠ½Π³ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠ΅. ΠΡΠ΅ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Ρ
ΠΎΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΡΠ°ΡΡΠ°ΠΏΠ΅ Π·Π° Π΄ΠΎΠ»Ρ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ΅.