Cody Pendant has asked for the wisdom of the Perl Monks concerning the following question:

I want to put up a proposal that my organisation should have a semi-official server on which staff could code their own server-side solutions to smallish local problems. Is there a word for this, and established practices and procedures?

Background: I work for a big, diverse company. Let's say it's a publishing house with many magazines under its umbrella, each with a website or sites.

We have an official IT department, and if I want a publishing tool created, technically

Problem: There are tons of projects which aren't big enough even to trouble that committee -- example, an Excel spreadsheet is produced every week by a third party comprising a pop music chart. I wrote a Perl CGI script in about half an hour which uploads the spreadsheet, parses it and FTPs the resulting HTML table to the web server.

Nobody wants to go through a formal proposal, let alone pay development costs, for a job as small as that. It would take longer to write the proposal than write the script.

So, as I've got a recent Mac, and all recent Macs come with Apache, Perl, MySQL, PHP and so on, it just runs on my machine. Other renegades like me run things like blogs, contacts databases and cron jobs in the same way.

But these unofficial machines could crash, suffer HD failure or any number of other things. What would benefit the organisation is a machine which could do server-side processing, but which ran programs which didn't require our IT department to write them.

I expect that it would work like an ISP. Everyone gets a folder and can write scripts in that folder. The IT people would back it up every night, install modules on request and so on, run a CVS server, but take a hands-off approach. User permissions would take care of my code accidentally over-writing your website, and if I over-write mine, tough luck, and I presumably signed a document which says so.

Questions: Is there a name for a setup like this? A two-tier system where there are official IT-supported applications, plus "amateur" applications? Will the IT people hate my idea with the burning intensity of 1,000 suns? What can go wrong? What have I missed? What are the objections I will face? What's best practice in this situation, if any?

Note: I don't want to write audience-facing dynamic code at all. That's the big church-and-state division at work and I respect that. I just want to write employee-facing code which automates web publishing and related tasks.



($_='kkvvttuu bbooppuuiiffss qqffssmm iibbddllffss')
=~y~b-v~a-z~s; print
  • Comment on OT: Is there a word for a semi-official server?

Replies are listed 'Best First'.
Re: OT: Is there a word for a semi-official server?
by Tanktalus (Canon) on Feb 15, 2006 at 04:18 UTC

    We have dozens of "multi-user systems." Our support staff will administer them as far as adding/removing users, installing software, setting up mundane things (telnet, ftp, ssh), adhering to corporate policy on things like security, OS patches, etc.

    Then we go and put whatever we want on them. Support staff supports/maintains the parts that they put on, and disclaims all support on the rest (e.g., VNC server on AIX). Works ok for us, but as we are not only are software developers ourselves but also require root access for our own jobs, we get away with a lot ;-)

    Anyway, that's the term we use for this scenario. We also have corporate-supported webservers that are managed by another group. And they require some annoying levels of paperwork to get into, similar to your concern. I stay away from those. Instead, I use a linux box running Apache, I use CGI::Application and HTML::Template, and don't even have the support staff help with my server. I take backups and copy them via NFS to an AIX box which is properly backed up ;-)

Re: OT: Is there a word for a semi-official server?
by chrism01 (Friar) on Feb 15, 2006 at 03:21 UTC
    I sympathise with your position, but you need to decide if it's just going to be a central repository eg CVS for 'unofficial' scripts/DB schemas which will be backed-up in case your 'active' boxes break, OR you want it to be an active central server ie running the DBs & scripts.
    The 1st option they might go for if all they have to do is set it up and back it up.
    The 2nd is less likely as someone will have to actively manage it eg be a DBA; you can't have multiple DBAs, 1 for each dept, at least not for the situation you are describing.
    It would also take more active management in terms of users/perms & as you mentioned Modules....
    They're not going to like that, unless you can do some v smooth talking.
    BTW, no I've never heard of a similar situation ie un-official server. The nearest would be a departmental server that you or someone is willing to administer, assuming your boss will allow you the time...
    Good Luck
    Chris
      I agree with the 2 options above. But regardless of what option you go with, you will probably need numbers to get managment to sign on to either idea.

      I would have each person in your group who has something like you script sit down and write a paragraph about what each script does. Make sure to add the approximate time the job takes to do manually and how often it needs to be done. Also add approximate time to develop the automated code that fixed it.

      The benefits of outling each person's scripts are 3 fold.

      1. You have numbers to show management that your team has automated time consuming manual tasks (doing the math of approximate time for each manual task times the number of times per week) and are saving them 'X' number of hours per week.

      2. You show that your team is pro-active and forward thinking by automating manual tasks to save the firm money without having to involve the full-blown development teams.

      3. The whole team gets its code out in the open so you can find repetative code and refactor it into reusable components.

      Point #2 is important because it shows management that your team can code these basic time-saving scripts without having to bring in the full-blown dev team. Otherwise, you risk bringing this up to management and having it blow up in your face when they get mad that your team codes outside of the 'corporate development structure and guidelines', yada, yada.

      Finally, I know your pain with what you describe. My group at work has something along the same lines. It is a website that runs on a 'Dev' webserver and hosts description of our batch cycle jobs and allows the team to enter failure resolutions so hopefully the next time the same job fails, it is already documented on what to do. We also use this webserver for any other ideas that make our job easier (team documentation, notes on how fill out red-tape paperwork quickly, etc).

      Since we host it on a 'Dev' machine, if it is down for upgrades or hardware failure, we are out of luck. But this also gives us the ability to make changes to the website whenever we want without having to go through the corporate change procedures. All code for the website is in the corporate source control system so we can restore if there is a drive failure on the box (this is important as it has happened in the past).

