{"id":27653,"date":"2017-05-30T00:46:28","date_gmt":"2017-05-29T22:46:28","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=27653"},"modified":"2017-05-30T00:46:28","modified_gmt":"2017-05-29T22:46:28","slug":"making-push-on-green-a-reality","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2017\/05\/30\/making-push-on-green-a-reality\/","title":{"rendered":"Making &#8220;Push on Green&#8221; a Reality"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p><a href=\"https:\/\/www.usenix.org\/system\/files\/login\/articles\/login_1410_05_klein.pdf\">Making &#8220;Push on Green&#8221; a Reality<\/a> is an insider look at how Google handles continuous deployment. \u00a0Very few teams and companies need to deal with such level of complexity, but the overall principals still probably apply.<\/p>\n<blockquote><p>Updating production software is a process that may require dozens, if not hundreds, of steps. These include creating and testing new code, building new binaries and packages, associating the packages with a versioned release, updating the jobs in production datacenters, possibly modifying database schemata, and testing and verifying the results. There are boxes to check and approvals to seek, and the more automated the process, the easier it becomes. When releases can be made faster, it is possible to release more often, and, organizationally, one becomes less afraid to \u201crelease early, release often\u201d. And that\u2019s what we describe in this article\u2014making rollouts as easy and as automated as possible. When a \u201cgreen\u201d condition is detected, we can more quickly perform a new rollout. Humans are still needed somewhere in the loop, but we strive to reduce the purely mechanical toil they need to perform.<\/p><\/blockquote>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>Making &#8220;Push on Green&#8221; a Reality is an insider look at how Google handles continuous deployment. \u00a0Very few teams and companies need to deal with such level of complexity, but the overall principals still probably apply. Updating production software is a process that may require dozens, if not hundreds, of steps. These include creating and &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2017\/05\/30\/making-push-on-green-a-reality\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Making &#8220;Push on Green&#8221; a Reality<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Making \"Push on Green\" a Reality #SysAdmin #DevOps #Google #infrastructure","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1,6,133,62,1334],"tags":[3089,2068,3074,1330],"keyring_services":[],"class_list":["post-27653","post","type-post","status-publish","format-standard","hentry","category-general","category-linux","category-sysadmin","category-technology","category-web-work","tag-continuous-integration","tag-google","tag-quality-assurance","tag-web-development"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":26327,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/08\/09\/analyzing-2-million-travis-builds\/","url_meta":{"origin":27653,"position":0},"title":"Analyzing 2+ Million Travis Builds","author":"Leonid Mamchenkov","date":"August 9, 2016","format":false,"excerpt":"TravisCI - a continuous\u00a0integration service - shares some of the insights from over 2,000,000 builds they've run, in an blog post called \"What We Learned about Continuous Integration from Analyzing 2+ Million Travis Builds\". \u00a0For me, the most valuable bit is about the reasons for failing builds, which clearly indicates\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"2016-07-28-analyzing-travis-builds-0","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/08\/2016-07-28-analyzing-travis-builds-0-500x289.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":67,"url":"https:\/\/mamchenkov.net\/wordpress\/2002\/08\/08\/testing-red-hat-beta-limbo\/","url_meta":{"origin":27653,"position":1},"title":"Testing Red Hat Beta (Limbo)","author":"Leonid Mamchenkov","date":"August 8, 2002","format":false,"excerpt":"Finally, I found some time to install and play with Red Hat Beta (Limbo). As far as I understood, it's gonna be Red Hat Linux 8.0 when done, because it is compiled with new gcc, thus being not fully binary compatible with previous releases. Here is a small review o'mine.\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27001,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/epel-the-effort-behind-the-scenes\/","url_meta":{"origin":27653,"position":2},"title":"EPEL : the effort behind the scenes","author":"Leonid Mamchenkov","date":"November 28, 2016","format":false,"excerpt":"Catching up with recent news, I came across this blog post by Stephen John Smoogen in Fedora People, where he explains the reason for the recent disappearance of the Puppet package from the Extra Packages for Enterprise Linux (EPEL 6) repository: This week various people using EPEL on RHEL and\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":19979,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/01\/28\/testling-ci-run-your-browser-tests-on-every-push\/","url_meta":{"origin":27653,"position":3},"title":"testling-ci &#8211; run your browser tests on every push","author":"Leonid Mamchenkov","date":"January 28, 2014","format":"link","excerpt":"testling-ci - run your browser tests on every push","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":24831,"url":"https:\/\/mamchenkov.net\/wordpress\/2015\/10\/12\/continuous-integration-servers\/","url_meta":{"origin":27653,"position":4},"title":"Continuous Integration Servers","author":"Leonid Mamchenkov","date":"October 12, 2015","format":false,"excerpt":"Here's a list of Continuous Integration (CI) servers \/ solutions for those who is still trying to choose: Travis CI CircleCI Jenkins CI Atlassian Bamboo JetBrains TeamCity Microsoft Team Foundation Server Microsoft Visual Studio Online CI GitLab CI Codeship Drone.io Buildkite Via volkswagen.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"build results","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/10\/build-results-500x308.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":26698,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/09\/20\/vim-8-0-released\/","url_meta":{"origin":27653,"position":5},"title":"Vim 8.0 Released!","author":"Leonid Mamchenkov","date":"September 20, 2016","format":false,"excerpt":"The team behind the greatest text editor of all times has release the new major version - Vim 8.0. \u00a0It's the first major release in 10 years! \u00a0Brief overview of the changes: Asynchronous I\/O support, channels, JSON Jobs Timers Partials, Lambdas and Closures Packages New style testing Viminfo merged by\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/27653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=27653"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/27653\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=27653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=27653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=27653"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=27653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}