SRE рдЗрдиреНрдЬрд┐рдирд┐рдпрд░ - рдкреНрд░рд╢рд┐рдХреНрд╖рд╛рд░реНрдереА
рдкрд╣рд┐рд▓реЗ, рдорд▓рд╛рдИ рдореЗрд░реЛ рдкрд░рд┐рдЪрдп рджрд┐рдиреБрд╣реЛрд╕реНред рдо -
рдореИрд▓реЗ рдПрдХ рд╣рдкреНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЬрддрд╛рддрддреИ SRE рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд▓рд╛рдИ рдкрдЫреНрдпрд╛рдЙрдиреБ рдкрд░реНрдпреЛред рддреНрдпреЛ рд╣реЛ, рдо рд╣рд╕реНрддрд╛рдиреНрддрд░рдгрдорд╛ рдЙрдкрд╕реНрдерд┐рдд рдерд┐рдПрдБ, рдПрдЙрдЯреИ рдЕрд▓рд░реНрдЯ рдЪреНрдпрд╛рдирд▓рд╣рд░реВрдХреЛ рдЕрдиреБрдЧрдорди рдЧрд░реНрдереЗ рд░ рдШрдЯрдирд╛рд╣рд░реВ рднрдПрдорд╛ рд░ рдХрд╣рд┐рд▓реЗ рдШрдЯреНрдпреЛ рднрдиреЗрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдПрдБред
рдШрдЯрдирд╛рд╣рд░реВ
рдПрдХ рд╕рд╛рддрд╛рднрд┐рддреНрд░ реи рд╡рдЯрд╛ рдШрдЯрдирд╛ рднрдПрдХрд╛ рдЫрдиреН ред
1. рдХреНрд░рд┐рдкреНрдЯреЛрдорд╛рдЗрдирд░
GitLab.com рд▓реЗ рдмреБрдзрдмрд╛рд░ рдкреНрд░рдпреЛрдЧрдорд╛ рдЙрдЫрд╛рд▓ рджреЗрдЦреНрдпреЛ
рдпрджрд┐ рдпреЛ рдШрдЯрдирд╛ рдпрд╛рдж рдЧрд░рд┐рдПрдХреЛ рдерд┐рдПрди рднрдиреЗ, рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдХрд░рдгрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рдорд╛рддреНрдиреЗ рдерд┐рдпреЛ, рддрд░ рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, SRE рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд▓реЗ рдкрд╣рд┐рд▓реЗ рдЙрд▓реНрд▓рдЩреНрдШрди рджреЗрдЦреЗред рдПрдЙрдЯрд╛ рдШрдЯрдирд╛ рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рддрд░ рдпрд╕рдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдмрдиреНрдж рдЫред
2. рдХреНрдпрд╛рдирд░реА рд░ рдореБрдЦреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдЧрд┐рд░рд╛рд╡рдЯ
Gitlab.com рдорд╛ рдХреНрдпрд╛рдирд░реА рд░ рдореБрдЦреНрдп рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рд╕реБрд╕реНрддрддрд╛ рд░ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рдмрдвреНрджреЛ рдЖрд╡реГрддреНрддрд┐рдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рдШрдЯрдирд╛ рднрдПрдХреЛ рд╣реЛред рдзреЗрд░реИ Apdex рдорд╛рдирд╣рд░реВ рдЙрд▓реНрд▓рдЩреНрдШрди рдЧрд░рд┐рдпреЛред
рдШрдЯрдирд╛ рдХрд╛рд░реНрдп рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН:
рдХреБрдЮреНрдЬреА рдЦреЛрдЬреАрд╣рд░реВ
рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рдЪреАрдЬрд╣рд░реВ рдЫрдиреН рдЬреБрди рдореИрд▓реЗ рдореЗрд░реЛ рд╣рдкреНрддрд╛ рдбреНрдпреВрдЯреАрдорд╛ рд╕рд┐рдХреЗрдХреЛ рдЫреБред
1. рдорд╛рдирдХрдмрд╛рдЯ рд╡рд┐рдЪрд▓рди рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдБрджрд╛ рдЕрд▓рд░реНрдЯрд╣рд░реВ рд╕рдмреИрднрдиреНрджрд╛ рдЙрдкрдпреЛрдЧреА рд╣реБрдиреНрдЫрдиреНред
рдЕрд▓рд░реНрдЯрд╣рд░реВрд▓рд╛рдИ рдзреЗрд░реИ рдкреНрд░рдХрд╛рд░рдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:
- рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдорд╛рдирдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЕрд▓рд░реНрдЯрд╣рд░реВ, рдЬрд╕реНрддреИ "10 5xx рддреНрд░реБрдЯрд┐рд╣рд░реВ рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб рджреЗрдЦрд╛ рдкрд░реНрдпреЛред"
- рд╕рддрд░реНрдХрддрд╛рд╣рд░реВ рдЬрд╕рдорд╛ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдкреНрд░рддрд┐рд╢рдд рдорд╛рди рд╣реЛ рдЬрд╕реНрддреИ "рдПрдХ рджрд┐рдЗрдПрдХреЛ рд╕рдордпрдорд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдХреБрд▓ рдорд╛рддреНрд░рд╛рдХреЛ 5% рдкреНрд░рддрд┐ 10xx рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рдЖрд╡реГрддреНрддрд┐ред"
- рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдФрд╕рддрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЕрд▓рд░реНрдЯрд╣рд░реВ рдЬрд╕реНрддреИ "5th рдкреНрд░рддрд┐рд╢рддрдорд╛ 90xx рддреНрд░реБрдЯрд┐рд╣рд░реВ"ред
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдкреНрд░рдХрд╛рд░ 2 рд░ 3 рдбреНрдпреВрдЯреАрдорд╛ SREs рдХреЛ рд▓рд╛рдЧреА рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдЫрдиреН, рдХрд┐рдирдХрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдорд╛рдирдХрдмрд╛рдЯ рд╡рд┐рдЪрд▓рди рдкреНрд░рдХрдЯ рдЧрд░реНрджрдЫред
2. рдзреЗрд░реИ рдЕрд▓рд░реНрдЯрд╣рд░реВ рдШрдЯрдирд╛рд╣рд░реВрдорд╛ рдХрд╣рд┐рд▓реНрдпреИ рдмрдвреНрджреИрдирдиреНред
SR рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВрд▓реЗ рдЕрд▓рд░реНрдЯрд╣рд░реВрдХреЛ рдирд┐рд░рдиреНрддрд░ рд╕реНрдЯреНрд░рд┐рдорд╕рдБрдЧ рд╕рдореНрдЭреМрддрд╛ рдЧрд░реНрдЫрдиреН, рдЬрд╕рдордзреНрдпреЗ рдзреЗрд░реИ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЫреИрдирдиреНред
рддреНрдпрд╕реЛрднрдП рдХрд┐рди рддрдкрд╛рдИрдХрд╛ рдЕрд▓рд░реНрдЯрд╣рд░реВрд▓рд╛рдИ рд╡рд╛рд╕реНрддрд╡рдореИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдорд╛ рд╕реАрдорд┐рдд рдирдЧрд░реНрдиреБрд╣реЛрд╕реН? рдпрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдХреЛ рд╕рд╛рде, рддрдерд╛рдкрд┐, рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдиреЛрдмрд▓рд▓рд╛рдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛рдорд╛ рдкрд░рд┐рдгрдд рдЧрд░реНрдиреЗ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд▓рдХреНрд╖рдгрд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди рдЬрд╕рд▓реЗ рдареВрд▓реЛ рдХреНрд╖рддрд┐рд▓рд╛рдИ рдзрдореНрдХреА рджрд┐рдиреНрдЫред
рдЕрди-рдХрд▓ SRE рдХреЛ рдХрд╛рдо рднрдиреЗрдХреЛ рдХреБрди рдЕрд▓рд░реНрдЯрд╣рд░реВрд▓реЗ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХреБрдиреИ рдЧрдореНрднреАрд░ рдХреБрд░рд╛рд▓рд╛рдИ рд╕рдЩреНрдХреЗрдд рдЧрд░реНрдЫ, рд░ рддрд┐рдирд▓рд╛рдИ рдмрдврд╛рдПрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдиреБ рд╣реЛред рдорд▓рд╛рдИ рд╢рдВрдХрд╛ рдЫ рдХрд┐ рдпреЛ рдЕрд▓рд░реНрдЯрд╣рд░реВрдХреЛ рд▓рдЪрд┐рд▓реЛрдкрдирдХреЛ рдХрд╛рд░рдгрд▓реЗ рдкрдирд┐ рд╣реЛ: рдорд╛рдерд┐ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЕрд╡рд╕реНрдерд╛ рдЕрдиреБрд╕рд╛рд░ рдЕрд▓рд░реНрдЯрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рдзреЗрд░реИ рд╕реНрддрд░рд╣рд░реВ рд╡рд╛ "рд╕реНрдорд╛рд░реНрдЯ" рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН рднрдиреЗ рдпреЛ рд░рд╛рдореНрд░реЛ рд╣реБрдиреЗрдЫред
рд╕реБрд╡рд┐рдзрд╛ рд╕реБрдЭрд╛рд╡:
3. рдбреНрдпреБрдЯреАрдорд╛ рд░рд╣реЗрдХрд╛ рд╣рд╛рдореНрд░рд╛ SRE рд▓реЗ рдзреЗрд░реИ рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреНред
рдЖрдиреНрддрд░рд┐рдХ:
- GitLab рдЗрдиреНрдлреНрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ: рд░рдирдмреБрдХрд╣рд░реВ рдпрд╣рд╛рдБ рд▓рд╛рдЗрдн рд╣реБрдиреНрдЫрдиреН, рд╢рд┐рдлреНрдЯ/рд╣рдкреНрддрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдиреНрдЯрд╣рд░реВ, рдШрдЯрдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛рд░реНрдпрд╣рд░реВред
- GitLab рдореБрджреНрджрд╛рд╣рд░реВ: рдЕрдиреБрд╕рдиреНрдзрд╛рди, рд╕рдореАрдХреНрд╖рд╛, рд░ рдорд░реНрдорддрд╕рдореНрднрд╛рд░ рдкрдирд┐ рдореБрджреНрджрд╛рд╣рд░реВрдорд╛ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░рд┐рдиреНрдЫред
- GitLab рд▓реЗрдмрд▓рд╣рд░реВ: рд╕реНрд╡рдЪрд╛рд▓рди рдХрд╛рд░реНрдпрд╣рд░реВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдмрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реБрд░реБ рдЧрд░рд┐рдиреНрдЫ, рдЬреБрди рдмрдЯрд╣рд░реВрд▓реЗ рдХрд╛рд░реНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред
рдмрд╛рд╣реНрдп:
- PagerDuty: рдЕрд▓рд░реНрдЯрд╣рд░реВ
- рд╕реНрд▓реНрдпрд╛рдХ: PagerDuty/AlertManager рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╡рд╛рд╣ рдпрд╣рд╛рдБ рдЬрд╛рдиреНрдЫред рдЕрд▓рд░реНрдЯ рдмрдиреНрдж рдЧрд░реНрдиреЗ рд╡рд╛ рдШрдЯрдирд╛рдорд╛ рд╡реГрджреНрдзрд┐ рдЧрд░реНрдиреЗ рдЬрд╕реНрддрд╛ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрди рд╕реНрд▓реНрдпрд╛рд╢ рдЖрджреЗрд╢рд╣рд░реВрд╕рдБрдЧ рдПрдХреАрдХрд░рдгред
- Grafana: рджреАрд░реНрдШрдХрд╛рд▓реАрди рдкреНрд░рд╡реГрддреНрддрд┐рд╣рд░реВрдорд╛ рдлреЛрдХрд╕рдХреЛ рд╕рд╛рде рдореЗрдЯреНрд░рд┐рдХреНрд╕рдХреЛ рджреГрд╢реНрдпред
- рдХрд┐рдмрд╛рдирд╛: рджреГрд╢реНрдп/рд▓рдЧ рдЦреЛрдЬреА, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдирд╛рд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдЦрдиреНрди рд╕рдХреНрдиреЗ рдХреНрд╖рдорддрд╛ рджрд┐рдиреНрдЫред
- рдЬреБрдо: рдЬреБрдордорд╛ рдирд┐рд░рдиреНрддрд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ "рдмреНрд░реЗрдХрдЖрдЙрдЯ рдХреЛрдард╛" рдЫред рдпрд╕рд▓реЗ SRE рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВрд▓рд╛рдИ рдХреЛрдард╛ рдмрдирд╛рдЙрди рд░ рд╕рд╣рднрд╛рдЧреАрд╣рд░реВрд▓рд╛рдИ рд▓рд┐рдЩреНрдХ рдЧрд░реНрдиреЗ рдореВрд▓реНрдпрд╡рд╛рди рд╕рдордп рдмрд░реНрдмрд╛рдж рдирдЧрд░реА рдШрдЯрдирд╛рд╣рд░реВ рджреНрд░реБрдд рд░реВрдкрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
рд░ рдзреЗрд░реИ рдзреЗрд░реИ рдЕрдиреНрдпред
4. GitLab рд╕рдБрдЧ GitLab.com рдХреЛ рдирд┐рдЧрд░рд╛рдиреА рдЕрд╕рдлрд▓рддрд╛ рдХреЛ рдПрдХрд▓ рдмрд┐рдиреНрджреБ рд╣реЛ
рдпрджрд┐ GitLab.com рд▓реЗ рдкреНрд░рдореБрдЦ рд╕реЗрд╡рд╛ рдЖрдЙрдЯреЗрдЬ рдЕрдиреБрднрд╡ рдЧрд░реНрдЫ рднрдиреЗ, рд╣рд╛рдореА рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ рд╣рд╛рдореНрд░реЛ рдХреНрд╖рдорддрд╛рд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрди рдЪрд╛рд╣рдБрджреИрдиреМрдВред GitLab.com рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рджреЛрд╕реНрд░реЛ GitLab рдЙрджрд╛рд╣рд░рдг рд╕реБрд░реБ рдЧрд░реЗрд░ рдпрд╕рд▓рд╛рдИ рд░реЛрдХреНрди рд╕рдХрд┐рдиреНрдЫред рд╡рд╛рд╕реНрддрд╡рдорд╛, рдпреЛ рдкрд╣рд┐рд▓реЗ рдиреИ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдХрд╛рдо рдЧрд░реНрджрдЫ:
5. GitLab рдорд╛ рдердкреНрди рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрди рдХреЗрд╣рд┐ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ
рдмрд╣реБ-рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдп рд╕рдореНрдкрд╛рджрди , Google рдХрд╛рдЧрдЬрд╛рдд рдЬрд╕реНрддреИред рдпрд╕рд▓реЗ рдШрдЯрдирд╛рдХреЛ рд╕рдордпрдорд╛ рдШрдЯрдирд╛рд╣рд░реВрдорд╛ рдХрд╛рд░реНрдпрд╣рд░реВ, рд╕рд╛рдереИ рдбрд┐рдмреНрд░реАрдлрд┐рдЩрдорд╛ рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред рджреБрдмреИ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдзреЗрд░реИ рд╕рд╣рднрд╛рдЧреАрд╣рд░реВрд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордпрдорд╛ рдХреЗрд╣рд┐ рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрди рд╕рдХреНрдЫред- рдХрд╛рд░реНрдпрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдердк рд╡реЗрдмрд╣реБрдХрд╣рд░реВред рднрд┐рддреНрд░рдмрд╛рдЯ рд╡рд┐рднрд┐рдиреНрди GitLab рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЪрд░рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреЗ рдХреНрд╖рдорддрд╛рд▓реЗ рд╕реНрд▓реНрдпрд╛рдХ рдПрдХреАрдХрд░рдгрдорд╛ рддрдкрд╛рдИрдВрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХрдо рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдПрдХ GitLab рдореБрджреНрджрд╛ рдорд╛ рдПрдХ рд╕реНрд▓реНрдпрд╛рд╢ рдЖрджреЗрд╢ рдорд╛рд░реНрдлрдд PagerDuty рдорд╛ рдЪреЗрддрд╛рд╡рдиреА рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗ рдХреНрд╖рдорддрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
SRE рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВ рдзреЗрд░реИ рдЬрдЯрд┐рд▓рддрд╛рд╣рд░реВрдХреЛ рд╕рд╛рде рдХрдард┐рди рд╕рдордп рдЫред рдпреА рдореБрджреНрджрд╛рд╣рд░реВрд▓рд╛рдИ рд╕рдореНрдмреЛрдзрди рдЧрд░реНрдиреЗ рдердк GitLab рдЙрддреНрдкрд╛рджрдирд╣рд░реВ рд╣реЗрд░реНрди рдпреЛ рд░рд╛рдореНрд░реЛ рд╣реБрдиреЗрдЫред рд╣рд╛рдореА рдкрд╣рд┐рд▓реЗ рдиреИ рдЙрддреНрдкрд╛рджрдирдорд╛ рдХреЗрд╣реА рдердкрд╣рд░реВрдорд╛ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ рдЬрд╕рд▓реЗ рдорд╛рдерд┐ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣рд╣рд░реВрд▓рд╛рдИ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдБрджрдЫред рдорд╛ рдЙрдкрд▓рдмреНрдз рд╡рд┐рд╡рд░рдгрд╣рд░реВ
рд╣рд╛рдореА реирежреиреж рдорд╛ рдпреА рд╕рдмреИ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╕рдБрдЧреИ рд▓реНрдпрд╛рдЙрди рдЯреЛрд▓реАрд▓рд╛рдИ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрджреИрдЫреМрдВред рдпрджрд┐ рд░реБрдЪрд┐ рдЫ рднрдиреЗ, рдХреГрдкрдпрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рд╕реНрд░реЛрдд: www.habr.com