рдбреЙрдХрд░ рд╣реЗ рдЦреЗрд│рдгреЗ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА? рдХрд┐рдВрд╡рд╛ рддреЗ рдЕрдЬреВрдирд╣реА рдЖрд╣реЗ?

рд╣реЕрд▓реЛ рдкреНрд░рддреНрдпреЗрдХрдЬрдг!

рдорд▓рд╛ рдЦрд░реЛрдЦрд░ рдереЗрдЯ рд╡рд┐рд╖рдпрд╛рд╡рд░ рдЬрд╛рдпрдЪреЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдорд╛рдЭреНрдпрд╛ рдХрдереЗрдмрджреНрджрд▓ рдереЛрдбреЗрд╕реЗ рд╕рд╛рдВрдЧрдгреЗ рдЕрдзрд┐рдХ рдпреЛрдЧреНрдп рд╣реЛрдИрд▓:

рдиреЛрдВрдж

рдореА рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЖрд╣реЗ рдЬреНрдпрд╛рд▓рд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдлреНрд░рдВрдЯрдПрдВрдб рд╕рд┐рдВрдЧрд▓ рдкреЗрдЬ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕, рд╕реНрдХрд╛рд▓рд╛/рдЬрд╛рд╡рд╛ рдЖрдгрд┐ рдиреЛрдбрдЬ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рдЖрд╣реЗ.

рдмрд░реНтАНрдпрд╛рдЪ рдХрд╛рд│рд╛рдкрд╛рд╕реВрди (рдирд┐рд╢реНрдЪрд┐рддрдкрдгреЗ рджреЛрди рдХрд┐рдВрд╡рд╛ рддреАрди рд╡рд░реНрд╖реЗ), рдорд╛рдЭреЗ рдордд рд╣реЛрддреЗ рдХреА рдбреЙрдХрд░ рд╣реЗ рд╕реНрд╡рд░реНрдЧрд╛рддреАрд▓ рдордиреНрдирд╛ рдЖрд╣реЗ рдЖрдгрд┐ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рдПрдХ рдЕрддрд┐рд╢рдп рдЫрд╛рди рд╕рд╛рдзрди рдЖрд╣реЗ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд╕рдХрд╛рдиреЗ рддреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕рд╛рд╡реЗ. рдЖрдгрд┐ рдпрд╛рд╡рд░реВрди рдЕрд╕реЗ рджрд┐рд╕реВрди рдпреЗрддреЗ рдХреА рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд╕рдХрд╛рдиреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рдорд╢реАрдирд╡рд░ рдбреЙрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рдорд╛рдЭреНрдпрд╛ рдорддрд╛рдмрджреНрджрд▓ рдХрд╛рдп, рддреНрдпрд╛рдЪ hh рд╡рд░ рдкреЛрд╕реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд░рд┐рдХреНрдд рдЬрд╛рдЧрд╛ рдкрд╣рд╛. рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдХрдВрджрд╛рдд рдбреЙрдХрд░рдЪрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЕрд╕рддреЛ рдЖрдгрд┐ рддреЛ рддреБрдордЪреНрдпрд╛ рдорд╛рд▓рдХреАрдЪрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рд╣рд╛ рддреБрдордЪрд╛ рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдлрд╛рдпрджрд╛ рдЕрд╕реЗрд▓ ЁЯШЙ

рдорд╛рдЭреНрдпрд╛ рд╡рд╛рдЯреЗрд╡рд░, рдореА рдбреЙрдХрд░ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдордмрджреНрджрд▓ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рднрд┐рдиреНрди рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рд╕рд╣ рдЕрдиреЗрдХ рд▓реЛрдХрд╛рдВрдирд╛ рднреЗрдЯрд▓реЛ. рдХрд╛рд╣реАрдВрдиреА рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдХреА рд╣реА рдПрдХ рд╕реЛрдпреАрд╕реНрдХрд░ рдЧреЛрд╖реНрдЯ рдЖрд╣реЗ рдЬреА рдХреНрд░реЙрд╕-рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреА рд╣рдореА рджреЗрддреЗ. рджреБрд╕рд░реНтАНрдпрд╛рд▓рд╛ рддреЗ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдХрд╛ рдЪрд╛рд▓рд╡рд╛рд╡реЗ рдЖрдгрд┐ рддреНрдпрд╛рддреВрди рдХрд╛рдп рдлрд╛рдпрджрд╛ рд╣реЛрдИрд▓ рд╣реЗ рд╕рдордЬрдд рдирд╡реНрд╣рддреЗ, рддрд┐рд╕рд░реНтАНрдпрд╛рд▓рд╛ рдЕрдЬрд┐рдмрд╛рдд рдкрд░реНрд╡рд╛ рдирд╡реНрд╣рддреА рдЖрдгрд┐ рддреНрд░рд╛рд╕ рдЭрд╛рд▓рд╛ рдирд╛рд╣реА (рддреНрдпрд╛рдВрдиреА рдлрдХреНрдд рдХреЛрдб рд▓рд┐рд╣рд┐рд▓рд╛ рдЖрдгрд┐ рдШрд░реА рдЧреЗрд▓реЗ - рдорд▓рд╛ рддреНрдпрд╛рдВрдЪрд╛ рд╣реЗрд╡рд╛ рд╡рд╛рдЯрддреЛ. рдорд╛рд░реНрдЧ :)

рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХрд╛рд░рдгреЗ

