Slashdot Mirror


Should Developers Have Access To Production?

WHiTe VaMPiRe writes "Kyle Brandt recently wrote an editorial exploring the implications of providing developers access to the production servers of a Web site. He explores the risk introduced by providing higher level access as well as potential compromise solutions."

45 of 402 comments (clear)

  1. For me by enderjsv · · Score: 5, Insightful

    Whenever an error occurs that I can't replicate in a dev environment, I'm always SO tempted to hop into prod and start adding in some output statements.

    Yeah, it's probably a good thing I don't have access to prod.

    1. Re:For me by IICV · · Score: 4, Insightful

      That's why you shouldn't have access to prod, but you should be able to either A. get a clone of prod made fairly quickly or B. already have one running so you can mutilate it however you want.

      Seriously, hardware is cheap and people are expensive. Minimizing person-time is worth a bit of hardware gluttony.

    2. Re:For me by FatSean · · Score: 4, Insightful

      Test environments are essential, but they do require people-time to keep them matching production.

      --
      Blar.
    3. Re:For me by Anonymous Coward · · Score: 1, Insightful

      I specifically refuse access to PROD so that there is never a question of whether I touched anything. I provide installation scripts and instructions to the DBA/SysAdmin to install my changes in an orderly, documented process.

    4. Re:For me by idontgno · · Score: 3, Insightful

      If I screw up, people can't get the correct pills.
      It's fun to make other people live dangerously. :-p

      FTFY. Well, for certain values of "pharmacy benefit management system". If your production hacking can botch scrip fulfillment, please say what company you're working for so I can try to avoid it like the plague it is.

      --
      Welcome to the Panopticon. Used to be a prison, now it's your home.
    5. Re:For me by Americano · · Score: 3, Insightful

      Deploying to an extra "prod-clone" test server should require pretty trivial amounts of people-time if it's set up properly - it's just another test server, if it takes ridiculous amounts of manual effort to deploy to a single extra test server, you're probably doing something remarkably inefficient.

    6. Re:For me by Gerzel · · Score: 3, Insightful

      This article also assumes that the developers (or often developer) is not also the server admin. Many shops have one or a few IT people wearing many hats.

    7. Re:For me by Anonymous Coward · · Score: 3, Insightful

      Yes, we call that staging.

      We work on dev.

      We promote changes to stage, which is a dup of the prod environment.

      When stage is approved we promote to prod.

    8. Re:For me by tomhudson · · Score: 2, Insightful
      And it's sometimes necessary.

      The article is crap. Sample quote:

      Account privileges, file permissions, web server configuration are often not what developers have experience in or are very interested in

      Retarded. Absolutely retarded. Anyone who can write that hasn't got a clue.

    9. Re:For me by tomhudson · · Score: 3, Insightful

      You've obviously never had your boss direct live traffic to your "test" server at the datacenter, and not tell you for 2 weeks.

      I'm comfortable working without a net - but I'd like to know about it.

      Obviously, from that point on, any time we did a make, we made sure that we could install the new code within a few seconds, so as to avoid downtime (we could tolerate a delay of 15 secs once or twice a day without raising eyebrows).

      And sometimes a fix HAS to be done live to prevent bad data from propagating. If you don't trust yourself to get the command just right the first time, then step away from the keyboard and find someone who can type the right sql command the first time with 5 people hanging over their shoulder sh*tting bricks. In other words, you need one of the devs - fast. You certainly wouldn't let a sysadmin do it.

      In theory, you may be right. In theory, theory and practice are the same. In practice, they're not. There are ALWAYS exceptions. Not realizing this, and being flexible, is a mistake.

    10. Re:For me by x2A · · Score: 2, Insightful

      That was kinda my point, 'tho in reality I don't tend to do that... you learn quite fast after you accidentally shut down a remote server thinking you were rebooting your local firewall! Custom and highly different prompts helps here though.

      One thing that does from time to time happen though is the mistake-paste, where the contents of the clipboard weren't as expected (for example, while clicking to select the ssh console, maybe accidentally selected a few characters which replace the clipboard). This can mean that *anything* can happen.

      Either way, you do have to apply changes to the live system at some point, and I've seen problems come up here before, like permissions not being changed correctly, live system log file overwritten by a development system log file, killing any chance of debugging anything that needed that log etc - although once I pointed out that this was going on, the update proceedure could be corrected so it no longer happened, but it does demonstrate that the more actions you have to take, the larger the mistake-surface-area is. You just hope that the intersect of mistake-surface with the live system is smaller, even if the overall mistake-surface is larger.

      --
      The revolution will not be televised... but it will have a page on Wikipedia
  2. Short answer by Issarlk · · Score: 5, Insightful

    LOL! No.

  3. What a silly question. by Score+Whore · · Score: 3, Insightful

    No. It just encourages sloppy development practices.

    Would you want to drive over a bridge that wasn't actually designed and engineered, but rather they just piled some stuff up and will fix it if it collapses? Or have a surgeon chopping you open with the idea that they'll figure it out as they go? So why would we want developers to work with the expectation that they get to intervene at the last instant to resolve their failures?

    1. Re:What a silly question. by jameson71 · · Score: 5, Insightful

      On the other hand, I wouldn't want the surgeon to have to give instructions to a trained monkey on how to do the the surgery because the surgeon does not have access to the production patient.

    2. Re:What a silly question. by dkleinsc · · Score: 5, Insightful

      So why would we want developers to work with the expectation that they get to intervene at the last instant to resolve their failures?

      Because if there's a problem, there will be an expectation that they need to intervene to resolve their failures.

      To play Devil's Advocate here, there are some semi-legit reasons why developers might get production access:

      • If there's a serious production failure, developers are often called upon to assist the admins, because while they aren't admin experts they generally have some administration skills.
      • If there's a bug that makes it to production, the time it would take to fix the bug using proper procedures may cost more than doing a quick-and-dirty fix now and cleaning up using proper procedures later.
      • Diagnosing production-only bugs, which frequently require read-only access. For instance, developers may need read-only access to determine that their software didn't deploy correctly.
      • Helping admins properly configure their software.

      Now, none of this should be done willy-nilly. The basic rule at my workplace is that a developer can do nothing that could potentially alter behavior without managerial approval and admin approval where appropriate. At the same time, the primary enforcement of that rule is trusting our devs, so very little of that is actually enforced technologically.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    3. Re:What a silly question. by jellomizer · · Score: 3, Insightful

      Bad analogy.

      It is more like having a Cardiologist diagnosing the problem then telling the heart surgeon what to fix.
      We don't give our fixes to a trained monkey we give them to System Administers or implementation specialists.

      I would say that I am a good developer. However I am only an OK System Administrator and I often when my code is done and working well. Deploying the code offers a new set of issues to work threw.

      However If I give to people who are good at taking my code and implementing it, the process runs much smoother without much problems.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    4. Re:What a silly question. by Desler · · Score: 2, Insightful

      We don't give our fixes to a trained monkey we give them to System Administers

      There's a difference?

    5. Re:What a silly question. by mini+me · · Score: 2, Insightful

      I do prefer to drive over a bridge that is well designed, but if that bridge is found to have design flaws, I prefer to have them fixed right away. I do not want to wait for the crew to build a second identical bridge next door in order to test their patches.

    6. Re:What a silly question. by rtfa-troll · · Score: 2, Insightful

      Ahh. Well then I don't advise you to visit any medical colleges or hospitals. 'cos, whilst the doctors that will be treating you aren't going to be exactly trained monkeys, they definitely won't be the ones that developed the procedure. In fact, most of the time you will find that they are pretty much following the documentation.

      --
      =~ s,(.*),<sarcasm>$1</sarcasm>,g if any_point_you_wish();
    7. Re:What a silly question. by SatanicPuppy · · Score: 4, Insightful

      I work for a big company where every significant business unit has it's own devs and own processes. And while I'm primarily an admin, I still deploy some dev-level stuff a few times a year.

      And nothing, nothing annoys me more than going to a shop where the admin doesn't understand the tech, doesn't read the project requirements, and will not, under any circumstances, let me see his production hardware before he tries to deploy.

      Because inevitably it fails and then he tries to throw me under a bus, and I have to get on a conference call and try to use my magic mind powers to debug a system I'm still not allowed to see.

      Back when I was primarily a java dev, I used to have to configure Tomcat all the time, and it was the sort of thing were you needed to have some experience. And time after time I'd end up dealing with some windows admin who knew absolutely nothing, but was utterly convinced that I could never know more than him about a server technology.

      In short, common sense and a reasonable respect for experience beats a hard and fast rule any day.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    8. Re:What a silly question. by John+Hasler · · Score: 2, Insightful

      I do prefer to drive over a bridge that is well designed, but if that bridge is found to have design flaws, I prefer to have them fixed right away. I do not want to wait for the crew to build a second identical bridge next door in order to test their patches.

      How about if, having built the bridge, they could build a second one in a few minutes for a dollar or so, store it out of the way in hyperspace, and swap the two at will? Would you still not want them to work on the offline one? Read I35 Bridge before you answer.

      --
      Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
    9. Re:What a silly question. by DrgnDancer · · Score: 2, Insightful

      You work for Boeing don't you? God I hated that place. Needed 4 people looking over my shoulder while I followed a script designed for a monkey. If you wanted a monkey, why did you hire an experienced HPC analyst/engineer?

      --
      I don't need a million points of light, just two points of multi-mode fiber and a 10 Gig-E router.
  4. no. by pdp1144 · · Score: 2, Insightful

    It is my experience that giving development access to production gives you a production environment that looks like it has been vandalized. Although meaning well and trying to make the best application as possible; they need their own development lab, and their own staging / production lab.

  5. Everyone agrees... by SatanicPuppy · · Score: 5, Insightful

    Everyone agrees that developers should never have access to production...Unless they're the developer, in which case it's different.

    Its a good practice to keep them separated, but in the end its just a pissing contest. The server admins don't want some filthy dev messing with their stuff, and I can appreciate that.

    However, admins often lack appreciation of some dev-specific issues, and their ignorance can lead to problems down the line.

    In the end, its the best practice to have everyone work together sensibly, than throw down inflexible rules that cause more trouble than they prevent.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    1. Re:Everyone agrees... by Anonymous Coward · · Score: 1, Insightful

      Its a good practice to keep them separated, but in the end its just a pissing contest.

      No, it's not a pissing contest. It's a legitimate best practice.

      However, admins often lack appreciation of some dev-specific issues, and their ignorance can lead to problems down the line.

      I know a lot of sysadmins, and they are all developers of something as well. It has nothing to do with ignorance.

      Comments like these act like we're some caricature of a human being.

    2. Re:Everyone agrees... by SatanicPuppy · · Score: 2, Insightful

      I work both sides of the fence myself, so I have a better than average appreciation of the actual risks and the actual benefits.

      It's my experience that the Berlin wall-like separation that many companies enforce between dev and production causes it's own set of problems, and that, instead of treating everyone involved as if they are involved, they just impose even stricter separation, which causes other issues, and makes the whole process glacial and inefficient.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    3. Re:Everyone agrees... by Aceticon · · Score: 2, Insightful

      Everyone agrees that developers should never have access to production...Unless they're the developer, in which case it's different.

      Developers should not have access to Production and I say this as a developer.

      Having a way to check logs in Production, maybe read the databases yes, more than that, no.

      Two reasons, one "good" and one bad:
      - If people have access to Production willy-nilly, sooner or later they will break it. This can even be true for Support people only they're the ones getting calls at 5 AM to fix it, so they soon learn not to do it.
      - Forcing a proper release procedure avoids creating expectations on non-developers (read managers/clients) that minor changes are fast to do and put in prod. Nothing like a Release Procedure in place to instantly kill any expectations of the "you can do this change in 5 minutes" type and create some space for actually doing UAT testing of even those seemingly innocuous changes that sometimes end up poluting a database with garbage beyond the point of recoverability.

      I work in finance and I've seen more than once cases of seemingly innocuous fixes done in Prod that brought down the systems for several hours, pretty much paralising the business and costing millions in lost business. This more often happens is seemingly non-mission-critical systems (where Prod access is more likelly to be open) that turn out to be required for know critical systems to keep on working.

    4. Re:Everyone agrees... by avandesande · · Score: 2, Insightful

      I don't think developers want access either- if something goes wrong, do you want to be responsible? I never want access to anything I don't need access to.

      --
      love is just extroverted narcissism
  6. No, if you can afford for them not to by dmomo · · Score: 2, Insightful

    So, yes.

  7. Uhm, no. by HerculesMO · · Score: 4, Insightful

    This is why there is a change control process, and a testing environment.

    If you're doing it wrong, you're asking for trouble.

    --
    The price is always right if someone else is paying.
    1. Re:Uhm, no. by Anonymous Coward · · Score: 2, Insightful

      The issue I have with this attitude is that the testing environments are never identical copies of production environments. You can have exactly the same hardware / software, but the instant the network topology differs, you no longer have identical environments. I've seen far too many config / routing / firewall / Akamai / replication issues that were initially flagged as software bugs, but were in actually environment bugs. The problem is that the SAs typically do not have the internal knowledge of the apps required to diagnose those kinds of configuration problems. I'm not arguing that devs should have unfettered r/w access, but a controlled measure of r/w access on at least one server in prod makes complete sense for senior devs.

  8. No correct answer by Motard · · Score: 3, Insightful

    There's no correct answer to this question. It depends on the size of the organization and the nature of the system. I've worked in different companies that have been on either sides of where I thought the line should be. The line is drawn in a very different place for a 20 employee company than where it is in a 20,000 employee company.

  9. Hmm by mark72005 · · Score: 2, Insightful

    I think it's helpful in analyzing real-world data and getting an idea about real system loads, testing issues to see if they are in the wild today, etc. For a good developer, it makes life much easier.

    In a very healthy development ecosystem all this data is replicated and there is never any need for a developer to touch prod. In the development ecosystems that exist in the real world though, most are very unhealthy, frustrated by ham-fisted security, process flaws, red-tape, inconsistency, and incompetence ranging from scattered to mostly cloudy.

    The answer is, do you have the class of developer that knows what not to do and desires to play nice, or do you have the usual.

  10. Developers need access to production DATA only by mikein08 · · Score: 2, Insightful

    As a developer I can tell you that it's impossible to test programs properly and thoroughly without access to production data. However, developers should NOT be granted access to production logins/sites - production data should be copied into development work areas so that developers have an appropriate "sandbox" in which to work/test.

  11. Re:Backdoors by alanebro · · Score: 2, Insightful

    I don't think he meant malicious backdoors. I read that as backdoors to allow debugging/etc.

  12. Biggest issue for us... by i.r.id10t · · Score: 2, Insightful

    Biggest issue my cow-orkers and I have is that the sysadmin *claims* that the dev box and production box have the same packages, configuration, etc. but in reality, they don't. Most often we find out when we ask for production stuff to be copied over to the dev site to test errors, etc. and just loading it - which works on the live site - generates errors on the dev site.

    --
    Don't blame me, I voted for Kodos
  13. Depends on the size of your organization by jaymz2k4 · · Score: 3, Insightful

    If you are a small software shop then I can see reasons for allowing your small technical staff to have access to production. It's all well and good saying that only the admin of that server should have access and there's a full rollout procedure in place to be followed only on certain days, certain times; but even when I've seen that sort of structure in place there are times when it's useful for the developers to have access to production. Nothing is perfect and we'd all love to have multitude's of staging servers, replicating the typical load and uses of production but for a hell of a lot of (non critical I'd add) systems that just doesn't happen.

    There simply is no one rule fits all. Sometimes I wish we had extremely rigorous rules & regulations in place - I'd probably get to go home a hell of a lot earlier. I'm not suggesting you start chucking exceptions all over your checkout code on live but I think you should asses your own situation (and staff for that matter).

    --
    jaymz
  14. No! No! A Thousand Times No! by OldeTimeGeek · · Score: 2, Insightful

    It's not necessarily a case of the admins versus the developers, its more of practicing good data governance.

    Our developers used to have direct access to all of the production databases. This was bad enough, but because of this the organization permitted them to directly "clean up" databases (meaning they wrote to tables directly), we had data that was being changed without the ability to really know who did it. The DBAs hated it and the developers were extremely uncomfortable doing it but it happened anyway. We eventually had a real process audit and the auditors had a field day.

    Needless to say we changed. I hope.

  15. No by istartedi · · Score: 2, Insightful

    Even when the suggestion of "would you like root on this internal box?" was put to me, my answer was always "No". I write code. Others test it. Admins deploy it.

    People specialize for a reason. If you want half-assed administration, give root to a developer. If you want half-assed code, let admins write software. If you want half-assed testing, have admins and/or developers do it.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  16. Long Answer by IndustrialComplex · · Score: 2, Insightful

    If I found out a developer changed something in a system I tested without it going through the proper process...

    Let's just say I would be very interested to hear why they shouldn't go back and rerun everything again on THEIR dime. (at the very least) In fact, we DID do just that to someone who let a revision slip into their UUT because a developer felt it would fix something and make it perform better.

    It wasn't too expensive of a mistake, just $250,000 to rerun that portion of the test. Although that was just the physical cost of performing the test. I don't even want to know how much it cost in labor especially considering it was a 22 day test.

    Even if the change was removed, how do I know that without physically verifying checksums (do I even trust it anymore since their CM process is obviously flawed)

    --
    Out of modpoints but really liked a post? 1BDkF6TtmmeZ3yqXbz9yhdYVqRYnwFoXDj
  17. Comment removed by account_deleted · · Score: 4, Insightful

    Comment removed based on user account deletion

  18. The more developers work in production... by Zenin · · Score: 2, Insightful

    The more developers work in production, the more they can ONLY work in production.

    I'm all for read access (the more eyeballs the better), but actual access to change anything is a train wreck. The devs will forget to check the changes in to the source repo, or they'll check them in differently (bad copy/paste), or they'll check them into the wrong branch/tag. Regardless the next release that goes out silently adds the bug back into production.

    And if developers think it's difficult to fully clone a prod environment configuration into dev now, wait until they try to do it after developers have been hacking on it directly for a while.

    Pretty soon every release is a train wreck requiring tons of post-release tweaking and hammering to get it in place. Every release is a stressful mess as you're all crossing your fingers because you really have no idea what you are actually changing and no way to find out.

    Just don't do it. Hire a good build engineer/release manager/software configuration manager that can sort out, automate, and track environment management well enough that yes, you can reliably clone an accurate representation of production in a matter of minutes. He'll cost you about as much as a good sr developer, but the savings across the board will easily dwarf his salary.

    --
    My /. uid is better then your /. uid
  19. Short answer, maybe. by Lord+Kano · · Score: 2, Insightful

    Long answer, it depends on the situation.

    I (and a couple of my coworkers) have access to production servers, but we don't develop on prod. End of story. We have other devs who do not have access to prod. Dev is for dev, prod is for prod and don't let anyone without the discipline to keep that rule have access to prod.

    LK

    --
    "Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
  20. Two Words by Kirrilian · · Score: 2, Insightful

    Hell. No.

    I'm a developer as well as a sysadmin and I NEVER tweak anything in production and I have full access to it.

    I have an exact copy of my production environment for development and I do all my tweaking/test deployments there.

    In fact nothing gets deployed to production until everything has been checked in development.

    My previous job had dev/qa/prod environments where the devs had full access to development and it was so bad that we had to virtualize it for them just so we could revert back to a pristine snapshot whenever they jacked up the dev server.

  21. Re:Install Good Logging Practices by GryMor · · Score: 2, Insightful

    I don't know where you work, but when dealing with a few hundred or thousand tps per server, logging can account for a good chunk of latency.

    --
    Realities just a bunch of bits.