Foglight Application Performance Monitoring
I attended the Amazon Web Services Re:Invent conference in Las Vegas this week. AWS has always been about scaling, but I was surprised at the scale of the conference. 13,000 attendees packed into the Venetian Sands conference center. Just the keynotes and serving lunches were an impressive exercise in scaling.
Everything ran smoothly though, except for overloaded escalators between sessions that would relentlessly deposit attendees into an already crowded space. We managed to survive though and the sessions were worth the claustrophobic risk.
Amazon made several announcements during the event. The two I found most interesting were the announcement of the Aurora service, a MySQL compatible hosted DB with enterprise level functionality at a cost-effective price point, and the Lambda service, which allows for event driven code to be executed without requiring you to run a virtual machine instance. While event driven code may not sound like a big deal at first glance, I think it has some significant ramifications that may well make it another inflection point in the history of computing moving to the cloud when we look back on it in a few years. Why? Because it is yet another level of abstraction that frees developers and architects from spending time on architecture and scale of “instances” and allows more focus on the business logic of the problem they are trying to solve in the first place. Virtualization technology provided an abstraction layer for the hardware, and enabled virtual machines that we could spin up at the click of a button, and then automatically to scale when needed. The efficiency gains that resulted by not having to think about the OS, device drivers, or hardware you would actually run on and all the optimization possibilities that opened up was the primary driver of cloud adoption in the first place. But we were still thinking and architecting in terms of “machines”, they were just virtual machines that we had a whole lot more control and flexibility with compared to physical hardware machines. With Lambda, Amazon is making an attempt to abstract the “machine” completely out of our software design and deployment thinking. Write the code that specifies what needs to occur when certain events happen, and let them worry about where it needs to run and how to scale it out. The end result is a shift from an application consisting of multiple instances running the same or different operating systems, various work queues and worker instances, to one “cloud app” running on a “cloud OS” of AWS. Yes, just like choosing an OS for your application you get a certain amount of lock-in to a “cloud OS”, but it looks like Amazon is betting they can deliver enough value to make that a fairly easy trade-off. If Amazon can drive market adoption of Lambda, it may turn out to be the inflection point where we stop saying “our app runs in the AWS cloud” to “our app runs on the AWS cloud”. Vernacular aside, it seems the abstraction power of an event driven model like Lambda has the potential to allow for faster and more robust cloud app deployments. Time will tell.