{"id":511297,"date":"2022-11-17T12:22:05","date_gmt":"2022-11-17T09:22:05","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/yes-staging-can-be-a-pain-but-heres-why-you-shouldnt-skip-it\/"},"modified":"2022-11-17T12:22:05","modified_gmt":"2022-11-17T09:22:05","slug":"yes-staging-can-be-a-pain-but-heres-why-you-shouldnt-skip-it","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/yes-staging-can-be-a-pain-but-heres-why-you-shouldnt-skip-it\/","title":{"rendered":"#Yes, staging can be a pain \u2014 but here\u2019s why you shouldn\u2019t skip it"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a373cddf2d02\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a373cddf2d02\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/yes-staging-can-be-a-pain-but-heres-why-you-shouldnt-skip-it\/#%E2%80%9CYes_staging_can_be_a_pain_%E2%80%94_but_heres_why_you_shouldnt_skip_it%E2%80%9D\" >&#8220;Yes, staging can be a pain \u2014 but here\u2019s why you shouldn\u2019t skip it&#8221;<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/yes-staging-can-be-a-pain-but-heres-why-you-shouldnt-skip-it\/#Join_TNW_in_Valencia\" >Join TNW in Valencia!<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/yes-staging-can-be-a-pain-but-heres-why-you-shouldnt-skip-it\/#Facebook_does_it%E2%80%A6\" >Facebook does it\u2026<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/yes-staging-can-be-a-pain-but-heres-why-you-shouldnt-skip-it\/#Staging_environments_are_too_costly\" >Staging environments are too costly<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/buradabiliyorum.com\/en\/yes-staging-can-be-a-pain-but-heres-why-you-shouldnt-skip-it\/#It_worked_on_my_machine\" >It worked on my machine<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/buradabiliyorum.com\/en\/yes-staging-can-be-a-pain-but-heres-why-you-shouldnt-skip-it\/#Staging_leads_to_large_queues\" >Staging leads to large queues<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/buradabiliyorum.com\/en\/yes-staging-can-be-a-pain-but-heres-why-you-shouldnt-skip-it\/#Staging_isnt_at_parity_with_production\" >Staging isn\u2019t at parity with production<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E2%80%9CYes_staging_can_be_a_pain_%E2%80%94_but_heres_why_you_shouldnt_skip_it%E2%80%9D\"><\/span>&#8220;Yes, staging can be a pain \u2014 but here\u2019s why you shouldn\u2019t skip it&#8221;<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p><img decoding=\"async\" src=\"https:\/\/img-cdn.tnwcdn.com\/image?fit=796%2C417&amp;url=https%3A%2F%2Fcdn0.tnwcdn.com%2Fwp-content%2Fblogs.dir%2F1%2Ffiles%2F2022%2F11%2FAdd-a-heading-1.jpg&amp;signature=459ee0a2bf4ce4e5e6fae7acbd420d56\" \/><\/p>\n<div id=\"article-main-content\">\n                            Programming\u2019s big dirty secret is that everyone has, at some point in their career, broken something big.<\/p>\n<p>Big like, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/www.reddit.com\/r\/cscareerquestions\/comments\/6ez8ag\/accidentally_destroyed_production_database_on\/\">wiping the full production database on their first day of work<\/a>, killing the live <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/download-scripts-themes-apps\/\" data-internallinksmanager029f6b8e52c=\"9\" title=\"Download Scripts &amp; Themes &amp; Apps\" target=\"_blank\" rel=\"noopener\">app<\/a>lication <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/www.reddit.com\/r\/sysadmin\/comments\/kes72k\/just_killed_production_by_mistake_help_me_feel\/\">while multiple sales people are showing it to clients<\/a>, or bringing down <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/aws.amazon.com\/message\/41926\/\">half the internet by passing on the wrong piece of data<\/a>.<\/p>\n<p>Oops.<\/p>\n<div class=\"inarticle-wrapper channel-cta\">\n<div class=\"ica-text\">\n<h4><span class=\"ez-toc-section\" id=\"Join_TNW_in_Valencia\"><\/span>Join TNW in Valencia!<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>The heart of tech is coming to the heart of the Mediterranean<\/p>\n<\/div>\n<\/div>\n<p>There are a million reasons why things go wrong, and not all are completely avoidable. But having a good setup for testing new code can at least mitigate some of the worst errors.<\/p>\n<p>Traditionally, deploying new code to a website or application follows three steps. First, an engineer writes code and tests it on their local machine \u2014 i.e. their own computer.<\/p>\n<p>If that works, that code is deployed to a so-called staging environment, which is pretty close to the real deal. The staging environment allows new features or updates to be tested with real or anonymized data as a last step before finally pushing the code to production.<\/p>\n<p>However, it\u2019s slightly more complicated than that with staging environments being split up into multiple branches or forks that allow different features to be tested simultaneously. These forks are then merged back into the staging environment\u2019s code and sent to production as a batch once they\u2019re all proven.<\/p>\n<p>Now this sounds like a pretty good setup right? Kind of like how new airplanes are first tested many times on the ground, then flown without passengers, and finally get the green light to transport people.<\/p>\n<p>Nonetheless, lately, many engineers have stopped using staging environments entirely, arguing that it\u2019s better, faster, and cheaper to skip that stage and just roll out new updates and features straight away. But could this be hurting you more than helping?<\/p>\n<p>Let\u2019s take a deeper look at why some engineers are ditching staging environments and why these arguments might not add up.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Facebook_does_it%E2%80%A6\"><\/span>Facebook does it\u2026<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Many point to <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/social-mediaa\/\" data-internallinksmanager029f6b8e52c=\"1\" title=\"Social Media\" target=\"_blank\" rel=\"noopener\">Facebook<\/a>, which famously doesn\u2019t use a staging environment but rather pushes changes to a tiny (but still huge) subset of users \u2014 e.g. 1% of users in Hungary \u2014 and, if that works, rolls out updates to a wider audience. But not every company has billions of users like Facebook.<\/p>\n<p>Sure, depending on one\u2019s tolerance for downtime and doing hotfixes, an argument can be made for simply deploying new releases out into the wild and seeing what happens. For most companies, there are no life and death dependencies on their product. And simply allowing a website or app to be unresponsive, for however long it takes to roll back changes and check what caused the disruption, can be an option.<\/p>\n<p>Then again, this might not be the most user-friendly approach. Also, there might be agreements in place with customers that limit the threshold for downtime before sanctions are levied against the service provider (you).<\/p>\n<blockquote class=\"c-richText__pullQuote\">\n<div class=\"c-richText__pullQuoteGradient\">\n<p class=\"c-richText__pullQuoteQuote\">Rather than removing accountability, it shifts it to the wider team.\n            <\/div>\n<\/blockquote>\n<p>It\u2019s important to be sure that updates or changes that are meant to benefit the customer \u2014 and might even be a direct request from them \u2014 actually work as intended and don\u2019t require your account managers to beg for forgiveness.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Staging_environments_are_too_costly\"><\/span>Staging environments are too costly<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Depending on the size of your website or application, keeping extra servers running for staging can lead to a sad CFO paying double AWS bills.<\/p>\n<p>Let me make an analogy to a restaurant. Yeah, if you\u2019re keeping your kitchen fully stocked and staffed to test out new menu items for a restaurant, that\u2019s going to eat into your bottom line. Or all of it.<\/p>\n<p>But a new recipe can also be prepared and tested at home, on a normal stove, with smaller amounts of ingredients.<\/p>\n<p>The same goes for staging. You don\u2019t necessarily need the same hardware capacity to test out code for production. As long as you take into account the relative resources you\u2019re using, it should deliver useful results. And, if you make sure staging mirrors production rather than your home setup, you should find out soon enough if you\u2019re missing any ingredients.<\/p>\n<p><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/www.ionos.com\/hosting\/deploy-now\">IONOS\u2019 Deploy Now<\/a> feature, for example, takes care of that by spinning up and managing feature branches at the staging phase, without breaking the bank.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"It_worked_on_my_machine\"><\/span><strong>It worked on my machine<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Staging your code isn\u2019t just about making sure it works during production. Staging is also about getting other stakeholders on board.<\/p>\n<p>Anti-staging advocates argue that having a staging environment dilutes responsibility because developers throw their code over the fence to the people managing it.<\/p>\n<p>That might be true, but it also helps break down silos amongst different product teams.<\/p>\n<p>A staging environment allows designers to test how things look, it allows quality assurance (QA) engineers to test the new code on different platforms, product managers to keep track of changes, and clients to get a feel for a new feature before it goes live.<\/p>\n<blockquote class=\"c-richText__pullQuote\">\n<div class=\"c-richText__pullQuoteGradient\">\n<p class=\"c-richText__pullQuoteQuote\">It\u2019s basically like running two parallel but identical restaurants.<\/p>\n<\/p><\/div>\n<\/blockquote>\n<p>Rather than removing accountability, it shifts it to the wider team, which in turn encourages more involvement and engagement with the product.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Staging_leads_to_large_queues\"><\/span><strong>Staging leads to large queues<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>If you\u2019re a larger organization with many teams working on different parts of an app, having a single staging environment can lead to longer approval processes \u2014 this not only slows things down, it also holds engineers back from starting on a new task or makes them have to go back and fix elements of a previous feature after they\u2019ve started on a new project.<\/p>\n<p>This can be quite tedious.<\/p>\n<p>Ideally, what you\u2019d want from staging is to automatically have multiple feature branches with corresponding staging environments that allow code to be tested immediately and pushed live after it passes all the checks.<\/p>\n<p>Again, managing this can be a slog, but IONOS\u2019 Deploy Now feature can pretty much do this for you. In principle, that should mean you can continuously deploy, without building up large queues \u2014 or losing productivity due to task switching.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Staging_isnt_at_parity_with_production\"><\/span><strong>Staging isn\u2019t at parity with production<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Another reason some people dislike staging is that it takes a lot of work to keep the staging environment in a state of carbon copy with production.<\/p>\n<p>This doesn\u2019t just go for all the dependencies, but also for the data that\u2019s used during production but can\u2019t be used during staging because it contains things like passwords, personal identities, or credit card data.<\/p>\n<p>This means you need to maintain a dummy dataset and also have the schema of that data correspond with the information you have at the staging and production phases. Developers also need similar dummy or test data for local development (or the review) so this can also be used for staging.<\/p>\n<p>It\u2019s basically like running two parallel but identical restaurants.<\/p>\n<p>Building this from scratch might seem like a mighty task. But, then again, if you start out with a proper staging environment and make sure it\u2019s regularly updated to reflect production, it just takes a little bit of extra time to keep it up.<\/p>\n<p>And having that habit in place might just help your company keep engineers productive and, more importantly, keep your customers happy.<\/p>\n<p>So if you\u2019re thinking about ditching staging environments, think again. Rather than a cumbersome process, keeping this product development phase will help keep the customer experience running smoothly and allow you to involve the wider company, without breaking the bank.\n                        <\/p><\/div>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/thenextweb.com\/news\/staging-pain-why-you-shouldnt-skip-it\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Yes, staging can be a pain \u2014 but here\u2019s why you shouldn\u2019t skip it&#8221; Programming\u2019s big dirty secret is that everyone has, at some point in their career, broken something big. Big like, wiping the full production database on their first day of work, killing the live application while multiple sales people are showing it&#8230;<\/p>\n","protected":false},"author":1,"featured_media":511298,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/img-cdn.tnwcdn.com\/image\/tnw?filter_last=1&fit=1280,640&url=https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2022\/11\/Add-a-heading-1.jpg&signature=4d241c521bdd8e14ee912e3aef34f47f","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-511297","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/511297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=511297"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/511297\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/511298"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=511297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=511297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=511297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}