Monthly Archives: June 2004

Time and Money MUST be part of an IT architecture recommendation

Why – good architecture is good architecture right? I don’t ever remember the advanced OO design and analysis courses I’ve taken covering cost as part of their curriculum. OO, Design Patterns are supposed to be universal. The scope of the project shouldn’t matter – encapsulating data is good, no matter what!

GOOD ARCHITECTURE IS GOOD ARCHITECTURE NO MATTER THE CONTEXT, right?

  • That’s what the engineers say.
  • That’s what computer science and programming books teach us.
  • As a practitioner of good OO I used to evangelize that.
  • Academics and architects say that.

How would one arrive at the conclusion that good architecture concepts, such as encapsulation, polymorphism, etc are good architectural concepts regardless of the context? We must FIRST look at the definition of what GOOD ARCHITECTURE is.

ACCORDING TO WHOM DEFINITION OF GOOD ARCHITECTURE EXAMPLES
ENGINEER A collection of systems, programs, data that supports leading application and system development methodologies, concepts, patterns, and leading thinkers to minimize defects and increase reliability and extensibility Polymorphism, encapsulation, web services, component based architecture, standards based development, etc.
CEO/SHAREHOLDER (BIZ) Capital investment(of time/money) to:

  • decrease deployment and maintenance costs and increase reliability
  • decrease time to market for internal and external applications
Virtual Clusters, enterprise monitoring, standardize on J2EE, investing in coding standards, building infrastructure services and components

Fundamentally these are not in opposition. They are complementary and hardly ever are they directly opposed. The engineers view has pieces that will enable many of the BIZ requirements for good architecture. If they line up, and they are mostly in line and are complementary, when might they be in conflict?

BIZ users evaluate their capital expense in a variety of methods… Nearly all boil down to a very simple question of ROI. What is the benefit to me over time if I spend this money today? The strategy will be (no real surprise here), to invest capital that will have maximize benefit and minimal investment (do more with less). There is no shortage of the differing calculations, tweaks, estimations involved in this process.

So let us say that as an engineer or an organization engaged in commerce (ie, an IT department at a corporation) that given there are no motives for academic excellence or intellectual achievement that the true definition of GOOD ARCHITECTURE outside those endeavors is that of the BIZ:

  • Decrease costs
  • Increase reliability
  • Decrease time to market for new technology

Again, the engineers view is not in direct contradiction. They line up quite nicely and indeed are mostly congruent. Good engineering principles, from an academic perspective, can have immense benefits to a business including decreased costs, increased reliability, and shorter implementation times.

Let us, for the sake of clarity, label these two camps that are nearly always in agreement the Academic(predominant view of an engineer) and Applied(view of a business owner or executive management) architectures.

Yeah… but you promised to tell us when they are in conflict… We’re getting there…

Ok, so when might an architectural decision be good Applied architecture but bad Academic architecture? Let’s take a practical example:

Two particular architectures supporting two separate methods (A & B) for producing widgets:

  • METHOD A : Requires X staff to produce Y widgets. Rates an 8.5 on an abstract ACADEMIC QUALITY SCALE.
  • METHOD B : Requires X-10% staff to produce Y widgets. Rates a 9.5 on the ACADEMIC QUALITY SCALE.

Let’s look at some example numbers. There is a proposal to expend capital C (10k/year) on architecture/infrastructure to enable method B. X is 5k per year.

The engineer inherently evaluates on the ACADEMIC quality, and straightforwardly evaluates (according their engineer precepts) that CAPITAL C is money well spent on GOOD ARCHITECTURE because it increases the academic quality and saves 5% on X per year.

The biz evaluates on the APPLIED model, looking for ROI. In this case, it would take 20 years to recoup the cost of the capital with no increased revenue (still Y widgets). In this example the cost required to implement method B, while significantly improving productivity and the academic quality of the architecture, is actually greater than the benefit. In this case, doing the right thing (from an academic perspective) is actually a bad architecture based on the BIZ definition.

In cases where the projected COST OF BAD ACADEMIC QUALITY (decreased output, slower response times, difficult QA periods etc) is less than the estimated/projected COST SAVINGS OR BENEFIT from the invested capital in the GOOD ACADEMIC QUALITY ARCHITECTURE then it’s a better business decision to go for poor academic quality.

GET TO A POINT!!!

I’m not saying engineers striving for good architectural concepts is bad. It’s noble in precept and may also make great business sense. One can’t put a solution up on a white board and say, trust me, it’s good architecture because depending on what your IT charter is, it might not actually be. You have to prove it – add projects estimates, efficiencies, use statistics from trade organizations. Tell the people funding the cost of the shiny well tuned machine that it’s in their best interest because they’ll get 30% more application throughput, 30% reduction in time to delivery for requests, 75% cost of maintaining systems X,Y, and Z.

UPDATE: I was thinking it would be prudent to point out that I’ve observed the most successful implementations of sound engineering techniques has always been done by groups of people who fundamentally understand the concepts, where they are currently are, where they want to go, and then just consistently and opportunistically “realize” that vision through projects over time. If you see opportunities to make things better; do well.

Oracle 10g on VMWare

