Archive for April, 2007

Faster Projects 101: HA is for suckers

Sunday, April 8th, 2007

Sat through a two hour meeting on friday about the department’s flagship project and realized two things. One, this product is a 50/50 shot at best of ever actually becoming our new platform, and two, my guys are never going to hit the timeline with the goals as they are now. So what do you do to hurry up a project no one really thinks is ever going to go live? Scrap HA. Currently this project calls for nine different server roles. Three of them are easy to loadbalance: cache, web, and app. One of them is too important for me to scrap HA: database. However the “funky” ones that really do all the grunt work of feeding data into and out of the system as well as what all the backend users connect through? Fuck that. Those things are always increadibly hard to cluster because the vendor never even considered it. You wind up having to reverse engineer the product and custom-hack your way around any application-layer “gotchas”. I fully expected devising an HA scheme for those remaining tiers to be a quarter to a third of the manhours in getting this environment up and running. Now without that on the plate we may actually hit our timeline, and all it cost was a giant risk!

Actually I don’t have the balls to be that risky. I’m counting on VMware HA to be “good enough” for those oddball tiers until we start to hit scaling issues. If it works out it’ll be yet another in the long list of “why vmware is worth every penny I can throw at it”.

Java appservers scare me

Tuesday, April 3rd, 2007

I realize I’m super late to the party here, but my company is about to jump into java/servlets/tomcat hard, and it frightens me.

Its not that I have any gripe with the platform, in fact I’m rather pleased with how well our CMS vendor in particular has architected their setup, its just that… well… *everything* has a learning curve, and while java’s may not be particularly steep it goes on forever and ever and ever. When I look at the experience base we’ve built in the department over the last 5 years with apache it dwarfs what we’ll be able to put into tomcat for at least another two years, and that sucks most of all because I know that experience has to come at the cost of downtime, bad (rushed) decisions, and a ton of trial-and-error learn-as-you-go manhours.

We’ve got the extra convoluting factor that for the last few years since our java appserers have been very few and far between they’ve mostly been “unique snowflower” contraptions rigged together by the developers. Usually put live with nothing but a line in /etc/rc.local and an understanding that if it makes noise you killall -9 java, paste the line from rc.local into your terminal and go back to sleep (because when the hell else would it page but four in the morning). So I’m not just introducing a new environment, I’m reclaiming territory from developers, which always means looking like the bad guy. In this case they’re used to using a different JRE *and* a seperate tomcat/resin instance for each individual webapp.

On the plus side, six months from now I know I’ll kick ass at tomcat and generally understand java appservers a lot better. However most of it will have been gleaned from the horrible mistakes I’ll have made that we’re stuck living with in production.