Jan 022010
 

Today we will be looking at implementing new software on a production server. So, lets get right to the heart of the matter. The 5 basic processes you will need to follow in getting the new software operating properly and as expected in an existing production environment will include;

    Strategic Planning/Design – Identifying Needs/Goals
    Modeling – Configuration/Planing
    Execution – Implementation of Software
    Monitoring – Assess/Test
    Optimization – Evaluate/Assess/Modify

When implementing these changes on your server, the 5 processes listed above and adhered to, will allow you to safely implement the changes to your server without error. As a side note here, I would like to take the time to state one simple rule that should always be followed to;

If it is not broke, do not fix it.

The more complex the system, the easier it is to break, in other words, the simpler the modification is, the more likely it is to succeed.

(insert rant here; Just because you read something on webhostingtalk about this one guy that added that one thing, that one time, that done so and so and his server is now the most god awesome thing since sliced bread, take a step back, breathe deeply, and remind yourself his server is not your server and he most likely has a gluster cluster of 24 QUAD Xeon E7310 Quad Core Tigerton servers with 96Gigs of RAM in each one.) If the upgrade is needed, then let’s begin.

Lets take the processes one at a time to see what is involved in each one.

Strategic Planning/Design


This is the most important phase of the process which includes identifying your needs and goals. The questions you will need to answer are;

    What am I trying to accomplish with this upgrade? stability, security, repairing client problem, upgrading version, addressing client request

    What are the benefits/drawbacks of this change? repair problem, faster, server stability, more secure, more restrictive, hardware changes needed

    What software is being implemented, determine available options, are there competing products which accomplish the same goals, maturity of products being evaluated

    What is the time frame involved? how long will the implementation take, will server services be down, window of opportunity, no go date, other events which may interfere with change

    Who and what is being affected – Clients, clients customers, networking, monitoring

    When will the change need to be implemented? asap, off hours, next available scheduled upgrade

    What is defined in the scope of the change and what is not? does the upgrade/install require other software in order to work properly, aka perl, python, apache update, php update

    What are the steps involved in implementing this change? define how the change will be made, easyapache, source install, yum update

    What is going to be affected – existing server software, nfs, gluster, databases, IP connections

    What will the cost of this implementation be? will the change require hosting company specialists, developers,

    How do I test this before I implement the change to see what the effects are?

    Are there going to be processes or procedures changes internally or externally which need to be modified or addressed

Modeling – Configuration/Planing


The second phase of the implementation process will look at how you want your software configured and plan accordingly. In order to have the software implemented correctly, you will need to plan on how you want the software to work and any options you would like added if available.
The questions you will need to ask/answer are;

    Have you investigated the options available and evaluated them according to your needs?

    Do you want the default configuration or a custom compile?

    Will the options require other server software configuration changes; services modified, ports opened, firewall, ip, domain, email or dns changes?

    If existing software configuration change is needed, will this affect the new software configuration?

    Is there a back off plan – aka a Go / NoGo scenario if certain condition are not met?

Execution – Implementation of Software


Installation of the software will need to handled by someone. Determining this in advance will aide you in choosing the best method to handle the upgrade.
The questions you will need to ask/answer are;

Who will implement the software upgrade? You, a developer, the hosting company?

Who will define the individual/team, document their responsibilities and implementation plan specifics in writing?

Who will be point on making sure this information is passed to everyone involved?

Have there been any changes to any of the installation specifics since the initial order for upgrade?

Is everyone included in the implementation plan have the most current information?

Is there someone documenting the install process in case you would like to implement this change again on another server?

Is there someone documenting the install process in case you need to roll back the install?

Who will be watching for negative impact on the server during and directly after the install?

Who will be responsible for the final sign off and go/no-go order?

What procedure is in place in case of server failure?

Do you have current backups?

I cannot stress this point enough; Before you begin any install make sure you have good clean backups. Verify this several times, visually, yourself. Check again. Oh, and make sure you check you have good backups… Ok, you get the idea.

Monitoring – Assess/Test


Once the implementation is complete and the server is back up, post-implementation testing and verification of the new functionality is needed. Evaluation of the currently running processes related to the install will need to be verified. The installer (whomever it is) will need to monitor the server for a period of time to ensure the integrity of the install. Data will then need to be gathered to verify the install is working as expected and documentation verifying this added to the install notes.

Optimization – Evaluate/Assess/Modify


Once the server is verified to be working as expected, performance monitoring will need to be checked. We are looking for overall improvement consistent with the goals originally set which verify the quality of the softwares stability and performance. The current data collected will need to be analyzed and compared to the previous data to ensure overall improvement is seen. When this comparison is complete, we can assess if the current configuration could benefit from any tweaks which may further improve the required functionality. If the data indicates that tweaks can be made which will benefit the performance of the server, we can now apply those tweak settings and repeat the process of Evaluate/Assess/Modify until the desired goal is achieved.

I hope this information will be of use the next time you need to upgrade your server.

 Posted by at 1:17 am