What is cloud computing?
In today’s digital era, Cloud Computing is transforming the way organization operate. In simple terms, it is a collection of remote servers located in various locations that offer a wide range of services for storing, managing data, building and running applications, and deliver content/services over the internet. This enables organization and users to access data and services from any internet enabled devices whenever required.
Difference between On-premise and Cloud computing
When I began my IT career 16 years ago, most organizations used to maintain their compute, storage, and network equipment in their data centers. However, as the Internet became more popular, the demand for compute, storage, and networking equipment increased. Managing these data centers was very expensive due to rapid growth in the business because they could not scale the environment based on the business/traffic needs, and some of the experimentation was impossible.
Cloud computing was developed to address these challenges. This approach allowed companies to avoid the need of expensive hardware and data centers, as cloud providers such as AWS, Azure, and GCP offered virtual data center technologies and services online. Example: It is like have an access to electricity from a power plant without any limits, and you only pay for what you use.
History of cloud computing
- 1960: Researchers at MIT started experimenting with time-sharing, applying the foundation for modern cloud computing.
- 1970: Time-sharing became the most dominant mode in computing before personal computers became popular.
- 1972: I.B.M. launched the first virtual machine operating system V.M./370, designed to run on the I.B.M. System/370 computer.
- 1983: Internet officially recognized.
- 1999: Salesforce.com launched with a vision to become a world-class internet company for Sales Force Automation.
- 2002: Amazon.com officially started offering internet computing resources to businesses through web services. It’s now commonly referred to as cloud computing.
- 2006: AWS introduced its public beta test of Elastic Compute Cloud (EC2) service, which allows businesses to rent computing resources over the Internet.
- 2008: Google launched its cloud computing platform, Google App Engine, which allows developers to run web applications on Google’s Infrastructure.
- 2009: Microsoft launched its cloud computing platform, Windows Azure, which allows developers to build and host applications on Microsoft’s Infrastructure.
- 2011: IBM launched its cloud computing platform, IBM SmartCloud, which offers various business services today.
- 2013: Docker launched container technology as an open-source Docker Engine
- 2016: Many organizations have adopted the cloud computing model for developing their new applications.
- 2019: Market leaders like AWS, Microsoft and google have contributed to the cloud computing market with an revenue of $233.4 billion.
- 2021: Due to the COVID-19 pandemic, organizations have had to adjust to the new normal by using cloud-based services for remote work and collaboration.
What are some of the advantages of using Cloud computing
Utilizing cloud-based technologies provides several advantages such as reliability, scalability, flexibility, cost-effectiveness, agility, and geo-distribution. Let’s take a closer look at each of key benefits
- Reliability: We can refer to cloud services’ ability to function consistently without interruptions or errors. It includes factors such as uptime, mean time to repair (MTTR), and mean time between failures (MTBF). For your Infrastructure to be considered reliable, it must be available and resilient.
- Availability is the ability of a system, Infrastructure, or service to remain operational for the users when needed. A metric called S.L.A. (Service Level Agreement) always associates with it and measures it as a percentage of uptime over a period of time. For Example, AWS S3 meets 99.99% (uptime) S.L.A.
- Resilience is the ability of a cloud service to recover quickly from failures such as application failures, network outages, hardware failures, etc. It includes disaster recovery, backup and restore mechanisms, and so on.
- Scalability: refers to the system’s ability in the cloud to handle an increased load by manually adding resources for expected scenarios. Achieving scalability is possible through two methods – Vertical and Horizontal Scaling.
- Vertical Scaling is the ability to increase the computing capacity by adding the resources such as CPU, Memory, or Storage of a single server or V.M. to handle the increased workload. For Example, if you run an application with 4 vCpu and 16 GB RAM and find that the server needs more resources to drive the traffic, you can upgrade the server to 8 Vcpu and 32 G.B. of RAM.
- Horizontal Scaling involves increasing additional servers or VMs to distribute the workload across multiple systems. For Example, suppose you are running an application on a single server or a VM needs and need to handle more Transactions Per Second (TPS) or concurrent connections. In that case, you can add additional servers ( horizontal Scaling) to distribute the load across them.
- Elasticity: is the ability to automatically scale up or down its resources concerning your application’s traffic. You can enable Elasticity on your cloud infrastructure using load balancing, auto-scaling groups, custom auto scaler, etc. It makes your system more cost-effective by only using the resources to handle the current demand.
- Agility allows organizations to quickly develop, test, deploy, and release and easily scale the Infrastructure up or down based on the traffic needs in a constantly changing business world. For Example, compared to the traditional approach, with cloud computing, you can start the development work by getting a 1-node cluster and quickly scale up to 100 clusters based on your non-functional requirements.
- Geo-distribution: refers to the practice of deploying cloud-based applications across multiple regional data centers around the world. It will help customers address their region’s performance, resilience, and latency and comply with data privacy regulations. For Example, Refer AWS cloud infrastructure has the most significant global infrastructure footprint, which supports geographical distribution extensively.
- Disaster Recovery focuses on quickly getting applications up and running after an outage. There are several reason on why outages can happen, including application failures, network issues, human erros, security incidents, etc. For Example, a high-traffic application with a global user base should replicate its data and systems across multiple regions. So, In the event of an outage, failover to the backup region can be quickly routed to ensure uninterrupted business continuity.
What are the different types of cloud computing services (IaaS, PaaS, SaaS)?
Cloud computing consists of three main categories: Iaas(Infrastructure as a service), PaaS (Platform as a service), and SaaS (software as a service). Each of these services offers various levels of controls, and organization can choose one or combination of these services depending on their requirements. Below we will see key benefits of IaaS, PaaS, and SaaS.
Infrastructure as a Service (IaaS)
The first layer of the cloud computing model offers virtualized services through a web-based console or API. Users and Organizations can rent the resources such as virtual machines, servers, storage, and networking from the IaaS providers. Customers can manage and run their own operating systems and applications and pay only for what they use.
When to Use IaaS
- IaaS is the best-suited option for startups and small businesses, as it eliminates the need for creating and maintaining hardware and software. It provides good flexibility to scale up and down on the resources based on the traffic and business needs. Let’s explore some common IaaS scenarios where it can be considered.
- Startups and Small Organizations: IaaS can be a great fit for startups and small organizations because they don’t need to invest in physical hardware and software. It allows businesses to scale up and down as needed quickly.
- Control and Flexibility: Organizations that need to meet security and compliance requirements can use IaaS to gain complete control over their Infrastructure. Organizations with offices and data centers worldwide with complex IT infrastructure (a mix of legacy and modern applications) can adopt the IaaS model to have a centralized cloud infrastructure that integrates and manages all the technologies and systems.
- Development and testing: IaaS can help an organization to build and test new applications quickly and cost-effectively.
Example of IaaS : Leasing a Commercial property
- Let us jump into the real-life scenario of leasing a commercial property to understand the concept of IaaS further. In cloud computing, IaaS is equivalent to leasing a commercial property. Here the property owner constructs and owns the building. As a user/organization, you can rent for the duration of your lease, allowing you to utilize the space for your business activities and return it whenever they don’t require it.
- Similarly, in the context of IaaS, the cloud provider provides the virtualized Infrastructure to rent and use as needed. The IaaS provider builds and maintains the underlying physical Infrastructure, just as the property owner constructs and maintains the commercial building. Users have control over how to utilize the virtual Infrastructure. Still, they should also consider system architecture and disaster recovery strategies, ensure high availability, and scale the capacity based on the traffic requirements.
Which resource is an example of IaaS
- EC2 (AWS)
- Virtual Machines (Azure)
- Compute Engine (GCP)
- Droplets (DigitalOcean
Platform as a service (PaaS)
The second layer of the cloud computing model offers a platform on which customers can develop, deploy, test, and manage their own applications without worrying about the underlying Infrastructure.
When to use PaaS
If you are part of a team with multiple developers, choosing a PaaS-related service will significantly improve the speed of the entire workflow. Below are some of the typical PaaS scenarios.
- Application development involves developing applications and releasing them quickly and cost-effectively. It allows developers to only concentrate on the development rather than managing hardware and software configurations.
- Scalability: We can easily scale up resources based on the incoming traffic and scale down when there is no traffic patterns found for your application deployed. This way, you can efficiently save costs by using the required resources.
- Collaboration: If you are part of team that require collaboration on a shared platform to share code, data, and other resources. It simplifies the process of development teams to contribute to the final product without conflicts.
- Cost Savings: PaaS is a cost-effective choice for individuals and companies who want to avoid the upfront costs of purchasing and maintaining their hardware and software. It also removes the need for software licensing costs, security patches, and administrative tasks.
Examples of PaaS: Rental Housing
- Let’s take a small example to understand PaaS. Imagine renting a house, but instead of an empty space, the landlord takes care of decoration and furnishing the home, ensuring it’s ready for you to move in and live comfortably.
- In the same way, PaaS offers access to pre-configured choices for application stack, software development languages, databases, operating systems, and tools (such as Java, Python, .NET, etc.) for immediate use. Additionally, it takes care of scalability and disaster recovery.
Which resource is an example of PaaS
- Elastic Beanstalk (AWS)
- Azure App Service (Azure)
- Google Cloud Functions (Google App Engine)
- Heroku Runtime (Heroku)
Software as a Service (SaaS)
The third layer of the cloud computing model offers customers with services to fully functional software applications that can be accessed directly through an Internet-enabled device without any downloads on the client side. In this layer, the cloud provider manages the underlying Infrastructure, operating system, or application stack.
When to use SaaS
SaaS is most beneficial and can be a good choice for users, and businesses in many scenarios, including:
- Limited IT Resources: If your organization has limited IT resources, SaaS can be a good option as it does not require any installation, Infrastructure, or management of software applications.
- Cost-effective: Most SaaS applications are subscription based, which can be more cost-effective than purchasing the managing the licenses along with Infrastructure.
- Scalability: We can scale and efficiently meet business demands without adding additional hardware or software requirements.
- Startup’s: Ideal for a startup / small business to quickly kickstart a product that doesn’t have to deal with Infrastructure, operating system, or application stack.
- Remote Work: It can be accessed from anywhere with an internet connection, which is particularly useful for remote work and distributed teams. Moreover, it is Ideal for short-term projects that require collaboration.
Examples of SaaS: Staying in a hotel
- Let us jump into the real-life scenario of staying in a hotel to understand the concept of SaaS further. In cloud computing, SaaS is equivalent to staying at a hotel. Like renting a hotel room, with SaaS, you can access software applications and services on-demand, use them when you need them, and discontinue their use when you no longer require them.
- Moreover, SaaS operates on a multitenant model, meaning multiple users can access and utilize the software simultaneously. It is similar to how a hotel hosts multiple guests in different rooms. The multitenant approach allows for efficient resource utilization and helps you to achieve optimized performance and cost savings.
Which resource is an example of SaaS
- Customer relationship management (CRM) software such as Salesforce, and email.
- Collaboration tools such as Google Workspace.
- Project management tools such as Asana or Trello, Cisco WebEx, etc.
What are public, private, and hybrid clouds?
Cloud computing has three deployment models: Public, Private, and Hybrid cloud. Organizations can choose based on several factors: cost, data security, compliance requirements, high availability, scalability, and more. Typical organizations will assess the specific needs and select the suitable cloud deployment strategy that satisfies their business goals.
Public cloud services are available to the general public and organizations over the Internet. It majorly offers cloud resources like servers and storage to anyone who wants to use them. The major cloud providers in this field are Amazon web services, Microsoft Azure, and Google Cloud platform. It allows organizations to follow a pay-as-you-go pricing model that will optimize costs, paying only for the resources used.
Organizations or businesses typically utilize private cloud services, usually hosted in their own data center. This model offers more control and security for your workloads deployed but also requires a higher investment for Infrastructure.
Hybrid cloud clusters refer to an infrastructure that combines two or more clouds (private and public) that presents them as a single entity for outside access. Usually, the combination shall be at least one private cloud with one public cloud, (or) two or more private/public clouds, and (or) a bare metal server with at least one cloud. For Example, In a typical financial organization, the financial data is stored in the private cloud, and the business layer and user interface (UI) are deployed in the public cloud.
Security and privacy concerns in cloud computing
Security and privacy will be a significant focus when designing an application or migrating an application, or lifting and shifting an application to the cloud. Because cloud providers are managing the data in the cloud from multiple clients, and majorly that would include Personally Identifiable Information (PII), financial data, and confidential business information, this becomes risky when this data is accessed from various locations, which would increase the risk of a data breach or unauthorized access. Therefore it is essential to protect data and maintain privacy. Below are some crucial areas to consider regarding security and privacy in cloud computing.
Security of data at rest
Data at rest security involves protecting data stored in the cloud, including databases, block storage, archives, and IoT devices. Implementing measures such as encryption, tokenization, access controls, and Authentication and Authorization is crucial to ensure data security. For Example: Refer to guidelines on securing data at rest to understand the necessary steps.
Security of data in transit
Data in transit security focuses on protecting data as it moves between systems or over a network. Implementing measures such as encryption and utilizing secure protocols like SSL/TLS helps ensure data security during transit. Example: you can Refer o guidelines that provide details on best practices and recommended approaches.
Compliance refers to following legal and regulatory requirements related to cloud computing that apply to a particular industry or activity. Let us see by taking an example. In terms of Data privacy regulations (GDPR, HIPAA, PCI DSS, and CCPA), companies are responsible for securing personal information (A.K.A. personally identifiable information (PII)). If companies fail to meet the regulations, it can result in legal and financial consequences. Refer: Recent article can help you understand the importance.
Authentication and Authorization of users/applications/processes:
This refers to the process of verifying the identity of users, applications, and processes that access cloud-based resources. Basically, authentication consists of three tasks.
- Identification: refers to the process of providing user information to identify who they are (Eg: username)
- Authentication: refers to the identity information that is the person they claim to be. (Example: password or some form of verification)
- Authorization: if the person is authenticated, The person’s permission and access levels need to be checked to ensure they are allowed to perform the action (ed: Access desired features in the system)
Secure Data Isolation for Multiple Customers
- This refers to the need to isolate one customer’s data from another. For Example, Say if you are developing a SaaS product and dealing with multiple company customers’ data. Ensure the data is completely isolated and secured to address accidental data leakage or sharing between parties.
- Note: In my experience, in the early days, we managed the data in a single VPC (Virtual Private Cloud) and single location, which allowed the hacker to steal, and the organization paid a heavy ransom for not leaking the data to the public.
Security incident management
This refers to having a plan drafted to respond to security incidents or breaches. The plan should be well-defined and clear, which should help reduce the impact of a security breach and ensure the appropriate actions are taken to restore security measures and prevent it from happening in future. Always refer to security offerings provided by your cloud provider. In our case, refer AWS Security offerings for your workloads.
Why does your business should move from on-premise to cloud computing
Moving to the cloud helps organizations deliver their products faster and innovative ways that were once nearly impossible for most organizations. Before the cloud era, software releases were scheduled quarterly or sometimes yearly. However, today, organizations have shifted towards releasing features in small batches, often planned in days or weeks.
This shift in approach has given rise to two distinct trends between organizations and their customers.
- Organization delivers the features at the speed of light. This rapid release cycle allows the organization to iterate and respond to market trends quickly.
- Simultaneously, customers expect a rich experience concerning the product they use.
This expectation has revolutionized software development and product delivery, making it faster than ever while meeting customer expectations for a dynamic and enriching user experience. It has also powered many technologies in the cloud, such as:
- Edge computing: Data processing and computing are brought close to where it is generated or needed.
- Containers: have emerged as a flexible and reliable solution for running the application in the cloud.
- Augmented reality: has opened up possibilities for how we interact with the world around us. It covers everything from gaming and entertainment to industrial training and remote collaboration.
- Machine learning: has become an integral part of the cloud. It can help analyze vast amounts of data and extract meaningful insights, enabling intelligent decision-making, predictive analysis, perspective analytics, and automation.
- Serverless computing: majorly focus on writing and deploying code without managing the underlying Infrastructure.
These technologies (not limited to the above) are driving innovation and helping organizations to meet their use cases and market demands.
Here are some key reasons why moving to the cloud is beneficial:
- Go global in minutes: Applications can be deployed in multiple regions with high availability with minimal effort and provide a better experience and lower latency to customers worldwide.
- Cost Savings: Cloud computing majorly focuses on operating expenses rather than capital expenses. Also, it helps to overlook investments in hardware, software, and Infrastructure.
- Pay as you go: Instead of investing in data centers and hardware, you pay only when you use cloud resources and pay only for how much you use.
- Automatic Software updates: The Cloud provider takes full responsibility for managing and updating the software stack, including all security and software updates, ensuring that automatic software updates are seamlessly handled.
- Security: Cloud providers take care of all security measures to protect the Infrastructure and customer data according to compliance requirements.
Overall, cloud computing plays a vital role in modern technology, empowering organizations to transform, innovate, and deliver improved products to customers. Whether you’re looking for cloud storage options, or a platform to create custom applications, or want to completely control your Infrastructure without the need for physical maintenance, cloud services are the solution. Each cloud provider offers their own unique capabilities, features, and pricing models. It is crucial for organizations to understand these differences to decide rationally on which provider best aligns with their specific requirements and needs.