A quick, clear guide to cloud computing—how it works, why developers use it, and what makes it so important in interviews. Learn about scaling, containers, and the trade-offs between owning hardware and using the cloud.
One of the most common requirements in a job interview and part of your job requirement is the cloud. So in this episode of the technical interview, we are going to talk about the cloud.
To put it simply, the cloud or cloud is just another person’s computer. In other words, instead of running a software, web application, process or anything on your computer, you will rent out another computer on a server that you don’t own, and you run your software over there. To give a more formal definition of cloud, it is a network of distributed computers that you can use their power at any time.
Traditionally, if you had a really good idea, you would just write the software and go buy a bunch of hardware. You would connect that hardware to the internet and you would run your software over there. The downside of that model is, let’s say you get a tweet from someone important, and now you have 50 millions of people coming to your software or using your software. You need to actually go buy bunch of hardware and keep adding hardware to your collection of hardware to be able to handle all of that input and all of that processing, and that can get expensive very fast because hardware is not cheap. Also, there’s a cost of maintenance. Updating every few years when It gets old, you have to buy new hardware and just replace it with that. However, the upside is that you actually own your hardware and it is all yours. So if tomorrow you wanna set it on fire, you can. Not saying you should!! I’m just saying you can!!! Also, if you actually don’t have as much processing need for processing and need for hardware anymore, let’s say your software is not doing that well now what are you gonna do with all that hardware? Uh. You are stuck with that hardware unless you sell it. So the idea came along that, Hey, why not? Instead of owning all of that hardware, we’ll just rent it. And that’s a basic idea behind the cloud.
So you would go to a cloud provider and for example Amazon or Microsoft. You would run your software, whether it is processing, whether it’s a web application, whatever it is, whether it’s an API, you would run it on their machines and you would pay by the minutes, sometimes even by the second, depending on the workload, and you don’t have to own the hardware anymore.
One of the biggest advantage of doing software development this way is the zero upfront costs. You don’t have to pay for so many servers, connecting them, maintaining them. Another benefit, which is super huge, is, hey, again, you make it big. You have 50 million, 10 million people coming and using your software, all you have to do is just go ahead and make the instance of your software either more powerful or launch more instances of it. One of them is called expanding it vertically. That means using, since everything is virtualized and running a container instead of one CPU, you can give it two CPUs, 10 CPUs, or instead of one gigabytes of ram, you could give it 10 gigabytes or 20 gigabytes of ram. That would be vertical expansion. Now we have horizontal expansion. Let’s say one device and one virtual device is not enough, so you can run and create multiple instances of it. So you would have 20 instances or 10 instances of your software running, and let’s say you have one instance running, now you have two. You just have doubled your workload and the processing power of your software. Another advantage is you don’t have to manage everything in a traditional sense. You had a server hardware operating system and everything in between that you had to manage. Now, nothing needs to be managed. You don’t even have an OS in many cases. You just get your software, put it in a container, and whether that would be a Docker, Kubernetes, you would put it in a container and you would just put that container up in the cloud, and that way it is fully containerized and that will run. Without the need for you to manage the operating system, manage the security, there’s nothing for you to manage. So that would make life for you as a developer much easier. Moreover, the scale of these cloud providers makes it super easy to actually create a distributed software. For example, let’s say you have customers in, Los Angeles and in Australia. And you can run an instance of your software in both places quite easily, and, service those customers easily without any hardship.
Let’s summarize what we have learned. Cloud is much easier to start up because there’s no startup cost. There’s no maintenance cost, there’s nothing to it. Everything is already managed for you and you can scale it whether horizontally or vertically, Quite easily. You can even automate that scale. So what are the downside? Well, you don’t own your hardware. If you go back to our original example of setting on fire, now you cannot do that. So you don’t own your hardware and that is a big downside. You cannot. Easily make the changes that might be required when you own your hardware. Also, the costs can go high. Let’s say you have automated the scaling of your software. If a million people come to it, it would automatically create another instance and it would just scale up downside. That is going to cost you money. There are ways to limit it, but cloud hardware can actually get super expensive, super fast.
Thank you for listening to this episode of the Technical interview. Please tell other people about this podcast, subscribe, write comments. Let me know if you want me to cover another topic. Thanks until the next time.