As the cloud industry continues to grow and progress, the pace of innovation has not slowed. One trend that is continuing is the growth of products that abstract away complexity. This post will briefly discuss two such products and how they might be a window into the future of cloud computing.
Abstracting what? As always an analogy is helpful, let’s say you want chocolate cake. So what you need to do is get all the bits and pieces that are required to produce a chocolate cake. Flour, chocolate, eggs, an oven etc. You combine the bits and pieces in a specific way and the end outcome is chocolate cake.
But some people don’t want to deal with this complexity, they just want chocolate cake! So there are businesses, like bakeries, that take care of that process and simply give you the end product. Simple right?
Well the same thing is going on in the tech world. Want to run some code or application? Well normally you need all the relevant bits; a server, networking gear, a run-time environment etc. You put them all together in a specific way, then you have something that can run code and applications.
But what if you’re a developer and just want run some damn code? You’re not a sys admin or you don’t want to deal with the overhead of managing that stuff. Well, these days you have some interesting options…
Enter services like AWS Lambda and Amazon RDS. For the purpose of this article I won’t bother covering all vendors, but there are other players in each of the categories (compute and databases).
The impact these services will have on IT professionals and the IT industry in general is hard to predict at this early stage. No doubt that over time the demand for skillsets will shift, just as they have in other areas (think of the impact Office 365 has had and will continue to have on Exchange administrators).
The idea is that customers can focus on building products and not worry about the underlying infrastructure and complexity required to run or maintain them.
The other huge benefit is the potential for cost savings. Not long ago virtualisation made compute resources cheaper by increasing hardware utilisation through hardware abstraction. These latest services have taken things a step further where you literally only pay for what you use. In some cases, there is zero idle costs.
Huh? Even in a virtualised environment, the virtual servers still don’t run anywhere near 100% CPU or disk utilisation for even the smallest fractions of time. But you still have to allocate a fixed amount of resources and pay for the unused portion (talking about public cloud offerings here). Not anymore!
Launched in late 2014, Lambda is a truly innovative approach to cloud computing. The basic premise of Lambda is server-less compute. In other words, you can run code and applications without having to actually deal with any servers.
Of course the underlying infrastructure that makes Lambda possible, is still servers. But AWS have taken care of provisioning, maintaining and scaling completely. You simply upload your code into Lambda and the code executes.
It’s an interesting move by AWS, as this product will compete directly with their IaaS product, EC2. Amazon has historically been open to cannibalising its own products though (think Kindle), in the hope of being the ‘disruptor’ rather than being ‘disrupted’.
The cost of Lambda is relatively simple to understand, you pay for the number of requests and amount of time it takes for your code to execute. AWS is currently providing a free tier too, so you start dabbling for nothing.
It’s not suitable to every use case, in fact its arguably only suitable for a very narrow and niche range of purposes. However, the platform has been expanded since its launch and I would expect it to continue to do so. It will be interesting to see what impact it has on the industry 10 years from now.
Amazon’s Relational Database Service (RDS) is yet another product that aims to simplify and reduce the burden of infrastructure management. The most popular type of database today is still relational databases.
Typical web apps start life as a single server running something like a LAMP stack (Linux, Apache, MySQL, PHP) or some variant. All these components running on a single server instance, which makes it relatively simple but it also has its limitations. To scale and provide redundancy you typically need to separate some of these components, in particular the database.
In the past the conventional thing to do was spin up a separate server to run the database as a single function. This gave some scalability and architectural flexibility. But then it meant you had to manage and maintain (who loves patching?) more servers.
In a development environment, it’s not only the management and maintenance that becomes an administrative burden, but also the provisioning of these servers as you constantly experiment.
This is where AWS RDS comes into play. Again it abstracts away these levels of complexity and simply gives you what you want, a database, ready to use. In their own words, there is “no need for infrastructure provisioning, and no need for installing and maintaining database software.”
You can scale the database easily through a web console and setup read replicas. You can even deploy an instance that has a standby in a different availability zone (very distant and separate datacentre) for redundancy, with synchronous replication.
All this with a few simple clicks! Death of the database administrator? Probably not, but it will surely have an impact on the profession. Again the product is not suitable for all purposes, but it can simplify infrastructure management and work for many workloads.
Amazon and others have done the same thing with other products as well, including non-relational databases, authentication and machine learning. All of these services make it easier today to build applications than ever before.
What will you build?