Re: OT: Is there a word for a semi-official server?
by Old_Gray_Bear (Bishop) on Feb 15, 2006 at 17:33 UTC
    We call those machines "tool boxes" (tool-1 in Savannah, tool-2 in Dallas, tool-3 in Seattle, tool-4 in Toronto). The Central IT manages the hardware, OS (Linux or Solaris, depending), the 'core' applications (Perl, Apache, MySQL and Postgres), and the attendant maintenance. All of our stuff is on /home/department-name, one for each group. These directories are backed up on the first and fifteenth of the month. Otherwise, we are on our own.

    What each group runs on the tool box is up to them. There have been a lot of 'little apps' developed here. Some of them have proven very useful to other departments. Word spreads rapidly at the grass roots, and the Central IT Department has had to break-down and accept 'wide-spread use of User Developed Code' in lieu of the Program Justification Procedure documents.

    Also, Central IT has a policy that all applications will be written in the Corporate Standard Language -- Java. When they build a solution for you, that's what you will get. No Exceptions.

    Building a little Perl script that reads the line quality numbers from the department edge-router and creates a web-page showing the current circuit load along with quality-of-service metrics -- one Saturday afternoon.

    Getting your code accepted nine months later as the Corporate Gold Standard for Line Monitoring -- $2,000 bonus.

    Watching the Central IT Sr. Tech trying to translate the Perl into Java, and giving up because 90% of the code is in two statements: 'use CGI;' and 'use SNMP;' -- Priceless.

    ----
    I Go Back to Sleep, Now.

    OGB

Re: OT: Is there a word for a semi-official server?
by tweetiepooh (Hermit) on Feb 15, 2006 at 09:28 UTC
    Why not try a "Tools Development Server". This is where small internal tools and utilities are built and tested.

    Better is to get two servers. The first is the Tools Development box. The second is the Production Tools server for tools released to a wider internal community.

    See if you can try it out with some older kit running linux or something to proove the case without spending too much.

Re: OT: Is there a word for a semi-official server?
by bm (Hermit) on Feb 15, 2006 at 15:30 UTC
    We call a machine such as this the "staging server" (as in the application is on performing on the stage, ready to be criticed).

    Google seems to get some hits for that terminology as well.

    HTH


    --
    bm
      In my corner of Corporate IT-land, that isn't what "staging" means. Here staging is where new applications and new changes go when they're ready for their last round of testing before hitting production. Therefore the staging systems need to be near-replicas of the production environment, and access to them is almost as tightly controlled as production because you don't want random users installing or changing things that might bias the testing one way or another. We actually don't have a term for what Cody Pendant is asking for, which is a shame really, because it sounds like a good idea. Here what ends up happening is that people end up messing around with app development boxes and no one has any clue what's on them.
Re: OT: Is there a word for a semi-official server?
by samtregar (Abbot) on Feb 15, 2006 at 22:35 UTC
    I'd riff on the division between front-end user-facing stuff and internal tools. I'd call it an "intranet server". Sure, it's got a very 1999 ring to it, but people might have some idea what you mean.

    Or you could just pick an incomprehensible jumble of letters and numbers and use that. For added points don't put the name in DNS - have each user keep it in their /etc/hosts file. Good times.

    -sam

Re: OT: Is there a word for a semi-official server?
by Cody Pendant (Prior) on Feb 15, 2006 at 23:13 UTC
    Thank you all for your responses. Useful and interesting.


    ($_='kkvvttuu bbooppuuiiffss qqffssmm iibbddllffss')
    =~y~b-v~a-z~s; print
Re: OT: Is there a word for a semi-official server?
by leighsharpe (Monk) on Feb 17, 2006 at 02:30 UTC
    Will the IT people hate my idea with the burning intensity of 1,000 suns?
    Yes. They see it as a trespass into their territory. They feel that everything on the network should be in their control.
    What can go wrong?
    How long is a piece of string? You won't know what will go wrong until it happens.
    What are the objections I will face?
    The main objections you will face from the IT department will be:
    * They don't want to administer another machine on which everyone has access, it's a support nightmare.
    * They will want to vet every piece of code on it, because they will want to know what it's doing, and any "potential security problems".
    * "People will start relying on the tools which are on it, and then when it breaks down, we'll have to fix stuff we know nothing about."
    * "What happens if one of your scripts/CGIs/whatever goes haywire and starts spamming/DOSing other machines?" Or similar complaints about unforseen/unpredictable behaviour.
    * Lack of control. You could easily end up with multiples of everything and nobody would know.
    Basically, IT departments don't like giving anybody open-slather access to anything.
    Having said all of that, I can't give you any advice on how to get around it. I'm usually on the IT deparment's side in these arguments.
    Perhaps your best course of action is to run the stuff on your own machine, without making it available to all. If it gets your job done quicker and easier, that's really all that matters, isn't it?