Digital transformation, cloud computing are buzzwords of today. Nearly every business is moving to cloud now a days. But what is cloud computing exactly? What are its benefits? Disadvantages? Lets look at them in this article. However, to understand cloud computing, let us walk through a brief history of computing and how it was used by businesses over last few decades.
Brief history of computing in Business
Mainframes
1950's & 1960's was the era of mainframe computers. These were big bulky pieces of computer pieced together into a frame. Hence the name mainframe. They could occupy a whole room. It was basically big refrigerator size units stacked next to each other. They were very expensive. So, only a few big business like GE, insurance companies, military, NASA and some more government organizations could afford them. They were mostly used for complex calculations and massive transactions. Originally only a few people who could use punch cards to program instructions would use them within the room. Later, dumb terminals were given to users who could use time sharing to access resources of mainframe computers they were connected to. But notice that these were not being used by majority of the population. This was still a very new phenomena. As they improved through 60's & 70's more companies started moving some manufacturing process, bank transactions, airline reservation systems to mainframes.
Personal Computers
As Moore's law progressed, chips started becoming smaller and more powerful. Towards the end of 1970's, desktops, portable computers(still size of a big suitcase) were all the rage. Now you had computers with processing power inbuilt. They were not connected to mainframes. They were cheaper and companies could afford to give them to employees. During this time word processing, spreadsheet applications became common and more people could start using them in their day to day work.
Client-Server Models/LAN networks
In 1980's companies moved to a model where they would have big powerful computers on their premises(often referred to as servers). Companies began to develop their own in house datacenters and maintain them. And users could use their own pc's to connect to the local network, share resources(files etc.), collaborate & work more efficiently. Information began to flow within the business. ERP applications were deployed that allowed everyone in the company to look at same data. Lots of functions like Finance, HR, Inventory etc. could be done using computers now. However at this point, world wide web was not invented. So we had different disparate local networks across businesses.
Age of Internet
In 1990, world wide web was invented and it came with a lot of standards to move information, share data across the internet. Business like Amazon, eBay opened on the internet and began selling things to customer online. Virtualization, Virtual Private networks allowed telecommuting and sharing of physical hardware. This helped fuel growth of data centers in 2000's. Instead of maintaining their own data centers, companies started thinking about outsourcing some of their data centers to co located facilities.
Cloud Computing
If you notice, over the last 4 decades, more businesses have started using computers to do more day to day workloads more efficiently and quickly. Be it back office tasks like finance/accounting, HR, or front office like sales, marketing etc. Increasingly they have used custom or 3rd party applications to accomplish them. All of these were deployed in the in-house data centers of the company. Companies hired staff to maintain the data center so it runs reliably. This involved security, cooling, mgmt. of hardware, patching, networking & lot of extra process. If a team/programmer needed some servers to deploy an application, usually they would request the applications server team to spin one up, add storage to it, implement some networking etc. & then deploy/develop their application. This could take a few hours to a few days depending on process of the team, availability of hardware/capacity etc.. If you notice all of this expenses to maintain a data center is not really a core competency of any regular business. In fact hiring a fully staffed team to manage data centers is shifting their focus away from being able to manufacture, do R&D or sell their products effectively.
With this in mind, in 2006, AWS launched its Elastic Compute Cloud (EC2) & Simple Storage Service (S3). These allowed business to simply rent virtual servers to deploy their applications or use storage as a service over the internet. Google also launched their google docs service which allowed you to create, edit documents in the cloud. So now, you do not need to have your own data center or even have a co-located data center to deploy your workloads. You can simply rent one over the internet.
Text book definition of cloud computing is the ability to access IT capabilities like servers, storage, networking over the internet on demand & without need of any user interaction or involvement. Let us break this down further.
Five Characteristics of Cloud Computing
- On Demand & Self Service : Any business should have the ability to provision IT resources like storage, VM, networking etc. using a console UI, command line interface etc. over the internet in a few minutes. No human interaction/ticket creating and waiting for someone to approve a request is needed. In older on-premise data center days, you might need to figure out who to talk to from IT about getting a server,they might need to see if they have capacity, licensing of software might take time etc. With most cloud providers, you just sign up for an account online and have the ability to provision any resource you want in minutes. providers might enforce some service limits to ensure proper functioning or based on credit worthiness. But most of the times you won't hit them and will be able to do far more & faster as compared to traditional ways of getting computing resources.
- Broad Network Access : Businesses should be able to access services via various protocols like HTTP, SSH, HTTPS etc. if the polices are configured this way. They should also be accessible from different devices like smartphone, PC's, laptops, platforms. Contrasting this with mainframe era, at that time computing was very scarce, only available to few organizations since it was very expensive and networking like today did not exist. Today's bandwidth availability, networking technologies help in making sure cloud services are widely available.
- Resource Pooling : We have all heard about how economies of scale help manufacturers achieve lower cost of unit with every increasing product being manufactured. Similarly in the cloud, providers pool resources (CPU, networking, storage) to serve multiple customers/businesses to achieve great pricing on services. Resources are usually allocated in a multi-tenancy model, meaning you share resources like VM hosts, storage hardware etc. with other businesses. There are process to add layers of security to make sure data is safe. Once you are done using a vm host for e.g., it gets assigned to another customer dynamically. In comparison, in-house data centers are created with only one business in mind. There is no way they can achieve economies of scale and great pricing that comes with resource pooling in the cloud. For your end users, things are still the same, they will not be aware of how the application is hosted and if it is on a shared hardware or not. Their experience will still be the same.
- Rapid Elasticity : In traditional on-premise computing, you are limited by the capacity of your servers & hardware. So if your website gets a mad rush during holiday shopping season, most likely your servers will crash and you will loose some business. Its also possible you procure too much capacity and do not get the expected demand, in which case you pay for resources and they go waste. So you are just guessing about how much capacity you need. This characteristic of cloud computing tries to mitigate this issue by providing nearly unlimited scaling out and scaling back in of your computing resources. Based on the demand and load on your servers, you can increase or reduce your capacity. No more guesswork.
- Measured Service : Cloud providers usually track and provide reports to customer/business of their usage of cloud resources. Depending on the type of service, you could be billed for per second use, per GiB/month of storage etc. Point here is of transparency & visibility. Since you will be using these resources on demand, scaling out or in based on the needs, it makes sense you are aware of your charges. You can even create alarms to make sure to not go over a certain threshold.
Cloud computing provides multiple benefits over traditional ways of doing things. You no longer have to come up with your own data center, buy hardware, storage etc. to get started. All you need is a cheap laptop and you could procure your resources over the internet. It allows you to convert your high initial capital expenses(data centers, servers, storage etc.) to low operational expenses over time. Grow and spend money as your business grows(Pay as you go model). Any small startup to a big established business can utilize the power of cloud, go global in minutes. Today's fast growing world demands companies to be agile. Recent pandemic forced companies to change their strategies overnight. Do things they never did before. Many companies were able to use the power of cloud to exactly do this & I am sure this is going to continue in the future.
Comments