Who’s On Phirst

Official blog of Phurnace Software.

Robert Reeves's Blog
Description:
Robert Reeves serves as Vice President, Customer Advocate and is one of the original founders of the company. He is responsible for customer satisfaction, customer support and pre-sales technical interaction. Robert was the chief architect of the Phurnace engine and the company’s first products. Robert has almost ten years of experience in the software development industry, including roles at drkoop.com, NextJet, 360Commerce, CarOrder.com and Trilogy Software. He has spent his career focused on configuration management and deployment of enterprise applications. Robert spent some time outside of the software industry as a production assistant for the Warped Tour, a nationwide show of independent and alternative musicians. The last seven years of his software career have been spent specifically building deployment and configuration management solutions for Java EE™ technologies. Robert has been awarded a provisional patent for technologies used in the Phurnace products. He has a B.A. in Economics with mathematics minor from the University of Texas at Austin.

Posted by: Robert Reeves on

MCC

Phurnace Software makes its home at the MCC building, which is owned and managed by the Unversity of Texas at Austin . Quite a few really neat companies are located here, including Bigfoot Networks . But, there is no company in the building named MCC. So, what the heck does MCC stand for? Short answer: Microelectronics and Computer Technology Corporation

Wikipedia has a brief article on MCC . Here's a brief snippet:

"In late 1982, several major computer and semiconductor manufacturers in the United States banded together and founded MCC ... as an American answer to Japan's Fifth Generation Project, a large Japanese research project aimed at producing a new kind of computer by 1991."

Most of the projects they worked on involved Artifical Intelligence. A really cool project, InfoSleuth which was a very early web search engine. This focus on AI can still be seen, to some degree, at the University's CS department. Of course, the good times couldn't last forever. Mainframe companies began to get pushed aside by IT companies, but when the bubble popped, the members support for external R&D evaporated. MCC ended in 2000.

So, what happened to the Fifth Generation Project? Total and complete failure . They got their butts whipped by Sun and Intel processors. Cheap and fast beats expensive and fast. Always.

The reason I began thinking about this is because of the NY Post article yesterday about the Abu Dubai Investment Council purchasing the Chrysler Building. Of course, Drudge picked up on it and has had it in RED as the top link all of yesterday. Seeming to say that our most treasured symbols of America are being purchased by a foreigner. OH NOES!

 Please. Sony bought Columbia Pictures. Matsushita bought Universal Studios. Mitsubishi bought Rockefeller Center. From my perspective, when a foreign investor starts investing in the US, they are typically 12 months from a fall . You read it here first, folks.

So, what is the difference between Sun and Intel versus MCC in the 1980s? Profit. Pure and simple. By allowing the companies that researched and developed x86 and RISC to directly profit, we have provided them a strong incentive to create jobs and wealth.
 
Thankfully, profit is a better motivator than hand-wringing, chicken-little jingoism.
 

In Untagged 
Comment (0) Read More...


Posted by: Robert Reeves on

IBM has begun the WebSphere 7.0 Open Beta program. Here is a snippet from the email notice:

You may review the features and highlights on the Open Beta overview page at this URL:
https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/
wasndv7/

The Code and Library downloads may also be found at these URLs:
https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/
wasndv7/download.shtml
https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/
wasndv7/library.shtml

For support issues related to this Open Beta program, we have also provided a discussion forum, which you may access from this URL:
https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/
wasndv7/support.shtml

 

The first thing I noticed about this release is the VMWare images. IBM has included SuSe images with WAS 7 previously installed. Just download the images, point your VMWare Player or Server at them, and test drive WAS 7. (Hint: root password is ‘password’.) I hope this means that IBM will be releasing other WebSphere based applications as VMWare images for evaluation, such as WebSphere Portal.

After starting my standalone Profile and visiting the Admin Console, I was struck by how similar to the WAS 6.1 console the WAS 7.0 console is. There was quite a bit of change from WAS 5.1 to WAS 6.0 and some marginal change in WAS 6.1. But, it seems that WebSphere has stuck with the same layout. That’s very good news for companies that rely on manual deployment.

However, there is cause for concern. The following MBeans have been removed:

 

  • SIBJMSConnectionFactory
  • SIBJMSProvider
  • SIBJMSQueue
  • SIBJMSQueueConnectionFactory
  • SIBJMSTopic
  • SIBJMSTopicConnectionFactory

Of course, this might simply be an oversight that the Open Beta program is meant to address. Or, it appears the JMS aspects of the Service Information Bus have been removed.

We’ll do some sleuthing on our end to see where they went to. But, this marks a change in how IBM has done WebSphere releases in the past. In fact, they still have WAS 4.0 MBeans in WAS 7.0 (e.g., WAS40ConnectionPool, WAS40DataSource). Heck, they still have it in the Admin Console, too!

In WebSphere 7.0Open Beta Program
Comment (3) Read More...


