Should I migrate to the cloud?

Cloud technology is an umbrella term for a set of web services that are provided by a vendor called “Cloud provider”.
Cloud computing is the use of remote servers on the Internet to store, manage and process data rather than using a local server or your personal computer.

Cloud Models

There are Service cloud models and Deployment cloud models. These are the two classifications of cloud models.

Service Models

Mainly, we have 3 types of cloud services:

Infrastructure as a service

The physical machines are managed by the cloud provider. You get a fresh virtual server in the cloud where you can install whatever you want, to convert it into a web server, database server, etc. – it’s all yours.

  • provides virtualized computing resources over the Internet
  • no worries about the underlying physical machines
  • user access at the operating system level

Platform as a service

The user is given a set of options to upload their code and change a few settings. Then the cloud provider deploys their code on a platform. A platform is a layer on top of the operating system that helps deploy the app, like for example node.js, PHP, .NET, Ruby, etc.

  • no user access to the operating system, storage, network, server, etc. which is managed by the cloud provider.
  • The cloud provider provides the ability to the customer to deploy their apps using programming languages, tools, etc. that are provided by the cloud provider.

Software as a service

The user is given access to software that is leased to them by the Cloud provider. For example, Salesforce CRM, Windows 10 on the cloud, GSuite, etc.

Deployment Models

Public Cloud

You share a Cloud provider’s physical server with many other customers. When you start an instance on a Public Cloud, the underlying cloud infrastructure hosts many instances belonging to many different customers. For instance, you start a t2.micro Linux instance on AWS with no standalone server. The instance is running on a hypervisor (VM host software) on a physical server. The same hypervisor may be running a hundred other instances belonging to several AWS accounts.

Private Cloud

You run your instances on a standalone physical server that is dedicated for your instances. Or you run on-premise servers in server racks, your own networking, etc. This is done for data privacy and security.

Hybrid Cloud

It is a mixture of Publiic Cloud and private cloud. For instance, you are a data science company and you host a website on Public Cloud (AWS), but due to data confidentiality contracts, some of your data is hosted on your own servers. Then you are using a Hybrid Cloud Model.

So should I migrate to the cloud?

Yes! Without cloud computing, you need to buy, configure and maintain servers, server racks and networking equipment. You need to handle peak traffic – the amount of web requests that can come in at peak times, say, 9 am to 6 pm on Monday. You also need to monitor and maintain your equipment continuously. This will require a lot of time and effort on your part as you are responsible for everything. You do not want your website to go down, right?

There are many disadvantages of going all out on your own hardware. Firstly, servers can be very expensive to buy and maintain. A lot of time is spent in troubleshooting issues with the hardware. This will conflict with your business goals of focussing on developing your apps. Also, since the traffic keeps varying, your servers can be idle most of the time.

Let’s see how cloud providers solve these issues. Cloud providers provide virtual machines called instances, among other things. The cost of cloud instances is calculated on a per-minute basis. This greatly reduces the cost compared to traditional servers. If you want the instances, you start them. If you don’t need them anymore, you stop / terminate them. You only pay for the running time of that instance. You do not have to manage or maintain the physical hardware anymore – that is the responsibility of the cloud provider.

Scaling up and scaling out are two very important advantages of going with cloud instances.

When you scale up, you increase the performance of your cloud instance by increasing the number of CPU threads and amount of RAM memory available to the instance by changing it’s type. For example, in AWS (a famous cloud provider), you can change the type of the cloud instance for t2.micro (1 CPU thread, 1 GB RAM) to t2.medium (2 CPU threads, 4 GB RAM). This will allow the instance to handle the web requests and load more efficiently. The opposite of scaling up is scaling down, where you reduce the size of the instance.

When you scale out, you increase performance by increasing the number of cloud instances and distributing the load evenly to each instance by putting them behind a load balancer. The load balancer distributes the incoming web requests to each instance in an optimal way. It also checks the health of each instance and stops sending web requests to an instance if it is down. You can also implement auto scaling. Auto scaling is configured to automatically increase / decrease the number of instances in response to different parameters like no. of incoming web requests, CPU load, a monitoring alarm, etc.

Leave a Reply