When all you need are Rackspace webheads, get more servers for less

by Mike Levin SEO & Datamaster, 04/26/2012

Okay, it’s another daily journal that didn’t make the cut yesterday. Focus, focus, focus! You only have one important client call, coming up in 6 minutes. Take that. Perform well. But then move onto what you want and need to do today. Yesterday was a watershed moment for Tiger. Internal people came to me several times over projects, and it’s always the same… the information is there, but it is difficult to get with a simple Tiger function. Some complex programming will be required, which makes the work in Tiger really not much easier than just doing it from scratch as custom programming. What’s worse, you might end up “fighting” the generalized system that is at work in Tiger. You might have a square-peg/round-hole situation–especially if it’s a big crawl, massive data, requiring scheduling, etc.

There’s a lot of tasks for which Tiger is not suited, and I certainly don’t want to turn it into something that competes with the adopted solution for automated analysis and reporting in similar situations. Tiger is for mocking up actual working solutions quickly that can satisfy you and the client’s immediate needs, and then maybe help in creating the requirements for something a little more automated, scheduled and formatted.

THIS is the kind of thinking and writing I need to be doing! At long last! It’s not just getting a little bit more coding in each day until some magical critical mass is reached, and Tiger realizes it’s potential. It’s about thinking through the big and the real issues deeply and adopting some beliefs that informs and guides all the little decisions I make from here forward. NOT supporting Scheduling in Tiger, but putting it into the roadmap document, is a perfect example of such a belief. Scheduling immediately throws the expectations for Tiger totally out of whack. This would result in people immediately trying to use Tiger for the same types of tasks they use high service-level reporting products, and there’s going to be all these rouge and abandoned scheduled tasks, and it will become an nightmare. When I implement scheduling in Tiger, it will be done well. Maybe I reserve that for the tiny virtual machine open source version of Tiger that I want to do as version 2—so that everyone’s scheduled tasks are running out of little virtual machines on their desktops that go poof when they reboot or power-down. That will take care of rogue scheduling tasks… ha ha!

Okay, as it turns out, I didn’t really even need to be on that call, but that’s fine. Still better for me to stay tuned-into the account activity. But now that that’s over, I have a great opportunity to dive deep. And it’s a GREAT opportunity to apply my 3 metaphors in tackling today’s work…

  1. What’s most broken?
  2. Where do you get the biggest bang for the buck?
  3. What plates need to be spun?

Tackle these questions, and keep distractions from this point forward under strict control, and you stand a fairly good chance of having a productive day, and starting that surprise-and-delight cycle that you feel is so important… and… so… without further adieu, the thing most broken is:

The surprise and delight cycle has not begin–either internally or externally.

You get the biggest bang for the buck in getting the documentation for Tiger in proper order–both internally and externally.

The plates needing to be spun is making sure that I answer the particular outstanding requests (and broken functions) in the course of documenting Tiger’s functions. That will touch several people who have made requests of me, and are perhaps becoming frustrated with my lack-of-responsiveness thus far. I simply can not let that lack-of-responsiveness accidentally torpedo me, and become my Achilles Heel and downfall here. I can have no Achilles Heel. Seek first to make yourself invulnerable, then look for vulnerabilities in your opponent. Only in this way can you ensure that you win every time. It’s time to make Tiger friggin’ invulnerable.

How to start? Do we make the “more servers” that I’ve been wanting? Smaller size and more of them, which would make available “room” money-wise for a purely experimental server.

It’s already 2:30PM. Where is the day going? I have to employ the “if I only get one thing done” strategy. I want a little more freedom, and a few more servers at Rackspace. Double-check the pricing page. Yeah, per http://www.rackspace.com/cloud/cloud_hosting_products/servers/pricing/ the pricing of the 256MB machines are almost half the 512MB machine. I’m going to switch all the servers back to 256MB and double the amount of servers on the loadbalancer. That suits this application much better than a few bigger servers. That also gives the advantage of more IPs.