I’m working on a customer site that is using VMWare. While the regular DBA group insisted that none of their production databases are hosted on VMWare, a new BI project was scheduled to be the “test” to see if Oracle products (AS/EE DB) could run successfully on these “virtual machines.”

As a developer who is aware of the burstable nature of resource utilization, the promise of VMWare is immense. Our applications often use immense amounts of I/O, CPU, and Memory while doing their real work. However, a great deal of the time they sit waiting for human operators to catch up. The idea of housing many enterprise class servers on one physical system with a central location of management/provisioning/performance evaluation/etc sounds brilliant.

Now I’ve read the VMWare product material, and an overall positive set of opinions and benchmarks from people running on vmware. From where I sit, the VMWare stack is a good solutions for most systems. If I were running a farm of JBoss, Apache, MySql, IIS or other commodity-esque servers VMWare would be an ideal solution. Actually, I should rephrase, the programs that I refer to are those that have a VERY WIDE installation base and have been installed on a diverse and very hetergenous set of “Linux” or “Windows” hardware combinations. These programs are the ones that I believe would do very well in VMWare because they are used to “funny” hardware readings, etc.

Again, this is the experience of one consultant on one project, but I feel it forms a valid recommendation all the same…

Oracle on VMWare is possible but not recommended, currently. Oracle’s official position (note 249212.1 on Metalink) is that it is supported as long as you prove to them the same bug exists on a regular PC (having to have an identical physical system to prove to Oracle that it’s not VMWare sort of defeats the purpose of VMWare now doesn’t it!)

My primary reasoning being that “Oracle is an application built to determine intimately, the structure and performance of the underlying hardware in an effort to increase it’s own performance.” It has hooks into system areas trying to poll and read Memory Usage, I/O performance, CPU utilization, etc. Oracle endeavors to understand, at a low level, the configuration and the performance of the platform that supports it. VMWare, in my experience, tends to report some “funny” readings when it comes to Hardware.

    On my project, the laundry list of “funny” behavior include:

  • df commands that hang with no Ctrl-C response. Must log in on another term and kill -9.
  • applications do not use swap space. Linux sees the swap space but does not use it.
  • CPU readings show no idle time, full system time, with oracle Idle.
  • random startup/shutdown errors with Oracle with regards to obtaining network information
  • 10g AS EM Website has difficulty keeping track of processes (nearly always, the control panels show the component as down/unavailable/etc) when the components are operating properly.
  • Server can be “rolled back” to a save point in the past without any visible warnings of such an event (when a physical server is lost, the backup team typically notifies users that it was restored from X backup). VMWare can be rolled back with a simple reboot (obivously this is configured but it has to play into the physical deployment of your Oracle to ensure you get the right behavior).

Note: I’m no OS expert, and many of these can likely be resolved by a RH 2.1 Admin with proper VMWare knowledgable. Really though, are the admin/consulting dollars well spent resolving issues?

Some may flame me for being such a “business solution” biggot, but hardware is a cheap commodity and should be factored as such The price of a few 2way Xeon servers with RAID and copious amounts of RAM could easily be overshadowed by enough admin/consulting days lost on tracking down “funny” behavior.

The saving grace for VMWare may be a feature which I have not used. Live, development snapshotting. What I wouldn’t give for a great, easy way to take live snapshots throughout time while doing my work. Development is many times, exploration, and the ability to “play it safe” with the click of a button is brilliant.

I’d love to hear from anyone out there on their experiences with Oracle on VMWare. Perhaps I’ve just had a bad go at it… Hope, for reasons of happy Oracle professionals, your experience has been better!

UPDATE: The servers have also “FROZEN ENTIRELY” a la Blue Screen of death however this is RH Enterprise Linux. Just another item on the laundry list.
UPDATE 2: Servers have frozen up again, and the systems staff can not, for the life of them, figure out why the phase of the clock is so awful.

Distributed Database Systems

dds_coverI am currently making my way through the book, “Principles of Distributed Database Systems.” It reads like an academic course textbook, as I imagine was the authors intent.

I find it fascinating… It is also a bit challenging to try and remember what it’s like to be learning new notations and abstracted academic concepts. My day to day is so grounded in building customer solutions (very practical, with good applied technique and concepts) that I have to be deliberate to keep the mind sharp.

One thing that I’m particularly enjoying about this book is that I am seeing some of the concepts that I use my role as a BI Consultant from their starting points. I’m accustomed to interpreting Oracle plans, statistics, etc and now I’m able to relate that to the abstract concepts they represent.

I have to admit though, my interest does have a particular project in mind… I’m always wanting to build something that is more clever, and better than what’s out there now… This book might help me solidify some of those thoughts and add direction to my company R&D focus.

And so it begins…

I had considered for quite some time how best to share my thoughts, designs, ramblings, solutions with the greater BI community. While not perfect I have decided on publishing through this blog… As a consultant with limited amounts of time to devote to publishing (client projects keep me busy, luckily) this tool will allow me to quickly and easily contribute to the communities to which I love….

I apologize in advance for any misspellings, hasty or inaccurate assumptions, incomplete solutions, or other blatant mistakes. I do endeavor to present complete, accurate, whole nuggets of knowledge but don’t hold back with proofing/editing cycles.

I do hope you enjoy this blog, and encourage you to email me with feedback (positive or otherwise).

Best Wishes and Kind Regards