Much has been said about the vast potential of RSAWEB Flex Cloud as a product, but in this article I would like to focus on how this offering or ‘Platform As A Service’ (PAAS) can be applied in the real world of development.
When speaking to developers you will find that a fair, if not large percentage of us have spent most of our careers working on inherited leviathan like monolithic applications, commonly referred to as ‘The Legacy System’. It will also then come as no surprise that the vast majority of these Legacy Systems were never built to scale complexity or infrastructure. In fact there is no doubt in my mind, that most of developers approach these emerging technologies and scalable resources with a degree of reluctance, saying: “That’s great, but it’s not for me”. This reluctance to try something new, was from my perspective, completely justified; which is why, I have decided to share my recent experience of facing such a challenge, and how RSAWEB’s Flex Cloud assisted, here:
Management of infrastructure
After many hours of fast food, cursing and double espressos we had done it, we had finally tamed the beast. The application in questioned had moved from its one all-encompassing physical server to new, elegant, fully distributed cloud resources, and, it was a good feeling!
However, the feeling of jubilation soon passed, as we quickly learned that ‘with great scale, comes great responsibility’ and before long, we found ourselves almost drowning in a pool of virtual machines that required constant care to keep them up and available. So great was the demand for hands on management that it started a war between the Dev and Ops teams, in which liability for the solution was renounced and the keys handed over to the Developers. All our time and resource estimations for feature development, refactors and support almost quadrupled, as we now also had to factor in time required for configuring and maintaining the infrastructure.
Scale on demand
Even with all the automation and scripting we had, it was still quite hard to scale on demand. As a result we always ran a finite number of cloud resources whether we needed them or not. These cloud resources were set at the minimum amount of nodes required for each layer of the infrastructure. When the load increased it would still take time to deploy the additional resources needed to supply the demand, and we were now literally spending on resources we did not need, if/when the demand was lessened.
Scaling on different layers
Once the application itself had scaled, we found that the increased number of web nodes were placing additional strain on the layers, particularly for MYSQL. All of a sudden my team and I found ourselves engaged in lengthy conversations about splitting out read writes, master/slave replication, ha-proxy and MYSQL Cluster. We started to cringe as we began to realize the amount of complexity involved with scaling MYSQL, Memcache and RabbitMQ amongst other things, as a result of increased capacity on the web nodes.
Enter Flex Cloud
So how does Flex Cloud fit into all of this? First off, I’m going to go out on a limb and guess that if you are dealing with a legacy system, chances are high that it has a huge amount of custom requirements on various libraries, plugins and packages, some of which needs to be compiled from source. It is this very aspect that often causes us Devs to overlook things like PAAS, which we feel often insinuates a ‘one size fits all’ type of solution. This was one of the biggest hurdles my team and I had to overcome before venturing into the world of PAAS.
We had imagined that the platform would have given us some degree of access in which to customize our environments. However, to our surprise, the access we were granted was far greater than expected and allowed us to configure a great deal of aspects within the environment, including all of the PECL/PEAR packages needed to run the application, which in itself is pretty awesome!
Our main concern however was with the countless Ubuntu dev and source packages we would be needed for the application to function. Once again, to our complete surprise, I found that these requirements had already been satisfied and amazingly, it took little over an hour to get a functional instance of the once deemed; ‘un-scalable application’ running in a completely fluid environment.
With RSAWEB Flex Cloud we are able to set auto scaling thresholds for every layer of the infrastructure (Load balancing, Web Nodes, MySQL and Memcache). Flex Cloud also offered us direct integration with Github and SVN for auto deployment or continuous integration. We are also currently experimenting with its extensive market place which allows support for our various other tools such as Jenkins, WordPress and Clustering.
Having used and tested the resource thoroughly, I can tell you that RSAWEB Flex Cloud is far more than a trending technology for the new generation of hipster type green development. It is a powerful tool that can allow you to scale and innovate even in the most unlikely of applications. So before you write your monolithic app off as “un-scalable” I urge you to try out RSAWEB Flex Cloud on a free 14 day trial and breathe new life into the fossils of your legacy system.