How to Upskill for a Cloud Development Role
03 Jan, 20235 minutes
Such has the level of hype around cloud computing been for most of the past decade that you would be forgiven for assuming that the cloud was now the dominant model for IT worldwide, replacing the old-fashioned approach of running systems from premises-based servers and other hardware.
In fact, for all the buzz, the cloud does not yet come close to dominating the IT landscape. In financial terms, Gartner predicted that in 2018, global revenues from cloud computing would be around $305bn. Total IT spend, on the other hand, was forecast at $3658bn – meaning that the cloud accounts for less than a tenth of the IT market.
What is true, however, is that the cloud is growing at breakneck speed – spending on infrastructure-as-a-service (IaaS) as offered by the likes of Amazon Web Services (AWS), Microsoft Azure and Google Cloud soared by 32% last year, compared to an increase of just 4% in overall IT spending.
Where there is growth, there are also job opportunities. If you have one eye on your future employment prospects as a developer, it makes sense to be looking to the cloud. But what if you have spent your professional life to date working in the internal IT department of a large corporation, applying your skills to building custom apps and platforms for on-premises systems? How different is development for cloud environments, and what do you have to learn to get up to speed?
Developing for the cloud
The differences between development for cloud and on-premise environments are not wholesale. It is not a case of all your existing skills and knowledge becoming obsolete and having to start from scratch – you will still be using the same familiar programming languages, plus many familiar development tools. What you will have to get to grips with are a range of new APIs and a range of new features within those APIs which allow programmes to be extended into the cloud.
Arguably the biggest differences between on-premise and cloud development are those dictated by the different systems architecture and infrastructure the cloud entails. Indeed, cloud development requires you to be much more aware of architecture and infrastructure, because of the reliance on distributed assets and third-party services.
For example, cloud developers are often required to think about the cost implications of the solutions they build – every resource they use, be it server space or network access, has an operational cost as it is hired from a cloud provider. They also have to think more carefully about security, particularly in terms of authentication and authorisation to ensure data is protected at rest on external servers and in transit.
This blurring of the lines between development and systems means that you are much more likely to be required to adopt a DevOps approach in a cloud environment, developing with a clear understanding of the impact of infrastructure and the technology stack. DevOps also puts more of the focus on developing for functional outcomes, which may or may not favour functional languages like Python, Scala and Ruby. A practical example of where functional design really matters in the cloud is scalability – if you want to develop a cloud application that can be rapidly rolled out across multiple instances, one of the most efficient ways is to programme dynamic functions that can distribute workloads easily.
Finally, if you do end up in cloud programming, the chances are you will end up working within one of the major IaaS environments. As things stand, AWS is the clear leader, with 41.5% of the global market. Microsoft Azure, though, is a notable contender with a 29.4% share. If you wanted to familiarise yourself with cloud environments, brushing up on these two would set you in good stead for the majority of development opportunities in the cloud.