What is Cloud Computing?
Computers come in various shapes and sizes and are put to different uses by the individuals that own them. One general categorization of personal computers is into the following:
Laptops are designed for different things. The smallest laptops are designed for simple tasks like word processing, sending emails, and browsing the Internet. This does not require a lot of computational power (more on this in a bit).
Mid-level laptops are designed to let you get more work done. You could work with Photoshop to manipulate images or work with Audacity or Sound Forge to process some sound files for podcasts. You could even record and process some video for video podcasts.
High-end laptops are designed for serious work. They are usually called gaming laptops, but don’t let that name fool you. They are used for tasks that demand serious computational power (yes, that again). Examples include video rendering, 3D rendering, serious sound processing (what you get in sound studios), and engineering simulations. The one thing all laptops have in common is that they can be folded up and put into a bag and taken somewhere else.
Desktops have a similar setup to laptops. The major difference between desktops and laptops is that desktops are much more voluminous, and they are not portable. The volume of a desktop means you have better air circulation. As a result, they can have bigger processors, more storage, and graphics cards.
In the same way that we have entry-level, mid-level, and high-level laptops, we also have a similar setup with desktops.
Let’s briefly touch on computational power. The image at the top of this article is of the inside of a desktop computer. It’s fine if you have never seen anything of the sort. It is what is called a motherboard. All of the computing peripherals connect to the motherboard. The peripherals include a processor, memory, storage, and optionally, graphics cards.
The processor determines how quickly the computer can get work done. For example, how quickly it can convert a colored photo into black and white. For computers, there are two major manufacturers, AMD and Intel. They produce processors in different sizes for laptops, desktops, and servers (we have not touched on these yet). The image above is for a laptop processor. Every year, a new generation of processors are released. Processors have different speeds, but we identify them using a category/class such as Pentium, Dual-Core, Core i3, Core i5, Core i7, etc, which are all Intel processors. The processor is also called CPU, which is short for Central Processing Unit.
The memory holds what the processor works on. Because the processor works fast, it needs somewhere it can fetch the data it is working on quickly. The memory is where it gets it from. Simply put, the more memory you can get your hands on, the better for your computer. Memory is also called RAM, which means Random Access Memory. It comes in multiples of gigabytes, which we abbreviate as GB.
The computer storage is where every file you need to work on is stored. Storage comes in different physical sizes, as well as actual storage capacity, which is measured in bytes. However, we work in gigabytes, which is abbreviated as GB.
A graphics card steps in when the processor is incapable of doing the job. The types of jobs are what we call computationally-intensive, like editing movies or rendering 3D. The graphics card is called a GPU, and two popular manufacturers are AMD and Nvidia. There is a new type of GPU created by Google for these computationally intensive jobs, called a TPU.
The combination of the above units determines your computational power.
What sets a server apart, is the type and quantity of the units that can be on it.
Laptops and desktops are limited to one processor. On a desktop, you could have a processor that is water-cooled because of the amount of heat generated. On a server, you are not limited to one processor. Also, the processor on a server can’t even be put into a desktop.
Laptops usually have a maximum memory of 16GB, and a lot come equipped with only 4GB. Desktops might have up to 32GB, but most come with 8GB. Servers are capable of an astounding quantity, between 64GB and 128GB. In the same manner, servers are capable of utilizing an astounding about of storage.
All of this computational power is put into something called a data center. The image above is an example. Lots of computers get put together in one place, along with networking that provides communication, power, and cooling. Cooling is very important because these servers generate a lot of heat. And, they consume a lot of power.
These companies use their data centers to provide services to their customers. However, they don’t make use of them all the time. As a result, they have what is called excess capacity. When they choose to offer this excess capacity to other businesses, they provide it as a service. The general name for this computing capacity is the Cloud. The cloud could be public or private. It is public when it is open to others for use. It is private when it is only available for the owner/company to use.
The private cloud makes sense when you have a large company, like a bank, and different departments need computing capacity. Instead of buying a computer or server whenever a department needs it, the company will invest in large servers and allocate resources whenever the departments need it.
On the other hand, the bank could decide it does not want to invest in any hardware. It will then use the public cloud, and purchase resources whenever a department needs it.
When dealing with the cloud, you could be purchasing resources at different levels. You could be purchasing infrastructure, platforms, or software as a service. These are abbreviated to IaaS, PaaS, and SaaS.
Infrastructure as a Service will give you a virtual computer that you can configure to your liking. You will need to install your operating system of choice, and everything else that you need. This is similar to going out and purchasing a server but without the requirements of a large initial capital outlay and power and cooling costs. On Google Cloud, these virtual machines are called Compute Engines. Keep an eye out for a future article on the features of compute engines and how to set them up.
There are times when you need to store files and share those files among multiple individuals or departments. Or even just between different applications. When dealing with your own computers, such storage options are called network drives, or Network Attached Storage (NAS). On the Google Cloud, this is called Google Cloud Storage. Keep an eye out for a future article on working with Google Cloud Storage.
Platform as a Service will give you things you use, without you having to install and configure them manually. One example of this is a database. While you can set up your own compute engine, install your operating system of choice, and then set up your database, the Google Cloud platform gives you a choice of these.
Cloud SQL is the product that gives you MySQL, Microsoft SQL Server, and PostgreSQL. Cloud SQL is good for when your application is still processing hundreds of gigabytes of data. When you start processing terabytes of data, you should move to Cloud Spanner. I will be writing articles on both of these soon.
If you are a NoSQL type of person, you have the choice of Cloud Datastore, Cloud Firestore, and Cloud Bigtable. I will also be writing about these soon.
Another PaaS is called Cloud Launcher. This will let you launch instances with prebuilt software instances like Wordpress. This way, you get a virtual machine with Wordpress preinstalled.
Google Cloud Platform comes with a lot of services that are installed and managed by professionals. I assure you that you do not want to be the person paying for the professional fees. These services include networking and load balancing, clustering, and containerization. I know these are technical terms, but you will get to encounter them if you have not already.
Containers are a new paradigm that has taken off. If you are into containers, Google Cloud provides Kubernetes Engine, Cloud Run, and App Engine flexible. If you are into these things, just monitor my blog for upcoming articles.
There is something new in town called Serverless. Imagine you need a function or API endpoint that gets called whenever an event occurs. That is the only thing that function is used for. You really do not want to keep an instance running all the time. Instead, you can have a serverless function and you only get billed when that function gets called. If it isn’t called for a month, well you don’t get to pay anything. And if one million people suddenly need to use it, it will still be available. I will write something on that soon.
Google Cloud Platform is full of a lot of things. Just look at the image below to get an idea. You get tons of management tools, and even APIs for Machine Learning! Yes, it’s cool that way.
Why would you want to use the Google Cloud Platform? For any one of these three reasons:
Moving where you do things, but maintaining how you do your things. For example, you could move your database from MySQL on your servers to Cloud SQL on the Google Cloud.
Doing things you can’t do with your own infrastructure, for example storing terabytes of data on Cloud Bigtable.
Going where you can scale out by using more resources when you need to, but not paying for resources when you do not need to, for example setting up a Hadoop cluster.
Whatever you use on Google Cloud Platform, you only pay for what you use. If you get a compute instance, shut it down when you don’t need it and you don’t need to pay anything. It’s that simple. You also get things like automated backups and security.
This article was originally published on my Medium blog.