Posted by: Robert Reeves on

When you buy a software tool for your use, you aren’t just buying the application; you are buying the BENEFITS of what it does. Most often, you are really buying piano recitals, little league games and happy hours with your friends. You buy yourself time when you buy a good tool. Because with the right tools, you are in bed, fast asleep, instead of the datacenter at 3 a.m. pulling out your hair because of a deployment error or a server that won’t capture transactions, or whatever. With good system administration tools you get to tackle the hard problems and challenges that made you take your job in the first place instead of the mundane, boring and error-prone tasks.

Unfortunately, “quality of life” has never been a valuable selling point for IT managers and directors. They pay you to keep the network running, deploy applications and configure application servers. The manner in which you perform your job doesn’t matter to them; only the results.

If you aren’t using the right tools, then a huge proportion of your production failures are due to configuration errors. Thus, your entire management team should care about how you perform your job, just like you do.

Simply put, proving a fast ROI is the best way to make a business case for a software purchase and it is terribly simple. ROI, or Return On Investment, is a simple calculation that states the rate offered by an investment. So, if you invest $1000 that provides you a return of $500 per year, then you have a 50% ROI per year ($500/$1000 = 50% ROI). In other words, the “pay back” period for the investment is 2 years ($500 per year, for 2 years = $1000). The rule of thumb in IT spending is that investments need to have a “pay back” of 3 years or less. So to invest $1000, you need to show that you will get more than $333 back per year.

With many tools (could be OpsWare, Build Forge, Phurnace Deliver …), you are provided with a way to avoid costly mistakes and down time. But, determining the dollar amount of those mistakes and downtime can be difficult. Luckily, many vendors (us included) provide an online calculator to help determine those values. And, when you are done filling out the web form, you can create a PDF of your cost analysis to email to your boss.

Recently, one or our customers determined their deployment costs to be $68,365.38 per year and the cost of error resolution was $171,000 per year. That’s a total cost of $239,365.38 per year. To determine their ROI, they simply divided the money saved by our product’s cost. They arrived at a monster 3 digit ROI number and were very happy with their purchase.

Of course, you can always rely on your friendly local software sales rep (like the Phurnace Account Manager) to help you with the purchase process. We all want you to be successful and tackle the truly challenging aspects of your job. So, leave the mundane, boring error-prone stuff to the tool vendors.

In deliver
Comment (0) Read More...


Posted by: Robert Reeves on

BBC has a news report on how boring tasks can lead to errors and omissions. Evidently, your brain will go into 'autopilot' mode when performing redundant, boring tasks. Apparently, there is a specific bit of brain activity that can occur right before you are about to make a mistake.

Your Brain on Phurnace

Until they can make a portable MRI for data centers that will catch that brain activity, may we suggest Phurnace Deliver to simply get rid of your dull and boring tasks along with your errors?

In Tipsphurnacejavadeliver
Comment (0) Read More...


Posted by: Robert Reeves on

In the first part of this two part post, I discussed how scripts are terrible at eliminating errors. In fact, scripts simply replace typos with system errors. A rather poor trade-off, I think.

The second problem with scripts is the burden they place on employees to maintain them and the decrease in productivity they can cause. This maintenance burden and productivity sinkhole are the two areas scripts were supposed to fix!

Frankly, I hold the tools architecture responsible. Scripts conflate the Data with the Mechanism because of the enforced procedural nature of the tools (think wsadmin). Please note that I don't mean to pick on WebSphere, but I just have a *ton* of experience with that application server. I could have just easily singled out WebLogic, OAS, JBoss or Glassfish. The architecture problem is common to them all.

To see an example of conflation, navigate to your WAS 6.1 directory and look at samples\bin\PlantsByWebSphere\install.jacl. You will see the following:

  createJ2CResourceAdapter $nodeName $serverName

That's a good start as both resources are provided at the command line when executing the script. However, the script immediately falls apart on the next directive:

  #--------------------------------------------------------------------

  # Setup security cell

  #--------------------------------------------------------------------

  set secAuthAlias "$cellName/samples"

  set secDescript  "JAAS Alias for WebSphere Samples"

  set secUserID    "samples"

  set secPassword  "$samplepwName"

  createJAASAuthenticationAlias $cellName $secAuthAlias $secDescript $secUserID $secPassword

Don't see it the problem? I don't blame you. The problem is a hardcoded secUserId. This will fail if there is another JAASAuthData that uses the same secUserId as "samples". Now, that's a simple mistake; but it's one that will require a very specific use case to find it. So, we have actually created a maintenance headache for ourselves. This script may save me time in my Dev or QA environments. But, once it gets to Production where they use entirely different usernames for the database, I will have an error I simply cannot afford to have.

But, finding the specific JAASAuthData configuration problem is just the first headache. In my Production environment, imagine that this script fails on the duplicate secUserId value. Well, that's easy to fix, right. Let's just add another argument to pass in when the script is run.

