Jan 10, 2020
If you are old school and once owned a real desktop computer, then the cloud likely looks like a server being racked on the Internet and given a marketing name, the “Cloud.” Much better than giving it a name like the “Warehouse.” As an engineer, we are fortunate that marketing didn’t call it that, for if we thought of the cloud as nothing more than a remote server, we would be changing nothing. The truth is that the cloud is not a server in a warehouse. The cloud has a distinct architecture and differs significantly from running server images of virtual systems.
I have heard a number of times that the cloud is expensive. Organizations that port their servers to the cloud are seeing an increase in total cost ownership, as opposed to the savings they had expected. Most direct ports to the cloud will cost three times the amount to operate than if you just bought the hardware yourself.
Simply porting your servers into cloud without addressing the architectural differences is like towing a truck with horses instead of driving it – with the same cost-benefit ratio. If we ignore what the cloud is good at, and make it act like a horse-drawn cart, we are spending more money, adding complexity, and being less productive.
When Fluency began migrating services to the cloud, we saw it as the warehouse. Like most companies that migrate from on-premise solutions to the cloud, we just ported our servers and gave them the configuration that worked on-premise. We gave the device images the same storage, the same drive, the same drive speed. We created base images and were able to spur them off at will inside docker containers. What we did was learn how to scale the spending of money. Ouch.
What are these differences that make the cloud better? They are:
These differences come with a steep learning curve of how to set up the network properly. A significant amount of time was invested in understanding the bandwidths, speeds, and costs of different solutions and designs. There is the security of the AWS and the Virtual Private Cloud (VPC). Additionally, there is learning how to automate the management of the cloud. Just like having a good human manager who can save money (and frustration), good AWS management does the same.
Mentally, moving to the cloud is not a task, but an opportunity. Hidden in the word opportunity is effort. It takes effort to properly migrate to the cloud. It takes vision and learning to understand how its differences change architectures and processes.
Six years of effort taught us that common tools that work on-premise are terrible fits for the cloud. For example, the Elastic database is cost-inefficient in the cloud. It requires drive redundancy, more expensive drives to get average speed, and constant management to maintain operational integrity. It scales by requiring more nodes, and therefore more money. With a $500,000 USD bill, one customer found the hardware Elastic’s true cost was in its operations.
In 2016, after a year-long migration which included re-writing code to be on demand and dynamic, Fluency was finally at the starting line. We needed to remove code that did not take advantage of clustering. We had to spur processes only when needed. We needed to change storage types depending on the need of the user or processes. We took advantage of fast drives for searching and durable drives for storage and cost.
The result is a system completely different than the server-based approach we had when we were a premise-based product. Fluency offers speed, high-availability, and scalability that cannot be matched by a server or server image. Besides having more operational features, it is 90% more cost efficient.
Are we happy we went through all this effort? Yes. While a horse-drawn carriage is nostalgic, business is about efficiency. The benefits of the cloud will continue to be more obvious, but we have learned that many of the tools we once used are outdated and need to be addressed differently for a cloud.