рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!
рд╡рд░реНрддрдорд╛рди рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ, рдХреЛрд░реЛрдирд╛рд╡рд╛рдпрд░рд╕ рдХреЗ рдХрд╛рд░рдг, рдХрдИ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗрд╡рд╛рдУрдВ рдиреЗ рдПрдХ рдмрдврд╝рд╛ рд╣реБрдЖ рднрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреВрдХреЗ рдореЗрдВ рдЦреБрджрд░рд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдСрдирд▓рд╛рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ , рдХреНрдпреЛрдВрдХрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рдереАред рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдЬреЛрдбрд╝рдХрд░ рдПрдХ рд╕рд░реНрд╡рд░ рдХреЛ рдЧрддрд┐ рджреЗрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╛ рд╡реЗ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдПрдВрдЧреЗ)ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЙрди рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рддреЗрдЬрд╝ рдФрд░ рджреЛрд╖-рд╕рд╣рдирд╢реАрд▓ рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд╛рд╕ рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЪреБрдирд╛ рдЬреЛ рдЕрдм рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ ред рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╛ рддреЛ рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдпрд╛ рдЖрдк рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ
рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдЖрдЗрдЯрдоред рд╕рдореНрдореЗрд▓рди рджреНрд╡рд╛рд░рд╛, рд╕рдмрд╕реЗ рдЖрдо рджреЛ рд▓реЛрдб рд╕рдВрддреБрд▓рди рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ - рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЙрдирдХреЗ рдмреАрдЪ рд▓реЛрдб рдХрд╛ рд╡рд┐рддрд░рдг рд╣реЛрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдореЗрдВ, рдЖрдк рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЖрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВ рдпрд╛ рдХреЛрдб рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рдПрдХ рдЕрдореВрд░реНрдд рдХреНрд▓рд╛рдЙрдб рдлрд╝рд╛рдЗрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рд▓реВрдВрдЧрд╛, рд╡рд╣ рд╣реИ, рдЦреБрдж рдХреНрд▓реЙрдХ, рд╡рдирдбреНрд░рд╛рдЗрд╡ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХреБрдЫ рдПрдирд╛рд▓реЙрдЧред
рдРрд╕реА рдпреЛрдЬрдирд╛ рдХрд╛ рдорд╛рдирдХ рдЪрд┐рддреНрд░ рдиреАрдЪреЗ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдЯреИрдмрд▓реЗрдЯ рд╕реЗ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реИ рдФрд░ рддрдм рдЙрд╕реЗ рдлреЛрди рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

: , тАФ , .
CQRS
Command Query Responsibility Segregation , , . , ( ) . : . , A, .
тАФ ( ) . - :
- .
- .
- .
, 2 ( , , ). , . CQRS, :
- .
- .
- ┬л ┬╗.
- ┬л1┬╗.

, . , request-response . , . , (, ), , .
, ( 100%) , , , .
, ( RX ). , , . .
, , . , , .
Event Sourcing
, , . ( ), , . , , тАФ .
тАФ , . , . eventual consistency, , - (┬л ┬╗) .
, , ( , ). - , тАФ .
. eventual consistency, .

:
- .
- .
- ( ).
- "append only". .
- FIFO ( ). , .
, . , , :

, . . : , .
(, , ):

:
- . . , .
- , . , ┬л┬╗, . , , .
- , . 1% , (. ), , .
:
- . , , , , ( ). , . , , , ( , тАФ ).
- ( ). тАФ compensation event, . : ( ) git , rollback commit, . , rollback.
- , ( ).
, Event Sourcing CQRS. , , , , , . , . , , ┬л┬╗, , ┬л ┬╗. , , (, ). ┬л ┬╗.
:
- : ┬л ┬╗ : ┬л ┬╗ ┬л ┬╗. , ( , ).
- - , , , . : request-response, , . , , . : .
Sharding
, event sourcing . - . , :

, . , , , . ┬л ┬╗ , , , , :
- Event Source ( тАФ ). тАФ id .
- , ( тАФ , , тАФ , ). , , .
- ( ).
- (.. ), .
, , . eventual constistency, , (, , ). , , .
, , :
- , . .
- . , Enterprise ( ). sharding . , (, Azure self hosted).
- тАФ . ( ). тАФ , . , .. , .
Static Content Hosting
, - . : , , , . , ( nginx , , Java-). CDN (Content Delivery Network) , .
тАФ . тАФ , CDN , .
- . ( ), . тАФ , ( ), . тАФ ( , , ) , -. , :
- URL . file_id + key, key тАФ - , .
- nginx :
- : . , , . : IO , . Java , - Rust/C++ . ( ), IO .

( -), . , , , ( ).
( ): Jenkins/TeamCity, , Java. Java-, , . , " / ". : , ( , ), . IO. , , -, . , nginx' ( ).
, :

, . -, . , API .. , , , . ( ), . , , ( ). (- ).
, - . . , . , ┬л ┬╗, ┬л ┬╗. , : , .
. VK Static Content Hosting . - Sharding ( ). Event Sourcing . , , CQRS , . .
, , ( , ). Sharding , , . CQRS - , RX. 10 web . Event Sourcing Apache Kafka. 10 , . Static Content Hosting: - ( , ), .
, , . , , , , , ( ), (, ).
: , , , . , , 100 ( , ..).