рдореА рдбреЙрдХрд░ рдХрд╛ рд╡рд╛рдкрд░рд▓рд╛? рдмрд╣реБрдзрд╛ рдЦрд╛рд▓реАрд▓ рдХрд╛рд░рдгрд╛рдВрдореБрд│реЗ:

  • рдбреЗрдЯрд╛рдмреЗрд╕ рд▓рд╛рдБрдЪ, 99% рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреНрдпрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддрд╛рдд
  • рдлреНрд░рдВрдЯрдПрдВрдб рд╡рд┐рддрд░рдгрд╛рд╕рд╛рдареА nginx рд▓рд╛рдБрдЪ рдХрд░рдгреЗ рдЖрдгрд┐ рдмреЕрдХрдПрдВрдбрд╡рд░ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдгреЗ
  • рддреБрдореНрд╣реА рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдирд▓рд╛ рдбреЙрдХрд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рдкреЕрдХреЗрдЬ рдХрд░реВ рд╢рдХрддрд╛, рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдорд╛рдЭрд╛ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдЬрд┐рдереЗ рдЬрд┐рдереЗ рдбреЙрдХрд░ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕реЗрд▓ рддрд┐рдереЗ рдХрд╛рдо рдХрд░реЗрд▓, рд╡рд┐рддрд░рдг рд╕рдорд╕реНрдпрд╛ рддрд╛рдмрдбрддреЛрдм рд╕реЛрдбрд╡рд▓реА рдЬрд╛рдИрд▓
  • рдмреЙрдХреНрд╕рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рд╕реЗрд╡рд╛ рд╢реЛрдз, рдЖрдкрдг рдорд╛рдпрдХреНрд░реЛрд╕рд░реНрд╡реНрд╣рд┐рд╕реЗрд╕ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛, рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ (рд╕рд╛рдорд╛рдиреНрдп рдиреЗрдЯрд╡рд░реНрдХрд╢реА рдХрдиреЗрдХреНрдЯ рдХреЗрд▓реЗрд▓реЗ) рдЙрдкрдирд╛рдорд╛рджреНрд╡рд╛рд░реЗ рд╕рд╣рдЬрдкрдгреЗ рджреБрд╕рд░реНтАНрдпрд╛рдкрд░реНрдпрдВрдд рдкреЛрд╣реЛрдЪреВ рд╢рдХрддреЛ, рдЕрддрд┐рд╢рдп рд╕реЛрдпреАрд╕реНрдХрд░
  • рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рддреНрдпрд╛рдд "рдкреНрд▓реЗ" рдХрд░рдгреЗ рдордЬреЗрджрд╛рд░ рдЖрд╣реЗ.

