Nginx рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреА рдмреНрд▓реВ-рдЧреНрд░реАрди рддреИрдирд╛рддреА

рдЫрд╡рд┐


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


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


рдмреНрд▓реВ-рдЧреНрд░реАрди рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рд▓рдХреНрд╖реНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреИрдирд╛рддреА рдХреЗ рджреМрд░рд╛рди рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред


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


рдЫрд╡рд┐


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


рд╕рд░реНрд╡рд░ рд╕реЗрдЯрдЕрдк


рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдорд╛рдирддреА рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рд░реНрд╡рд░ рдФрд░ рдПрдХ рд░рдирд┐рдВрдЧ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рдЗрд╕реЗ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рд╕рд░реНрд╡рд░ рдкрд░, рдЕрдкрдиреЗ рд╣реЛрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рджреЛ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ: blue рдФрд░ green ред рдлрд┐рд░ рд╣рдореЗрдВ рджреЛ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ available рдФрд░ testing ред рдпреЗ рд▓рд┐рдВрдХ рдпрд╛ рддреЛ рдиреАрд▓реЗ рдпрд╛ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ available рдмрд┐рдВрджреБ green , рддреЛ blue testing рдмрд┐рдВрджреБред


 mkdir blue mkdir green ln -s ./green ./available ln -s ./blue ./testing 

рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ Nginx рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реЛрдЧрд╛ред рддреИрдирд╛рддреА рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рджреЛрдиреЛрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░), рдФрд░ рдиреАрд▓реЗ рд░рдВрдЧ рдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд╣рд░реЗ рд░рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП , рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдирдЧреНрдиреЗрдХреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╣рд░реЗ рдпрд╛ рдиреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ ред


рдЫрд╡рд┐


рдирдЧреНрдиреЗрдХреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдкреНрд░рд┐рдВрдЧреНрд╕ite.com рдбреЛрдореЗрди рд╣реИред Nginx рдХрд╛ рдЧреНрд░реАрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреЛрд░реНрдЯ 8080 рдкрд░ green рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЙрд▓реЛрдВ рдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧреНрд╕рд▓рд╛рдЗрдЯ.com/api/ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдкреЛрд░реНрдЯ 8090 рдкрд░ blue рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЙрд▓ рд╕реНрдкреНрд░рд┐рдВрдЧреНрд╕ite.com/api-test/ рдкрд░ рдХрд░реЗрдЧрд╛ред


рдЪрд▓реЛ рдЗрди рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рдЕрдкрдирд╛ рдкрд╕рдВрджреАрджрд╛ рд╕рдВрдкрд╛рджрдХ рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝реЗрдВред


 http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name mysite.com; location /api { proxy_pass http://localhost:8090/api; } location /api-test { proxy_pass http://localhost:8080/api; } } include servers/*; } 

 http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name mysite.com; location /api { proxy_pass http://localhost:8080/api; } location /api-test { proxy_pass http://localhost:8090/api; } } include servers/*; } 

рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:


 --root |--- blue |--- nginx.conf.blue |--- app-V2.jar |--- green |--- nginx.conf.green |--- app-V1.jar |--- available -> ./green |--- testing -> ./blue 

рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдо рдПрдХ blue рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рддреИрдирд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ рдкрд┐рдЫрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЕрднреА рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ ред рдПрдХ рдмрд╛рд░ рд╣рд░ рдХреЛрдИ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЦреБрд╢ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд▓рд┐рдВрдХ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА!


blue рдФрд░ green рджреЛрдиреЛрдВ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ swap.sh рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:


 touch swap.sh chmod +x swap.sh 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЛ swap.sh рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:


 #!/bin/bash testing_now=$(ls -l ./ | grep testing) if [[ "$testing_now" == *blue ]] then testing="blue" active="green" else testing="green" active="blue" fi #remove current links rm ./available rm ./testing rm -f /etc/nginx/nginx.conf #create new links with the active/inactive reversed ln -s ./$inactive ./available ln -s ./$active ./testing ln -s /home/ubuntu/spring/$active/nginx.conf /etc/nginx/nginx.conf #reload the http server service nginx reload echo swap completed $active is now available 

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╣рдо рдкреЛрд░реНрдЯреНрд╕ 8090 рдФрд░ 8080 рдкрд░ 2 рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ sudo ./swap.sh рдЪрд▓рд╛рдХрд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред


рддреИрдирд╛рддреА


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


 scp -r -i ~/.ssh/MyKeyPair.pem <package name.jar> <user>@<ip>:spring/testing 

рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ


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


рдпрд╣ рд╕рд╡рд╛рд▓ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ: рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпрд╛рдВ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЗ рдмрд┐рдирд╛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХреИрд╕реЗ рдХрд░рддреА рд╣реИрдВ? Google рдпрд╛ рдлреЗрд╕рдмреБрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ!


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


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


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдм рдЖрдк рд╕рдордЭ рдЧрдП рд╣реЛрдВрдЧреЗ рдХрд┐ рдмреНрд▓реВ-рдЧреНрд░реАрди рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирдЯрд╛рдЗрдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдм рдЖрдк NGINX рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореВрд▓ рдмреНрд▓реВ-рдЧреНрд░реАрди рддреИрдирд╛рддреА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛, рдЬрдм рд╣рдо рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреБрд░рд╛рдиреЗ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЛрдиреЛрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╣рд╛рди рд▓реЗрдЦ https://spring.io/blog/2016/05/31/zero-downtime-deployment-with-a-database рдХрд╛ рд╡рд░реНрдгрди рд╣реИ рдХрд┐ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреЗрдВред


рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ AWS рдФрд░ Google рдХреНрд▓рд╛рдЙрдб рдХрдореНрдкреНрдпреВрдЯ рджреЛрдиреЛрдВ рдмреНрд▓реВ-рдЧреНрд░реАрди рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реЗрд╡рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:


https://aws.amazon.com/quickstart/architecture/blue-green-deployment/
https://cloud.google.com/solutions/continuous-delivery/


рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рдЕрдиреНрдп рд▓реЗрдЦ рднреА рдкрдврд╝реЗрдВ:


Source: https://habr.com/ru/post/hi470568/


All Articles