TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

What is Continuous Deployment?

70 pointsby SanjeevSharmaover 11 years ago

8 comments

wdewindover 11 years ago
&gt; You may only continuously deploy to an environment before ‘Prod’ – UAT&#x2F;Pre-prod…, but the environments you do deploy to should be ‘production-like’, so you know with very high confidence, that the final deploy to production will work without issues, when you do really need to deploy to it.<p>In my experience this is a pretty dangerous way to think about it. One of the best reasons for continuous deployment is to allow you to push small changes to production. This is desirable because small changes are easier to debug when things go wrong, and are less likely to make things go wrong overall. But the core assumption behind this is &quot;the system is really complicated and has a ton of moving parts that are virtually impossible to think about at all times.&quot; Continuous delivery makes the assumption that a preprod environment is highly likely to be similar to a prod environment, and making that true is usually extremely hard at scale. Couple that with the fact that prod will (especially for large, consumer facing sites) often expose you to many more edge cases, and the fact that a developer who has pushed to preprod may not be there to help debug when his or her code finally gets to prod and breaks things, I see continuous delivery as a pretty suboptimal alternative to continuous deployment.
评论 #6562094 未加载
kevinpetover 11 years ago
I don&#x27;t really consider continuously pushing to staging or QA true continuous deployment. This still leaves you with the big push when you deploy features.<p>At Wealthfront, we prefer to push out everything and releasing features amounts to pushing out a single small change of whether a feature is hidden behind a user flag or experiment.
评论 #6560099 未加载
matlockover 11 years ago
Continuous Deployment and Delivery both are there to remove the fear of change. Coupled with testing this is definitely a way to 10x your engineering productivity.<p>We&#x27;ve stopped counting how many times per day we push changes at Codeship as the number is meaningless in itself. If you feel you can&#x27;t push regularly you giving up before starting the fight already.<p>It&#x27;s just a very different and way more relaxed method of software development where you can actually focus on pushing the product further without getting stopped by infrastructure all the time.<p>Immutable Infrastructure will be the next big iteration in getting this 10x productivity I think.
mattjaynesover 11 years ago
First, Continuous Deployment is really awesome.<p>Second, you should completely ignore Continuous Deployment until you have sane systems.<p>I do contract systems work for a living and have seen hundreds of live production systems. Nearly every system I see is in some kind of serious peril:<p><pre><code> - no backups - if backups, no docs on how to restore - no monitoring (or very little) - production passwords in the wild (former employees, etc) - no configuration management - no path to scale - no path to replace defunkt servers - etc... (I could go on for hours) </code></pre> Often when I&#x27;m talking with a potential client, they are SUPER interested in Continuous Deployment (or whatever the hotness is at the time), but they start to yawn when I start talking about getting their core systems in order.<p>Your systems are the <i>foundation</i> of your application and your business. You wouldn&#x27;t build your office building on top of an active volcano or below sea level on the coast, yet many businesses happily do this for their systems.<p>You know all those constant news stories about massive outages, security breaches, crippled sites, etc? I&#x27;d bet 99% of them are due to them failing at the fundamentals of sane systems. Having seen behind the curtains of so many companies, I&#x27;m honestly surprised there isn&#x27;t more massive systems failure in the news.<p>This is a critical problem in the tech world. Does it affect you? A few of you will have amazing solid secure systems, but the vast majority of folks reading this won&#x27;t.<p>If you&#x27;re using a PaaS like Heroku or Parse, then you have most of the systems worries taken care of for you. You can breath a bit easier.<p>But if you are managing physical or virtual servers and aren&#x27;t even using configuration management (puppet&#x2F;chef&#x2F;salt&#x2F;ansible&#x2F;etc), then your systems are probably in a very precarious situation. You might not think so, since everything just happens to be working at the moment, but you are essentially coding without using version control.<p>You would probably think that a developer that used email for his code version control is an idiot. You would be right. But consider that emailing code around for version control is actually <i>better</i> than what most companies do for their systems. Most companies set up their servers manually. They often don&#x27;t even have any docs or even shell scripts.<p>At one client, it took them 2 weeks (!!!) to bring up a new server. The engineers thought it would take only 4 hours. Those engineers nearly killed that company.<p>Do you want to be a 10X or 100X systems engineer? Then use configuration management! After we put that client&#x27;s systems in Puppet, we could bring up a new server in under 5 minutes. Yep, that&#x27;s 4000X faster.<p>If you aren&#x27;t using configuration management and don&#x27;t know where to start, just use Ansible. It&#x27;s by far the simplest and easiest to get going. I&#x27;ve written a quick intro to it here: <a href="http://devopsu.com/blog/ansible-vs-shell-scripts/" rel="nofollow">http:&#x2F;&#x2F;devopsu.com&#x2F;blog&#x2F;ansible-vs-shell-scripts&#x2F;</a><p>If you&#x27;re curious about how the configuration management tools compare, check out my book: <a href="http://devopsu.com/books/taste-test-puppet-chef-salt-stack-ansible.html" rel="nofollow">http:&#x2F;&#x2F;devopsu.com&#x2F;books&#x2F;taste-test-puppet-chef-salt-stack-a...</a>
评论 #6562009 未加载
评论 #6561187 未加载
评论 #6561146 未加载
评论 #6562272 未加载
sharkweekover 11 years ago
I really like the resources that ThoughtWorks lays out on their CI page -- down at the bottom they have some whitepapers on the topic that are certainly worth a peek --<p><a href="http://showcase.thoughtworks.com/continuous-integration" rel="nofollow">http:&#x2F;&#x2F;showcase.thoughtworks.com&#x2F;continuous-integration</a>
ambiateover 11 years ago
We are language and environment restricted to waterfall at my job. The language does not have any form of unit testing and an extremely archaic version control. The language does not have a viable way to encapsulate small changes without coding the whole shebang. The environment itself follows some of the same pitfalls. CD sounds amazing in theory, but some languages simply do not fit into the paradigm.
评论 #6560165 未加载
评论 #6560168 未加载
wastedbrainsover 11 years ago
I wrote up a bunch of pros&#x2F;cons on continuous deployment about 3 months ago<p><a href="http://mayerdan.com/programming/2013/08/04/thoughts-on-continuous-deployment/" rel="nofollow">http:&#x2F;&#x2F;mayerdan.com&#x2F;programming&#x2F;2013&#x2F;08&#x2F;04&#x2F;thoughts-on-conti...</a><p>I am pro continuous integration, continuous delivery to staging. I think it takes extra care to do continuous deployment to production. There needs to be a number of systems in place some of which @mattjaynes mentioned others really depend on having a very solid and accessible deployment pipeline.
yeukhonover 11 years ago
For smaller product, continuous deployment can move at a really fast pace. For larger project, continuous deployment has to have a release and deployment cycle.<p>Google I heard does an amazing job at this. If I remember everything I heard from a Google talk, before peer review there is a pre-build&#x2F;testing process. And while waiting to be reviewed, there should be a build triggered (or the build should sits in a CI queue waiting for testing).