views:

117

answers:

7

...or do you have to go through someone else (a person who manages the servers) to get your code deployed?

I understand the policy of not letting everyone log onto a live production server but I would like the ability to have access to my code, database and files once they are live.

How is it for everyone else?

A: 

It all depends on what procedures the company has in place. Some are more flexible than others. Our organization is moving away from developers having access to the production environment. Now everything has to follow the process of QA and then operations (who take care of the deployment and maintenance of the code). I think you'll end up with less incidents, but a longer bug fix time.

Gert G
I think you're more likely to end up with the same number of incidents, and a longer bug-fix time.
Brian Hooper
@Brian - That might or might not happen. It's still new, so let's give it the benefit of a doubt. It's the flavour of the day.
Gert G
I suppose a small barrier between deciding something is a good idea and trying it on a live site is a good thing, given the number of idiotic mistakes I make all the time. But small is probably the key word there.
Brian Hooper
@Brian - I agree with you. But some developers knows how to apply changes that work and some don't. Being in a big organization, I've seen people overwriting a production database, not only once, but several times. Hopefully this new process will prevent/decrease the chance of such mishaps.
Gert G
A: 

At the last place I contracted for, there is a specific group of people responsible for deployment and configuration on the production servers.

All your code had to be checked in to the vcs and this is where they got the code to deploy. So you don't have "access" to make changes to the code once it goes live. They deployed new/changed code twice a week unless it was an emergency deployment.

buckbova
I guess in your case the live environment mirrored the test environment. Not sure if ours does :/
JohnnyBizzle
They had several environments, two development, one qa, and production.
buckbova
A: 

I just deployed something to a live environment today. I also have access to the live database.

This has been known to cause some epic failures in the past. Sometimes somebody dropped a table on the production environment instead of a development environment. However, I see little advantage in another person doing the releasing, especially when he is not that acquainted with the software.

Sjoerd
Dropping a table on live? Guess that's why you take backups!
JohnnyBizzle
Of course, but that still means that the system is down while someone is restoring the table from a backup.
Sjoerd
A: 

The ideal release procedure flow is as follows (in my little world):

  1. Development Env (where you code it on and do your testing)
  2. Testing Env (where the testers test it with live data - could also be you)
  3. At this stage it can go straigh to live, or release to another testing ground where you can have users testing it.

Depending on how strict your company is, the developer may or may not have access to the live release, especially if it's a big company.

xil3
I am similar. - I develop on my own machine.- Deploy to an internal/intranet server and let the tester have a go at it.- When ready it is put on a deployment list (recent conception) and deployed to live.
JohnnyBizzle
+1  A: 

Every environment is slightly different. In comparison, you have to decide what works for you. Amazon for example makes their developers own their own code, which some developers hate, but it is a feature of that environment that keeps bug counts low (when was the last time you saw a bug on amazon.com?).

Others want a tighter QA process so create an operations department to look after deploys, but I've found they tend to create an atmosphere of negativity in the company: they are rewarded by justifying their role, which entails pointing out and supporting the bad things in the World. If the devs are good at their job, resentment can creep in if their pay is in any way performance-related.

Personally, I tend to prefer to look after the whole stack, but increasingly am moving to providers that allow me to worry less and less about hardware (EC2, Heroku, etc.), and to focus more on functionality in the apps. I personally like owning the code and the bugs, as it means I am demonstrably motivated to keeping bug tickets down - every open ticket is a delay to the new functionality I want to work on.

Each to their own.

p7r
There are arguments either way. Personally I would like to be responsible for my live code and know nothing has been tampered with beforehand (that's happened before!) Also having the environments mirrored would be nice!
JohnnyBizzle
A: 

Having a configuration management group, or someone other than the development group deploy code to the production environment have it's advantages. Most of which help enforce a rigor and audit trail of releases. Ideal the configuration management team should release code by scripting. The script pulls from the code repository for a certain tag, and releases to a certain server. Doing so minimizes mistakes along the way.

I think the development team should have read only rights to production data, and ability to see any log files. This allows for easier debugging of problems. If a new version of code also requires database updates, the configuration management team should also be deploying those changes, by script of course.

Jay
A: 

Answers above mentioned development and testing environment. It is also quite important to have dedicated, separate build server that is not used for development. It pulls source code from repository, compiles and creates distribution (in Java world EAR or WAR file) that is then deployed to testing environment etc.

This build server can also host CI environment and perform regular automated daily builds.

Miro A.