CLOUD COMPUTING ENVIRONMENT 101
Adoption of cloud computing and cloud technologies is increasing day by day. This article on Cloud Computing Environment 101 is intended for beginners to understand the basic principles, concepts and terms of Cloud Computing.
CLOUD COMPUTING TERMINOLOGIES
Cloud refers to a set of hosted servers along with the applications that run on it and which are accessible over the internet.
Cloud computing is a method of providing computing services to customers using cloud. These services include infrastructure, platforms and/or software. For example: Customers can subscribe to computing services like servers, applications, tools, storage, databases, etc. in the cloud and can use them from anywhere, at any time over internet.
By using cloud computing, users and companies don’t have to manage servers and applications by themselves on their own physical machines.
In on-premise computing, servers and applications are hosted and managed in-house (own data center). Application implementation, network configuration, integration, deployment, security setup, backup, maintenance, etc. are all managed by the internal team. There is no third party involvement and the entire ownership is with you. Advantage is that, you have the complete data visibility and control. On-premise data centers will normally have single tenancy. Scale up needs may require you to make additional upfront investments in hardware and software. For achieving high availability, necessary redundant infrastructure should be setup as well, which can further increases costs.
Cloud computing is made possible by using virtualization technology. Virtualization allows the creation of simulated virtual computers that behave like physical computers. Such computers are called Virtual Machines (VM). Though multiple VMs can be created on one physical server, VMs work as isolated independent machines and their files and other resources are not visible to one other. Virtualization allows more efficient use of the hardware by running multiple VMs in the same hardware and serving multiple customers or customer applications at the same time. This in turn helps to reduce the cost of computing.
Containers are packages of software which can be developed, shipped and deployed easily. It packages up code and all its dependencies so that the applications can be deployed and run quickly and reliably on any computing environment.
A container image is a light weight, standalone executable package of software that includes everything (code, runtime, system tools, libraries and settings) needed to run an application. Containerized software will run the same, regardless of the infrastructure. Containers isolates the software from its environments and ensures that it runs uniformly in different environments like development, QA, staging and production.
Container Vs Virtual Machines:
Containers are an abstraction at the application level that packages code and dependencies together. But, VMs are an abstraction of the physical hardware turning one server into many servers. Containers take up less space than VMs, can handle more applications and require fewer VMs and Operating systems.
Docker is an open source technology launched in 2013 for building applications based on containers. Originally built on Linux, Docker now runs on Windows and MacOS too. Docker engine is the run-time, which creates and runs the Docker containers. Containerd is an industry-standard container runtime that leverages runc and was created with an emphasis on simplicity, robustness and portability.
Containers are a good option to bundle applications and run it in different environments. But, one need to manage these containers manually to ensure that there is no downtime (in case if one container goes down another one should be started), scalability is not affected (containers should be started or stopped to scale up/down), etc. Kubernetes provides a framework to manage these features and run distributed systems resiliently.
Kubernetes, also referred as K8s, is aportable, extensible, open source system for automating deployment, scaling, and management of containerised applications. Kubernetes supports features like, automated rollouts and rollbacks, service discovery and load balancing, storage orchestration, secret and configuration management, batch execution, horizontal scaling, automating bin packing, self-healing, etc.
Cloud Computing Providers
Cloud computing providers (service providers) are companies which provide cloud computing as a service over the internet. Their services include, servers, virtual machines, applications, application development platforms, storage, databases, networking, etc. Customers (individuals or companies) can subscribe to such cloud computing services with varying pricing options to choose from. Some of the prominent cloud service providers are,
- Google Cloud
- Amazon Web Services (AWS)
- Microsoft Azure
- IBM Cloud
- Alibaba Cloud
- Oracle Cloud
- Digital Ocean
Cloud Computing – Advantages
Relative merits of cloud computing are many, including cost savings, reliability, availability, scalability, mobility, faster time to market and increased productivity.
- Cost savings: are mostly in terms of savings in capital cost and maintenance cost. i.e. No need to buy any costly hardware/software and less people to manage it. Billing for cloud computing services are usually based on usage (i.e. pay per use).
- Reliability: Internally, cloud providers store data and applications in multiple locations for redundancy and to prevent any data loss.
- Availability: Cloud services normally assure 99.999 availability for the applications/services hosted with them. Which means customer services can be made available 24/7 to its users.
- Mobility: Cloud computing allows users from different part of the world to connect and work, even if they are moving.
- Increased productivity: Without spending much time or money on building infrastructure, new products can be quickly developed and deployed using cloud and cloud tools.
- Faster time to market: Newer products or newer version of the same product can be developed and delivered to your customers very quickly and easily, beating competitors.
- Speed and efficiency: Higher computing power. No processor or memory limitations. On demand allocations for resources.
- Scalability: Based on application or user requirements, server or computing capacity can be scaled up or down on demand. Cloud offers unlimited storage too. Cloud provides tremendous flexibility and agility in rapidly scaling your resources up or down on an “as needed” basis.
- Easier backup and restore: You can easily setup backup sites and restore operations in a cloud environment.
- Integration: It is easier to integrate one application with other cloud software or services and build newer applications quickly and easily.
- Security: Cloud provide a wide range of advanced online security features and best practices to ensure data and application security.
There are some disadvantages too while using cloud computing.
- Data security is a core concern with many enterprises like fin-tech and med-tech companies when they have to store their data on cloud.
- Sometimes, performance of services provided varies from vendor to vendor affective customer service.
- Monthly bills may vary widely giving you surprises, if you don’t configure and use the services properly.
- Lack of cloud expertise/resource availability is still a concern with many companies.
- Internet connectivity and band width related issues are another concern while using cloud services.
Who uses cloud computing?
All types of organizations, businesses, governments and even individuals are increasingly using cloud computing for their day to day operations and data storage. The numbers are expected to grow in coming years too. Cloud computing has become the new norm where business can benefit a lot and grow fast using its capabilities.
Types of cloud computing deployments
Based on where the cloud servers are and who manages them, cloud computing environment is classified in to the following types.
- Private Cloud: is a set of servers or a data center or distributed network, which is fully owned and dedicated to one organization.
- Public Cloud: is a cloud computing service provided by a third party vendor (provider) that may include multiple servers, data centers and software. In this case, the computing facilities could be shared by multiple organizations. Even a single physical server may be shared by multiple tenants using the virtualization technology.
- Hybrid Cloud: is a combination of private and public clouds. In this case, organizations may use private cloud to store and process their critical data and public cloud for their other services. Some may even use a public cloud as a backup of their private cloud.
- Multi-Cloud: is a kind of deployment where multiple public clouds from multiple vendors are used. Multi-cloud deployments can also be hybrid cloud or vice versa.
Cloud Computing Services
Based on how cloud computing services are offered to the customer via cloud, the following categories are available.
- Infrastructure as a Service (IaaS): In this model, the service provider, rents out infrastructure like servers, VMs, network, storage, etc. to its customers. Customers can then use this infrastructure to build their own applications. Examples are AWS, Azure, etc.
- Software as a Service (SaaS): Software is hosted in cloud and provided as a service. Customers can rent a software service and access it over internet. Examples are Salesforce, MailChimp, and Slack.
- Platform as a Service (PaaS): This kind of service provides all necessary tools for developing, testing, deploying and maintaining of software. PaaS provides infrastructure, operating system, development tools and additional tools like DBMS, BI Tools, etc. for quick application development, integration and deployment. Examples are AWS, Azure, OpenShift and Heroku.
- Function as a Service (FaaS): FaaS is also known as serverless computing. In server less computing, cloud applications are split into smaller components called functions. These functions are run only when required and are billed based on the usage. They are called serverless because, they don’t have to run onspecific dedicated machines. Server less functions can scale up easily based on demands. Examples of serverless computing platforms are, AWS Lamda, Azure Functions and Google Cloud Functions.
As with other any other emerging technology solutions, cloud computing too come with some inherent security risks. Enterprises should be cautious and should take necessary precautions to mitigate any such potential risks.
- Data Protection: Data security is critical for any company. Storing critical and secure data with a third party cloud provider can be unsettling. Ensuring that data at rest and in transit is very important. Cryptography and encryption methods must be employed to protect your data.
- Data Loss/Disruption: Cloud providers normally have a backup and recovery process to recover data and software, in case there is a break down. Still, there could be chances of unforeseen disruption or loss from a natural calamity or some unexpected technical failures which can cause the data irretrievable. So, it is important for the customer to have a contingency plan in place and keep another backup of the data with another provider or in a non-cloud space.
- Unauthorized Access: Cloud environments are extremely alluring to hackers. Make sure your data at rest is secure, setup stringent user authentication methods, review access logs and audit trails regularly to restrict any unauthorized access to your systems and data.
Cloud migration is the process of moving data and applications from on-premises servers to a cloud computing environment. Cloud migration strategy is a plan that organizations makes to perform the migration. Most commonly used cloud migration strategies are,
- Lift and shift: lifting and shifting an exact copy of the current stack from on-premises to a cloud computing environment.
- Replatforming: This involves making a few adjustments to optimize the applications before shifting to the cloud, keeping architecture of the application the same.
- Repurchasing: means moving your legacy on-premises applications to a cloud-native product (SaaS). Being a new product, users of the system will require re-training.
- Refactoring: Refactoring or rearchitecting is the strategy where you are rebuilding your application from scratch leveraging cloud capabilities. Refactoring is generally an expensive option.
If you are looking to power your business to rapid growth, scale workloads to meet real time needs, looking for high availability, productivity and cost effectiveness, cloud computing is the way to go. In this article I have covered some of the basic terminologies used in cloud computing, which should give you a good start to learn and understand more about cloud technologies.
Interested in reading similar articles? Please follow us on LinkedIn.