I have wanted to post more articles about IT theory on this site. Unfortunately these types of posts take an especially long time to produce. Since none of us can really predict the future, a lot of what I state might end up being wrong, but that’s also part of the fun. I remember a writing project in AP history in high school where it was our goal to pick a topic and predict the future. I still remember it to this day. One thing I theorized was that music would be stored on microchips similar to RAM (didn’t know the detailed function of RAM at the time) which were placed in a small box that somehow output the audio to a stereo. I was off the mark by a bit, but only a bit.
Practical Cloud Applications
For me, the best way to think about the future possibilities of cloud platforms is to think about them from the aspect of an architect, specifically with a background in virtualization. From this perspective, I can imagine several use cases where cloud platforms could serve extremely powerful and useful.
You have a web application service which serves 100,000 users. This service is comprised of 5 Apache/PHP web server VMs with a clustered MySQL back-end of 2 VMs. In front of the application are 2 virtual (global) load balancers which split the load across the web servers. Here’s where the fun begins… Overnight your product gets mentioned on a high profile late night television program and your traffic shoots up to 1,000,000 uniques.
It’s no problem because you at least planned for this situation by creating an account with a cloud service (IaaS) provider. Your SLA monitoring software notices the increased connections and some increasing latency in the site and automatically sends an API request to the cloud provider and provisions an additional 45 VMs across several of their datacenters (even possibly, based on the geolocation of the originating IPs, provisions more of the VMs in datacenters closer to the users). These VMs are automatically added into the load balancer configuration and can immediately start serving requests to the users.
Now you have the issue of possible reduced bandwidth to the database backend (which the monitoring system has proactively alerted you to) and the API again sends a request to the cloud provider to create a new cluster of 2 MySQL VMs. This is automatically added to the Apache/PHP configuration and can be used for queries. The data is replicated between these database servers and their counterparts in your datacenter in order to keep the data consistent, also in a fully-automated fashion. You are able to handle the load automatically without having to lift a finger when the unforeseen event happens. All you had to do was built intelligence into your system to allow the scalability to happen from the beginning.
This just one such example of how I can see the cloud being used for automated scaling of websites. To me, automation is one of the key benefits to using cloud services. The real challenge for cloud providers lies in creating an automation platform that can be used for a large percentage of use cases, so that there is less work by the end users of the cloud. I can see this being a differentiating factor between the current cloud providers out there.
Future Is Automated
There are, of course, many other ways to use automation in your hybrid cloud. A lot of the new software engineering related to cloud will revolve around this aspect of automation as this is a major factor in increasing the business agility of applications to scale beyond just the cost saving benefits inferred by cloud computing. With some level of standardization in the automation space, I think cloud adoption will start moving forward without the need for unique approaches, leading to greater compatibility and interoperability among cloud providers; a positive for everyone involved.
What are your thoughts? How do you scale applications in the cloud at your organization?
2,252 total views, 6 views today