рддреЗрдЬреА рд╕реЗ рдмрдврд╝рддреА рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЬрдм рдЖрдкрдХреЛ рд╣рд░ рджрд┐рди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдкреНрд░рдмрдВрдзрди рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдпрд╛ рддреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╕реИрдХрдбрд╝реЛрдВ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж 100500 рдкрд╛рдЧрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╛ рд╡реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ DevOps рд╡реНрдпрдВрдЬрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрд▓рд╛рд╕ рдХреЛрд░реНрд╕ "
DevOps for Internet Projects " рд▓реЗрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ, рдЬрд┐рд╕реЗ рдмреНрд░реЗрдирд╡рд╛рд╢рд┐рдВрдЧ рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкрд╛рдареНрдпрдХреНрд░рдо рдЙрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ Skype, Groupon, KupiKupon, Oversan-Skalaksi рдЬреИрд╕реА рдХрдВрдкрдирд┐рдпреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдФрд░ рдпрд╣рд╛рдБ рд╡реЗ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВ:
2 рджрд┐рдиреЛрдВ рдореЗрдВ рд╣рдо рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ DevOps рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЖрдкрдХреЛ 5 рдорд┐рдирдЯ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рд┐рдЦрд╛рдПрдВрдЧреЗ, рд░реЛрд▓рд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдФрд░ рдкреНрд░рдмрдВрдзрдиреАрдп рдмрдирд╛рдПрдВрдЧреЗ, рдирд┐рдЧрд░рд╛рдиреА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдкреИрдо рди рд╣реЛред рд╣рдо рдмрд╛рджрд▓реЛрдВ рдФрд░ рд╕реАрдбреАрдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВрдЧреЗ, рдЬрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЬрдЧрд╣ рджреЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рдореЗрдВ рдорд╛рд░реНрдЯрд┐рдпрди рдЬрд╣рд╛рдЬ рдХреЗ рдЧрд┐рд░рдиреЗ рд╕реЗ рдХреИрд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдХреЗ рджреЛ рджрд┐рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЬреНрдЮрд╛рди рдХреЗ рд╕рдореЗрдХрди рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рд╕реНрдЯрд░ рд╡рд░реНрдЧ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд▓рд┐рдирдХреНрд╕ рдпрд╛ рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рд╕рд╛рде рд▓реИрдкрдЯреЙрдк рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)редрдкрд╛рдареНрдпрдХреНрд░рдо рдХрд╛ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдкрд╣рд▓реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╕рд╣реА рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдореБрдлреНрдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
1. рдЖрдкрдХреЗ рдкрд╛рд╕ nginx config рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ:
upstream fallback { server 127.0.0.1:80; } server { listen 80; server_name example.com www.example.com mobile.example.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location /nginx-status { stub_status on; access_log off; } location / { proxy_set_header X-Real-IP $remote_addr; if ($host = 'mobile.example.com') { rewrite ^ http://example.com/mobile/$uri last; break; } proxy_pass http://fallback; } }
рдЗрд╕ рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ рдЬреИрд╕рд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
2. рдЖрд╡реЗрджрди рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреГрддрд┐ рдкрд░ рдХреБрдЫ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░, рдЖрд╡реЗрджрди рд▓реЙрдЧ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ:
ActiveRecord::StatementInvalid: PGError: ERROR: canceling statement due to conflict with recovery DETAIL: User query might have needed to see row versions that must be removed. : SELECT тАж
рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
3. рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рдореЙрдбрд▓ (рдПрдкреЛрд▓) рдФрд░ рдорд▓реНрдЯреА-рдереНрд░реЗрдб рдореЙрдбрд▓ (рдереНрд░реЗрдб рдкреВрд▓) рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдХреНрдпрд╛ рд╣реИрдВред рдХрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдФрд░ рдПрдХ рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ? рдХрд┐рд╕ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рдЖрдк рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ?
4. рдкреНрд░рд╛рдкреНрдд рдмрдлрд░ рднрд░рд╛ рд╣реЛрдиреЗ рдкрд░ tcp рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдк tcp рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИрдВ рдФрд░ рдЖрдк рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ?
5. рдЖрдк рд╕рдордп рд╕реАрдорд╛ IO рдЕрдиреБрд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдбрд┐рд╕реНрдХ рдХреЛ рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдкреВрд░реА рдбрд┐рд╕реНрдХ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ?
6. рд▓рд┐рдирдХреНрд╕ рдФрд░ рдлреНрд░реАрдмрд╕ (рдпрд╛ рд╕реЛрд▓рд╛рд░рд┐рд╕) рдореЗрдВ рд▓реЛрдб рдФрд╕рдд рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ, рдЖрдк рд╕реНрд╡рдпрдВ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реВрддреНрд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВрдЧреЗ?
рдЗрд╕ рдлреЙрд░реНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 19 рд╕рд┐рддрдВрдмрд░ рддрдХ рдЬрд╡рд╛рдм рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред
рдкреБрдирд╢реНрдЪ рдкреВрд░реНрдг рдкрд╛рдареНрдпрдХреНрд░рдо рдХрд╛рд░реНрдпрдХреНрд░рдо
рдкрд╣рд▓рд╛ рджрд┐рдиред рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдХрд╣рд╛рдиреА, рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкрд░рд┐рдЪрдпред рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░: рд╕рд░реНрд╡рд░ рдФрд░ рдмрд╛рджрд▓, рдХреИрд╕реЗ рдЪреБрдиреЗрдВ? рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓, рд╕реАрдбреАрдПрди - рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рдиреБрдХрд╕рд╛рдиред рднрд╛рд░, рдХреНрд╖рдорддрд╛ рдкреНрд░рдмрдВрдзрди рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреИрд╕реЗ рдХрд░реЗрдВред рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ред рдкрд╣рд▓рд╛ рдЕрднреНрдпрд╛рд╕ рдпреЛрдирд┐ рдФрд░ рд╢реЗрдл-рд╕реЛрд▓реЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рд╛рдЗрдЯ рдкрд░ рдбреЗрдЯрд╛ рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХреИрд╕реЗ рди рдЦреЛрдПрдВ - рдмреИрдХрдЕрдк рдФрд░ рдЧрд▓рддреА рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрдиред рд╕рд░реНрд╡рд░реЛрдВ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред
рджреВрд╕рд░рд╛ рджрд┐рдиред Opscode рдмрд╛рд╡рд░реНрдЪреА рдХрд╛ рдкрд░рд┐рдЪрдпред рджреВрд╕рд░рд╛ рдЕрднреНрдпрд╛рд╕ рдЪрд╛рдХреВ рдФрд░ рд╢реЗрдл-рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд╢реЗрдл рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдФрд░ рд╢реЗрдл-рдПрдирд╛рдЯреЙрдореАред рд╢реЗрдл рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдЪреЙрдк рдХреЛрд░реНрд╕ред рддреАрд╕рд░рд╛ рдЕрднреНрдпрд╛рд╕ рд╢реЗрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрдкрд╛рдЪреЗ рдХреЛ рдЕрдкрдиреЗ рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рд╣реИред рд╢реЗрдл рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рднреВрдорд┐рдХрд╛рдУрдВ рдФрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рдбреЗрдЯрд╛рдмреИрдЧ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрдиред рдЪреМрдерд╛ рдЕрднреНрдпрд╛рд╕ рд╢реЗрдл рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдкрд╛рдВрдЪрд╡рд╛рдВ рдЕрднреНрдпрд╛рд╕ LWRP рд╣реИ, рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧред рдЫрдареА рдкреНрд░реИрдХреНрдЯрд┐рд╕ - рдХреБрдХрдмреБрдХ рдХреЗ рд╕рд╛рде рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╡рд░реНрдХ рдкрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕рд╛рддрд╡реАрдВ рдкреНрд░рдерд╛ - рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рд░реЛрд▓рдЖрдЙрдЯ рд╕реБрд╡рд┐рдзрд╛рдПрдБред