Intro to Cloud Computing
By Tech Elevator Instructor Matt Eland
In this article, you will learn more about what cloud computing is and why it matters for modern application development as well as how to get started on your cloud learning journey.
What is Cloud Computing?
Cloud computing refers to renting hosting and processing power of someone else’s computers – typically on a “pay for what you use” basis.
Think about a housing metaphor. Traditionally organizations would pay for a physical server to run their applications and then either build or rent space in a data center. This is akin to buying a home. It’s an expensive investment and it has perpetual costs year-after-year as well. It can be the right move if you can predict your future needs. However, if you find your server isn’t powerful enough or you need to launch a new application, you need to make another expensive purchase.
On the other hand, cloud hosting is like renting an apartment. You don’t own it, and if something breaks the landlord will fix it or give you an identical apartment (and cloud hosts are generally very good “landlords”). Additionally, if your needs suddenly change, you can immediately change the terms of your lease and get a larger, smaller, or additional unit to suit your needs – or stop paying for service entirely.
We’re conditioned to think that owning is better than renting, but owning has some hidden costs in the hardware world:
- If your hardware breaks down, you have to fix it – and things will be offline until you do so
- You are responsible for making sure operating systems are updated and security holes are patched
- Large capital expenses upfront limit your options down the road
Cloud computing can be a great fit for organizations that are not big enough to need their own data centers or those who operate in business environments that make it hard to predict their server needs over the next 5 years or so.
Why you should care about Cloud Computing
Now that we have examined a bit of what cloud computing is, let’s talk a little about some of the additional capabilities it brings to the table.
First, using a cloud computing provider gives us the ability to quickly scale our applications by moving them to a higher-end machine with additional processing power, memory, and/or a better hard drive. This can be done automatically by the hosting provider with minimal downtime at the click of a button and is a great way of preparing for higher levels of usage in the future.
Secondly, cloud computing providers give you the ability to introduce something called horizontal scalability. When we scale out in a horizontal scalability model, we run several smaller servers and the cloud provider takes care of distributing requests automatically between the running servers. This allows you to grow or shrink your processing power dynamically based on the current usage of your application and only pay for the computing power your app truly needs. The best part of this is that you don’t even have to stop your application to take advantage of this approach.
This is a huge argument for migrating software as a service (SaaS) applications to the cloud.
Secondly, organizations often need a bit of redundancy. That is, if a data center issue happens, they don’t want their applications to go offline. Cloud providers help solve this by allowing you to run your applications in multiple regions or data centers. That way if some issue affects your application in one area, the other area can still serve the users and handle the additional load.
Of course, you need to pay for this level of redundancy since there are now multiple servers running your code, but it’s much easier to accomplish this availability goal using a cloud hosting provider that already has data centers across the globe.
Finally, cloud hosting providers don’t just offer application and database hosting. These providers often offer advanced services that you would have to develop on your own or pay for external developers to build a solution for you. Using a cloud hosting provider can give you quick access to features like search, artificial intelligence, analytics, batch processing, automated backups, and more. Of course, you pay for everything you use, but having ready access to machine learning services opens doors that might not otherwise be possible for your business.
What it means to you as a Developer
Okay, so cloud computing is powerful, but what does it mean for us as developers or those interested in development?
First of all, cloud computing isn’t going anywhere. In fact, it’s becoming more and more a part of the fabric of our jobs as developers. That means that the majority of software organizations you work for will likely at least be considering cloud computing, making it relevant to your job in helping the organization achieve its goals.
Secondly, cloud computing opens all sorts of doors for specialists and generalists. You can make a very good consulting career by helping people migrate to the cloud or assessing the security practices of organizations or even helping them reduce their recurring costs on the cloud. Since cloud computing makes machine learning and data analytics more accessible, that means that people with those skills will be in higher demand.
Cloud computing is a topic of extreme relevance to those who want to have a solid future in development.
How do I get started?
Hopefully, at this point, you see the importance and relevance of cloud computing. You may be wondering how to get started. Well, as it happens, I have some ideas around that.
Learn a Programming Language
If you want to run code on the cloud, you should learn at least one programming language.
I strongly recommend you learn a modern object-oriented programming language with broad usage as your first language in order to maximize the amount of opportunities you can pursue. Learning a language with broad support maximizes your chances of getting in the door of an organization while still allowing you to expand out into other languages once employed as a developer.
It is critical to your success to be able to:
- Understand technical concepts
- Write code on your own with minimal reference materials on the basics (loops, methods, classes)
- Be able to think about how you would structure a larger program to solve a problem
- Talk intelligently about coding, particularly object-oriented programming principles
Not all colleges and bootcamps are created equally and not all will have the right mixture of skilled education from industry experts, project-based learning, and interview prep that you’ll need to get in the door, so make sure you do your research before applying.
If you think that programming might be right for you or someone you know, I recommend you spend 20 minutes and take Tech Elevator’s free aptitude test and learn more.
Pick a Cloud
Once you are comfortable with the basics of programming, you should choose a cloud provider to investigate at a deeper level. The major cloud providers at the time of this writing are AWS, Microsoft Azure, and Google Cloud.
While AWS has the largest adoption, I would encourage you to consider learning Microsoft Azure due to the straightforward nature of the way they name their services, excellent developer tools integrations, a wide variety of free learning materials (more on this later), a free option for evaluating services for a year, and free options for students as well.
Once you learn one cloud provider, you will be able to transfer those skills to another provider without as much effort since the concepts carry over while the specifics may be a little different from service to service.
Get Learning Materials
While you can experiment with cloud services to learn more, this can be expensive if you make a mistake and select a server or database in too high of a tier than you meant or accidentally left a virtual machine running. While there are cost monitoring options you can (and should) take advantage of to prevent these types of things from happening, it can be safer to follow some guided learning plans.
I strongly recommend Microsoft’s free MS Learn program. They offer a wide variety of videos, articles, and labs in their various learning paths. These learning paths are aimed at people of all skill levels and are a great way to start out as well as a fantastic resource for learning to specialize in an area or pursue a certification (more on that later as well).
The interactive learning labs give you a free instance of Azure to play with and guided instructions on the commands to run to interact with it. This gives you extra help while interacting with a real product, as well as security that you won’t be stuck with a bill for a mistake you might make.
Once you are ready, Azure will let you choose a low-end free tier of a web application to host your app in the cloud where you can verify it works as expected and share with friends, family, coworkers, and potential employers.
Get Certified (Optional)
Finally, should you really want to invest in the cloud, I recommend pursuing a certification that fits your desired role on a team. Technical certifications take some time and effort to study, but force you to broaden your skills, teach you new concepts and best practices, and verify that you know a standard set of things.
Microsoft Learn offers certification options for a wide variety of roles, including a number of overview and beginner certifications. Each individual certification will recommend learning paths, books, and courses to pursue to help you take that test. While tests are paid, you can sometimes find programs like the cloud skills challenge that will give you a voucher or discount on tests once you complete a guided learning path.
I hope you see the value of the cloud, both to businesses and to developers. This is something that is going to grow more powerful and more relevant over time, and so if you’re not into programming yet, you may want to consider a program like Tech Elevator’s and take a free online assessment to gauge your readiness.
About Matt Eland