Okay, so to do this, we first deactivate the server from the loadbalancer that’s going to become the new On-Demand image. The smaller server size is 256MB of RAM and 10GB file size. I will have to put something in place to keep an eye on performance and uptime. I should implement Nagios or Monit. After resizing, do an apt-get update and apt-get upgrade. Make a new on-demand image. And now, resize the other three servers, following the same take-off-loadbalancer, resize, put-on-loadbalancer pattern. Do the one with the version control system last. Okay, done! All four servers are back to the 256MB / 10GB size, and I’m spending nearly half as much. Now, it’s time to get twice as many servers. Okay, I shrank four servers, and added 3 more servers, but only put 2 of those into service with the load balancer. That means there’s one server left over where I can totally do wacky development work, and have no impact on the Tiger system at all. And Tiger is getting fairly low use, and six small servers is plenty to accommodate the load. And the playground site is in place too. Okay… pshwew! It’s 4:00PM. I have 2 hours left. How well can I do documentation now? How well can I bring the documentation tab as an easter egg? Can you do it without screwing up everything?

The day’s almost over, and I haven’t really done much on the documentation-front, and I have active requests in. I am going to use the rest of the day, just to address each request individually, and set myself up for a documentation-day extravaganza tomorrow.

-—- Yesterday’s work journal entry —–

I have to say, I LOVE using my “start new journal entry” macro in vim. In general, I’m avoiding hardcore vim customizations, so that my vim skills stay generic and applicable to any system I sit down at. The line in my .vimrc looks like this:

let @j = ‘/boj^Mo^M^M^M^[kkk80i-^[j! date^Mjzzi’

Figuring out how to “type” this into vim was a real trick. Those symbols appear to be regular caret symbol, but it’s not. You can actually type Control-characters directly into vim when in insert-mode, and that took me awhile to figure out. You are recording ACTUAL control-characters in the macro, and vim represents them looking like normal text, but it’s not. You can no longer copy-and-paste examples around. YOU HAVE TO TYPE IT DIRECTLY into vim if you wanted this macro yourself… get it? Copy-and-paste won’t work. But it’s worth it. The macro finds the text-marker “boj” (beginning of journal), inserts a separator line, the date, positions your cursor, centers the screen, and puts you in insert mode to start typing. These are the little muscle-movement habits that you can do in the vim-world (albeit a macro) that makes it just so much nicer than the mouse-and-windows world. (make qna)

But this isn’t really the business of the day. What is? Oh, I’m going to want to make the above comment into a Q&A entry. I think I’ll start “tagging” my journal entries to mine for stand-alone Q&A topics. I’ll put something unique and easily searchable… hmmmm… qna! Nice & short. Reads like what it is, so it’s explicit. And follows the simple bof eof conventions. I’ll probably type it as (make qna), so it’s not totally baffling to the site visitor… only partially baffling.

Okay… what next? REAL business of the day! Starting lunch-time. But I want a quick trip to J&R during lunch. Okay, go do that. Nahhhh. I can do that later. Use the momentum while you’ve got it. Okay… the idea is to start profound, and RAPIDLY zoom in on the appropriate tasks. First-off, what time-period of focus am I working with? I have from now until 3:30, when the meeting is actually with Becca of the BSEM group, so it’s right-on-topic.

Okay, that meeting is over. Wow, Tiger could be really big here internally. There’s A LOT of training that needs to be done. There’s an “internal training” and the corollary external training. I can totally see that this is a “teach people to fish” ASAP sort of situation. The code for the functions should actually be shown to internal people, along with the full list of functions. I should bring back the documentation tab as an easter egg, and do the in-code documentation that it takes to make that all show. Everything should be documented. Ugh! Okay, I’m glad there is this little break in coding. This is not a matter of doing a little more coding every day and reaching some critical mass breakthrough that makes everything click. This is about having the proper perception and outlook on things.

It turns out that the focus should be on: