The first law of thermodynamics tells us that energy in a system is constant. Energy is neither created nor destroyed. And thus the fantasy of so many that you can get more energy out than you put in is dashed. Of course there is the Adam Savage comment that there is really only free energy to you. Meaning of course, it's free if you don't have to put your energy into extracting it. Of course there are ways to get free energy without siphoning your neighbor's gas tank at night or covertly tapping their power lines. I have a few favorites that illustrate the concept.
Regenerative brakes use electric generators to provide resistance and slow a car. Or in some cases, they compress hydraulic fluid but whatever the technique, the idea is the same. Rather than converting the vehicle's momentum into heat and annoying brake dust that cakes on your wheels, capture it and store it for reuse. Is it free? No, but it was otherwise wasted. In this particular application, the regeneration process doesn't even have to be especially efficient. Even if it only captures 10% of the vehicles kinetic energy, it has reclaimed something, not to mention reducing brake dust. Have I mentioned I'm not fond of brake dust?
There are two intriguing proposals that I have also seen. One involves a floor mat that contains coil inductors. Stepping on the mat depresses causes a small amount of electrical energy to be generated. The volume is relatively small until you consider an application such as a train station or airport terminal where thousands of travelers pass by everyday. The efficiency isn't great but the cost of the generation source is largely free. It's not clear if it can be manufactured cost effectively enough but the concept is spot on. Find a source of energy that is otherwise being wasted and capture it. Along a similar vein is a system that generates electricity from the heat put off by people in office buildings. Again, find a source of energy that is otherwise discarded and convert it into usable energy.
By now you're probably wondering what any of this has to do with architecture. Well, power efficiency is definitely one of the challenges we currently face in our architectures. As I have said before, power consumption is a software architecture problem. One of the interesting challenges I have been pondering of late is how to find largely idle resources in the data center and put them to use. Gain some more business benefit from the capital expenditures and electricity bill companies are already paying.
One of the idle resources I've observed is disk capacity. The traditional web/services architecture follows a multi-tier design with application servers and database servers. The storage is of course on the database tier. But what about the drives in the application servers? Disk capacities have grown to almost ludicrous sizes with most 1U servers arriving with 500GB or more of storage. Even with virtualization, the operating system and applications rarely occupy more than 100GB, but let's be generous and make it 200GB. So you have your application servers spinning drives with 300GB of unused capacity. Even a smallish site of 100 application servers has 30TB of idle capacity sitting in their application servers.
So let's think about that capacity for a minute. The capacity isn't reliable as application servers are typically stateless. So any use of the storage must take that into consideration. Not only can application servers go down, but they can die and be completely replaced, the contents of the drive lost forever. Additionally, if your application servers are located in a single data center, not just one server's storage but the entire storage farm could be lost. Let's assume though that we're only going to worry about losing a server and not the entire storage farm.
There are a lot of uses where losing storage is completely acceptable. Log file storage, temporary space for back office analytical processes, and test data sets are just a few examples. But what if you ran Hadoop across these storage nodes with 2 or even 3 replicas. You would still have 10TB of storage available and you can now tolerate the loss of a single node without any impact to the availability of the data. Most companies have storage needs that could easily be met by such storage configuration and it is almost free. At the extreme end of this concept is Wuala which allows users to not only access a distributed storage network but trade idle capacity on their computers for additional capacity in the network.
Another idle resource I've observed is off peak processing power. A typical web service has a peak that is approximately 2.5 times the average traffic. Ignoring disaster recovery capacity and peak to off-peak, that means that there are windows throughout the day when 50% of the companies available compute resources are lying idle. This is capacity that has already been purchased and is occupying data center space and consuming power.
Again, there is an opportunity to harness this capacity for other business functions that can live in the off-peak processing windows. What if business reporting activities could be moved into another virtual container? Or how about business analytics functions being performed as a map/reduce operation during off-peak cycles? Every organization has dozens if not hundreds of such processing tasks that are traditionally assigned to dedicated hardware that could easily be completed on otherwise idle resources.
And so bringing this full circle, just like regenerative braking exploits energy you've already paid for to reclaim benefits that would otherwise require additional new energy, harnessing idle capacity from your application tier can let you reclaim business benefits for resources you already fund.
Technorati Tags: architecture, engineering, services, soa, software, to_read, toread, web
Comments