рдбреЙрдХрд░рдмрджреНрджрд▓ рдорд▓рд╛ рдиреЗрд╣рдореА рдХрд╛рдп рдЖрд╡рдбрдд рдирд╛рд╣реА:

  • рдорд╛рдЭрд╛ рдЕрд░реНрдЬ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдорд▓рд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдбреЙрдХрд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдЬрд░ рдорд╛рдЭреЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ jre рдХрд┐рдВрд╡рд╛ nodejs рд╡рд░ рдЪрд╛рд▓рдд рдЕрд╕рддреАрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рддрд╛рд╡рд░рдг рдЖрдзреАрдЪ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЕрд╕реЗрд▓ рддрд░ рдорд▓рд╛ рдпрд╛рдЪреА рдЧрд░рдЬ рдХрд╛ рдЖрд╣реЗ?
  • рдЬрд░ рдорд▓рд╛ рдорд╛рдЭреА (рдЦрд╛рдЬрдЧреА) рд╕реНрдерд╛рдирд┐рдХрд░рд┐рддреНрдпрд╛ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реА рдкреНрд░рддрд┐рдорд╛ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЪрд╛рд▓рд╡рд╛рдпрдЪреА рдЕрд╕реЗрд▓, рддрд░ рдорд▓рд╛ рдорд╛рдЭреНрдпрд╛ рд╕реНрд╡рдд: рдЪреНрдпрд╛ рдбреЙрдХрд░ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ, рдорд▓рд╛ рдХреБрдареЗрддрд░реА рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдорд▓рд╛ https рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдХрд╛рд░рдг рдбреЙрдХрд░ рдХреНрд▓реА рдлрдХреНрдд https рд╡рд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдЕрд░реЗрд░реЗ... рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд, рдЕрд░реНрдерд╛рддрдЪ, рдкреНрд░рддрд┐рдорд╛ рд╕реНрдерд╛рдирд┐рдХрд░рд┐рддреНрдпрд╛ рдЬрддрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА docker save рдЖрдгрд┐ рдлрдХреНрдд scp рджреНрд╡рд╛рд░реЗ рдкреНрд░рддрд┐рдорд╛ рдкрд╛рдард╡рд╛... рдкрдг рддреНрдпрд╛рдд рд╢рд░реАрд░рд╛рдЪреНрдпрд╛ рдЕрдиреЗрдХ рд╣рд╛рд▓рдЪрд╛рд▓реА рдЖрд╣реЗрдд. рдЖрдгрд┐ рдпрд╛рд╢рд┐рд╡рд╛рдп, рдЬреЛрдкрд░реНрдпрдВрдд рддреБрдордЪреА рд╕реНрд╡рддрдГрдЪреА рд░рд┐рдкреЙрдЭрд┐рдЯрд░реА рджрд┐рд╕рдд рдирд╛рд╣реА рддреЛрдкрд░реНрдпрдВрдд рддреЗ "рдХреНрд░рдЪ" рд╕реЛрд▓реНрдпреВрд╢рдирд╕рд╛рд░рдЦреЗ рджрд┐рд╕рддреЗ
  • docker-compose. рд╣реЗ рдлрдХреНрдд рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЗрддрдХрдВрдЪ. рддреЛ рджреБрд╕рд░реЗ рдХрд╛рд╣реА рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. Docker-compose рддреНрдпрд╛рдЪреНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕рдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдЪрд╛ рд╕рдореВрд╣ рдЖрд╣реЗ, рддреНрдпрд╛рдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдЖрд╣реЗ. рддреЗ рдХрд┐рддреАрд╣реА рдШреЛрд╖рдгрд╛рддреНрдордХ рдЕрд╕рд▓реЗ рддрд░реА рдорд▓рд╛ рддреНрдпрд╛рдВрдЪреА рдХрд╛рдЧрджрдкрддреНрд░реЗ рд╡рд╛рдЪрд╛рдпрдЪреА рдирд╛рд╣реАрдд. рдорд▓рд╛ рддреНрдпрд╛рдЪреА рдЗрддрд░ рдХреБрдареЗрд╣реА рдЧрд░рдЬ рднрд╛рд╕рдгрд╛рд░ рдирд╛рд╣реА.
  • рдЯреАрдордордзреНрдпреЗ рдХрд╛рдо рдХрд░рддрд╛рдирд╛, рдмрд╣реБрддреЗрдХ рд▓реЛрдХ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдЕрддрд┐рд╢рдп рдХреБрдЯрд┐рд▓рдкрдгреЗ рд▓рд┐рд╣рд┐рддрд╛рдд, рддреЗ рдХрд╕реЗ рдХреЕрд╢реЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рд╣реЗ рд╕рдордЬрдд рдирд╛рд╣реА, рддреНрдпрд╛рдВрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдирд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдЧреЛрд╖реНрдЯреА рдкреНрд░рддрд┐рдореЗрдордзреНрдпреЗ рдЬреЛрдбрд╛, рдбреЙрдХрд░рд╣рдм рдХрд┐рдВрд╡рд╛ рдЦрд╛рдЬрдЧреА рднрд╛рдВрдбрд╛рд░рд╛рдд рдирд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдорд╛рдВрдордзреВрди рд╡рд╛рд░рд╕рд╛ рдорд┐рд│рд╡рд╛, рдХрд╛рд╣реА рддрдпрд╛рд░ рдХрд░рд╛. docker-compose рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдпрд▓реА рдЖрдгрд┐ рдХрд╛рд╣реАрд╣реА рдЯрд┐рдХрдд рдирд╛рд╣реА. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рд╡рд┐рдХрд╛рд╕рдХ рдЕрднрд┐рдорд╛рдирд╛рдиреЗ рдШреЛрд╖рд┐рдд рдХрд░рддрд╛рдд рдХреА рдбреЙрдХрд░ рдЫрд╛рди рдЖрд╣реЗ, рд╕рд░реНрд╡ рдХрд╛рд╣реА рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдЖрдгрд┐ рдПрдЪрдЖрд░ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдореНрд╣рдгрдЬреЗ рд░рд┐рдХреНрдд рдЬрд╛рдЧреЗрд╡рд░ рд▓рд┐рд╣рд┐рддреЛ: "рдЖрдореНрд╣реА рдбреЙрдХрд░ рд╡рд╛рдкрд░рддреЛ рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрд╢рд╛ рдХрд╛рдорд╛рдЪрд╛ рдЕрдиреБрднрд╡ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЙрдореЗрджрд╡рд╛рд░рд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ."
  • рдорд▓рд╛ рд╕рддрдд рдбреЙрдХрд░рдордзреАрд▓ рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╡рд╛рдврд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡рд┐рдЪрд╛рд░рд╛рдВрдиреА рдкрдЫрд╛рдбрд▓реЗ рдЖрд╣реЗ: postgresql, kafka, redis. рд╣реЗ рдЦреЗрджрдЬрдирдХ рдЖрд╣реЗ рдХреА рд╕рд░реНрд╡ рдХрд╛рд╣реА рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА, рд╕рд░реНрд╡рдХрд╛рд╣реА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЖрдгрд┐ рдЪрд╛рд▓рд╡рдгреЗ рд╕реЛрдкреЗ рдирд╛рд╣реА. рд╣реЗ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡рд┐рдХрд╕рдХрд╛рдВрджреНрд╡рд╛рд░реЗ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ, рдЖрдгрд┐ рд╕реНрд╡рддрдГ рд╡рд┐рдХреНрд░реЗрддреНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рдирд╛рд╣реА. рдЖрдгрд┐ рддрд╕реЗ, рдкреНрд░рд╢реНрди рддреНрд╡рд░рд┐рдд рдЙрджреНрднрд╡рддреЛ: рд╡рд┐рдХреНрд░реЗрддреЗ рдбреЙрдХрд░рдордзреНрдпреЗ рддреНрдпрд╛рдВрдЪреА рдЙрддреНрдкрд╛рджрдиреЗ рд░рд╛рдЦрдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд│рдЬреА рдХрд░рдд рдирд╛рд╣реАрдд, рд╣реЗ рдХрд╛ рдЖрд╣реЗ, рдХрджрд╛рдЪрд┐рдд рддреНрдпрд╛рдВрдирд╛ рдХрд╛рд╣реАрддрд░реА рдорд╛рд╣рд┐рдд рдЕрд╕реЗрд▓?
  • рдХрдВрдЯреЗрдирд░ рдбреЗрдЯрд╛рдЪреНрдпрд╛ рдЯрд┐рдХреВрди рд░рд╛рд╣рдгреНрдпрд╛рдмрджреНрджрд▓ рдиреЗрд╣рдореАрдЪ рдкреНрд░рд╢реНрди рдЙрджреНрднрд╡рддреЛ. рдЖрдгрд┐ рдордЧ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд╛рдЯрддреЗ, рдореА рдлрдХреНрдд рд╣реЛрд╕реНрдЯ рдбрд┐рд░реЗрдХреНрдЯрд░реА рдорд╛рдЙрдВрдЯ рдХрд░рд╛рд╡реА рдХрд┐рдВрд╡рд╛ рдбреЙрдХрд░ рд╡реНрд╣реЙрд▓реНрдпреВрдо рддрдпрд╛рд░ рдХрд░рд╛рд╡рд╛ рдХрд┐рдВрд╡рд╛ рдбреЗрдЯрд╛ рдХрдВрдЯреЗрдирд░ рдмрдирд╡рд╛рд╡рд╛ рдЬреЛ рдЖрддрд╛ рдЖрд╣реЗ deprecated? рдореА рдбрд┐рд░реЗрдХреНрдЯрд░реА рдорд╛рдЙрдВрдЯ рдХреЗрд▓реНрдпрд╛рд╕, рдХрдВрдЯреЗрдирд░рдордзреАрд▓ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪрд╛ uid рдЖрдгрд┐ gid рдХрдВрдЯреЗрдирд░ рд▓рд╛рдБрдЪ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдЖрдпрдбреАрд╢реА рдЬреБрд│рдд рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЕрдиреНрдпрдерд╛ рдХрдВрдЯреЗрдирд░рджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рд░реВрдЯ рдЕрдзрд┐рдХрд╛рд░рд╛рдВрд╕рд╣ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддреАрд▓. рдореА рд╡рд╛рдкрд░рд▓реНрдпрд╛рд╕ volume рдордЧ рдбреЗрдЯрд╛ рдлрдХреНрдд рдХрд╛рд╣реА рдордзреНрдпреЗ рддрдпрд╛рд░ рд╣реЛрдИрд▓ /usr/* рдЖрдгрд┐ рдкрд╣рд┐рд▓реНрдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдкреНрд░рдорд╛рдгреЗрдЪ uid рдЖрдгрд┐ gid рд╕рд╣ рд╕рдорд╛рди рдХрдерд╛ рдЕрд╕реЗрд▓. рддреБрдореНрд╣реА рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдШрдЯрдХ рд▓реЙрдиреНрдЪ рдХрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рджрд╕реНрддрдРрд╡рдЬ рд╡рд╛рдЪрдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдкреНрд░рд╢реНрдирд╛рдЪреЗ рдЙрддреНрддрд░ рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ: "рдХреЛрдгрддреНрдпрд╛ рдХрдВрдЯреЗрдирд░ рдбрд┐рд░реЗрдХреНрдЯрд░реАрдордзреНрдпреЗ рдШрдЯрдХ рдлрд╛рдЗрд▓реНрд╕ рд▓рд┐рд╣рд┐рддрд╛рдд?"

рдорд▓рд╛ рдиреЗрд╣рдореА рдбреЙрдХрд░рд╢реА рдЬрд╛рд╕реНрдд рд╡реЗрд│ рдЯрд┐рдВрдЧрд▓рдЯрд╡рд╛рд│реА рдХрд░рд╛рд╡реА рд▓рд╛рдЧрд▓реА рд╣реЗ рдорд▓рд╛ рдЖрд╡рдбрдд рдирд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯрдкреНрдкреНрдпрд╛рд╡рд░: рдХрдВрдЯреЗрдирд░ рдХрд╕реЗ рд▓рд╛рдБрдЪ рдХрд░рд╛рдпрдЪреЗ, рдХреЛрдгрддреНрдпрд╛ рдЗрдореЗрдЬреЗрд╕рдордзреВрди рд▓рд╛рдБрдЪ рдХрд░рд╛рдпрдЪреЗ, рдореЗрдХрдлрд╛рдИрд▓реНрд╕ рдмрдирд╡рд▓реНрдпрд╛ рдЬреНрдпрд╛рдд рд▓рд╛рдВрдм рдбреЙрдХрд░ рдХрдорд╛рдВрдбреНрд╕рдЪреЗ рдЙрдкрдирд╛рдо рдЖрд╣реЗрдд. рдорд▓рд╛ рдбреЙрдХрд░-рдХрдВрдкреЛрдЭ рдЖрд╡рдбрдд рдирд╛рд╣реА рдХрд╛рд░рдг рдорд▓рд╛ рдбреЙрдХрд░ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдордордзреАрд▓ рджреБрд╕рд░реЗ рд╕рд╛рдзрди рд╢рд┐рдХрд╛рдпрдЪреЗ рдирд╡реНрд╣рддреЗ. рдЖрдгрд┐ docker-compose up рдорд▓рд╛ рддреНрд░рд╛рд╕ рдЭрд╛рд▓рд╛, рд╡рд┐рд╢реЗрд╖рдд: рдЬрд░ рддреЗ рдЕрдЬреВрдирд╣реА рддрд┐рдереЗ рднреЗрдЯрд▓реЗ рдЕрд╕рддреАрд▓ build рдЖрдзреАрдЪ рдПрдХрддреНрд░рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдорд╛рдВрдРрд╡рдЬреА рдмрд╛рдВрдзрдХрд╛рдореЗ. рдорд▓рд╛ рдлрдХреНрдд рдПрдЦрд╛рджреЗ рдЙрддреНрдкрд╛рджрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдиреЗ рдЖрдгрд┐ рддреНрд╡рд░реАрдд рдмрдирд╡рд╛рдпрдЪреЗ рд╣реЛрддреЗ. рдкрдг рдбреЙрдХрд░ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рддреЗ рдорд▓рд╛ рд╕рдордЬрд▓реЗ рдирд╛рд╣реА.

Ansible рд╕рд╛рджрд░ рдХрд░рдд рдЖрд╣реЗ

рдЕрд▓реАрдХрдбреЗ (рддреАрди рдорд╣рд┐рдиреНрдпрд╛рдВрдкреВрд░реНрд╡реА), рдореА рдПрдХрд╛ DevOps рдЯреАрдорд╕реЛрдмрдд рдХрд╛рдо рдХреЗрд▓реЗ, рдЬреНрдпрд╛рддреАрд▓ рдЬрд╡рд│рдЬрд╡рд│ рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдпрд╛рдЪрд╛ рдбреЙрдХрд░рдмрджреНрджрд▓ рдирдХрд╛рд░рд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрди рд╣реЛрддрд╛. рдХрд╛рд░рдгрд╛рдВрдореБрд│реЗ:

  • рдбреЙрдХрд░ рдирд┐рдпрдо iptables (рдЬрд░реА рддреБрдореНрд╣реА рддреЗ deemon.json рдордзреНрдпреЗ рдЕрдХреНрд╖рдо рдХрд░реВ рд╢рдХрддрд╛)
  • рдбреЙрдХрд░ рдмрдЧреНрдЧреА рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рддреЗ рдЙрддреНрдкрд╛рджрдирд╛рдд рдЪрд╛рд▓рд╡рдгрд╛рд░ рдирд╛рд╣реА
  • рдбреЙрдХрд░ рдбрд┐рдорди рдХреНрд░реЕрд╢ рдЭрд╛рд▓реНрдпрд╛рд╕, рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рдЕрд╕рд▓реЗрд▓реЗ рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░ рддреНрдпрд╛рдиреБрд╕рд╛рд░ рдХреНрд░реЕрд╢ рд╣реЛрддрд╛рдд
  • рдбреЙрдХрд░рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА
  • рдЙрддреНрддрд░рджрд╛рдпреА рдЖрдгрд┐ рдЖрднрд╛рд╕реА рдорд╢реАрди рдЕрд╕рд▓реНрдпрд╛рд╕ рдбреЙрдХрд░ рдХрд╛

рддреНрдпрд╛рдЪ рдиреЛрдХрд░реАрдд, рдореА рдЖрдгрдЦреА рдПрдХрд╛ рд╕рд╛рдзрдирд╛рд╢реА рдкрд░рд┐рдЪрд┐рдд рдЭрд╛рд▓реЛ - рдЙрддреНрддрд░рджрд╛рдпреА. рдореА рдпрд╛рдмрджреНрджрд▓ рдПрдХрджрд╛ рдРрдХрд▓реЗ, рдкрд░рдВрддреБ рдореА рдорд╛рдЭреА рд╕реНрд╡рддрдГрдЪреА рдкреНрд▓реЗрдмреБрдХ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдирд╛рд╣реА. рдЖрдгрд┐ рдЖрддрд╛ рдореА рдорд╛рдЭреА рдХрд╛рд░реНрдпреЗ рд▓рд┐рд╣рд╛рдпрд▓рд╛ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА рдЖрдгрд┐ рдирдВрддрд░ рдорд╛рдЭреА рджреГрд╖реНрдЯреА рдкреВрд░реНрдгрдкрдгреЗ рдмрджрд▓рд▓реА! рдХрд╛рд░рдг рдорд▓рд╛ рд╕рдордЬрд▓реЗ: Ansible рдордзреНрдпреЗ рд╕рдорд╛рди рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░, рдЗрдореЗрдЬ рдмрд┐рд▓реНрдб, рдиреЗрдЯрд╡рд░реНрдХ рдЗрддреНрдпрд╛рджреА рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдореЙрдбреНрдпреВрд▓реНрд╕ рдЖрд╣реЗрдд рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рдХреЗрд╡рд│ рд╕реНрдерд╛рдирд┐рдХ рдкрд╛рддрд│реАрд╡рд░рдЪ рдирд╛рд╣реА рддрд░ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рджреЗрдЦреАрд▓ рдЪрд╛рд▓рд╡рддрд╛ рдпреЗрддрд╛рдд! рдорд╛рдЭреНрдпрд╛ рдЖрдирдВрджрд╛рдЪреА рд╕реАрдорд╛ рдирд╡реНрд╣рддреА - рдорд▓рд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдзрди рд╕рд╛рдкрдбрд▓реЗ рдЖрдгрд┐ рдорд╛рдЭреНрдпрд╛ рдореЗрдХрдлрд╛рдЗрд▓ рдЖрдгрд┐ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬ рдлрд╛рдЗрд▓реНрд╕ рдлреЗрдХреВрди рджрд┐рд▓реНрдпрд╛, рддреНрдпрд╛ yaml рдЯрд╛рд╕реНрдХрдиреЗ рдмрджрд▓рд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛. рд╕рд╛рд░рдЦреНрдпрд╛ рд░рдЪрдирд╛ рд╡рд╛рдкрд░реВрди рдХреЛрдб рдХрдореА рдХреЗрд▓рд╛ loop, whenрдЗ

рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд╛рд░рдЦреНрдпрд╛ рддреГрддреАрдп-рдкрдХреНрд╖ рдШрдЯрдХ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдбреЙрдХрд░

рдореА рдЕрд▓реАрдХрдбреЗрдЪ ssh рдЯрдиреЗрд▓рд╢реА рдкрд░рд┐рдЪрд┐рдд рдЭрд╛рд▓реЛ. рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░рдЪреЗ рдкреЛрд░реНрдЯ рд╕реНрдерд╛рдирд┐рдХ рдкреЛрд░реНрдЯрд╡рд░ "рдлреЙрд░рд╡рд░реНрдб" рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ. рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░ рдПрдХрддрд░ рдХреНрд▓рд╛рдЙрдбрдордзреАрд▓ рдорд╢реАрди рдХрд┐рдВрд╡рд╛ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓рдмреЙрдХреНрд╕рдордзреНрдпреЗ рдЪрд╛рд▓рдгрд╛рд░реЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди рдЕрд╕реВ рд╢рдХрддреЗ. рдорд╛рдЭреНрдпрд╛ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рд▓рд╛ рдХрд┐рдВрд╡рд╛ рдорд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ (рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рдХрд╛рд╣реА рддреГрддреАрдп-рдкрдХреНрд╖ рдШрдЯрдХ) рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрдореНрд╣реА рдпрд╛ рдШрдЯрдХрд╛рд╕рд╣ рд╕рд░реНрд╡реНрд╣рд░ рд╕реБрд░реВ рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╕рддрд╛рдирд╛ рддреЛ рдмрдВрдж рдХрд░реВ рд╢рдХрддреЛ. рдкреЛрд░реНрдЯ рдлреЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдкреНрд░рдорд╛рдгреЗрдЪ рдкреНрд░рднрд╛рд╡ рджреЗрддреЗ.

рд╣реА рдЖрдЬреНрдЮрд╛ рдорд╛рдЭреНрдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рдкреЛрд░реНрдЯрд▓рд╛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕реНрдХреНрдпреВрдПрд▓рд╡рд░ рдЪрд╛рд▓рдгрд╛рд▒реНрдпрд╛ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ:

ssh -L 9000:localhost:5432 [рдИрдореЗрд▓ рд╕рдВрд░рдХреНрд╖рд┐рдд]

рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░ рд╡рд╛рдкрд░рд▓реНрдпрд╛рдиреЗ рдЯреАрдо рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯрдЪреА рд╕рдорд╕реНрдпрд╛ рд╕реБрдЯрддреЗ. рдЕрд╕рд╛ рд╕рд░реНрд╡реНрд╣рд░ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдЕрдиреЗрдХ рд╡рд┐рдХрд╕рдХрд╛рдВрджреНрд╡рд╛рд░реЗ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ; рддреНрдпрд╛рдВрдирд╛ postgresql рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ, рдбреЙрдХрд░ рдЖрдгрд┐ рдЗрддрд░ рдЧреБрдВрддрд╛рдЧреБрдВрдд рд╕рдордЬрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА. рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡реГрддреНрддреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдХрдареАрдг рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрдкрдг рдбреЙрдХрд░рдордзреНрдпреЗ рд╕рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛. рд╕рд░реНрд╡ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ ssh рдкреНрд░рд╡реЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ!

рдореА рдЕрд▓реАрдХрдбреЗрдЪ рд╡рд╛рдЪрд▓реЗ рдХреА SSH рдмреЛрдЧрджреЗ рд╣реА рдирд┐рдпрдорд┐рдд VPN рдЪреА рдорд░реНрдпрд╛рджрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрд╣реЗрдд! рддреБрдореНрд╣реА рдлрдХреНрдд OpenVPN рдХрд┐рдВрд╡рд╛ рдЗрддрд░ VPN рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реВ рд╢рдХрддрд╛, рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдК рд╢рдХрддрд╛. рд╣реЗ рдЦреВрдк рдЫрд╛рди рдЖрд╣реЗ!

рд╕реБрджреИрд╡рд╛рдиреЗ, AWS, GoogleCloud рдЖрдгрд┐ рдЗрддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рд╡рд░реНрд╖ рд╡рд┐рдирд╛рдореВрд▓реНрдп рд╡рд╛рдкрд░ рджреЗрддрд╛рдд, рдореНрд╣рдгреВрди рддреНрдпрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рд╛! рд╡рд╛рдкрд░рд╛рдд рдирд╕рддрд╛рдирд╛ рддреБрдореНрд╣реА рддреЗ рдмрдВрдж рдХреЗрд▓реНрдпрд╛рд╕ рддреЗ рд╕реНрд╡рд╕реНрдд рдЖрд╣реЗрдд. рдорд▓рд╛ рдиреЗрд╣рдореА рдЖрд╢реНрдЪрд░реНрдп рд╡рд╛рдЯрд╛рдпрдЪреЗ рдХреА рдорд▓рд╛ gcloud рд╕рд╛рд░рдЦреНрдпрд╛ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ, рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рдорд▓рд╛ рддреЗ рд╕рд╛рдкрдбрд▓реЗ.

рд╕реНрдерд╛рдирд┐рдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдореНрд╣рдгреВрди, рдЖрдкрдг рд╕рдорд╛рди рдЕрд▓реНрдкрд╛рдЗрди рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛, рдЬреЗ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рд╡рд┐рд╣реАрд░, рдХрд┐рдВрд╡рд╛ рдорд╢реАрди рдЬрд▓рдж рдмреВрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд╣реА рд╣рд▓рдХреЗ рд╡рд┐рддрд░рдг.

рддрд│ рдУрд│: рддреБрдореНрд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдгрд┐ рдЗрддрд░ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдХрд┐рдВрд╡рд╛ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓рдмреЙрдХреНрд╕рдордзреНрдпреЗ рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛. рдорд▓рд╛ рдпрд╛ рдЙрджреНрджреЗрд╢рд╛рдВрд╕рд╛рдареА рдбреЙрдХрд░рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА.

рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рдЖрдгрд┐ рд╡рд┐рддрд░рдгрд╛рдмрджреНрджрд▓ рдереЛрдбреЗрд╕реЗ

рдореА рдЖрдзреАрдЪ рд▓рд┐рд╣рд┐рд▓реЗ рдЖрд╣реЗ рдПрдХ рд▓реЗрдЦ рдЬреНрдпрд╛рдордзреНрдпреЗ рдорд▓рд╛ рд╣реЗ рд╕рд╛рдВрдЧрд╛рдпрдЪреЗ рд╣реЛрддреЗ рдХреА рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рд╡рд╛рдкрд░рд▓реНрдпрд╛рдиреЗ рдХреЛрдгрддреАрд╣реА рд╣рдореА рдорд┐рд│рдд рдирд╛рд╣реА. рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рдлрдХреНрдд рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд. рдЬрд░ рддреБрдореНрд╣реА рдбреЙрдХрд░ рдЗрдореЗрдЬрд╡рд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдд рдЕрд╕рд╛рд▓, рддрд░ рддреБрдореНрд╣реА рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдд рдЖрд╣рд╛рдд рдЖрдгрд┐ рддреБрдореНрд╣реА рдлрдХреНрдд рддреНрдпрд╛рдВрдЪрд╛рдЪ рд╡рд╛рдкрд░ рдХрд░рд╛рд▓.

рддреБрдореНрд╣реА рдХреБрдареЗрд╣реА рдкрд╛рд╣рд┐рд▓реЗ рдЖрд╣реЗ рдХрд╛ рдЬреЗрдереЗ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдбреЗрд╡реНрд╣рд▓рдкрд░ рддреНрдпрд╛рдВрдЪреА рдЙрддреНрдкрд╛рджрдиреЗ рдлрдХреНрдд рдбреЙрдХрд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рдкреЛрд░реНрдЯ рдХрд░рддрд╛рдд?
рдмрд░реНтАНрдпрд╛рдЪ рдЙрддреНрдкрд╛рджрдирд╛рдВрдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдореНрд╣рдгрдЬреЗ рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рдмрд╛рдпрдирд░реА рдлрд╛рдЗрд▓реНрд╕; рддреНрдпрд╛ рдлрдХреНрдд рдбреЙрдХрд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рдЬреЛрдбрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдЬреНрдпрд╛рд▓рд╛ рдЗрдЪреНрдЫрд┐рдд рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░реВрди рд╡рд╛рд░рд╕рд╛ рдорд┐рд│рд╛рд▓рд╛ рдЖрд╣реЗ. рдбреЙрдХрд░рд╣рдмрд╡рд░ рдЗрддрдХреНрдпрд╛ рд╕рдорд╛рди рдкреНрд░рддрд┐рдорд╛ рдХрд╛ рдЖрд╣реЗрдд рдпрд╛рдЪрд╛ рддреБрдореНрд╣реА рдХрдзреА рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ рдХрд╛? рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде nginx рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛, рддреБрдореНрд╣рд╛рд▓рд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд▓реЛрдХрд╛рдВрдЪреНрдпрд╛ 100500 рдкреНрд░рддрд┐рдорд╛ рджрд┐рд╕рддреАрд▓. рдпрд╛ рд▓реЛрдХрд╛рдВрдиреА рд╕реНрд╡рддрдГ nginx рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдирд╛рд╣реА, рддреНрдпрд╛рдВрдиреА рдлрдХреНрдд рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдбреЙрдХрд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рдЕрдзрд┐рдХреГрдд nginx рдЬреЛрдбрд▓реЗ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕реЛрдпреАрд╕рд╛рдареА рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реНрд╡рдд: рдЪреНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд╕рд╣ рддреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ.

рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рддреБрдореНрд╣реА рддреЗ рдлрдХреНрдд tgz рдордзреНрдпреЗ рд╕рдВрдЪрдпрд┐рдд рдХрд░реВ рд╢рдХрддрд╛, рдЬрд░ рдПрдЦрд╛рджреНрдпрд╛рд▓рд╛ рддреЗ рдбреЙрдХрд░рдордзреНрдпреЗ рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ рдЕрд╕реЗрд▓, рддрд░ рддреНрдпрд╛рдВрдирд╛ рдбреЙрдХрд░рдлрд╛рдЗрд▓рдордзреНрдпреЗ tgz рдЬреЛрдбреВ рджреНрдпрд╛, рдЗрдЪреНрдЫрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрд╛рддреВрди рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реВ рджреНрдпрд╛ рдЖрдгрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрдиреНрд╕ рддрдпрд╛рд░ рдХрд░рд╛ рдЬреЗ рд╕реНрд╡рддрдГ tgz рдордзреНрдпреЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдмрджрд▓рдд рдирд╛рд╣реАрдд. рдЬреЛ рдХреЛрдгреА рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░реЗрд▓ рддреНрдпрд╛рд▓рд╛ tgz рдХрд╛рдп рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ рдХрд╛рдп рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рд╣реЗ рд╕рдордЬреЗрд▓. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдореА рдбреЙрдХрд░ рд╡рд╛рдкрд░рддреЛ рдпреЗрдереЗ

рддрд│ рдУрд│: рдорд▓рд╛ рдбреЙрдХрд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдЪреА рдЧрд░рдЬ рдирд╛рд╣реА, рдореА рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреЗ S3 рдХрд┐рдВрд╡рд╛ рдлрдХреНрдд рдлрд╛рдЗрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдЬрд╕реЗ рдХреА Google рдбреНрд░рд╛рдЗрд╡реНрд╣/рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рд╡рд╛рдкрд░реЗрди

CI рдордзреНрдпреЗ рдбреЙрдХрд░

рдореА рдХрд╛рдо рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдХрдВрдкрдиреНрдпрд╛ рд╕рд╛рд░рдЦреНрдпрд╛рдЪ рдЖрд╣реЗрдд. рддреЗ рд╕рд╣рд╕рд╛ рдХрд┐рд░рд╛рдгрд╛ рдЖрд╣реЗрдд. рдореНрд╣рдгрдЬреЗрдЪ, рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдПрдХ рддрдВрддреНрд░рдЬреНрдЮрд╛рди рд╕реНрдЯреЕрдХ рдЖрд╣реЗ (рдЪрд╛рдВрдЧрд▓реЗ, рдХрджрд╛рдЪрд┐рдд рджреЛрди рдХрд┐рдВрд╡рд╛ рддреАрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛).

рдпрд╛ рдХрдВрдкрдиреНрдпрд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдбреЙрдХрд░ рд╡рд╛рдкрд░рддрд╛рдд рдЬрд┐рдереЗ CI рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд▓рддреЗ. рдкреНрд░рд╢реНрди: рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдХрд╛ рдЖрд╣реЗ? рдмрд┐рд▓реНрдбрд╕рд╛рдареА рдлрдХреНрдд рд╡рд╛рддрд╛рд╡рд░рдг рддрдпрд╛рд░ рдХрд╛ рдХрд░реВ рдирдпреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рдордзреНрдпреЗ рдмрд┐рд▓реНрдб рд╣реЛрдИрд▓ рддреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдиреЛрдбрдЬ, рдкреАрдПрдЪрдкреА, рдЬреЗрдбреАрдХреЗ, рдХреЙрдкреА ssh рдХреА рдЗ. рдЪреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╡реГрддреНрддреНрдпрд╛ рдЗрдиреНрд╕реНрдЯреЙрд▓ рдХрд░рдгрд╛рд░реА рдЙрддреНрддрд░рджрд╛рдпреА рдкреНрд▓реЗрдмреБрдХ рд▓рд┐рд╣рд╛?

рдЖрддрд╛ рдорд▓рд╛ рд╕рдордЬрд▓реЗ рдЖрд╣реЗ рдХреА рд╣реЗ рдорд╛рдЭреНрдпрд╛ рдкрд╛рдпрд╛рдд рдЧреЛрд│реА рдорд╛рд░рдд рдЖрд╣реЗ, рдХрд╛рд░рдг рдбреЙрдХрд░ рддреНрдпрд╛рдЪреНрдпрд╛ рдЕрд▓рдЧрд╛рд╡рдиреЗ рдХреЛрдгрддрд╛рд╣реА рдлрд╛рдпрджрд╛ рдЖрдгрдд рдирд╛рд╣реА. рдбреЙрдХрд░рдордзреНрдпреЗ CI рд╕рд╣ рдорд▓рд╛ рдЖрд▓реЗрд▓реНрдпрд╛ рд╕рдорд╕реНрдпрд╛:

  • рдкреБрдиреНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЙрдХрд░ рдЗрдореЗрдЬрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рддрд┐рдорд╛ рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдХрд┐рдВрд╡рд╛ рддреБрдордЪреА рд╕реНрд╡рддрдГрдЪреА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ.
  • 90% рдХреА рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реА ssh рдХреА рдлреЙрд░рд╡рд░реНрдб рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЧреБрдкреНрдд рдбреЗрдЯрд╛ рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЙрдХрд░ рдЗрдореЗрдЬрд╡рд░ рд▓рд┐рд╣рд╛рдпрдЪрд╛ рдирд╛рд╣реА.
  • рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рд╣реЛрддреЛ рдЖрдгрд┐ рдорд░рддреЛ, рддреНрдпрд╛рдЪреНрдпрд╛рд╕рд╣ рд╕рд░реНрд╡ рдХреЕрд╢реЗ рдирд╖реНрдЯ рд╣реЛрддрд╛рдд. рдкреБрдвреАрд▓ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡ рдкреНрд░рдХрд▓реНрдк рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдкреБрдиреНрд╣рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрд▓, рдЬреЗ рд╡реЗрд│ рдШреЗрдгрд╛рд░реЗ рдЖрдгрд┐ рдХреБрдЪрдХрд╛рдореА рдЖрд╣реЗ рдЖрдгрд┐ рд╡реЗрд│ рдкреИрд╕рд╛ рдЖрд╣реЗ.

рд╡рд┐рдХрд╕рдХ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рдд рдирд╛рд╣реАрдд (рдореА рдПрдХреЗрдХрд╛рд│реА рдЕрд╕рд╛ рдЪрд╛рд╣рддрд╛ рд╣реЛрддреЛ, рдЦрд░рдВрдЪ, рдорд▓рд╛ рдкреВрд░реНрд╡реАрдЪреНрдпрд╛ xD рдордзреНрдпреЗ рдорд╛рдЭреНрдпрд╛рдмрджреНрджрд▓ рд╡рд╛рдИрдЯ рд╡рд╛рдЯрддреЗ). рдЬрд╛рд╡рд╛рдордзреНрдпреЗ рдЕрдиреЗрдХ рдЖрд╡реГрддреНрддреНрдпрд╛ рдЕрд╕реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛ рдПрдХрд╛ рдХрдорд╛рдВрдбрдиреЗ рдмрджрд▓рдгреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрддрд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдиреЛрдбрдЬрдордзреНрдпреЗ рддреЗрдЪ рдЖрд╣реЗ, рдПрдирд╡реНрд╣реАрдПрдо рдЖрд╣реЗ.

рдирд┐рд╖реНрдХрд░реНрд╖

рдорд╛рдЭрд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЖрд╣реЗ рдХреА рдбреЙрдХрд░ рд╣реЗ рдПрдХ рдЕрддрд┐рд╢рдп рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЖрдгрд┐ рд▓рд╡рдЪрд┐рдХ рд╕рд╛рдзрди рдЖрд╣реЗ, рд╣реА рддреНрдпрд╛рдЪреА рдХрдорддрд░рддрд╛ рдЖрд╣реЗ (рд╣реЛрдп, рд╡рд┐рдЪрд┐рддреНрд░ рд╡рд╛рдЯрддреЗ). рддреНрдпрд╛рдЪреНрдпрд╛ рдорджрддреАрдиреЗ, рдХрдВрдкрдиреНрдпрд╛ рд╕рд╣рдЬрдкрдгреЗ рддреНрдпрд╛рд╡рд░ рд╣реБрдХ рдХрд░реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдЖрдгрд┐ рдЧрд░рдЬ рдирд╕рд▓реЗрд▓реНрдпрд╛ рдард┐рдХрд╛рдгреА рддреЗ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛рдд. рд╡рд┐рдХрд╕рдХ рддреНрдпрд╛рдВрдЪреЗ рдХрдВрдЯреЗрдирд░, рддреНрдпрд╛рдВрдЪреЗ рдХрд╛рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рд▓реЙрдиреНрдЪ рдХрд░рддрд╛рдд, рддреНрдпрд╛рдирдВрддрд░ рддреЗ рд╕рд░реНрд╡ рд╕рд╣рдЬрддреЗрдиреЗ CI рдЖрдгрд┐ рдЙрддреНрдкрд╛рджрдирд╛рдордзреНрдпреЗ рд╡рд╛рд╣рддреЗ. рд╣реЗ рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА DevOps рдЯреАрдо рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреЗ рдХреЛрдб рд▓рд┐рд╣рд┐рдд рдЖрд╣реЗ.

рдлрдХреНрдд рдбреЙрдХрд░ рд╡рд╛рдкрд░рд╛ рдЕрдЧрджреА рдЕрд▓реАрдХрдбрдЪреЗ рддреБрдордЪреНрдпрд╛ рд╡рд░реНрдХрдлреНрд▓реЛрдордзреНрдпреЗ рд╕реНрдЯреЗрдЬ, рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдбреНрд░реЕрдЧ рдХрд░реВ рдирдХрд╛. рддреНрдпрд╛рдореБрд│реЗ рддреБрдордЪреНрдпрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╕реБрдЯрдгрд╛рд░ рдирд╛рд╣реАрдд. рддреЛ рдлрдХреНрдд рд╕рдорд╕реНрдпрд╛рдВрдирд╛ рджреБрд╕рд░реНтАНрдпрд╛ рд╕реНрддрд░рд╛рд╡рд░ рдиреЗрдИрд▓ рдЖрдгрд┐ рд╕реНрд╡рддрдГрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░реЗрд▓, рддреБрдореНрд╣реА рджреБрд╣реЗрд░реА рдХрд╛рдо рдХрд░рд╛рд▓.

рдЬреЗрд╡реНрд╣рд╛ рдбреЙрдХрд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ: рдореА рдпрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рд╛рд╡рд░ рдкреЛрд╣реЛрдЪрд▓реЛ рдХреА рдбреЙрдХрд░ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрд▓рд╛ рдЕрдиреБрдХреВрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЦреВрдк рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдореВрд▓рднреВрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдирд╛рд╣реА

рдЖрдкрдг рдЕрджреНрдпрд╛рдк рдбреЙрдХрд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреЗ рдард░рд╡рд┐рд▓реНрдпрд╛рд╕, рдирдВрддрд░:

  • рдЕрддреНрдпрдВрдд рд╕рд╛рд╡рдз рд░рд╣рд╛
  • рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рдбреЙрдХрд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рднрд╛рдЧ рдкрд╛рдбреВ рдирдХрд╛
  • рддреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдПрдХрд╛рдЪ рдард┐рдХрд╛рдгреА рд╕реНрдерд╛рдирд┐рдХреАрдХрд░рдг рдХрд░рд╛, рд╕рд░реНрд╡ рдбреЙрдХрдлрд╛рдЗрд▓ рдЖрдгрд┐ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдЬрдордзреНрдпреЗ рдкрд╕рд░рд╡реВ рдирдХрд╛

PS:

  • рдореА рдЕрд▓реАрдХрдбреЗ рднреЗрдЯрд▓реЛ рдкреЕрдХрд░ рдЖрдгрд┐ рддреЗ рдореНрд╣рдгрддрд╛рдд рдХреА рд╣реЗ Ansible рд╕рд╣ рдЦреВрдк рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдЖрдгрд┐ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕ рдПрдХрддреНрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ (рдбреЙрдХрд░ рдкреНрд░рддрд┐рдореЗрд╕рд╣)
  • рдбреЙрдХрд░ рдмрджреНрджрд▓ рджреЗрдЦреАрд▓, рдордиреЛрд░рдВрдЬрдХ рд▓реЗрдЦ

рд╡рд╛рдЪрд▓реНрдпрд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд рдкрд╛рд░рджрд░реНрд╢рдХ рдирд┐рд░реНрдгрдп рдЖрдгрд┐ рдЙрддреНрдкрд╛рджрдХ рдХрд╛рдордХрд╛рдЬрд╛рдЪреНрдпрд╛ рджрд┐рд╡рд╕рд╛рдВрдЪреА рдЗрдЪреНрдЫрд╛ рдХрд░рддреЛ!

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