Cloud computing is becoming ubiquitous in today’s competitive and dynamic business world. When combined with the DevOps culture, enterprises and developers stand to gain much in terms of quicker runtimes, scaling on demand, consistency of code, and better performance of software and applications.
Organisations are striving to gain a competitive advantage in an extremely dynamic business world. Cloud computing is a disruptive innovation that has helped to transform organisations in a way that was never thought of earlier. ‘As a service’ models help organisations to become more agile and swift in dynamic business scenarios.
One of the most popular images around the time cloud computing was gaining popularity was that of ‘the blind men and the elephant’. Everyone who has worked on a specific aspect or characteristic of cloud computing has defined the cloud as per one’s own understanding. Let us see how NIST (National Institute of Standards and Technology) defines cloud computing. According to NIST, “Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models and four deployment models.”
Cloud service models
Cloud service models specify how services are made available to cloud consumers or end users.
- Software as a Service: We use SaaS day in day out. The software or application is available as a service and hence we don’t need to manage or install it. The application is provided by the application owner, and all the responsibilities of managing the updates of that application are of the owner and not of the consumer. Google Docs is one example of SaaS.
- Platform as a Service: PaaS is a model where a platform or a runtime environment is provided by the service provider. It is the responsibility of the cloud consumer to upload the application and manage an up-to-date version of the application or software. Resources are managed by the cloud service provider. Backup and all other responsibilities also lie with the service provider. PaaS offerings provide features to maintain high availability and fault tolerance, but these need to be configured by cloud consumers. Amazon Elastic Beanstalk and Microsoft Azure App Services are two popular examples of Platform as a Service.
- Infrastructure as a Service: IaaS is a service model where the entire responsibility of managing the infrastructure, installing and configuring the runtime environment, and the configuration of high availability and fault tolerance is with the cloud consumer. Cloud consumers have no control over cloud resources (physical resources), but can configure or control operating systems, networks, storage, firewalls, and so on.
Cloud deployment models
Cloud deployment models specify where the cloud resources are available.
- Public cloud: Here, the cloud resources are made available to the public over the Internet. Since multiple organisations and individual users avail and share these resources, security is important while using the public cloud.
- Private cloud: Here, the cloud resources are made available to specific units within the perimeter of an organisation. Security and governance is maintained by the organisation, and resources are shared by multiple business units of the same organisation.
- Hybrid cloud: Organisations where security is the main concern use the hybrid cloud. Different types of cloud deployment models are used to address security concerns and for effective utilisation of resources.
- Community cloud: Here, the cloud resources are made available to a specific community of cloud consumers, such as life science based organisations or banks.
Essential characteristics identify the cloud based on the services that are made available by the provider.
- On-demand self-service: Services or resources are available on demand here, which is far better than a scenario where resources are acquired across weeks. Cloud consumers only need to provide a credit card and use the resources. Free tiers are also available up to certain limits. There is no human interaction required, except for some governance related restrictions to manage cost.
- Broad network access: Cloud resources or capabilities are available over the Internet or intranet in this case.
- Resource pooling: Resource pooling is one of the most essential parts of cloud resources. Here, capabilities are presented in a unified manner. Consider a scenario where you have two physical machines, each with 50GB RAM, and you want to create a virtual machine with 51GB RAM. Resource pooling helps here. The two physical machines have a total of 100GB RAM, and cloud computing provides you the option to create a virtual machine with 51GB RAM. Cloud consumers are unaware of the physical machines, but can use the resources of the virtual machine as per their needs.
- Rapid elasticity: Cloud resources can be provisioned and deprovisioned as per need. Scaling up and down of resources can be configured automatically, based on resource usage.
- Measured services: Cloud service providers offer facilities to monitor resources, measure the usage, and bill based on that usage. The ‘pay as you use’ feature is popular for various use cases where resources are required for a specific time only.
DevOps is a combination of two words — development and operations. When security is also a part of this term, it is known as DevSecOps.
DevOps is a philosophy or a culture and not a technology. It is important to understand that multiple dimensions need to sync logically to create a roadmap for cultural transformation in an organisation.
People are extremely important in this triplet. They need to be made aware about the benefits of this cultural change; they need to realise why it is important to change and move away from traditional practices. Training and skills development are much needed to bring about this change.
Processes also play an important role in culture transformation. They help to monitor and measure compliance. It is important to track the progress of all the aspects involved in the cultural or digital transformation.
DevOps has to have a tools agnostic approach. Any tool can be used to bring the cultural change. It can be open source or commercial. Tools don’t matter, as all provide almost the same kind of features. It is all about the men and women behind the machines or tools, and not the tools.
DevOps includes multiple practices, as shown in Figure 3.
Continuous planning: This involves continuous planning on what to implement based on technology evolution and dynamic business needs. It includes implementation of Agile principles using Scrum or Kanban methodologies
Continuous code inspection: This is static code analysis of the source code, where bugs and vulnerabilities are identified by tools. We can create our own rules as well, based on the flexibility provided by the tools. Over a period of time developers know what is correct and incorrect based on the rules configured. Such habits help over time to improve the quality of code.
Continuous integration: Continuous integration involves committing code to source code repositories as and when features are implemented or bugs are fixed. Merged code is verified against unit tests, based on predefined coverage, for better quality software. Code is compiled and a package is created.
Continuous delivery: Continuous delivery involves automated deployment of packages in the pre-production environment. The objective is to make package deployment ready.
Continuous testing: Continuous testing involves different types of automated testing such as functional testing, load testing, performance testing, security testing, and so on.
Continuous deployment: Continuous deployment uses the same automated deployment approach. However, deployment takes place in a production environment.
Cloud computing: Cloud resources are available on demand. The cloud helps to create a runtime environment in a short span of time.
Containers: Containers are very effective in resource utilisation and lightweight compared to virtual machines.
Infrastructure as a Code: Infrastructure as a Code involves scripting to create cloud or virtual resources, and manage those resources. There is no manual involvement. It is also known as software defined infrastructure. Multiple configuration tools such as Chef, Puppet and Ansible are also used to create infrastructure or runtime environment. Various cloud service providers have also come up with offerings that allow the creation of multi-tier architecture in a specific cloud environment.
Configuration management: Configuration management tools such as Chef, Puppet and Ansible are used to change resources that are available in the cloud or non-cloud environments, to comply with the policy defined automatically without any manual intervention.
Continuous monitoring: Monitoring involves application and infrastructure monitoring. It is important to monitor resources and take corrective measures manually or in an automated way to fix issues.
Continuous notifications: Notifications on failures, success of operations, and capacity overload or under-utilisation are extremely important. These can be in the form of emails, SMSs, or Slack notifications based on the policies of the organisation or the business unit.
Continuous improvements: Automation and DevOps practices help to cultivate a mind set to continuously improve existing practices. Continuous improvements help to increase the quality of the product and the processes.
Continuous innovation: Continuous innovation takes place with the productivity gains realised by the developers. The time saved by carrying out these continuous practices can be invested in innovations, which are then integrated with existing processes.
The implementation of continuous practices helps to bring a change in the existing organisation culture. It helps to change existing mind sets towards bottlenecks, and makes an organisation more efficient by saving time.
Now, after getting some understanding of DevOps and the cloud, let’s understand how cloud and DevOps work together.
Cloud and DevOps
Agile principles serve as a driver for DevOps implementation, as there are shorter sprints for releases and automation helps to achieve the deadlines. Cloud computing is a great facilitator for implementing continuous practices, as resources are available in quick time for all the activities involved in application life cycle management.
Agile principles, cloud computing and DevOps practices enable faster growth in organisations. Let’s understand how.
- With these practices, organisations are focused on agility, speed and quality at the same time.
- Organisations understand the importance of disruptive innovation in technology. Even customers understand the need for innovation and efficiency.
- Cloud resources help to achieve faster time to market and agility, which helps to implement DevOps practices in a way that efficient outcomes are measured and realised.
- DevOps is all about cultural transformation.
- With the economies of scale available with cloud resources, it is easier to provide the same type of resources for all environments; hence, all environment related issues due to inconsistencies in the resources are avoided. Project teams face all issues in a development environment rather than facing them later; hence, issues can be fixed earlier.
- Knowledge transfers happen between the development and operations teams. These teams understand each other’s problems and work together. Communication and collaboration improve between teams, which improves existing culture.
- New applications in recent times include a lot of components such as middleware, mobile apps, and content management systems. These applications need high availability and fault tolerance. The cloud can help to make the infrastructure or platform resources available within no time.
- The self-service portal or approach available in the cloud inspires teams to implement DevOps practices on their own.
- Cloud automation or Infrastructure as a Code should become a part of the culture of an organisation to eliminate manual activities in installation and configuration.
- DevOps practices also include measurement and monitoring. Both include multiple aspects such as application and cloud resources. Measurement and monitoring not only help in achieving effective outcomes, but also help to troubleshoot issues or to implement preventive measures.
- Cultural transformation is all about identifying the bottlenecks in the various phases of application life cycle management, and finding the solutions to remove these.
- Resource acquisition and provisioning, along with installation and configuration, take up a lot of time in traditional environments – cloud computing is the answer to this.
- Cloud service models and cloud deployment models can be used by an organisation to remove all bottlenecks, with proper security and governance.
- Multiple cloud service providers offer DevOps services; so application life cycle phases and cloud resources can be managed effectively from the same paradigm. Here is a quick look at the features of an Azure DevOps portal.
- Azure Boards: These manage continuous planning – Agile, Scrum, CMMI, and so on.
- Azure Repos: These comprise the distributed version control system, centralised version control system in the form of Git, and team foundation version control system.
- Azure Pipelines: These provide build and release definitions to automate the integration and delivery process of an application.
- Azure Test Plans: These include test plans, and test case execution and recording.
- Azure Artifacts: This feature manages Project Artifacts effectively in the Azure DevOps portal.
Most of the automation servers such as Jenkins, TeamCity, Atlassian Bamboo, Azure DevOps and so on provide ways to deploy services in the cloud environment, or offer integration with cloud environments to launch build or release agents.
- The implementation of DevOps practices makes project teams realise why cloud resources or containers are more useful in the cultural or digital transformation process. If the runtime environment or platform is not available in a timely manner, then all the automation processes are halted.
- True digital transformation is all about finding bottlenecks, finding solutions, creating a roadmap and implementing an automated approach, with processes in place to gain efficiency, quality and faster time to market.
- The implementation of DevOps practices, along with faster resource provisioning from the cloud, helps in the digital transformation of an organisation like never before. Additionally, cloud service providers provide hundreds of different services that can be utilised in application architecture to make things more efficient. It is pretty obvious that DevOps and cloud computing complement each other and lead to productivity gains, faster time to market and better quality products.
The author is an Author of the book Implementing DevOps with Microsoft Azure available at https://goo.gl/AgcsBX . He contributes occasionally to https://clean-clouds.com and https://etutorialsworld.com.