Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Ask Slashdot: How Often Do You Push To Production?

samzenpus posted about 2 years ago | from the hold-on-we're-going-live dept.

Cloud 182

First time accepted submitter Stiletto writes "I work for a traditional 'old school' software company that is trying to move into web services, now competing with smaller, nimbler 'Web 2.0' companies. Unfortunately our release process is still stuck in the '90s. Paperwork and forms, sign-off meetings, and documentation approvals make it impossible to do even minor deployments to production faster than once a month. Major releases go out a couple of times a year. I've heard from colleagues in Bay Area companies who release weekly or daily (or even multiple times a day), allowing them to adapt quickly. Slashdotters, how often do you push software changes into production, and what best practices allow you to maintain that deployment rate without chaos?"

Sorry! There are no comments related to the filter you selected.

Visual Studio (5, Funny)

PieDkaj (2750665) | about 2 years ago | (#41621205)

I push to production fairly often. Our company's Visual Studios have been configured with test cases that make testing easy, and therefore we can push to production much more often than those who do not use Visual Studio.

Re:Visual Studio (0)

Anonymous Coward | about 2 years ago | (#41621269)

Did you read about this on the Internets?

Re:Visual Studio (0)

Anonymous Coward | about 2 years ago | (#41621327)

Why are we still here? Is it some sort of an addiction?

Re:Visual Studio (2)

jameshofo (1454841) | about 2 years ago | (#41621483)

Don't you know? They can't put anything on the internet that's not true!

Re:Visual Studio (0)

Anonymous Coward | about 2 years ago | (#41621285)

I push to production fairly often. Our company's Visual Studios have been configured with test cases that make testing easy, and therefore we can push to production much more often than those who do not use Visual Studio.

is this some kind of shill?

Re:Visual Studio (0)

Anonymous Coward | about 2 years ago | (#41621325)

I think it's a fake shill, trying to make real shills look bad.

Re:Visual Studio (4, Funny)

avandesande (143899) | about 2 years ago | (#41621461)

It's a 'shroll'

Re:Visual Studio (4, Funny)

MyLongNickName (822545) | about 2 years ago | (#41621293)

Hello, Pie. I am afraid I can't pay you full price for this review. Our contract clearly states a 300 word minimum, first post, and at least one real life example of someone using the product. You met one of the three criteria, but this isn't enough. Please try harder next time.

Re:Visual Studio (0)

Anonymous Coward | about 2 years ago | (#41621297)

Any automated testing tools would provide that service and sanity check

Re:Visual Studio (1)

garyisabusyguy (732330) | about 2 years ago | (#41621493)

I also find that my nano-particle infused wrist band that is tightly quantum-coupled with my nano-particle infused mouse pad allows each mouse click to perform TEN TIMES as many system configurations than my outdated neoprene mouse pad alone. This performance increase alone more than justifies the $12,000 cost

Weekly. (1)

Anonymous Coward | about 2 years ago | (#41621207)

We have two stacks; one serves internal users and one serves external.

We've found it handy to push to the "stage" stack on Thursday, let it bake Friday + the weekend + Monday, and then push to production on Tuesday if there's no problems.

We keep track of anything that would affect a potential rollback. If there's a database migration, we back up the database before going live. Simple, easy, effective. And despite what James [twitter.com] may say, rollback does [velocityconf.com] exist. Not that we've had to do it more than once or twice.

We would push more frequently except we're too busy changing the world.

Re:Weekly. (2)

terbeaux (2579575) | about 2 years ago | (#41622041)

If parent bothered to post AC then they should have mentioned that they work at Facebook and have like 500,000 servers. See parent links for subtle indication.

Depemds on business need (0)

Anonymous Coward | about 2 years ago | (#41621221)

We did a lot of agile for years, so once a week for small things, assuming non-impacting and we tried for quarterly for significant impacting changes.

Really, it's up to the needs of the business and how long your development cycles are.

Over 9000 (1)

Anonymous Coward | about 2 years ago | (#41621225)

Several times a day, its the nightmare of undecided clients in web development

Be careful that 'nimble' doesn't become 'untested' (4, Insightful)

Anonymous Coward | about 2 years ago | (#41621231)

Why not talk to your colleagues and suggest ways of speeding things up?

It's good to talk.

Release when ready is quite a good frequency :-)

Re:Be careful that 'nimble' doesn't become 'untest (4, Interesting)

Anonymous Coward | about 2 years ago | (#41621417)

I think the submitter IS talking to colleagues and looking for suggestions right here...

We do a major release about every 2 months, with maintenance stuff going every 2 weeks. There's pressure to speed this up. On the release side of things we're streamlining our documentation requirements and automating everything we can. We're also moving to a continuous delivery model for our regular test builds... if it's tagged, it goes to QA and an automagical report goes out with a list of resolved defects. This requires the developers to package things cleanly and consistently, but it also gives us an amazing amount of data to mine and I like to think that it helps to improve our overall quality.

This doesn't address requirements gathering or development methodologies, but I can't really speak to those.

Gotta raise his Joel Test Scores, first (5, Interesting)

Safety Cap (253500) | about 2 years ago | (#41621527)

If he can't deploy to production in one step, he needs to fix that first.

I'm not talking about from dev box to production. I'm talking about the physical act of someone running a single command (or for the Winlazy, pressing a button) then walking away. All code checkouts from source control, database changes, app server code deployments, web server restarts—whatever—happen without user intervention.

He should also be able to roll back in one step.

For all the meetings, forms, etc., it sounds like there is A LOT of CYA in that company. In that case, it is cultural and can only be changed from the top. Until/unless the company becomes less risk adverse, there is no point in trying to become more "agile" (i.e., risk-accepting) except making your job easier. Build your tools/scripts/whatever to make it easier to do stuff.

tl;dr: If you want a more nimble company, switch jobs.

Every 3-4 months (Releases) (0)

Anonymous Coward | about 2 years ago | (#41621237)

It s a governmental project, all code is tested in many environments before going to production.

Tast Automation via Finalbuilder (0)

Anonymous Coward | about 2 years ago | (#41621251)

I use rake a bit too but Finalbuilder has made so many tasks faster to do. Can push a button and make a new release now.

chaos (4, Insightful)

Anonymous Coward | about 2 years ago | (#41621257)

>> Slashdotters, how often do you push software changes into production,

3 times a month, generally.

>> and what best practices allow you to maintain that deployment rate without chaos?"

IMHO, you can't. Having a deadline every week, programmers cut corners to make dates. QA cuts corners to make the date. This much code changing without any "bake time" inevitably leads to an unstable code base, full of "corner cuts" from the last N releases.

Re:chaos (2)

jythie (914043) | about 2 years ago | (#41621665)

This pretty much sums up my thoughts. While there is always value in cutting away unnesseary beucracy, once that is gone you get into the tradeoff between flexibility and stability. Plenty of web-centric companies follow waterfall or other risk adverse patterns and do just fine.

So it really comes down to examining how important rapid changes vs stability/validity are. Many of those 'web2.0' companies that can adjust rapidly are pretty flakey and have no paper trail to be able to show auditors (or underwriters/insurance carriers) that they have done due dillagence.. nor can they generally cope with mutliple stakeholders. Ever wonder why so many of those companies have a 'my way or the highway' attitude twoards feature sets? It isn't just arrogence, it is their development process. This works really well for some companies and can burry others.

So at the end of the day, you need to sit and figure out what is the best balance for one's particular company.. not look at young sexy rising stars in tangental industries and try to emulate them.

Daily or weekly. (1)

Anonymous Coward | about 2 years ago | (#41621265)

1) Tag code in revision control.
2) Notify internal release documentation team, who puts some entries in some kind of finance/logistical database
3) Receive email within a few hours that the release requires "engineering approval"
4) Click "I approve". Sometimes multiple people have to do this.

Our production environment can export and compile from revision control.

That's pretty much it, and it all takes just a few hours.

It's worth noting that I work for a monstrously large company, but not exactly a software firm.. more hardware and engineering services.

As soon as it's ready (5, Informative)

knetcomp (1611179) | about 2 years ago | (#41621283)

Most companies I've worked for have a continuous deployment cycle. All changes, from small bug fixes to major releases go through a ticketing system. After the ticket has gone through all the steps (code review, QA, UAT) it goes into the deployment manager's queue, who then deploys the change to production depending on each ticket's priority. This means that in general, changes go out as soon as they are ready, sometimes up to two times a day for the same project.

Re:As soon as it's ready (0)

Anonymous Coward | about 2 years ago | (#41621377)

None of what you described sounds like "as soon as it's ready."

Re:As soon as it's ready (1)

RabidReindeer (2625839) | about 2 years ago | (#41621565)

None of what you described sounds like "as soon as it's ready."

"Up to 2 times a day" sounds like ready-or-not here I come to me. Just because you have a formal cycle doesn't mean that the software has been decently vetted, it just means that you have a guaranteed way to keep staff busy. Up to 2 times a day.

Multiple times a day (0)

Anonymous Coward | about 2 years ago | (#41621289)

Multiple times a day. Its the wild west. We do a bigger push weekly, but as needed a team of 8 developers push throughout day. On average once a day, but at the start of our produciton launch it was many times a day.

Set a schedule (2, Insightful)

Anonymous Coward | about 2 years ago | (#41621295)

I think customers don't really NEED the frequent updates that you're getting used to seeing with apps. I would think only the foolish really expect rapid releases. That's been a side-effect of "apps" - not what we expect of software in the business world. If you set and can stick to a release schedule, I think your clients will appreciate it.

End users find updating all the time a headache - only super-geeks like us like seeing every possible iteration of an application. The average user doesn't want to be bothered with YET ANOTHER UPDATE (ahem... Flash and Java). But they do appreciate when you have their security interests at heart (like an out-of-cycle Windows Update).

I would say every other month for 'service releases' - every six months for major releases. The biggest exception being "out of cycle" emergency releases when deemed necessary.

Re:Set a schedule (1)

icebraining (1313345) | about 2 years ago | (#41621495)

Java and Flash updates are annoying because the user has to update. Compare with Chrome silent updates; do you really think the user cares if they're on version 13 or 24?

I think small regular updates are better, since the user doesn't login one day, see 3/4 of the application changed, throw up their hands and assume they can't use it anymore.

Small, incremental updates let the user take in changed they can handle.

push? (0)

Anonymous Coward | about 2 years ago | (#41621319)

make changes in production environment, ftw

Depends (5, Insightful)

falcon5768 (629591) | about 2 years ago | (#41621337)

This really seems like it depends on WHAT your company does. Pushing to production a browser or a utility weekly or even daily is a lot easier and less disruptive than say a OS or a major software product thats used by hundreds of large companies. I would say the biggest obstacle is to get rid of the paper process, bring in git or something else for changes that everyone can view, and limit the signing offs to production, QA, or gold master (or whatever your company calls them) while keeping the dev stuff out of it so that the dev team can be more flexible. Also have a pretty good test lab/suite that will enable you to test stuff on the fly on multiple machines and configuration. Case in point Apple has a testing lab of EVERY machine they have made for the last 3 years in multiple configurations for their software. Granted they are a closed ecosystem so its easy for them to do that, but generally you could get a good roundup of machines to use that span from the insane configs to the "are you fing kidding me you are using that???" type stuff.

Re:Depends (1)

hackingbear (988354) | about 2 years ago | (#41621597)

For us, it depends on the company's current beer budget. Forward the question to the CFO, please.

Re:Depends (1)

Marillion (33728) | about 2 years ago | (#41621979)

I whole heartedly agree with this post.

I'd like augment the remark about WHAT a company does. If your company is in the financial services sector in the US, then there are Sarbanes/Oxley regulations that must be satisfied. If your company is in the healthcare industry, there are privacy laws. If you're in the aviation industry, there's the FAA. And so on ...

Also don't feel like you have to push out updates every week because it's the cool and trendy thing to do. Do it because there is a rational justification for doing so.

Test in Production (1)

Anonymous Coward | about 2 years ago | (#41621339)

Soon as our Hudson server does a build and all the unit tests pass, it automatically pushes it to production.

If you are in a startup and the cost of a bad push is $0, no problem.

If your SLA has penalties for downtime or misquotes, then I can understand why your process is more laborious.

Daily? (0)

Burning1 (204959) | about 2 years ago | (#41621347)

If your pushing code the production once a day, you have no QA cycle whatsoever. For a larger infrastructure, there's nothing wrong with extended release cycles.

Daily releases should be for break fix only. Weekly or bi-weekly pushes to stage and test environments are pretty normal. For a full release cycle, monthly is about the fastest I'd expect, and it's not unusual to see quarterly or longer on stable infrastructure.

Re:Daily? (2)

SchroedingersCat (583063) | about 2 years ago | (#41621489)

That's not true. If you have good automated regression, have reasonable coverage and do continuous integration you can cut the release as soon as you have a clean regression. It may take a few hours or a day to prep the release (sign-offs, paperwork, push, etc) but it can be done in parallel. There is always a balance. Prepping the release incurs costs in manpower and resources. Pushing daily may not be practical if cost/benefit is not there. For example if it takes 6 hours to prep the release then doing so for a wording change on the page that get 10 hits per day is not practical. on the other hand, if dev team cranks out dozen cool and exciting features daily it may be worth to staff release and QA automation teams to allow them to prep multiple releases per day.

Re:Daily? (1)

jythie (914043) | about 2 years ago | (#41621723)

Even the best automated regression tests will struggle in general purpose enviroments. They are a useful tool, but not a replacement for human Q/A since tests inhrently depend on a programmer's guess on what might go wrong. Though as with all things it depends heavily on exactly what kind of software you are writing. Some types lend themselves to automated testing more then others. Still, putting too much faith in automated testing with no live user in the mix is risky, even if it has not gone wrong 'yet'.

Re:Daily? (1)

nahdude812 (88157) | about 2 years ago | (#41621905)

They are a useful tool, but not a replacement for human Q/A since tests inhrently depend on a programmer's guess on what might go wrong.

All testing depends on what a human guesses might go wrong, automated or otherwise. The advantage of automated testing is that you can perform those tests thousands of times faster than a human can.

Re:Daily? (1)

gregmac (629064) | about 2 years ago | (#41621513)

If your pushing code the production once a day, you have no QA cycle whatsoever.

That's not necessarily true. You can push code up once a day, where QA takes it a day (or whatever) later, and then it goes to staging and then goes to production. The code being pushed out today may have been in QA for the past two days, and actually written 3 days ago.

At the place I work at now, we're doing two week cycles like this. Once development is done, the code is pushed to QA, who then spends up to a couple weeks on it. If it passes, it can go out, but in the meantime, dev is working on new stuff. This works for any cycle duration, and even a per-issue basis, which is how >= daily updates (should) work.

Of course, there are places where there is no QA, and developers are pushing stuff to production immediately after writing it, and then spending the next couple days rushing fixes for all the bugs they just introduced into production. And then fixes for the bugs in those fixes... And the cycle ends when someone either wises up and realizes it's not sustainable, or all your developers burn out and leave and/or all your customers get sick of constant breaking and leave.

Re:Daily? (1)

icebraining (1313345) | about 2 years ago | (#41621541)

Releasing daily is not the same as releasing the same day it was developed. It's just a matter of having a pipeline instead of a dam that bursts every six months.

In my limited experience, users can't handle too many changes at once without despairing and assuming they can't use the application anymore. Regular updates are critical to keep such complaints low.

Re:Daily? (1)

nahdude812 (88157) | about 2 years ago | (#41621701)

It depends on the nature of your application, and how strong your test suites are, and how damaging it is to your customer or company if your product fails.

If your application has very strong and clear determinism along with few or no cross-interactions, then test cases can be fairly easy to write and can also (importantly) provide a comprehensive quality analysis. With good test cases, you can provide a full regression test multiple times per day. With sufficient confidence in your automated tests, some companies even deploy to production automatically upon successful test execution, this is called Continuous Deployment.

Not too many big shops can realistically provide sufficient test coverage for continuous deployment to be reliable, but small shops can get away with it much more easily. In part this is because their product is probably simpler and easier to test in an automated manner, plus the engineering staff probably understands every aspect of it extremely well (also a side effect of the simpler product).

Finally you can do continuous deployment if your product is a version controlled API. Your customers bind and test against a specific version, and the features of that version are locked, only bug fixes are deployed to that version, while new versions can safely be deployed because customers only use the newer version if they go out of their way to do so, and they presumably will provide test coverage of their own when they increment api versions.

Sounds like you have a good process. (3, Insightful)

John Hasler (414242) | about 2 years ago | (#41621349)

Or were you looking forward to having to explain why your database got cracked and leaked 2 million passwords or that tens of thousands of customer machines will have to be manually patched to repair the damage done by your last update?

Re:Sounds like you have a good process. (2, Insightful)

Anonymous Coward | about 2 years ago | (#41621813)

Wait, what? How about explaining why your database got cracked due to your *lack* of updates?

You can do rapid deployments poorly and you can do them well. But when you really really need to deploy and *can't* because of the red tape involved, you're in bad shape.

Hours to weeks. (0)

Anonymous Coward | about 2 years ago | (#41621355)

I'm in a small company, making a full blown new release takes us about two weeks of code, and two weeks of testing.
Bugfix releases can be pushed out to production within two hours.

And the best practice? Test, test, test. Have proper testing protocols and procedures.

Re:Hours to weeks. (1)

Bill, Shooter of Bul (629286) | about 2 years ago | (#41621403)

And when you're done testing, go back and review the tests you didn't write to save 2 seconds and then write those.

when the business calls for it (3, Interesting)

Anonymous Coward | about 2 years ago | (#41621371)

Sounds like yours wants a process. You push as the business feels comfortable with it.

But think about this...

Lets say you are dealing with peoples financial statements. You want to make sure they are pretty good and accurate. If it is wrong people loose money and you get sued. Your audience dislikes sudden change. So you put process around that to insure that (test/qa/forms/etc).

Now lets say you are running a forum where it is the stats from some online game. It can be a little off. Your audience likes sudden new features. Stuff might not render correctly... But you can fix it tomorrow and the only gripe will be on a forum.

One business you have to be careful in creating 0 downtime and 0 mistakes. The other, a mistake here and there is tolerated and can be fixed at will.

Now I am not saying you can only create the first one where it takes a month or two for a push. I am saying those sorts of situations where caution is warranted. If you want a quicker process your process will need to be able to break things into small pieces and a bad ass testing system. Some situations they are contractually obligated to go at a particular rate. If you can not see the difference then I suggest you let your question simmer for a few years and get some exp doing it.

Read the Facebook Model? (4, Informative)

Malenx (1453851) | about 2 years ago | (#41621373)

Slashdot posted this story earlier,

http://www.businessweek.com/articles/2012-10-04/facebook-the-making-of-1-billion-users [businessweek.com]

Interesting read on how Facebook, arguably the largest website challenge so far this century updates daily.

Updates daily? (2, Funny)

Anonymous Coward | about 2 years ago | (#41622221)

Many a user of that site wishes they would STOP updating.

zip's releases (0)

Anonymous Coward | about 2 years ago | (#41621383)

zipcar used to push Mon-Thurs between 7-8am. they've cut back to (supposedly) twice a week since i left. it was basically 'when the code is ready, or when management decides something has to go out'. if you're lucky you can hit their site during a release that involves db changes (a _lot_ of them do) and get a cached img - that means the site is actually down at the moment ;)

From Decision to Release in less than an hour (4, Informative)

preaction (1526109) | about 2 years ago | (#41621385)

At $dayjob, we decide to release and our process takes about an hour. All the automated tests are run by Jenkins CI, and are run again during the release on every box being deployed to in order to ensure stability. We tend to deploy to User-Acceptance Testing boxes before full production boxes.

At the game company, we wrote a system that works like:

1) Tag release in git
2) Release is pushed to beta servers. Beta players get immediate updates.
3) Click button in Jenkins to run stable release

Completely automated, even down to restarting the servers in a staggered fashion to ensure that users always have a game to connect to (even if they have to disconnect in 20 minutes to receive the client update).

Automated testing, Continual Integration, and automated release processes (including cfengine3 and custom Perl scripts working with Git) come together to produce a painless release process. Since it's easy, we can do it whenever we want. As soon as it starts releasing bad code, we'll have to put process in place to ensure bad code does not reach our stable users.

The goal isn't to push to production more often (3, Interesting)

Omnifarious (11933) | about 2 years ago | (#41621387)

The goal is to always be able to push to production. Have a continuous integration and test system that allows you to have confidence that you can always push the latest build to production. Automate as much of your testing as possible so your build and test process can produce something that a human test team actually has to work hard to break.

Also, you should pipeline your approval process. Always be in the process of approving a new build to go out while you're working on the next one. This will put a lot of pressure on this process to be faster and more efficient. Holding the people responsible for this process accountable for production breaks will put counter-pressure ensuring that they do not become more efficient at the expense of actually doing the job.

Re:The goal isn't to push to production more often (1)

cplusplus (782679) | about 2 years ago | (#41621825)

The goal is to always be able to push to production. Have a continuous integration and test system that allows you to have confidence that you can always push the latest build to production. Automate as much of your testing as possible so your build and test process can produce something that a human test team actually has to work hard to break.

Parent hit the nail on the head. The above comment is the key to a successful agile development environment. Investing in a robust, automated test suite that runs daily on any code that developers check in will allow you to release about as frequently as you want.

Get rid of the clue less PHB's (1)

Joe_Dragon (2206452) | about 2 years ago | (#41621391)

Get rid of the clue less PHB's lot's of meetings is sign of being over loaded with PHB's.

It depends on how critical the product is (4, Insightful)

Glires (200409) | about 2 years ago | (#41621395)

Sometimes all of those meetings and paperwork serve a useful purpose when an application is critical. If a one-day build of instagram doesn't work, then the only consequence is that there are fewer grainy photographs of someone's cat. If a one-day build of a power distribution system doesn't work, then an entire city loses electricity.

Re:It depends on how critical the product is (1)

Anonymous Coward | about 2 years ago | (#41621685)

Sometimes all of those meetings and paperwork serve a useful purpose when an application is critical. If a one-day build of instagram doesn't work, then the only consequence is that there are fewer grainy photographs of someone's cat. If a one-day build of a power distribution system doesn't work, then an entire city loses electricity.

If an entire city loses electricity, then there are fewer grainy photographs of someone's cat. So it really is the same!

As soon as the automated tests pass (4, Interesting)

DeadSea (69598) | about 2 years ago | (#41621401)

Push to production as soon as the (many) automated tests that you have pass. This means you should have comprehensive unit tests and tests that run in the browser, probably written in Selenium. You'll also want to script your release so that you can do it with the push of a button. Once the tests pass, and the mechanics of a release are trivial, there is little reason to hold up a release.

I worked for a top 500 website (East coast) for 7 years that did weekly releases. Since I left, they decided that wasn't fast enough and now release multiple times per week. I'm now self-employed on my own website and release within an hour of finishing development of a feature.

I started my development career writing firmware for laser printers. When you are shipping code on a physical product, the cost of bugs can be quite high. Especially when it leads to returns or recalls because customers are not satisfied. Our release cycles there were 6 months+. Quite appropriately, IMO.

On the web, the cost of bugs is much lower. In most cases it is the only cost of another release. Sometimes it could cost more because of downtime, but good automated test coverage mitigates that risk pretty well (especially if there is load testing involved). The worst case would be data-corruption, but I've never actually seen that in practice from a release, that has only been related to hardware failure or accidents in my experience.

The real question is... (1)

jeffmeden (135043) | about 2 years ago | (#41621407)

What you need to be asking is, "How long is an acceptable test cycle?". Considering something "in production" usually implies some sort of testing, otherwise all the changes would just show up immediately right? So, ask yourself (or your organization) how much testing is enough? Equally important, how much is too much? These are the questions every software company struggles with. Spend too much time testing and your releases will always be behind. Spend too little time on it, and your "production" will look too much like test. Your own appetite for risk will determine where that line is.

it depends (1)

a2wflc (705508) | about 2 years ago | (#41621411)

I work at a company with many brands and MANY customer-facing websites. Some sites/services can be updated in minutes with little hassle or approval. Some need weeks with much paperwork. It depends on the risk. The apps are built in different ways (CMS or from scratch or with many proven components). The apps have different features (some can result in $million fines if there's a problem).

The tools are there to set up processes where every time I commit, it goes to production. You need a process that matches the risk you are willing to take.

More often than you'd expect (1)

pjw611 (2750677) | about 2 years ago | (#41621419)

I work for a marketing company - primarily in email, but the company handles everything. My area is databases, data warehousing and reporting. For our code, we have twice a week change management meetings if there are any changes to be discussed. Given that timeframe, officially we go to production as often as twice a week. In practice, we occasionally fudge a meeting and will get caught up after the code has been promoted to ensure that i's are dotted and t's crossed.

40 rollouts a day to keep boredom away... (1)

Anonymous Coward | about 2 years ago | (#41621423)

I do work for possibly the largest hotel reservation website. The whole company but especially the IT department prides itself on being agile and quick acting.

This means a developer can roll out whenever he thinks it's time. He'll roll out trunk which will contain his changes and everything else other devs checked in. There's a small amount of testing done to catch the obvious errors.

Real quality control is done through excellent monitoring and a quick roll-back option in case there is breakage...

Today there were about 40 code pushes. Not all to the website, some to backend systems etc. but still: 40 rollouts and no rollbacks.

For many this will sound like madness and others will immediately understand the business benefits this approach gives. While others are still testing stuff, this company is already giving the users new features which will make the product better and thus lead to more customers.

If you try to copy this approach, you'll most likely fail. The trick to make this amount of change work is in having people do incremental development of small features, excellent monitoring and absolutely quick and easy communication. Maybe you can find the people to pull it off, maybe you can't...

But knowing what other people in the web-space do will probably not apply to your company. As you said, the others are younger, nimbler and are used to it. For your company it's an uphill battle because you have an existing ingrained company-wide mentality which is completely different. I'm seeing a lot of companies trying to be agile yet in the end they only go through the motions without living it. They do the daily standups after lunch where everyone is talking for minutes on end... Yeah, you're doing it wrong, right there. The idea behind the quick-turnaround agile startups and established players is that they basically live the style. If something doesn't work for them, they chuck the process out the window and come up with something better.
Proven companies generally do roll out ITIL instead...

As a customer (4, Insightful)

ZombieBraintrust (1685608) | about 2 years ago | (#41621445)

As a customer I hate daily updates to my applications. Unless the application is in Alpha or Beta it is very disconcerting to see updates at that frequency. I only want to see an update that quick when something is really broken. If brokeness is a daily occurence then maybe you need to slow down.

Every Monday Night (1)

MikeyC01 (231948) | about 2 years ago | (#41621447)

Migration requests to Production (signed off by the person who requested the change/bugfix/new dev/whatever) are supposed to be to QA (who does the migrations) by the prior Thursday but that can be modified as necessary :) This is for any of the dozens of systems we develop for - the several-hundred-page in-house ERP system written in .NET, the legacy Oracle Forms system being upgraded to .NET, or the myriad one-off special purpose web sites.

If it's an *emergency* it can be slipped into Production during the week as needed, but as the process has become more refined over the last year, they try and not do that unless absolutely necessary

Quit and move to a company with a process you like (2)

cryfreedomlove (929828) | about 2 years ago | (#41621449)

Life is short. You seem like a talented person who knows what you want. If you current company does not modernize in the next 6 months then they are holding you back. The market is starved for really talented software engineers. Take the time to research your opportunities and then jump ship if the one you are on is still stuck in the 90's.

Mod Parent +Wise (1)

handy_vandal (606174) | about 2 years ago | (#41621705)

Life is short. You seem like a talented person who knows what you want ... the market is starved for really talented software engineers ...

Amen to that, brothers and sisters! Amen to that!

dev test qa preprod prod (1)

alen (225700) | about 2 years ago | (#41621457)

each way the release is tested and signed off on. little things are tested like making sure that the financial transactions are OK and customers are overcharged or undercharged. One time we had a case where we undercharged customers for years, then sent them a bill for a few years services and ended up in a lawsuit.

other times code works on developer laptops but somehow it doesn't work in production

i'm at the point where unless you're facebook or someone big i never report issues. i just use your competition. if you want to deploy buggy code, go ahead. you just better be the only guy doing whatever you're doing or watch your customers flee

Bad form.. (1)

brokenin2 (103006) | about 2 years ago | (#41621473)

I sometimes just work in the live environment while people are in and using it, depending on what I'm doing.. I'm very careful when I'm doing this of course, but sometimes the hotfix requires having the user's screwed up data to work with.

The rest of the time, I publish when I think I have something useful for the users.. Often a couple of times a day, but we're one of those very small nimble web 2.0 places, and the decision to publish is all mine.

Daily, but only weekly for each sub system (1)

captainstormy (1107081) | about 2 years ago | (#41621475)

We sort of break ours up. We have an implementation every M-Th, but M-W's are on the sub systems and Thursdays are fo the main system. I'm a team lead over one of the sub systems, we push to production on Monday. But the implementation team do a push four times per week. Sorry for any typos, sent this from my phone.

sounds like code and fix (1)

trybywrench (584843) | about 2 years ago | (#41621481)

Pushing to production multiple times a day sounds like code-and-fix to me. Now, promotion to UAT/Test multiple times a day sounds much more reasonable. Pushes to production should be regular and frequent but not multiple times a day. In my company, we have a couple of change windows that production pushes happen in. Most times the windows come and go with no updates but when we do have code that's ready for production we schedule it for the next available window.

All the time (0)

Anonymous Coward | about 2 years ago | (#41621505)

We push updates to production almost weekly -- any time it is needed. How? Automate! Automate the build! Automate QA! Automate the forms! Automate the process! Automate production monitoring! The change management meetings last 5-10 minutes a day. This is for all of the infrastructure for a multi-billion dollar global organization.

And fire the people that want to sign off on documentation changes. I'm dead serious about this. If you cannot or will not do this, you are screwed. If you are not in a position to fire those people, but the people that are in that position won't, then go work for a company that will. The company you work for isn't long for this world anyway.

We have one weekend a month where critical processing happens. No changes on Saturday. Instead they go out Sunday. Nobody stops the train. The downside is that tolerance for production outages is very close to 0. If you are a screw up that wants job security, this ain't the place for you.

Promotion? (-1)

Anonymous Coward | about 2 years ago | (#41621515)

My stuff goes into production immediately. That's because I develop in production. Testing is for pussies.

Path to Victory (3, Interesting)

Electrawn (321224) | about 2 years ago | (#41621525)

I am a Release manager at Acquity Group and have worked for "Old School" software companies that have their eyes blazing at all the new web companies that release release release all day long.

Here is the abbreviated philosophic path to victory:

DevOps.

Your developers need to act like operations (knowing how the code is deployed and configuration settings, routes and the like) guys and your operations guys need to start coding (as in ruby for puppet and chef, automation and automation and automation)

This leads to...

Infrastructure as Code.

Hire a Release Engineer or convert a sysadmin to start automating builds. Now you start automating code deployments, you start automating infrastructure deployments so they are repeatable.

This leads to...

Test Automation.

Now you need to stop focusing on smoke testing and have test automation engineers write automated test code.

One more thing...

Automated Rollback

When things go nuts, with fast deploys you need fast rollback. Capistrano is a great tool for deploying this way, rollback is very easy.

Now you can ...

Continuous Delivery.

Great, you got this far, your builds, testing, deploys are automated!

For Developers:

Coding for Continuous Delivery is a different paradigm where unfinished code makes it to production. This means that in the production configuration, settings for the new code must be activated by switches to turn new feature sets on. You don't want that unfinished code mucking up your site, right?

People Processes:

Do you have CAB boards and ITIL processes? Great, make them faster and more as DEV/TEST/QA becomes automated and just focus on UAT/Prod environments. See this book: http://www.amazon.com/The-Visible-Ops-Handbook-Implementing/dp/0975568612/ [amazon.com]

I can also gloss over on waterfall/Agile and hybrid software models.

Finally, unless your culture wants to shift, it may be damned near impossible to change the culture unless management wants to. If it's doomed, it's doomed!

Released too often? (1)

mrhippo3 (2747859) | about 2 years ago | (#41621545)

At one point we were on a monthly push for a web-based application. I was stuck in documentation and got all my changes last minute. Once I was told, "The software is ready, are the Help docs?" I asked for a day to see what the software had morphed into to make sure the docs were still OK and to then write/fix what had to be fixed only for the most current changes/new features. My problem was with the monthly pushes, QA was locked in testing the code and stopped reviewing the docs as they had no time to check the code. After a number of release cycles, all the un-reported code changes had altered the software so much the docs were wrong. I could never explain that I had no talent for fiction. I was not sufficiently creative to rewrite the docs just so they could be wrong. Every single page was reviewed at least once. However, given that I was barely keeping up with new/fixes, a complete rewrite to match months of changes was not possible. The software is only as good as the Help.

Not a meaningful question (1)

Animats (122034) | about 2 years ago | (#41621553)

Without any idea of what the product does, this isn't a meaningful question. Is this just a web site? A program used by people? A program used by other programs? How much persistent state is there? Do users need to know in advance before an update is made?

Platform as a Service (0)

Anonymous Coward | about 2 years ago | (#41621555)

Look into Platform as a Service (PaaS) that has a release/lifecycle management capability.

Constantly (1)

Gothmolly (148874) | about 2 years ago | (#41621559)

We only have a production environment to develop code, and use an interpreted language, so it's as simple as editing a file and sending a few HUP commands.

Cardninal Rule: Don't fuck up.

It's worked mostly well for years now.

A few times over 15 years. Ideally only once. (2)

Yoda222 (943886) | about 2 years ago | (#41621569)

On my recent project, we aim to deliver only once the software. Off course you always have to do some small modifications after the first productions test. In my last company after the launch of the production, I remember of 4 different push in production in one year. But it was a brand new product. (I have left the company since that time, but as far as I know there was no new modification in the production. A new feature should be pushed in a near future)

In my current company, in one year I have not seen any modification on the main product, if we don't count new launched product. (in fact no change on the real product, but change in the software used to manage the product are more frequent)

Oh, by the way, when I say launch of the production, it's really called a launch, with a launcher, and satellite on the top of it.

GitHub as an example (3, Informative)

kav2k (1545689) | about 2 years ago | (#41621593)

I invite you to read the GitHub blog post on how they deploy [github.com] .

We are in the middle of this transition (1)

SpuriousLogic (1183411) | about 2 years ago | (#41621595)

The company I work for is right smack in the middle of this transition. We had something akin to a SaaS model, before SaaS was a "thing". We have 40+ applications, some are desktop thick net .Net clients, others are web based, all of which interact with one another to varying degrees. Myself and one other person were instrumental in getting the company to a point where it is possible to release in a semi-automated fashion. Our challenges were similar to what you described - manual work with lots of process wrapped around it to ensure some modicum of governance, which often failed. Our number one task was getting our software dependencies under control and automating building. We settled on Maven/Hudson/Nexus as the tools of choice. We have a corporate POM that defines many of our baselines that each of the software projects inherit from. We use Hudson both for automated builds as well as one touch deploys (some are even totally automated) to environments, including production (which is not automatic - it requires a human to initiate). We then spent over a year "cleaning" our old ant build structures and refactoring into Maven. It cost a lot of money. A whole lot. Maven found numerous cyclical dependencies that Ant hid. We defined all the core libraries, versioned and released them, then built the apps outward from there. Today, 99% of our software builds are totally automated (a few stragglers of low priority products have not yet been converted to Maven). We have total control of our dependency structure. We have a totally automated release process. We have a totally automated deployment process. It took a lot of work, and a lot of money. The other side of the coin is our runtime environments. This has been a disaster. The teams that run these systems don't have the concepts of automating anything unless it comes shrinkwrapped form a vendor. Plus there was a management structure in place that encouraged manual work with large numbers of employees. Firefighting was highly rewarded (both in cash and prestige). Eventually, the balance has shifted. The management on this side has either been terminated or left when they saw the writing on the wall. Slowly this side is embracing virtualization and a move toward generic environments whose buildouts are automated. There is a long way left to go here. The goal eventually is that we can automatically provision a VM for a product and deploy to it as we need (think a mini-AMI model). It is hard. Really hard. A lot of companies won't have the energy to go through with this, and it has a lot of ways to go wrong. We have gone through multiple executive level people during this as well as countless mid-level managers. This type of change is not just technical, itis a massive cultural change for a company. But today, we have a totally automated process for code release all the way from the developers desktop through to production. Depending on the interactions of a piece of software (if it is an edge or core piece), it can moved daily or monthly. The technology itself can allow multiple production moves a day if people so wanted , but for customer reasons we usually limit this to once a day.

Twice a Week - Transparently via Replicated sites (1)

slashpot (11017) | about 2 years ago | (#41621601)

We release on average twice a week at a new startup funded by AAA - heavy DevOps shop with fast developing online travel product suite (www.tstllc.net).

Infrastructure runs on a mix of local private cloud and public cloud. MySQL replication between the two geographically different locations. Only 1 site takes traffic at a time. Replication is stopped before a push, new code deployed to cold site, automated QA testing verifies code site updates are working correctly, traffic gets flipped across datacenters via DNS Failover (see dnshat.com for example), backup site goes hot, release is pushed to other site, verified, traffic shifted back to primary site again via DNS Failover, and lastly replication is resumed. Replication is stopped only if there are schemas changes that prevent the new release from going live with replication running (rare now we have the Devs up to speed on the failover architecture). Pushes are done via automated scripts - Java/Scala/Play apps. Total release time 1 hour - smooth as butter - transparent to site visitors and AAA club clients pulling webservices to their automated backend systems (we make sure their backend systems obey's DNS TTLs like end user browsers so that the release failovers are transparent).

Within a year the whole thing will automated for multiple releases per day if needed.

weekly (1)

roc97007 (608802) | about 2 years ago | (#41621603)

Every Wednesday is Preprod day, and every Sunday is Production Deploy. Production was done by a rotating group of about a dozen people, so you didn't have to work on Sunday too often.

It was a rare week that had nothing to deploy. It was also rare (thank Fudd) for us to have to do an emergency backout on Monday.

Speaking of which, it's good to have different teams testing and deploying. It's less likely that the deploy team will try to fix the bits after they're deployed in Prod, and maybe forget to fold the fix back into Development. Having teams with different privileges and different responsibilities helps preserve consistency, and tends to avoid the morass of twisty passages that often results from free-form development.

...but I don't work in that group anymore, since it was all outsourced to India. I have no idea what's done now. But the system we used to have, worked really well.

Time to market is not always the metric (3, Insightful)

einar2 (784078) | about 2 years ago | (#41621629)

It depends on your business which metric is meaningful. E.g. for a global bank, quality is more important than time to market. Make sure that your business really gains something by playing release time against quality.

It's a tradeoff (1)

dkleinsc (563838) | about 2 years ago | (#41621651)

Monthly release cycle isn't really bad, if your goal is stability. This gives your testing/QA team (you have one, right?) plenty of time to find problems, and developers time to fix any bugs the QA team found.

Shorter release cycles might be better if your goal is responsiveness, but in my experience faster than weekly is asking for trouble.

Also, make sure you have a process for handling those things that do legitimately need to move faster than the release cycle (e.g. "We just discovered a massive bug that's risking exposing customer credit card numbers!"). The process for doing this needs to have people (such as your QA and admin teams) empowered to say "no-go" for fixes like this, to prevent someone from just willy-nilly pushing stuff by declaring it to be in this "faster release cycle" process.

Yearly. (1)

fotbr (855184) | about 2 years ago | (#41621673)

We'd like to push stuff to production faster, but our client usually only has one window a year when we can take production systems offline for upgrades.

As for keeping it organized...hah. Two weeks of pure chaos while the hardware folks are trying to get all their upgrades and replacements in place at the same time the software guys are trying to figure out when systems will be back together so they can do their upgrades, followed by a weekend of praying that everything comes back online the way it should.

It varies... (1)

igaborf (69869) | about 2 years ago | (#41621699)

I push to production fairly often, depending on the nature of the tickets I'm responding to. I'm generally maintaining three branches concurrently, the production branch, the point-release branch and the major release branch. Trivial fixes or small-but-critical fixes tend to go onto the production branch and get released as hot fixes. This can happen several times a day or not for several days, depending on how extensive the change is and thus how much testing is needed.

Fixes that are a bit more extensive and/or that will have visible impact to the users tend to get done on the point-release branch, which typically is merged back to production and released every few days to a week or two. (Naturally, fixes made to the production branch are merged to this branch as soon as they are released.)

Significant functionality changes, refactorings and other large-impact changes are performed on the major release branch -- with the intermediate changes merged in, naturally. This gets merged to production per our roadmap schedule, hopefully after being fully tested by the beta users. (Yeah, right.)

Depends on where the value is (1)

Matt_Bennett (79107) | about 2 years ago | (#41621763)

There is no one frequency that is good for every application- it depends far more on what you're doing and you should be focused on delivering that, rather than a pretty arbitrary metric. Look at the value of what you're doing. What is the cost of things breaking? Don't forget, MTBF *includes* the time to fix the failure.

Think about live broadcasting. If you're selling informing people of what is happening right now, you better be able to recover from a link down quickly, even if it means not keeping records- but if you're selling an archival service, data loss is a problem, and some delay is acceptable.

Testing in production (1)

kmahan (80459) | about 2 years ago | (#41621799)

This shirt covers the methodology I've sadly seen far too often:

        http://www.thinkgeek.com/product/f141/ [thinkgeek.com] [Most Interesting Coder]

Automate everything, use tickets (0)

Anonymous Coward | about 2 years ago | (#41621833)

You should have a script that will pull the release candidate out of version control into a new directory, build it, and run tests. Or as close to it as possible. I use Perforce (recommended), I use the mouse to pull my candidate into a directory, cd into it, then type "make all test". I work in a cygwin environment under Windows.

You should use a label when you pull out your release candidate. Even if it's the tips, label those tips before pulling the release candidate out.

All checkins to your version control should refer to the trouble ticket it applies to. All bugfixes, enhancements, and new features should have a ticket.

IMHO, without this your walking down the tunnel, and the headlamp of the oncoming train is burned out.

Doing this, I could do a bugfix and a release in a few hours on my last project. The actual "get the code and make all test" took about 30 minutes. Other projects had a 3+ hour compile, plus a 20 minute link, plus about 4 hours of testing. But during that 8 hour process I did about 30 seconds of work, then moved on to something else.

The Answer is Low Standards (1)

evilviper (135110) | about 2 years ago | (#41621841)

The answer you are looking for is: Lower company standards. Having worked for companies large and small, including start-ups at various stages, I can say from experience that frequent releases work because management has reasonably low standards, and is perfectly okay with the last deployment breaking things, and needing to be hot-fixed by a follow-up deployment just days later. That's just the model.

I know the model you're talking about, too. A more solid company, building its web products like it would a critical internal service... Going through design phases and in-depth code review, and extensive compatibility testing, to make sure anything that is deployed will work 100% (or almost), and is good enough that it'll never need to be held together with duck tape and band-aides because the feature was tacked on ad-hock by one dev in a few hours, which is really what you're talking about at these "nimble" startups.

There are some ways to get the best of both. The Amazon model is to develop a public API, then develop unit tests which FULLY exercise that API. Then all the quick development behind the scenes doesn't change the API, and regression-free code is assured in seconds, as you run all those unit tests against the new code. That also instills more discipline, as the documentation is law, and it'll be clear which code is to blame when there's a breakage, and less perpetuation of bugs and flaws to keep other bad code from breaking when they're fixed.

Every couple weeks or so... (1)

ski9826 (2541112) | about 2 years ago | (#41621843)

We try to complete a sprint every 2-3 weeks and then push to production. Occasionally (more often than I would like) there are hotfixes that need to be done in between. Scrum with agile software development.

As often as we need (1)

Terry Pearson (935552) | about 2 years ago | (#41621891)

As often as we need. We push based on features. Although we sometimes slip into batching up production moves. I find it is much easier to push often when you work with people that are unafraid of branching based on feature requests.

I'm just glad we don't do the "quarterly push" like some do. It sure saves us a lot of troubleshooting in the chance that the push introduces a production error.

Some suggestions (0)

Anonymous Coward | about 2 years ago | (#41621899)

As other have pointed out, the speed is less important than making sure the process matches the product. How important are security and unit testing? How many people are working on this website? What does downtime cost? How easily can you roll back changes? These are the sorts of questions you should be asking and getting answered (internally) rather than "How can I push out updates twice a day?"

Really, if your organization is large and slow to adapt to the new way of going things, perhaps the powers that be should look at giving the web development team some independence. A skunk works type of set up where a small team can work on the technology and get things moving. So long as they check in every so often and don't go off the rails, the web team could be left alone.

reviews (0)

Anonymous Coward | about 2 years ago | (#41621935)

This is what scientific study can tell us:
- Reviews can find 90% of the bugs.
- Review should be done by a single person and it should not take more than an hour (not much can be found after that)
- Any other testing phase can find about (or at most) 25% of the bugs.

Key to fast development is in unit tests and code reviews. With those in place, mostly misunderstanding of the business logic can get past you. And testing takes less than an hour. If you want to get rid of the business logic part also, look into user experience, it will tell you what customer really needs, when customer itself doesn't know it. Also add some CI, automate any other validation tests you might need (e.g. server startup time) and you are good to go. Also investigate Lean.

Imagine this: A developer makes a commit, computers run thousands of tests, all tests pass and release is published automatically or a nice package is provided for distribution. (or developer makes a commit, there is an error and CI informs the developer directly and the problem is quickly fixed). A developer complains that he has to wait for days before he gets to see the requirements, because architects what to review those first. So you have a meeting and notice that you can actually save days by arranging the process a little and still get the same value you used to get before.

Next, don't believe any of that. Life is not that easy. People are stupid, they might have a bad day because their favorite juice was sold out, or you might suffer from a faulty software etc. Life is complex. Something that works for someone, doesn't work for everyone. And environment around you constantly changes. If you don't change, you die. So try things out. Reject solutions that don't work, continue with good solutions until they become bad. Read books (peopleware, management 3.0, Clean code, Working Effectively with Legacy Code, The Design of Everyday Things, etc.), get ideas from other companies and organizations, and try them. It is impossible to tell what works and what doesn't because of the complexity.

Just because (0)

Anonymous Coward | about 2 years ago | (#41621977)

Why do you have to accelerate releases just because you implement web services? The services are all about interactions with your clients and collaborators and are always attached to value generating processes which are intimately related to your business models. The business models of these web 2.0 strapons are completely different from yours.

Here is how we do it. (1)

indraneil (1011639) | about 2 years ago | (#41622023)

I work for a smallish team (~100) in a megacorp that ships a service that has a significant number of customers.

We have 2 major code branches - the developer branch and the production branch.
- The production branch sees management approved point fixes that get collected and rolled out every month after a huge number of tests (automated and manual).
- The developer branch gets continuous feature additions. We collect all features from the developer branch and move it to production once every 6 months.

The details below pertain to our developer branch:
Like a lot of other people have suggested, we have spent time on robust test automation. We split that up into a smallish set that runs before any code check in. All checked in code runs through a significant battery of tests nightly.
We fork the developer branch and deploy it on a self hosted environment every week.
After self hosting features for ~5.5 months, we initiate rolling out the new features to production - takes about a fortnight.

Hope that helps.

Don't follow Google's lead (1)

jtara (133429) | about 2 years ago | (#41622037)

Well, whatever you do, please don't follow Google's lead, at least with respect to Google Groups.

They seem to push a new version at least weekly, and sometimes daily.

It's a coin-toss whether it will actually work from one day to the next. Features will just stop working for a few days, until somebody notices and fixes. Or fixes the fix that was put in to fix the fix.

Latest is that Firefox 9.0 is "obsolete". If you are running anything older than a fresh-out-of-the-box (or Torrent) Linux release, you are probably using an "obsolete" browser.

Some users have *policy* to be 3 releases back. (1)

DutchUncle (826473) | about 2 years ago | (#41622067)

At one prior job, it was official written policy to NEVER upgrade to the latest release of ANYTHING, on the grounds that it had no track record. So it doesn't matter how often you release.

Releasing on a fixed time schedule has never made sense to me. Target, yes, but if it's ready a week early, or needs a week longer, better to do it right than to do it at a fixed time.

as often as a feature is ready. (1)

FacePlant (19134) | about 2 years ago | (#41622069)

You're not eating the cost of burning releases to media.
Push early, push often, but have a rock solid, bulletproof rollback mechanism.

Seriously, that's what staging is for. push it, roll it back, push it, roll it back.
Since you don't have to stick to a golden master, media reproduction schedule,
push a feature as soon as it is ready.

If your organization can't get past big quarterly releases, then they will not succeed with more nimble competition.
The organization has to adapt. So wither the management adapts, or gets replaced.

Hourly (1)

ewoods (108845) | about 2 years ago | (#41622133)

Hourly. As soon as a feature is ready.

Several times a day (1)

Max Romantschuk (132276) | about 2 years ago | (#41622173)

At Verkkokauppa.com [verkkokauppa.com] we deploy several times a day. Our team is fortunate enough to work on our own system, so for small features or bug fixes the turnaround can be as little as minutes.

For us the most important tool is Git. We have a logging mechanism in our deployments scripts whish logs who deployed which version of the code base (SHA1 hash) and when. If we do manage to break something we simply immediately return to the last known good version by checking it out and deploying it. Then we have a lockout policy that prevents futher deployment until the bug is fixed.

On rare occations we have had to do reverts, but only a couple of times over the course of several years.

Other valuable assets that keep us agile deployment-wise is having the whole team physically in one place, and most of our stakeholders in the same building. We also use Jabber internally to make it even easier to communicate on those occations when face-to-face is not possible.

We also use Scrum, but this is a rather recent development, and we did mange the same deployment policy before we switched to Scrum. A continuous integration environment is in use, and does help keep things in order. But for minor features and tweaks with few stakeholders it's not entierly uncommon to simply deploy and communicate with the users directly to check if everything works as expected.

The fact that there is one installation of the system is a major asset. We really never have to deal with versioning. The current version is simply the HEAD commit on the master branch.

Decentralized at Netflix (1)

CrankyFool (680025) | about 2 years ago | (#41622283)

At netflix, each app owner (either person or group) figures out what release process and frequency make sense for them. Some apps get pushed extremely rarely -- probably for actively developed systems, the least frequent I see around here is every other week. Other apps get pushed more quickly. Lots of people who push weekly; lots of people who push ad-hoc, whenever there's a change they want to get into production. Our Engineering Tools people are also finally starting to support continuous deployment, so it'll only get faster.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?