Cloud computing is the provision of computing resources over the Internet (cloud), including storage, computing power, databases, networks, analytics, artificial intelligence, and software applications. Through this outsourcing, companies can access the computing resources they need, if desired, without having to purchase and maintain a physical on-premises IT infrastructure. This way, resources are used more flexibly, innovations are introduced faster, and the costs of scaling are reduced. For many companies, migrating to the cloud is directly related to data and IT modernization.
Characteristics of cloud computing
Prior to the age of cloud computing, organizations purchased and maintained on-premises IT infrastructure. While cost savings helped drive the move to the cloud in the first place, many organizations believe there are many benefits to public, private, or hybrid cloud infrastructure.
Cloud computing enables Agile and DevOps teams to streamline and speed up the development process.
Below is a list of characteristics of cloud computing.
Self-service on demand
Cloud resource providers offer APIs that users access to request new resources or scale existing resources when needed. Teams can simplify the automation of provisioning infrastructure resources using infrastructure-as-code technology tools from companies such as Terraform and Ansible.
Advanced network access
The location of the physical hardware is a major challenge in providing an optimal experience for end users. Cloud computing brings enormous value by offering globally distributed physical hardware, allowing organizations to rationally allocate hardware based on location.
Consolidation of resources
Computing resources in the cloud infrastructure platform are divided and allocated dynamically on demand. Because the cloud host’s physical machines are dynamically provisioned and shared among multiple tenants, the cloud hardware is carefully optimized for maximum utilization.
Cloud infrastructures can grow and shrink dynamically, allowing users to request automatic scaling of their computing resources according to traffic. Adaptation can occur at the per-machine level when resource allocation is increased to maximize available machine resources, or at the multi-machine level when the application scales automatically to multi-homed machines.
Cloud infrastructure providers provide detailed usage metrics from which usage cost information is compiled and communicated. For example, Amazon Web Services (AWS) lists hourly or daily charges for each service category. Cloud service providers typically use a utility-style billing model based on consumption. Consumption is measured and information about it is delivered. Thus, customers are charged for the exact amount of computing resources used.
Types of Cloud Deployments
There are three main types of cloud deployments. Each of them has unique advantages, and organizations often use several of them at once.
Public clouds provide computing resources—servers, storage, applications, and so on—over the Internet from a cloud service provider such as AWS and Microsoft Azure. Cloud service providers own and manage all hardware, software, and other supporting infrastructure.
A private cloud is a computing resource dedicated exclusively to an organization. It may be physically located in an on-site data center or at a cloud service provider. The private cloud provides greater security and privacy than public clouds by offering companies dedicated resources.
Private cloud customers get the core benefits of a public cloud, including self-service, scalability, and customization, but also have additional control and customization. In addition, private clouds can have a higher level of security and privacy because they are hosted on private networks that are not accessible to public traffic.
Hybrid clouds are a combination of private and public clouds (such as the IBM Hybrid Cloud powered) combined with technology that allows data and applications to run simultaneously. Sensitive services and applications can be stored in a secure private cloud, while public web servers and client endpoints can be hosted in the public cloud. Most popular third-party cloud providers offer a hybrid cloud model that allows users to combine private and public clouds to suit their needs. This gives companies more flexibility when deploying an application that has specific infrastructure requirements.
Cloud Computing Services
The dynamic nature of cloud computing lays the foundation for new higher-level services. These services often not only complement, but also provide essential services for Agile and DevOps teams.
Infrastructure as a Service
Cloud Infrastructure (IaaS) is the foundational layer of a cloud computing service that allows organizations to lease their IT infrastructure—servers, storage, networks, operating systems—from a cloud service provider. The IaaS infrastructure allows users to reserve and allocate the necessary resources from unprovisioned physical server storages. In addition, the IaaS infrastructure allows users to reserve pre-configured machines for specialized tasks such as load balancers, databases, email servers, and distributed queues.
DevOps teams can use the IaaS infrastructure as a base platform to build a DevOps toolchain that includes various third-party tools.
Platform as a Service
Platform as a Service (PaaS) is a cloud-based infrastructure built on top of an IaaS infrastructure that provides resources for building user-level tools and applications. It provides the basic infrastructure, including computing, networking and storage resources, as well as development tools, database management systems, and middleware.
PaaS uses the IaaS infrastructure to automatically provision the resources needed to manage the language suite of technologies. Popular language suites include Ruby On Rails, Java Spring MVC, MEAN, and JAM. Next, PaaS clients can simply upload their application’s code assembly and it will be automatically deployed to the PaaS infrastructure. This is a new and powerful workflow that allows teams to fully focus on the code of a specific business application and not worry about hosting and infrastructure issues. PaaS automatically monitors and scales the infrastructure to increase or decrease resources where traffic has been detected.
software as a service
Software as a Service (SaaS) delivers software products over the Internet, on demand, and usually by subscription. Cloud service providers host and manage the application and provide updates and security patches as needed. Examples of SaaS are CRM systems, web mail applications, productivity tools such as Jira and Confluence , analytics and monitoring tools, chat applications, and more.
Off-Server (FaaS) is a cloud computing service that offers a platform where customers can develop, run and manage applications. This makes it easier for developers when they need to build and maintain the infrastructure to develop and run an application. Cloud service providers offer cloud resources, execute a block of code, return a result, and then destroy the used resources.
Benefits of Cloud Computing
The unique properties of cloud infrastructures provide several new technical and business benefits. Below are the main benefits of cloud computing for Agile teams.
Teams using cloud resources do not need to purchase their own hardware resources. Beyond hardware costs, cloud service providers go to great lengths to maximize and optimize hardware usage. This turns hardware and computing resources into a commodity, and cloud service providers try to offer the lowest price.
As cloud computing adapts by default, organizations can scale resources on demand. Cloud computing provides automatic feature scaling for teams. Cloud applications can automatically shrink and grow infrastructure resources during traffic spikes.
Cloud computing offers the latest and greatest computing resources. Users can use the latest machines with the best multi-core processors designed for heavy tasks that require parallel processing. In addition, major cloud service providers offer machines with advanced GPUs and TPUs for graphics-intensive, matrix, and AI-intensive tasks. These cloud providers keep their processors up to date with the latest technologies.
Major cloud providers have hardware distributed globally, providing high performance connections depending on where the physical connection is located. In addition, cloud service providers offer global content delivery networks that cache user requests and content by location.
Cloud-based teams can process and deliver data to customers faster. Agile development teams can use the cloud infrastructure to quickly deploy new virtual machines to test and validate unique ideas, and automate test and deployment pipeline stages.
Private cloud hosting offers an isolated infrastructure protected by a firewall, which enhances security. In addition, cloud service providers offer many mechanisms and technologies for building secure applications. Controlling user access is an important security concern, and most cloud service providers offer tools to restrict full user access.
Continuous Integration and Delivery
Continuous Integration and Continuous Delivery (CI/CD) are key DevOps practices that help improve team speed and reduce time to market. Cloud-based CI/CD solutions like Bitbucket Pipelines allow teams to automatically build, test, and deploy code without worrying about managing or maintaining the CI infrastructure. Bitbucket Pipelines uses Docker containers to provide isolation and reproducibility for the release pipeline. You can run commands similar to local machine commands, but with all the benefits of a fresh and reproducible configuration for every build.
Comprehensive monitoring and incident management
Cloud deployment allows teams to plug in tools at any stage of development, making it easy to monitor all parts of the pipeline. End-to-end monitoring is another key capability for DevOps organizations as it enables faster resolution of issues and incidents . Cloud service providers share system health metrics, including application and server information, processor, memory, request and error rates, average latency, and more. For example, monitoring the load on many virtual machines allows teams to add more capacity to virtual machines (VM ) when demand increases, or automate scaling (increase/decrease) based on these indicators to reduce the frequency of intervention and reduce costs.
Cloud computing provides advanced computing resources that are available on demand, scale on demand, and receive regular upgrades without the need to purchase and maintain on-premises infrastructure. Cloud computing makes teams more efficient and reduces time-to-market because they can quickly acquire and scale services without the significant effort required to manage traditional on-premises infrastructure.