рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд╛рд╕реНрддреБ рдкреИрдЯрд░реНрди

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░!


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


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЙрди рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рддреЗрдЬрд╝ рдФрд░ рджреЛрд╖-рд╕рд╣рдирд╢реАрд▓ рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд╛рд╕ рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЪреБрдирд╛ рдЬреЛ рдЕрдм рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ ред рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╛ рддреЛ рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдпрд╛ рдЖрдк рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ


рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдЖрдЗрдЯрдоред рд╕рдореНрдореЗрд▓рди рджреНрд╡рд╛рд░рд╛, рд╕рдмрд╕реЗ рдЖрдо рджреЛ рд▓реЛрдб рд╕рдВрддреБрд▓рди рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ - рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЙрдирдХреЗ рдмреАрдЪ рд▓реЛрдб рдХрд╛ рд╡рд┐рддрд░рдг рд╣реЛрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдореЗрдВ, рдЖрдк рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЖрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВ рдпрд╛ рдХреЛрдб рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВред


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рдПрдХ рдЕрдореВрд░реНрдд рдХреНрд▓рд╛рдЙрдб рдлрд╝рд╛рдЗрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рд▓реВрдВрдЧрд╛, рд╡рд╣ рд╣реИ, рдЦреБрдж рдХреНрд▓реЙрдХ, рд╡рдирдбреНрд░рд╛рдЗрд╡ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХреБрдЫ рдПрдирд╛рд▓реЙрдЧред


рдРрд╕реА рдпреЛрдЬрдирд╛ рдХрд╛ рдорд╛рдирдХ рдЪрд┐рддреНрд░ рдиреАрдЪреЗ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдЯреИрдмрд▓реЗрдЯ рд╕реЗ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реИ рдФрд░ рддрдм рдЙрд╕реЗ рдлреЛрди рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?



: , тАФ , .


CQRS


Command Query Responsibility Segregation , , . , ( ) . : . , A, .


тАФ ( ) . - :


  1. .
  2. .
  3. .

, 2 ( , , ). , . CQRS, :


  1. .
  2. .
  3. ┬л ┬╗.
  4. ┬л1┬╗.


, . , request-response . , . , (, ), , .


, ( 100%) , , , .


, ( RX ). , , . .


, , . , , .


Event Sourcing


, , . ( ), , . , , тАФ .


тАФ , . , . eventual consistency, , - (┬л ┬╗) .


, , ( , ). - , тАФ .


. eventual consistency, .



:


  • .
  • .
  • ( ).
  • "append only". .
  • FIFO ( ). , .

, . , , :



, . . : , .


(, , ):



:


  • . . , .
  • , . , ┬л┬╗, . , , .
  • , . 1% , (. ), , .

:



, 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 ( , ..).


All Articles