Can You Talk About Yourself?
A couple of weeks ago I had the privilege to speak in a setting which was unfamiliar to me. Usually I speak about professional topics – Software Architecture, Cloud Computing, etc., but this time it was different. This time I was asked to speak about myself. A good friend of mine told me that he was organizing an event about how developers and IT professionals can grow their career by getting more into cloud computing. He asked me if I can talk about why is it important to understand the cloud, and how I personally got into the field. While I’m not usually the person who likes to speak about himself, I believed that the cause was crucial – getting more developers and IT pros to be familiar with the cloud. The cloud is the modern platform which drives the entire industry forward and has the power to transform one’s career. So…
What Is the Cloud?
Someone Else’s Big Machine
Basically, the cloud can be seen as someone else’s big machine. You input your credit card number, and you get a whole lot of compute, storage and networking capacity without having to manage the intricate details of building and maintaining a data center yourself. However, this is a rather simplified point of view; the cloud offers much more than simple Virtual Machines for those who seek to take advantage of it. Services like Serverless Compute, Database-as-a-Service (DaaS), Machine Learning as a Service and others rapidly change the way we build systems. These service are making the process much easier and faster on the one hand but much more complex on the other, with complexity rising from one day to the other as new services are introduced. This leads me to the next analogy…
The Cloud as Big Pile of Lego Bricks
I like to view the cloud as a pile of Lego bricks; each brick has it’s own shape and color and you connect the bricks in various ways to create new creations. This is the job of the software architect and I find it as one of the most enjoyable aspects of my work. Lets say, for example, that you want to build a “standard” web application consisting of a modern SPA front-end, a back-end API and a relational database. Before the modern cloud you had to think (among other things) about how to host the application, how to scale it, how to support disaster recovery (DR), how to update the host OS, etc..
With the cloud, you focus on your own application code and use the appropriate bricks to handle the other concerns. In our example, we can use a BLOB store for the SPA, some Serverless platform for the API and a DaaS for the DB. These services all provide inherent solutions for scale, DR, infrastructure maintenance – so that you won’t have to come up with a solution yourself. You need to keep in mind, though, that these services come with their own bag of concerns and issues that we need to deal with – but who said that building Lego art is an easy thing. 😉
Why Is the Cloud a Big Deal?
When I teach Cloud Computing to developers and IT pros, I often ask them the following question – “At you company, how long does it take from the moment you need a compute resource and until you finally get it?”. The answers I get for this question are varied. Some quote times of up to a day. Others mention several days. However, some participants always quote an answer in the range of months. Months! Imagine yourself in an environment where it can take days to months to receive a required compute resource? At companies which do not utilize the cloud, this can often be the case. This, in turn, leads to reduced productive and lower developer happiness overall.
Enter the cloud. In the cloud, the need for a compute resource translates to an actual compute resource within minutes. Not months, not days, but minutes with a click of a button or script execution. The world will never be the same again…
Serving you application to millions of users around the globe is not an easy task; neither from the software perspective nor from the infrastructure point-of-view. Unless your business is building data centers, managing and maintaining huge data centers is probably not your specialty or your company’s specialty.
Using the cloud, you can achieve high scale with (again) a click of a button. When I say “scale” I refer to it in terms of both compute power and geographic scale. Of course, scaling the applications to cover multiple geographies and millions of users is still complex on the software level. But at least with the cloud you can focus on your own business instead if the infrastructure running it and that is a power multiplier for any business.
Cloud Computing can often be cheaper than maintaining your own data-center since public cloud vendors utilize economics of scale. However, practitioners sometimes calculate and find that the cloud increases their expense. While this can be the case for very specific scenarios, it contains a couple of oversights more often than not.
Comparing Apples to Oranges
When comparing the cost of the cloud to the cost of maintaining your data center you need to make sure to compare comparable things. Cloud computing costs take into account two important factors. One factor is the fact that most cloud services provide a Service Level Agreement (SLA) for availability and/or durability. Maintaining similar 99.9%, 99.99% or even 99.999% availability SLAs on premise is not an easy task, and one which costs quite a lot of money. Most production applications require an SLA.
Another factor is the cost of maintenance. Managing and maintaining an on-premise data center requires a lot of IT personnel while cloud services cost fold that cost inside the service. It’s true that you still need IT professionals when utilizing the cloud, but their tasks are significantly different in such a scenario and you’ll usually need less when comparing both scenarios side-by-side.
Another (positive) issue with cloud economics is the auto-scale economy. When you plan an on-premise data center, you usually need to plan the capacity to match the maximum required performance level. However, as most workloads are seasonal, it makes no sense to pay for full capacity all of the time. Examples of such seasonality are daytime vs. nighttime and weekday vs. weekend where there is simply no justification to pay for all the compute resources all the time.
This is where the cloud really shines – scale out your compute resources during peak times and scale down during the lows. And the best part – pay for only what you use, when you use it. From my experience, utilizing such a tactic can reduce you compute costs by as much as 60% depending on your specific workload.
The History of the Cloud From My Perspective
2008 – The Cloud is Starting to Rise
In 2008 I was a software architect at a government organization where public or private cloud options were almost never even heard of. Most of my production systems at the time ran on top of physical machines, and virtual machines were not considered a real option for production. I still remember the time when the IT person called me and said that “the servers crashed” meaning the servers physically crashed from the rack… 🤣
The situation in the world was not much different. AWS was launched two years before, and Azure was announced at the end of the year. Cloud still seemed very far away, as can be seen in the following Gartner Hype Cycle for Emerging Technologies from 2008.
2010 – Peak Hype
In 2010 I co-founded CodeValue, which is an expert software services company. Cloud Computing was spoken about a lot, but real customers almost didn’t want to hear about it.
At that phase only young startups agreed to consider the cloud, and the cloud (consultancy) business was quite small at the time.
2012 – Will the Cloud Stick Around?
In 2012, big customers still didn’t want to hear about the cloud. Maturity and security were still a big concern, while Virtual Machines and on-premise servers was well understood. Like every emerging technology, cloud computing hype was reduced and was spoken about less. Sure, it was still an innovative at IT/Dev conferences, but other than that we still didn’t know if it will catch on.
2014 – A Cloud Turning Point
For me personally, 2014 was a big turning point for the Cloud. For many customers, the Cloud has suddenly reached maturity. Starting with this point int time, more and more use-cases were found as suitable for the Cloud. Customers were more open to hear about the Cloud, and its spread increased from day to day.
2019 – The Cloud is the Default
Today, when approaching customers with new projects the Cloud is the default choice. No one even thinks about running a system on-premise unless they have a specific reason (such as regulation) to run on-premise, and its advantages are widely accepted.
This is a true revolution, and this is the main reason why I believe that every IT Pro and developer should master the Cloud.
Why Is the Cloud Hard to Learn?
All cloud platforms are advancing at a very high pace. The sheer amount of technologies and services that each professional needs to be aware of is huge. It already happened to me once that I was sure that something was not possible using a specific cloud service, only to be shown my mistake after it actually added support for that scenario in the previous week.
My 2 Cents
Staying on top of things in the Cloud era requires passion and dedication. My recommendation to those who want to get into the Cloud and promote their career is to start small and progress one step at a time. Don’t get overwhelmed by all the services various vendors are offering. Choose something that excites you and start from that. Build a real project with that service. From my experience, learning is done best by doing.
In addition, choose a learning accessory according to your personal learning style. Whether you like reading books or blog posts, watching online courses or asking at various online communities – find the one or two things which can promote you and act, so that you won’t get left behind.
The slide deck from my talk can be found here. Enjoy!