So, I'm only into the second call of my script, and already I'm required to make the script more complicated. Furthermore, since my script is not wrapped in a transaction, I'll have to manually delete the J2CResourceAdapter to completely roll back. Or, at least, I *think* that's all I need to roll back my script's changes. After all, the best thing that can happen when I run a wsadmin script is nothing. Because if I see anything on STDOUT, that's normally a bad thing.

Ideally, I would have my Data described in a simple format that defines the System Resource (or MBean) I am trying to create and its associated attributes. Then, my script would read that data structure and create the MBeans necessary. Finally, at the end, it would generate a report that details what was changed in my environment. And, of course, if any failure's occur, all changes up to the failure are automatically rolled back.

Of course, I would love to see you purchase Phurnace Deliver which can do all of that and then some. However, you can create this yourself. The tools to do so are readily available and most Application Servers provide some sort of API to manage those configuration changes. Just remember to separate the Data from the Mechanism, and you should be much better off.

In Scriptsjava
Comment (0) Read More...


Posted by: Robert Reeves on

Up until the release of Phurnace Deliver last year, there were two choices when it came to Java Application Server management: manual data entry or scripts. Typically, a company starts with manually entering configuration data via a web-based admin console. Then, either organically or via a concerted effort, the company will move to using scripts to manage the Application Server configuration and deploying binaries.

Companies begin this migration for two reasons. The first is to automate mistake prone tasks in order to avoid costly errors. Second, the company seeks to boost efficiency and increase employee and system productivity. While both of these motivators are valid, scripts simply fail to deliver on both of these hopes. In this blog entry, I'm going to discuss how scripting fails to deliver on error elimination. In fact, I will contend that scripts will cause the same, if not more, errors than using a manual approach.

When Exceptions Are the Rule...

Imagine that I was tasked with updating the Server heap size on a WebSphere Application Server; specifically, the heap size is currently 512MB and I need to change it to 1024MB. This is a rather simply task using the WAS Admin Console. However, if it turns out that I have 100 Servers to update, the task begins to become a bit more daunting. I'm certain that, around server 60, I'm going to make a mistake and type in "11024" instead of "1024". A Heap Size of 11 GB is not what Server number 60 needs! Thus, a script sounds like a good choice. And, it is.

Unfortunately, you will never run into this specific case. In reality, the Servers' heap size will all be different based on utilization and hardware requirements. In fact, only 78 of the 100 Servers need to be changed. And, of the 78, 42 need to be 1024MB and 24 need to be 768MB, etc. You can see how reality would make this a very complex task, even for scripts.

When exceptions become the rule, you better have good exception handling. Simply put, error handling in the scripting environments provided by AS vendors are terrible. Error handling is almost non-existent and the execution environments provide sparse responses when an error does occur. In fact, when an error occurs, you cannot be sure it is the script or the environment in which the script is run. Moreover, you are unable to distinguish between a network connectivity error or JNDI name conflict error within your script. Thus, you must rely on the user executing your script to determine the root cause of the error and take corrective action.

If that is the case, then there is really no reason to write a script in the first place. That time would have been better spent on educating the user about the AS change process or (shameless plug) purchased Phurnace Deliver.

"Works on my machine."

I have been working on Java Application Servers since Netscape Application Server 4.0. In all those ensuing years, I have yet to come across a company that had an identical environment for dev, test and production. Each stage differed by topology and naming conventions. For example, I would see 2-way clusters in dev and test and 4-way clusters in production. Moreover, you will find different Cell names, JDBC Urls, Usernames and Passwords in each environment.

And, unless all your environments are managed by a single person with OCD and insomnia, you will encounter Configuration Drift across those environments. These drifts will start in Test or Production. From Test, the drift can be started by a Developer making a change to the Test environment without logging a bug or updating the current script. ("Oh, that error? I forgot to add a new Datasource. Let me add that real quick..."). Thus, when the code moves to Production, you will see the same error caused by a missing Datasource. Drifts can start in Production when IT admins make well intentioned changes to their environments without those changes being pushed down to Test and Dev. Thus, Dev and QA are developing and testing against an invalid environment.

The end result is that you begin to have scripts that only work for specific environments and not a specific release. Thus, the results of your script are little better than a crap shoot when it comes time to update Production. And, since most Application Servers do not keep track of configuration changes internally, determining what is different between two environments is near impossible. If you can't determine the delta, then you can't fix the delta.

Thus, hopes for mistake eliminating and increase productivity become pipe dreams. And, the organization is no better off than with manual deployment than with scripts.

Admittedly, errors are a significant cause of productivity loss; especially errors found in production. However, there are other ways that scripts can cause productivity loss . In my next blog entry, I will discuss how scripts simply move tasks from one area to another in order to give the illusion of productivity enhancements.

In Scriptsjava
Comment (1) Read More...