DevOps In The Cloud: Demystified.
We asked Godel’s Head of DevOps, Sergey Sverchkov, how DevOps in the cloud can help businesses evolve. Here’s his take on the steps organisations can take to make it a success.
DevOps in the cloud: What does it mean and how can it help your business?
DevOps is a set of practices and skills that help businesses to evolve quickly in the modern era. Defined semantically, it’s the combination of software development skills and set practices for running and maintaining a solution without any impact on business availability for clients, the company, employees and partners.
It requires the blending of all those skills into one role.
Developers are keen to implement new features and ideas, whereas the support or operation team’s main duty is to provide 24/7 availability of business systems and minimise the risks for different kinds of losses. Companies of all sizes face these challenges, so developing an approach for adapting products and services is essential for sustainable business growth. It’s not enough to just create the product – it needs an ecosystem of services around the core products.
To keep up with the pace of change requires a focus on the most important elements: products, clients, new ideas and return on investments – and the cloud delivers answers to business IT needs. No need to buy or rent and maintain hardware and servers, storage, networking (unless you’re the cloud provider), instead start as small as you can and grow with your business needs. The cloud is not only about infrastructure-as-a-service now, but it also provides managed services for applications, and support for various types of deployment – virtual machines, containers, or bundled applications running in platform-as-a-service. But the complexity comes with the freedom and agility provided by the cloud.
DevOps practice is about automating deployment, maintenance, monitoring and alerts reaction for any kind of services within the IT infrastructure of a business. Automation is the key point, i.e. when you have one virtual machine or application instance and no 24/7 requirement – you can do the production rollout manually (which happens quite frequently for small business), but when you have dozens of applications, databases and distributed systems – automation is a must. And as the business grows and demands for IT services evolve, operations must change too. DevOps is crucial for business agility and success.
To be able to understand and even evaluate all options between cloud providers requires time and knowledge. As always there is no just one-size-fits-all choice – it depends on business needs. And this is where cloud experts help to address the variety of cloud services.
How does DevOps in the cloud differ from other types of DevOps?
Public clouds provide, not only virtual machines, storage and networking, they also create a set of managed services for addressing different kinds of business needs. Managed services are transparent for the consumer (it can be an application or a user), e.g. you create and use it and don’t worry about the underlying complexity for running these services. DevOps engineers must understand how the services work, what they’re used for and how to automate creation and management of them.
So, DevOps in the cloud is somewhat more complex, however, there are also automation tools developed by cloud providers like Amazon AWS Cloud Formation, Google Cloud Platform and Microsoft Azure to describe and manage services through templates. These templates are code pieces that are versioned and tracked in source code repositories, to tackle infrastructure definition as the code. With the private cloud, solution automation is more complex, but of course, there are tools that address automation for private cloud as well in different ways (Terraform, Puppet, Chef, Ansible).
How does DevOps in the cloud help an organisation? What are the main benefits, and why?
As I already mentioned, the automation of IT services to meet business objectives is the key factor for success. And the development process is just one of the pieces for delivering a solution to the customer. Development artefact is followed by a set of testing processes and deployment, through to production, which ideally should be fully automated and with zero downtime. From this perspective, DevOps practice is not only about benefits but more about addressing real business needs and keeping up the pace of change.
What are the successful steps organisations need to take to make DevOps in the cloud a success?
There are several major steps in the journey to successful DevOps practice in the cloud. The key points are:
Clearly define business goals – why are you moving to the cloud? Then consider the myriad of other factors governing the decision.
Flexible options for paying for cloud resources.
Getting rid of hardware planning and administration (which is not the case for private cloud in the datacenter).
The ability to use managed services (Databases, Messaging, Analytics, AI, etc.).
The ability to scale up and down. It is still an option to run the website in colocation or datacenter with no demand for scaling resources for increasing traffic.
Evaluate cloud providers: geographic distribution, cost of basic services (compute, networking, storage), service certification for security compliance (PCI DSS, HIPAA, etc.), cost and levels of support, free tier availability.
Plan the budget that you can spend for running IT services in the cloud on a scale for at least one year (add 30% to the basic calculation, as it’s rarely accurate enough at the start).
Design the architecture of solutions in the cloud. Evaluate what it takes to run a specific service or application as cloud-ready. A good starting point for that evaluation is the 12 factors of cloud-native development.
Plan and estimate migration work and costs (that can be quite significant depending on the number of legacy systems and integration).
Find the right team to do the migration to the cloud or train your own team.
What are the best practices for DevOps in the cloud, and why?
There are many practices that run successfully in the cloud. It’s worth mentioning that the cloud is not the silver bullet for business challenges, and there is no one-size-fits-all choice. But cloud allows you to abstract from hardware, networking, and maintenance complexities, and build the infrastructure in minutes.
Not every legacy system can be easily migrated to the cloud, and scalability comes from the design and architecture principles. For example, traditional databases are single instance and can’t scale out with adding new machines. So, from this perspective best practice comes from the right team that has previous experience and knows all the hidden issues. Even the development approach needs to change to be successful in the cloud.
What are the most important things an organisation should know about DevOps in the cloud?
Cloud is about changing the culture of delivering solutions. It takes time to learn and set up the culture and practices within the organisation. Cloud is about the right people and different processes. But all these changes definitely pay off in the long run.
How can organisations best support DevOps in the cloud efforts?
Hire the best people in-house and externally – cloud experts.
How will DevOps in the Cloud change in the next 12-18 months?
It’s clear that the DevOps culture will evolve, addressing new automation challenges and covering new cloud services. Containers and orchestrations, microservices cloud-native development and usage of managed services will be the mainstream. In turn, that will change the culture of development with organisations. As with any culture shift, it’s all about having the right people.