ืืื ืืืจ!
ืืืืจ ืืืจืืขื ืืงืืจืื ื, ืืกืคืจ ืฉืืจืืชื ืืื ืืจื ื ืืืื ืืงืื ืขืืืก ืืืืืจ. ืืืืืื,
ืืืืืจ ืื ืืืืจ ืืงืฆืจื ืขื ืคืจืงืืืงืืช ืคืืคืืืจืืืช ืฉืืืคืฉืจื ืืื ืืืฆืืจ ืฉืืจืืช ืืืืจ ืืกืืืื ื ืืชืงืืืช. ืขื ืืืช, ืืชืื ืชืืื ืืืช ืืคืืชืื ืืืคืฉืจืืืช, ืืืจืชื ืจืง ืืช ืืื ืฉื ืืฆืืืช ืืจืืข ืงื ืืฉืืืืฉ. ืขืืืจ ืื ืคืจืื, ืื ืฉืืฉ ืื ืกืคืจืืืช ืืืื ืืช, ืื ืฉืืฉ ืื ืืืืื ืืช ืืคืชืืจ ืืช ืืืขืื ืืืืฆืขืืช ืคืืืคืืจืืช ืขื ื.
ืงื ื ืืืื ืืืคืงื
ืื ืงืืื ืืคืฉืืื ืืืืืืขื ืืืืชืจ. ืืืืคื ืงืื ืื ืฆืืื ืื, ืฉืชื ืขืจืืืช ืืืืงืช ืืขืืืก ืื ืคืืฆืืช ืืืืชืจ ืื ืงื ื ืืืื ืืืคืงื ืืื ืื.
ืืืืืื, ืื ื ืืงื ืืืกืื ืงืืฆื ืขื ื ืืืคืฉื, ืืืืืจ ืื ืืืื ืืืฉืื ืฉื OwnCloud, OneDrive ืืื ืืืื.
ืชืืื ื ืกืื ืืจืืืช ืฉื ืืขืื ืืื ื ืืฆืืช ืืืื, ืืื ืืื ืจืง ืืืืืื ืืช ืืืืจืืืืช ืฉื ืืืขืจืืช. ืืืจื ืืื, ืื ืื ื ืฆืจืืืื ืืืืฉืื ืืกื ืืจื ืืช ืืฉืืจืืชืื. ืื ืงืืจื ืื ืืืฉืชืืฉ ืฉืืืจ ืงืืืฅ ืืืืืืื ืืื ืจืืฆื ืืฆืคืืช ืื ืืืืืคืื?
ืืืืื ืืื ืืืืฉืืช: ืืงื ื ืืืื ืื ืื ืื ืื ื ืืืื ืื ืืืืืื ืืช ืืืื ืฉื ืฆืืชืื, ืืืงื ื ืืืื ืืืคืงื ืื ืื ื ืืืื ืื ืืืืกืืฃ ืฆืืชืื ืืืฉืื ืืืืืงืช ืืขืืืก.
CQRS
ืืืื ืืก ืืจืืฉืื ืฉื ืืืฉื ืื ืืื ืืืืืืช ืื ืชืง ืืช ืืงืฉืจ (ืืืืื ืืจืื ืฉื ืืืืื) ืชืื ืืืฆืืข ืืงืฉื ืืจืืื. ืืืืืื, ื ืืงื ืจืฆืฃ ืกืื ืืจืื ืคืืืช ืื ืืืชืจ:
- ืืืงืื ืฉืื ืืงืฉื ืืฉืจืช.
- ืืฉืจืช ืืชืืื ืืื ืขืืืื ืืจืื.
- ืืฉืจืช ืืืื ืืืงืื ืขื ืืชืืฆืื.
ืืืื ื ืืืืื ืฉืื ืงืืื 2 ืืืืืืจ ื ืฉืืจ (ืื ืฉืืจืฉืช ืืชืืืจื ืืืืฉ, ืื ืฉืืืฉืชืืฉ ืืื ืืืฃ ืืืจ, ื ืืชืง ืืช ืืืืืืจ). ืืืงืจื ืื, ืืืื ืงืฉื ืืฉืจืช ืืฉืืื ืชืืืื ืืืฉืชืืฉ ืขื ืืืืข ืขื ืื ืืืืืง ืขืืื. ืืืืฆืขืืช CQRS, ืืจืฆืฃ ืืืื ืืขื ืฉืื ื:
- ืืืงืื ื ืจืฉื ืืขืืืื ืื.
- ืืืงืื ืฉืื ืืงืฉื ืืฉืจืช.
- ืืฉืจืช ืืืื "ืืืงืฉื ืืชืงืืื".
- ืืฉืจืช ืืืื ืขื ืืชืืฆืื ืืจื ืืขืจืืฅ ืื ืงืืื "1".
ืืคื ืฉืืชื ืืืื ืืจืืืช, ืืชืืื ืืช ืงืฆืช ืืืชืจ ืืืจืืืช. ืืชืจื ืืื, ืืืืฉื ืืืื ืืืืืืืืืช ืืืงืฉื-ืชืืืื ืืกืจื ืืื. ืขื ืืืช, ืืคื ืฉืืชื ืืืื ืืจืืืช, ืืคืกืงืช ืืืืืจ ืืืื ืขืืืื ืืงืฉื ืื ืชืืืื ืืฉืืืื. ืืชืจื ืืื, ืื ืืืขืฉื ืืืฉืชืืฉ ืืืืืจ ืืฉืืจืืช ืืืกืคืจ ืืืฉืืจืื (ืืืฉื ืืืืคืื ื ืืื ืืืืืืื), ื ืืชื ืืืืื ืฉืืชืืืื ืืืืขื ืืฉื ื ืืืืฉืืจืื.
ืืขื ืืื ืฉืืงืื ืืขืืืื ืืืืขืืช ื ืื ืกืืช ืืืคื ืืืืืช ืืื (ืื 100%) ืื ืขืืืจ ืืืจืืขืื ืฉืืืฉืคืขื ืืืืงืื ืขืฆืื, ืืื ืขืืืจ ืืืจืืขืื ืืืจืื, ืืืื ืืืื ืฉื ืืงืืืืช ืืืจืื.
ืขื ืืืช, ืืืฆืืืืช ืื ื ืืงืืืื ืืื ืืก ื ืืกืฃ ืืฉื ืืขืืืื ืฉื ืืชื ืืืคื ืืืจืืื ืื ืืืืื ืืช ืืกืื ืื ืคืื ืงืฆืืื ืื (ืืืืฆืขืืช RX ืืืืืื). ืืื ืืืจ ืืชืจืื ืจืฆืื ื, ืืืืืื ืฉืืขืฆื ื ืืชื ืืืคืื ืืช ืืืืฉืื ืืชืืืืชื ืืืืืืื, ืืื ืืืืฆืขืืช ืืืฉื ืคืื ืงืฆืืื ืืืช. ืขืืืจ ืชืืื ืืืช ืฉืืื, ืื ืืืื ืืืกืื ืืฉืืขืืชืืช ืืืฉืืื ืคืืชืื ืืชืืืื.
ืื ื ืฉืื ืืช ืืืืฉื ืืื ืขื ืงื ื ืืืื ืืืคืงื, ืื ืืืื ืืก ื ืงืื ืืช ืืืืืืช ืืฉืืื ืืงืฉืืช ืืฉืจืช ืืื ืืืงืื ืชืืืืืช ืืฉืจืช ืืืจ. ืื ืืืงืื ืืืื ืืืืืจ ืืช ืืฉืืจืืช ืื ืื ืื, ืืืืขืจืืช ืืคื ืื ืขืืืื ืชืืื ืืขืื ื ืืื ืืืจืืขืื.
ืืงืืจืืช ืืืจืืขืื
ืืคื ืฉืืชื ืืืืข, ืืื ืืืืคืืื ืื ืืขืืงืจืืื ืฉื ืืขืจืืช ืืืืืจืช ืืื ืืืขืืจ ืืื ืืฉืืชืฃ, ืงืืข ืงืจืืื ืืฉืืชืฃ. ืขืืืจ ืชืืืื ืืื, ืืชื ืืืื ืืขืฉืืช ืกื ืืจืื (ืขื ืืืชื mutexes), ืฉืืชืืื ืืชื ืืืื ืฉืืฃ ืืื ืืืจ ืื ืืืฆืข ืืช ืืงืื ืืื. ืขื ืืืช, ืื ืืกืืื ืขืืืจ ืืขืจืืช ืืืืืจืช, ืฉืื ืื ืืืจืืฉ ืชืงืืจื, ืืื ืืืจืื ืืช ืื ืืืืคื ืฉื ืงื ื ืืืื - ืื ืืจืืืืื ืขืืืื ืืืชืื ื ืืืื.
ืืืื ืื ื ืืงืืืื ืขืืืื ืืฉืืื - ืื ื ืืชื ืืกื ืืจื ืืขืจืืช ืืืืืจืช ืืืืจื, ืื ืื ื ืคืืืช ืืช ืืืืฆืืขืื. ืืฆื ืฉื ื, ืืขืชืื ืงืจืืืืช ืื ื ืืงืืงืื ืืขืงืืืืช ืืกืืืืช ืืื ืจืืืืื. ืืืฉืืื ืื ืืชื ืืืื ืืืฉืชืืฉ ืืืืฉื ืขื
ืืฉืื ืืืืื ืื ืขืืืจ ืืกืื ื ืชืื ืื ืงืืืกืืื ืืื ืืฉืืฉ ืืขืชืื ืงืจืืืืช ืืืื
ืขื ืืืช, ืืืื ื ืืืืจ ืืืฉืืื ืืืงืืจืืช. ืื ื ืืชื ืืื ืืช ืขื ืืืง ืืืืขืจืืช
ืชืืื ืืช ืืฉืืืืช ืฉื ืืืฉื ืื:
- ืื ืืงืฉื ื ืื ืกืช ืืืืงืืช ืืชืืจ ืืื.
- ืืืื ืขืืืื ืืงืฉื, ืืฉืืจืืช ืขืฉืื ืืืฆืื ืืฉืืืืช ืื ืืชืืจืื ืืืจืื.
- ืืื ืืืจืืข ื ืื ืก ืืฉ ืืืื (ืืืืจืื ืืื ืืขืช ืืคืืืืืืช).
- ืืชืืจ ืขืืื ืืืืืืืืืืืช ืืคื ืชืื ืืช "ืืืกืฃ ืืืื". ืื ื ืืชื ืืืกืืจ ืืื ื ืืืื ืืื ืื ืืกืืจ ืืืชื ืืืืฉ.
- ืืชืืจ ืขืืื ืืคื ืกืืืืช FIFO (ืกืืืื ืขื ืืืืืืืืืืื). ืื ืืชื ืฆืจืื ืืขืฉืืช ืืืฆืืข ืืงืืื, ืื ืืฉืื ืืกืืื ืืชื ืฆืจืื ืืืขืืืจ ืืืืืืงืืื ืืชืืจืื ืฉืื ืื.
ืืจืฉื ืื ืืืืืืจ ืืื ืฉืื ื ืฉืืงืืื ืืช ืืืงืจื ืฉื ืืืกืื ืงืืฆืื ืืงืืื. ืืืงืจื ืื, ืืืขืจืืช ืชืืจืื ืืขืจื ืื:
ืืฉืื ืฉืืฉืืจืืชืื ืืชืจืฉืื ืื ืืืืจื ืืชืืืื ืื ืืฉืจืช ื ืคืจื. ืืคืืื ืืชืืืื ืขืฉืื ืืืืืช ืืื. ืืืจ ื ืืกืฃ ืืฉืื: ืืืืื ื ืืืืืืืืืืืช, ืืืืจืื ืืืื ืืืคืจืืื ืืฆืืจื ืืื ืฉื ืืชื ืืืืฉื ืืงืืืช ืงื ื ืืืื ืืืคืงื.
ืืขืืืจ ืฉื ื ืืฉืชืืฉืื ืืืืืืจืื ืชืืจืื ืื (ืฉืืจืืชืื ืืืืืขืืื ืืืฉืชืืฉืื ืฉืื ืื ืืกืืื ืื ืืฆืืขืื ืฉืื ืื):
ืืื ืืกืื ืืฉืืืื ืืื:
- ืฉืืจืืชื ืขืืืื ืืืืข ืืืคืจืืื. ืื ืืชืืจืื ืืืคืจืืื. ืื ืื ืื ื ืฆืจืืืื ืืืืืื ืืช ืชืคืืงืช ืืืขืจืืช, ืื ืื ืื ื ืจืง ืฆืจืืืื ืืืฉืืง ืฉืืจืืชืื ื ืืกืคืื ืขื ืืืชืจ ืฉืจืชืื.
- ืืืฉืจ ืื ื ืืงืืืื ืืืืข ืืืฉืชืืฉ, ืืื ื ื ืฆืจืืืื ืืืืืช ืขื ืฉืื ืชืื ืื ืืืฉืืจื ืืืืืืื. ืืืืคื, ืื ืื ื ืจืง ืฆืจืืืื ืืขื ืืช "ืืกืืจ" ืืื ืืืชืืื ืืขืืื ืืืืจืื. ืืืงืืื, ืืชืืจ ืืืืืง ืฉืืืื, ืฉืื ืืืกืคืช ืืืืืืงื ืืืฉ ืืชืจืืฉืช ืืืืืจืืช, ืืืืฉืชืืฉ ืื ืฆืจืื ืืืืชืื ืืืขืืจ ืฉืื ืฉื ืื ืืืืืืจ.
- ืืืืืื, ืืืกืคืชื ืฉืืจืืช ืื ืืขืช ืืคืืืืืืช ืฉืื ืกื ืืืื ืงืืฆืื ืืืื. ืื ืื ืขืืื ืืืืจื ืืื ื-1% ืืืืงืจืื, ืืืงืื ืืงืืฉื ืืฉืื ืื ืืื (ืจืื ืืืขืื), ืืื ืืชืจืื ืืืื, ืฉืื ืื ืื ื ืืืจ ืื ื ืืจืฉืื ืืืืืช XNUMX% ืืืืจืื ืืืืื ืื.
ืขื ืืืช, ืืืกืจืื ืืช ื ืจืืื ืืื:
- ืืืขืจืืช ืฉืื ื ืืืืื ืืช ืขืงืืืืชื ืืงืคืื ืืช. ืื ืืืืจ ืฉืื, ืืืฉื, ืืชื ืื ืื ืืฉืืจืืชืื ืฉืื ืื, ืื ืชืืืืจืืืช ืืชื ืืืื ืืงืื ืืฆื ืฉืื ื (ืฉืื ืืืื ืืฉืืจืืชืื ืื ืืืื ืืื ืืงืื ืืืืขื ืืืชืืจ ืืคื ืืื). ืืชืืฆืื ื ืืกืคืช, ืืืขืจืืช ืืื ืืขืช ืืื ืืฉืืชืฃ. ืืืืืจ, ืื ืืคืฉืจ, ืืืฉื, ืืืืื ืืช ืื ืืืืจืืขืื ืคืฉืื ืืคื ืืื ืืืขื, ืืืืืื ืฉืืฉืขืื ืื ืืื ืฉืจืชืื ืขืฉืืืื ืฉืื ืืืืืช ืกืื ืืจืื ืืื (ืืชืจื ืืื, ืืืชื ืืื ืืฉื ื ืฉืจืชืื ืืื ืืืืืคืื).
- ืืขืช ืื ื ืืชื ืคืฉืื ืืืืืืจ ืืืจืืขืื ืืืืืจ (ืืคื ืฉื ืืชื ืืขืฉืืช ืขื ืืกื ื ืชืื ืื). ืืืงืื ืืืช, ืขืืื ืืืืกืืฃ ืืืจืืข ืืืฉ -
ืืืจืืข ืคืืฆืื , ืืฉืจ ืืฉื ื ืืช ืืืฆื ืืืืจืื ืืืฆื ืื ืืจืฉ. ืืืืืื ืืชืืื ืืืื: ืืื ืืฉืืชื ืืช ืืืืกืืืจืื (ืฉืื ืจืข ืืืงืจืื ืืกืืืืื), ืืชื ืื ืืืื ืืืืืืจ commit ืืืืืจ ื-git, ืืื ืืชื ืืืื ืืขืฉืืช ืืืืืืืชืืืืืืช ืืืืืจ , ืฉืืขืฆื ืจืง ืืืืืจ ืืช ืืืฆื ืืืฉื. ืขื ืืืช, ืื ืืืชืืืืืืช ืืฉืืืื ืืื ืืืืืจื ืืืืืจ ืืืฉืืจื ืืืืกืืืจืื. - ืกืืืืช ืื ืชืื ืื ืขืฉืืื ืืืฉืชื ืืช ืืฉืืจืืจ ืืืจืกื, ืื ืื ื ืืชื ืืืื ืืขืืื ืขืื ืืืจืืขืื ืืฉื ืื ืืชืงื ืืืืฉ (ืืืืืื ืฉืื ื ืืชื ืืฉื ืืช ืืืจืืขืื ืขืงืจืื ืืช).
ืืคื ืฉืืชื ืืืื ืืจืืืช, ืืงืืจืืช ืืืจืืขืื ืขืืืืื ืืืื ืขื CQRS. ืืชืจื ืืื, ืืืืขืช ืืขืจืืช ืขื ืชืืจืื ืืขืืืื ืื ืืืื, ืื ืืื ืืคืจืืช ืชืืจืืื ื ืชืื ืื, ืืืจ ืงืฉื ืืคื ื ืขืฆืื, ืื ืชืฆืืจืื ืืืืกืืฃ ื ืงืืืืช ืกื ืืจืื ืฉืื ืืจืื ืืช ืื ืืืฉืคืขื ืืืืืืืช ืฉื ืืชืืจืื. ืืืืช ืฉืชื ืืืืฉืืช ืืืช ืืืช, ืืฉ ืฆืืจื ืืืชืืื ืืขื ืืช ืงืื ืืชืืื ืืช. ืืืงืจื ืฉืื ื, ืืฉืฉืืืืื ืงืืืฅ ืืฉืจืช, ืืชืืืื ืืืืขื ืจืง "ืืกืืจ", ืื ืฉืืืืจ ืจืง ืฉ"ืคืขืืืช ืืืกืคืช ืืงืืืฅ ื ืฉืืจื". ืคืืจืืืืช, ืื ืื ืืืืจ ืฉืื ืชืื ืื ืืืจ ืืืื ืื ืืืืฉืืจืื ืืืจืื (ืืืืืื, ืฉืืจืืช ืื ืืขืช ืืืคืืืืืืช ืืืื ืืื ืืช ืืืืฉ ืืช ืืืื ืืงืก). ืขื ืืืช, ืืืืจ ืืื ืื, ืืืงืื ืืงืื ืืืืขื ืืกืื ืื "ืงืืืฅ X ื ืฉืืจ".
ืืชืืฆืื:
- ืืกืคืจ ืืกืืืืกืื ืฉื ืฉืืืืช ืงืืฆืื ืืืื ืืืื: ืืืงืื "ืืงืืืฅ ื ืฉืื" ืืงืืืกื ื ืงืื ืฉื ืืื: "ืืงืืืฅ ืืชืืืกืฃ ืืชืืจ ืืฉืจืช" ื"ืืงืืืฅ ื ืฉืืจ ืืืืกืื". ืื ืืืืจืื ืืืืจ ืฉืืืฉืืจืื ืืืจืื ืืืจ ืืืืืื ืืืชืืื ืืงืื ืืช ืืงืืืฅ (ืืืชืื ืืขืืืื ืฉืืชืืจืื ืคืืขืืื ืืืืืจืืืืช ืฉืื ืืช).
- ืืฉื ืืขืืืื ืฉืืืืข ืืืืฉื ืืืืข ืืขืช ืืขืจืืฆืื ืฉืื ืื, ืขืืื ื ืืืืฆืื ืคืชืจืื ืืช ืืงืืืช ืกืืืืก ืืขืืืื ืฉื ืืงืืืฅ. ืืชืืฆืื ืืื: ืื ืืืื ืืืงืฉื-ืชืืืื ืืงืืืกืืช, ื ืืชื ืืืคืขืื ืืืืฉ ืืช ืืืงืื ืชืื ืืื ืขืืืื ืืงืืืฅ, ืื ืืกืืืืก ืฉื ืขืืืื ืื ืขืฆืื ืืืื ื ืืื. ืืชืจ ืขื ืื, ืคืจืื ืื ืขืืื, ืืขืฆื, ืืืืฅ ืืงืืคืกื. ืืชืืฆืื ืืื: ืืขืช ืื ื ืกืืืื ืืื ืืืชืจ ืืืืฉืืื ืืช.
Sharding
ืืคื ืฉืชืืืจ ืืขืื, ืืขืจืืืช ืืืงืืจ ืืืจืืขืื ืืกืจืืช ืขืงืืืืช ืงืคืื ืืช. ืื ืืืืจ ืฉืื ืื ื ืืืืืื ืืืฉืชืืฉ ืืืกืคืจ ืืืกืื ืืื ืื ืกื ืืจืื ืืื ืืื. ืืืชืงืจืืืช ืืืขืื ืฉืื ื, ืื ื ืืืืืื:
- ืืคืจื ืงืืฆืื ืืคื ืกืื. ืืืืืื, ื ืืชื ืืคืขื ื ืชืืื ืืช/ืกืจืืื ืื ืืืืืืจ ืคืืจืื ืืขืื ืืืชืจ.
- ืืคืจื ืืฉืืื ืืช ืืคื ืืืื ื. ืขืงื ืืืงืื ืจืืื, ืื ืขืฉืื ืืืืืจืฉ, ืืื ืชืืื ืืช ืืจืืืืงืืืจื ืื ืืกืคืงืช ืืืืื ืืช ืืื ืืืืคื ืืืืืืื
ืื ืืชื ืจืืฆื ืืืขืืืจ ื ืชืื ืื ืืืืกืื ืืื ืืืฉื ืื, ืื ืืืืฆืขืื ืืกืื ืืจืืืื ืืื ื ืืกืคืืงืื ืขืื. ืืืจืื ืืฆืขืจ, ืืืงืจื ืื, ืขืืื ืืขืฆืืจ ืืช ืืชืืจ, ืืืฆืข ืืช ืืืขืืจื ืืืืืจ ืืื ืืืชืืื ืืืชื. ืืืงืจื ืืืืื, ืื ื ืืชื ืืืขืืืจ ื ืชืื ืื "ืืชื ืืขื", ืขื ืืืช, ืื ืชืืจ ืืืืจืืขืื ืืืืืกื ืืืืืืื, ืืืฉ ืื ืฆืืืืื ืืฆื ืฉื ืืฆืื ืืืกืื ืงืืืืื, ื ืืื ืืืคืขืื ืืืืฉ ืืช ืืืืจืืขืื ืืืืคื ืืื:
- ืืืงืืจ ืืืืจืืข, ืืื ืืืจืืข ืืฉ ืืืื ืืฉืื (ืืืืคื ืืืืืืื, ืื ืคืืืช). ืื ืืืืจ ืฉืื ืื ื ืืืืืื ืืืืกืืฃ ืฉืื ืืืืกืื - ืืืืื ืฉื ืืืืื ื ืืืขืืื ืืืืจืื.
- ืื ื ืืฉืืคืืื ืืช ืืชืืจ ืื ืฉื ืืชื ืืืื ืืขืื ืืช ืื ืืืืจืืขืื ืขืืืจ ืืกืคืจ ืืืกืื ืขืฆืืื (ืืจืืฉืื ืืื ืื ืฉืื ืื ืชืื ืื ืืืจ ืืืืืกื ืื, ืืืฉื ื ืืืฉ, ืื ืขืืืื ืจืืง). ืืชืืจ ืืฉื ื, ืืืืื, ืขืืืื ืื ืืขืืืื.
- ืื ื ืืฉืืงืื ืืช ืืชืืจ ืืฉื ื (ืืืืืจ, ืื ื ืืชืืืืื ืืืคืขืื ืืืืฉ ืืืจืืขืื).
- ืืืฉืจ ืืชืืจ ืืืืฉ ืจืืง ืืืกืืช (ืืืืืจ, ืืคืจืฉ ืืืื ืืืืืฆืข ืืื ืืืกืคืช ืืืื ื ืืืืืืจ ืืงืืื), ื ืืชื ืืืชืืื ืืืืืืฃ ืงืืจืืื ืืืืกืื ืืืืฉ.
ืืคื ืฉืืชื ืืืื ืืจืืืช, ืื ืืืืชื ืื ื, ืืขืืืื ืืื ืื ื, ืขืงืืืืช ืงืคืื ืืช ืืืขืจืืช ืฉืื ื. ืืฉ ืจืง ืขืงืืืืช ืืกืืคื ืฉื ืืืจ, ืืืืืจ, ืขืจืืื ืืื ืฉืืืจืืขืื ืืขืืืืื ืืืืชื ืกืืจ (ืื ืืืื ืืขืืืืืื ืฉืื ืื). ืืืืืฆืขืืช ืื, ืื ื ืืืืืื ืืืขืืืจ ื ืชืื ืื ืืงืืืช ืืืกืืช ืืืื ืืขืฆืืจ ืืช ืืืขืจืืช ืืฆื ืืฉื ื ืฉื ืืืืจ ืืืจืฅ.
ืืคืืื, ืืืืฉื ืืืืืื ืฉืื ื ืืืื ืืืกืื ืืงืืื ืืงืืฆืื, ืืจืืืืงืืืจื ืืื ืืืจ ื ืืชื ืช ืื ื ืืกืคืจ ืืื ืืกืื:
- ืื ื ืืืืืื ืืืขืืืจ ืืืืืืงืืื ืงืจืื ืืืชืจ ืืืฉืชืืฉืื ืืฆืืจื ืืื ืืืช. ืื ืชืืืื ืืฉืคืจ ืืช ืืืืืช ืืฉืืจืืช.
- ืื ื ืขืฉืืืื ืืืืกื ื ืชืื ืื ืืกืืืืื ืืชืื ืืืจืืช. ืืืืืื, ืืฉืชืืฉืื ืืจืืื ืืื ืืืจืฉืื ืืขืชืื ืงืจืืืืช ืฉืื ืชืื ืื ืฉืืื ืืืืืกื ื ืืืจืืื ื ืชืื ืื ืืืืงืจืื (ืืื ืืื ืืข ืืืืคืืช ื ืชืื ืื). ืืืืฆืขืืช ืจืืกืืง ืื ื ืืืืืื ืืชืืื ืืื ืืงืืืช. ืืืืฉืืื ืงืื ืขืื ืืืชืจ ืื ืืืงืื ืืฉ ืขื ื ืชืืื (ืืืืืื,
Azure ืืชืืจื ืืขืฆืื ). - ืืืืืจ ืืื ืืฉืื ืืื ืฉืื ืื ื ืื ืฆืจืืืื ืืขืฉืืช ืืช ืื. ืืืจื ืืื, ืืืืชืืืื, ืืืื ื ืื ืืจืืฆืื ืืืืกืื ืืื ืืื ืืืฉืืื ืืช (ืืื ืืืชืืื ืืขืืื ืืืืืจืืช). ืืืชืืื ื ืืืจืืืืช ืฉื ืืขืจืืช ืื ืืื ืฉืืืจืืช ืฉืืื ื ืืชื ืช ืืืจืืื, ืืฉืื ืืจืืฉืื ื ืืื ืื ืคืฉืืื. ืืชื ืคืฉืื ืื ืฆืจืื ืืืชืื ืืื ืงืื ืฉืขืืื ืขื ืืืืืื ืชืืจืื ืขืฆืืืืื ื ืคืจืืื ืืื'. ืืืืืช ืืฆืืจื, ื ืืชื ืืขืฉืืช ืืืช ืืขืชืื.
ืืืจืื ืชืืื ืกืืื
ื ืงืืื ืื ืขืฉืืื ืืืืจืืืช ืื ืืจืืจื, ืื ืืื ืขืืืื ื ืืืฆื ืขืืืจ ืืืฉืื ืืขืื ืคืืืช ืื ืืืชืจ ืกืื ืืจืื. ืืืืืช ืฉืื ืคืฉืืื: ืื ืืชืืื ืืกืืื ืืืคืฅ ืื ืืืืชื ืฉืจืช ืฉืื ืืืืงืืช ืืืคืืืงืฆืื, ืืื ืืืื ืืืืืืื ืืืืงืืฉืื ืืืืืื ืืืฉืืื ืื. ืืชืืฆืื ืืื, ืคืขืืืืช ืืื ืืืืฆืขืืช ืืืจ ืืืชืจ (nginx ืืืชื ื ืืฉืจืช ืงืืฆืื ืืืจ ืืืชืจ ืืืื ืืืชืจ ืืฉืจืช Java). ืื ืืกืฃ ืืจืืืืงืืืจืช CDN (
ืืืืืื ืืคืฉืืื ืืืกืื ืืจืืืช ืืืืชืจ ืืชืืื ืกืืื ืืื ืงืืืฆื ืฉื ืกืงืจืืคืืื ืืชืืื ืืช ืขืืืจ ืืชืจ ืืื ืืจื ื. ืืื ืคืฉืื ืืฆืื - ืื ืืืืขืื ืืจืืฉ, ืืื ืืืจืืืื ืืืขืื ืืฉืจืชื CDN, ืืฉื ืื ืืืคืฆืื ืืืฉืชืืฉื ืืงืฆื.
ืขื ืืืช, ืืืฆืืืืช, ืขืืืจ ืชืืื ืกืืื, ืืชื ืืืื ืืืฉืชืืฉ ืืืืฉื ืืืืื ืืืงืฆืช ืืืจืืืืงืืืจืช ืืืืื. ื ืืืืจ ืืืฉืืื ืฉืื ื (ืืืกืื ืงืืฆืื ืืงืืื), ืื ืื ื ืฆืจืืืื ืืืคืืฅ ืงืืฆืื ืืืฉืชืืฉืื. ืืคืชืจืื ืืคืฉืื ืืืืชืจ ืืื ืืืฆืืจ ืฉืืจืืช ืฉืืื ืืงืฉืช ืืฉืชืืฉ ืืืฆืข ืืช ืื ืืืืืงืืช ืื ืืจืฉืืช (ืืจืฉืื ืืื'), ืืืืืจ ืืื ืืืจืื ืืช ืืงืืืฅ ืืฉืืจืืช ืืืืืกืื ืฉืื ื. ืืืืกืจืื ืืขืืงืจื ืฉื ืืืฉื ืื ืืื ืฉืชืืื ืกืืื (ืืงืืืฅ ืขื ืืจืกื ืืกืืืืช ืืื ืืืขืฉื ืชืืื ืกืืื) ืืืคืฅ ืขื ืืื ืืืชื ืฉืจืช ืฉืืืื ืืช ืืืืืืื ืืขืกืงื. ืืืงืื ืืืช, ืืชื ืืืื ืืืฆืืจ ืืช ืืชืจืฉืื ืืื:
- ืืฉืจืช ืืกืคืง ืืชืืืช URL ืืืืจืื. ืื ืืืื ืืืืืช ืืฆืืจืช file_id + key, ืืืฉืจ ืืคืชื ืืื ืืชืืื ืืื ื-ืืืืืืืืช ืืืขื ืืงื ืืช ืืืืืช ืืืฉืช ืืืฉืื ืืืฉื XNUMX ืืฉืขืืช ืืงืจืืืืช.
- ืืงืืืฅ ืืืคืฅ ืขื ืืื nginx ืคืฉืื ืขื ืืืคืฉืจืืืืช ืืืืืช:
- ืฉืืืจืช ืชืืื ืืืืืื. ืืืืช ืืฉืืจืืช ืื ืืืื ืืืืืช ืืืืงื ืืฉืจืช ื ืคืจื, ืืฉืืจื ื ืืขืฆืื ื ืขืชืืื ืืขืชืื ืขื ืืืืืืช ืืืืกื ืืช ืื ืืงืืฆืื ืืืืจืื ืื ืฉืืืจืืช ืืืืกืง.
- ืืืืงืช ืืืคืชื ืืืื ืืฆืืจืช ืืืืืืจ
- ืืืคืฆืืื ืื: ืขืืืื ืชืืื ืืกืืจืืืื ื. ืืืืืื, ืื ืื ื ืืืืกืื ืืช ืื ืืงืืฆืื ืืฉืืจืืช, ืื ื ืืื ืืืฆืข unzipping ืืฉืืจืืช ืืืืืื ืื. ืืชืืฆืื ืืื: ืคืขืืืืช IO ื ืขืฉืืช ืืืื ืฉืื ืฉืืืืืช. ืืจืืืื ื-Java ืืงืฆื ืืงืืืช ืืจืื ืืืืจืื ื ืืกืฃ, ืืื ืฉืืชืื ืฉืืจืืช ืขื ืืืืืื ืขืกืงื ืืชื ืื Rust/C++ ืขืฉืื ืืืืืช ืื ืื ืืขืื. ืืืงืจื ืฉืื ื, ื ืขืฉื ืฉืืืืฉ ืืชืืืืืื ืฉืื ืื (ืื ืืคืืื ืฉืืจืืชืื), ืืืื ืื ื ืืืืืื ืืืคืจืื ืืฆืืจื ืืขืืื ืืืื ืืื ืืืืืงื ืขืกืงืืช ืืคืขืืืืช IO.
ืกืืืื ืื ืืื ื ืืืื ืืืื ืืืคืฆืช ืชืืื ืกืืื (ืืืืจ ืฉืืื ื ื ืืขืืื ืืช ืื ืืืืืื ืืกืืืืช ืืื ืฉืื), ืื ืืืขืฉื, ืืืฉื ืื ืขืืกืงืช ืืืืืง ืืืคืฆืช ื ืชืื ืื ืืืชื ื ืืชื ืื ืืฉืื ืื. ืืชืจ ืขื ืื, ื ืืชื ืืืืืื ืืช ืืกืืืื ืืื ืืืงืจืื ืืืจืื ืฉืืื ืืชืืื ืืื ื ืคืฉืื ืกืืื, ืืื ืืืื ืืืืืช ืืืืฆื ืืงืืืฆื ืฉื ืืืืงืื ืืืชื ื ืืชื ืื ืืฉืื ืื ืืื ื ืืชื ืื ืืืืืงื (ืื ืื ื ืืชื ืืืืกืืฃ ืืืชื).
ืืืืืื ื ืืกืคืช (ืืืืืืง): ืื ืขืืืช ืขื Jenkins/TeamCity, ืื ืืชื ืืืืข ืฉืฉื ื ืืคืชืจืื ืืช ืืชืืืื ื-Java. ืฉื ืืื ืื ืชืืืื ื'ืืืื ืฉืืืคื ืื ืืชืืืืจ ืื ืืื ืืื ืื ืืืื ืชืืื. ืืคืจื, ืืฉื ืืื ืืฉ ืืฉืืืืช ืืื "ืืขืืจืช ืงืืืฅ/ืชืืงืื ืืืฉืจืช." ืืืืืื: ืื ืคืงืช ืืคืฆืื, ืืขืืจืช ืงืื ืืงืืจ (ืืฉืืกืืื ืื ืืืจืื ืืช ืืงืื ืืฉืืจืืช ืืืืืืจ, ืืื ืืฉืจืช ืขืืฉื ืืืช ืขืืืจื), ืืืฉื ืืืืืื. ืื ืืืฉืืืืช ืืืื ืฉืื ืืช ืืขืืืก ื-IO ืฉืืื. ืืืืืจ, ืืกืชืืจ ืฉืืฉืจืช ืืืืจืื ืขื ืืืืืืื ืืขืกืงื ืืืืจืื ืืืื ืืืงืืื ืืืืืช ืืกืืื ืืืืืฃ ืืืขืืืืช ืืจืืืืช ืืืืืืช ืฉื ื ืชืื ืื ืืจืื. ืืื ืฉืืื ืืขื ืืื ืื ืฉืืคืฉืจ ืืืืฆืื ืคืขืืื ืืื ืืืืชื nginx ืืืืืง ืืคื ืืืชื ืกืืื (ืืืฅ ืืื ืฉืฆืจืื ืืืืกืืฃ ืืช ืืคืชื ืื ืชืื ืื ืืืงืฉื).
ืขื ืืืช, ืื ื ืืืืจ ืืืขืจืืช ืฉืื ื, ื ืงืื ืชืจืฉืื ืืืื:
ืืคื ืฉืืชื ืืืื ืืจืืืช, ืืืขืจืืช ืืคืื ืืืจืืืช ืืืชืจ ืืืืคื ืงืืฆืื ื. ืขืืฉืื ืื ืื ืจืง ืืื ื-ืชืืืื ืฉืืืืกื ืงืืฆืื ืืืืคื ืืงืืื. ืขืืฉืื ืื ืฉื ืืจืฉ ืืื ืื ืืชืืืื ืืคืฉืืื ืืืืชืจ, ืืงืจืช ืืจืกืืืช API ืืื'. ืืื, ืืืืจ ืฉืจืืื ืื ืืชืจืฉืืืื, ืขืืืฃ ืืืขืจืื ืืคืืจืื ืืื ืืืจืืื ืฉืืื ืืช ืืขืืืช. ืขื ืืืช, ืื ืืชื ืจืืฆื ืืืืืช ืืกืืื ืืืจืืื ืืช ืืืขืจืืช (ืืืื ืืขืืื ืขื ืืกืคืจ ืืืื ืขืื ืืืชืจ ืฉื ืืฉืชืืฉืื), ืื ืชืฆืืจื ืืืืช ืขื ืคืชืจืื ืืช ืืืืื. ืืื, ืืชืืฆืื ืืื, ืืืขืจืืช ืืืื ื ืืืืื ื ืืจืืืืงืืื ืืช ืืขืืืก ืืืืืจ (ื ืืชื ืืฉืื ืืืขื ืื ืจืืื ืืฆืืจื ืงื ื ืืืื ืืืคืงื). ื ืืชื ืืขืืื ืืช ืืืขืจืืช ืืืื ืืขืฆืืจ ืืืชื (ืคืฉืื ืืืง ืืืคืขืืืืช ืืืืื ืืขื).
ืืคื ืฉืืืจืชื ืืืชืืื, ืืขืช ืืกืคืจ ืฉืืจืืชื ืืื ืืจื ื ืืืื ืืงืื ืขืืืก ืืืืืจ. ืืืืงื ืคืฉืื ืืชืืืื ืืืคืกืืง ืืขืืื ืืื ืฉืฆืจืื. ืืืขืฉื, ืืืขืจืืืช ืืฉืื ืืืืงื ืืจืืข ืฉืื ืืขืกืง ืืื ืืืืจ ืืืจืืืื ืืกืฃ. ืืืืืจ, ืืืงืื ืืฉืืื ืืืื, ืืืงืื ืืืฆืืข ืืืงืืืืช "ืืชืื ื ืืช ืืืฉืืื ืืืืืฉืื ืืงืจืืืื", ืืืขืจืืช ืคืฉืื ืืืจื "ืืื ืืืชืืจืื ืฉืืื". ืืืขืฉื, ืืื ืืืืืจ ืฉื ืคืจืืืืงืืืืืืช ื ืืืื: ืืคืกืืื ืืชืจืืฉื ืืืืงื ืืืฉืจ ืืจืืืืื ืืืื ืืืืืืื ืืืืชืจ.
ืืกืงื ื
ืื ืืืืฉืืช ืืืื ืืื ืืืืขืืช ืืขืืจ. ืืืชื VK ืืืจ ืืืื ืืฉืชืืฉ ืืจืขืืื ืฉื ืืืจืื ืชืืื ืกืืื ืืื ืืืฆืื ืชืืื ืืช. ืืจืื ืืฉืืงืื ืืงืืื ืื ืืฉืชืืฉืื ืืกืืืืช Sharding ืืื ืืืืง ืฉืืงื ืื ืืืืืจืื ืื ืืื ืืืคืจืื ืืื ืืืงืืื ืืฉืืงืื (ืื ืืขืืื ืขืฆืื ืืื ืืื). ื ืขืฉื ืฉืืืืฉ ืคืขืื ืืืืฉืช ืืืงืืจ ืืืืจืืขืื ืืืื"ื. ืจืื ืืืฉืืื ืืืกืืจ ืฉืืื ื ืชืื ืื ืืชืงืืืื ืื ืืืื ืื ืืืื ืืืขืฉื ืขื ืืืฉืช CQRS ืขื ืื ืช ืืืืืช ืืกืืืืื ืืกื ื ืืช ืื ืชืื ืื ืฉืืชืงืืื. ืืืื, ืงื ื ืืืื ืืืคืงื ื ืืฆื ืืฉืืืืฉ ืืฉืืจืืชืื ืจืืื ืืืฉื ืืื ืจื ืืืื.
ืขื ืืืช, ืืืื ืืฉืื, ืื ืืืคืืกืื ืืืื ืืคืื ืงืืื ืืืื ืืืืฉืื ืืืืฉืืืื ืืืืจื ืืื (ืื ืื ืืชืืืืื, ืืืืื). ืขื ื ืื ืืฆืืขืื Sharding ืืฉืื ืื ืงื ื ืืืื ืืืคืงื ืืื, ืืื ืืจืื ืืืชืจ ืงื ืืืฉืจ ืืืืืื ืฉืจืชืื ืืืขืืืืื ืฉืื ืื ืืืจืืื ื ืชืื ืื ืฉืื ืื ืืขืฆืื. CQRS ืืคื ืืืจืื ืืืชืจ ืงื, ืืื ืจืง ืืืื ืืคืืชืื ืฉื ืกืคืจืืืช ืืื RX. ืืคื ื ืืขืฉืจ ืฉื ืื, ืืชืจ ื ืืืจ ืืืื ืืชืืื ืืื. ืื ืืืงืืจ ืืืจืืขืื ืงื ืืืคืืื ืืืชืงื ื ืืืืืช ืืืืืืื ืืืื ืื ืขื Apache Kafka. ืืคื ื 10 ืฉื ืื ืื ืืื ืืืืืฉ, ืขืืฉืื ืื ืืืจ ืฉืืฉืืจื. ืื ืืืชื ืืืจ ืขื ืืืกืื ืชืืื ืกืืื: ืืืื ืืื ืืืืืืืช ื ืืืืช ืืืชืจ (ืืืื ืืขืืืื ืฉืืฉ ืชืืขืื ืืคืืจื ืืืืืจ ืืืื ืฉื ืชืฉืืืืช), ืืืฉื ืื ืืคืื ืืคืฉืืื ืขืื ืืืชืจ.
ืืชืืฆืื ืืื, ืืืืฉืื ืฉื ืืกืคืจ ืืคืืกืื ืืืจืืืืืื ืืืจืืืื ืืืื ืืคื ืืขืช ืืืจืื ืืืชืจ ืคืฉืื, ืื ืฉืืืืจ ืฉืขืืืฃ ืืืกืชืื ืขื ืื ืืงืจืื ืืจืืฉ. ืื ืืืคืืืงืฆืื ืืช ืขืฉืจ ืฉื ืื ื ืื ื ืืื ืืืคืชืจืื ืืช ืืขืื ืืืื ืืขืืืช ืืืืืื ืฉื ืืืฉืื ืืชืคืขืื, ืืขืช, ืืืคืืืงืฆืื ืืืฉื, ืื ืืืืจ ืขืืืื ืืืืฉ, ื ืืชื ืืืฆืืจ ืฉืืจืืช ืฉืืืจ ืืืื ื ืืชื ืืืจืืื ืืืืื ื ืืจืืืืงืืื ืืช ( ืืืื ืืื ืฉื ืืืฆืืขืื) ืืืงืฉืืช ืืืฉืืช ืืืงืืืืช ืืืื ืืช (ืืืืืื, ืืืชืืื ื ืชืื ืื ืืืฉืืื).
ืืืื ืืฉืื: ื ื ืื ืืืฉืชืืฉ ืืืืฉืืช ืืืื ืื ืืฉ ืื ืืคืืืงืฆืื ืคืฉืืื. ืื, ืื ืืคืื ืืืขื ืืื ืื, ืืื ืืืชืจ ืขื ืืืงืืจ ืฉืื ืฉื 100 ืืืฉ, ืืคืฉืจ ืืืกืชืืจ ืืจืื ืคืขืืื ืขื ืืื ืืืื ืงืืืกื (ืืคืืืช ืืืืืฅ, ืืื ืืคื ืื ื ืืชื ืืืืง ืืืืืืืื ืืื').
ืืงืืจ: www.habr.com