This blog will answer the question ‘what is DevOps as a service’ exhaustively (but not exhaustingly).
This means answering:
- What is DevOps (and how is it different when it’s as a service)
- The DevOps as a service market (what’s on offer and what DaaS teams do)
- The advantage and disadvantages of DaaS
- DevOps as a managed service/DevOps in the cloud
- AWS tools and services for DevOps
- Azure tools and services for DevOps
- Google Cloud Platform tools and services for DevOps
- What to look for in a DaaS partner
Let’s get started!
What is DevOps (and how it’s different when it’s a service)
What is DevOps (feel free to skip this if you’re already an expert).
DevOps is the part-technological, part-cultural merging or mashing together of the dev and ops teams (hence Dev…Ops) to make development and deployment faster, easier and less risky.
In olden’ times, these two teams were often at loggerheads, with neither understanding the agenda or process of the other.
This led to extra-frosty Christmas parties and, perhaps even worse, delayed deployments.
So, DevOps began as a fix for a long-running people and software issue.
Which is why it’s turned out part cultural and part technological.
For a less fluffy answer, we might say… DevOps is ultimately aimed at creating a system of maximally automated continuous feedback and correction between development and ops teams.
But a picture speaks a thousand words:
Understanding the DevOps lifecycle
Before we dive into this picture, it’s worth understanding some fun and confusing facts about it:
This represents the DevOps lifecycle, but you might also hear DevOps toolchain, DevOps pipeline and CI/CD pipeline. These terms are all roughly interchangeable but you’ll be left with some spare meanings whenever you make the trade, so, to be crystal clear:
1.DevOps lifecycle – this is the more abstract name for the sequence of processes that make up DevOps, as pictured above:
- DevOps toolchain – this just means the tools involved in any particular DevOps lifecycle
- DevOps pipeline – this is usually used when referring to a specific instance; for example, ‘Just After Midnight, please come and sort out my DevOps pipeline’
- CI/CD pipeline – the ultimate goal of DevOps is to reach CI/CD (explained below), so a CI/CD pipeline is a sort of end-stage, bells and whistles DevOps pipeline, as in ‘Just After Midnight sorted out my DevOps pipeline and now it’s a CI/CD pipeline! What a great day I’m having’
2. Not every DevOps pipeline will feature ALL of these practices. As we say, CI/CD will only be reached by a lucky few, and you certainly don’t need to hit every note to say you’re ‘doing DevOps’
3. Although the DevOps lifecycle is often represented as above – an unbroken circle – a truer representation would show all kinds of other interconnections between each item. It’s way less linear IRL, as we’ll explore below
This stage, and the three below, are all of a piece. What continuous development means in this context is the development part of the process in which code is continuously integrated, tested, and reworked.
Continuous integration means that each contributing dev’s work is automatically integrated into a single version of the software using automated tools like BitBucket or Jenkins.
In this stage, the code is tested for bugs and errors. This can be automated through tools like Selenium but there may remain a manual element.
On the topic of non-linearity, you might go straight from this stage to deployment with monitoring happening afterwards.
- Some code gets tested and is found bug free
- That code deploys to some internal servers – no problems here
- That code is then deployed to a canary production environment (say being shown to 5% of users – where it’s (continuously) monitored before going out full force or being sent back for tweaks)
Again, continuous monitoring and feedback are a piece. The main difference between continuous monitoring and continuous testing is that testing generally emphasises code before deployment whereas monitoring refers to the performance of a deployed app. However, it’s not always cut and dry.
Continuous monitoring and/or testing can take the form of code linting (tools to check style, syntax and errors), Git workflow operations (resolving code conflicts), continuous integration and deployment logs and monitoring the actual performance of the finished product on various KPIs.
In DevOps, continuous feedback covers a variety of feedback loops which will vary from project to project. The challenge here is striking the right balance of automated and manual feedback (which could be as literal as user feedback on social media) with automated feedback.
Again, this is the feedback system from continuous testing, continuous monitoring and extracurricular feedback gathered IRL.
Not everyone gets to the continuous deployment stage, but those dedicated few will enjoy fully-automated deployment of code from release to production.
In continuous operations, infrastructure continuously (who expected that adverb to crop up again?) moves to a programmatically predefined state. It’s very similar to what happens for code – but it’s for infra. For a bit of extra info check out our IaC piece.
The DevOps as a service market and what’s on offer
If the above is DevOps (which it is), DaaS follows the aaS (as a service) trend of really just meaning delivered online/via the cloud.
A DevOps pipeline is perfectly (or mostly) happy happening all on-prem, though, in today’s world, it rarely does.
DaaS, then, is when that process is moved to the cloud and handled by someone else.
Usually a knowledgeable, trailblazing and generally impressive DaaS provider.
The question is, are you better off going for DaaS or in-house DevOps? But before we weigh the pros and cons, it’s worth fleshing out a little more how this difference shows itself.
DevOps vs. DevOps as a service – the variability of DaaS
Although the above is true, it would be misleading to say that DevOps is when you do it all yourself on-premise, and DaaS is when someone else does it all for you on the cloud:
- Internal teams can (and do) do DevOps on the cloud
- DaaS teams (while always working in the cloud) can fill a variety of roles
The many hats of DevOps as a service partners
DaaS covers a multitude of roles on a sliding scale of you-own/they-own.
This DIY (DevOps it yourself) to DaaS spectrum covers everything from a fully set-up, owned and managed DevOps pipeline (with all the bells and whistles) to a team who just pops on when you’re on your holibobs.
For example, a DaaS provider might:
- Set up and own the entire pipeline
- Be brought in to expand just one element of your DevOps pipeline, i.e. to set up continuous deployments and IaC
- Monitor and triage an existing DevOps pipeline on a permanent OOH basis
- Monitor a DevOps pipeline during special deployments/when the internal team can’t cover for whatever reason
Any and all combos of the above are DaaS.
Now let’s look at the pros and cons.
The advantages and disadvantages of DevOps as a service vs. DevOps
Advantage – get started right away
Teams who lack DevOps knowledge can start working with a qualified DaaS provider straight away; it’s these guys’ jobs to go into any DevOps-less organisation and start adding value.
DevOps is an involved discipline, and building your in-house capability is a serious time/money investment.
Advantage – can add capabilities it’s impractical for the organisation to access any other way
A very common use case for DaaS providers is getting engineers in to monitor, break/fix and oversee complex deployments when the in-house capacity can’t be there. This could mean general out-of-hours, or it could be related to response times during certain periods or just extra capacity for certain projects.
In the same vein, DaaS teams can provide access to tools/knowledge for which the client can’t justify the ownership/upskilling expense.
Disadvantage – less flexibility
Ultimately, if you build your DevOps capacity, every element of the pipeline – every tool bought and paid for – will be to your organisation’s exact spec.
A good DaaS provider will tailor their services to each use case, but there might be certain tools they don’t have experience with, preferred ways of working and X, Y Z.
Disadvantage – lack of understanding over what’s being provided
In cloud-based DevOps, there are tradeoffs between speed and security, and of course speed and cost. Lacking DevOps knowledge, clients may not know what’s best for them – ending up with a more-sluggish-than-necessary pipeline on the grounds of unfounded security concerns or vice versa.
DaaS and DevOps tools in the cloud – what do the major cloud service providers have to offer?
So, now we’ve looked at the how-it-might-work-for-me angle, it’s time to dive back into the tech-y side.
Whenever you’re choosing a DaaS provider (or scoping out how to build your pipeline) you’ll likely be working with elements of the below toolchain.
In this section, we provide another big ‘ol picture and then talk you through some of the elements.
DevOps tools on major cloud platforms
The ‘Big Three’ cloud providers – AWS, Azure and GCP – all boast mature, feature-rich DevOps offerings.
Although there are differences, they’re nuanced, and it’s certainly safe to say you can ‘do DevOps’ on every platform.
It’s also worth noting you aren’t 100% vendor locked by any means – with options like AWS Toolkit for Azure and options for mixing and matching.
Now, let’s take a look.
AWS – what’s AWS’s DevOps ‘flavour’?
- AWS DevOps is known for being simple to use
- Provides the greatest scope for automation compared to both Azure and Google Cloud Platform
- AWS’ access and management policies are particularly robust, which allows teams to collaborate well which is especially important for DevOps and especially important if you’re co-managing your pipeline with a DaaS partner
- For more info take a look at our DaaS on AWS piece
What are some common AWS DevOps tools?
CodePipeline is a continuous delivery service that allows you to easily model, visualize and automate the steps in your release process.
CodePipeline integrates natively with other AWS services, so you can easily build a complete CI/CD pipeline without installing additional plugins.
AWS CodeBuild is a continuous integration tool that compiles tests and produces artefacts ready for deployment.
AWS CodeDeploy can be used to reach continuous deployment. It allows for a hands-off, fully automated approach to deploying code to on-premise and/or virtual machines, readying the code and verifying it’s running as expected.
CodeStar provides a unified user interface where you can manage all the resources needed for your software development projects. However, CodeStar is an overlay on other AWS resources, so while it’s easy to use, it’s not so good for building a detailed understanding of DevOps.
AWS Toolkit for Azure
Below, you’ll see that Azure’s DevOps offering can be neatly bundled into a customisable SaaS offering called Azure DevOps. AWS Toolkit for Azure is an add-on for Azure that lets you easily deploy code from your Azure DevOps pipeline onto AWS instances.
Mortal enemies or best of friends? The DevOps spirit of collaboration builds another bridge.
Azure – what’s Azure’s DevOps ‘flavour’?
- Azure DevOps is known for having great integrations across the Azure toolset
- Azure also incorporates project management tools (like Azure Boards) into its DevOps offering, making it easier to manage more complex DevOps projects
- Lastly, Azure offers unlimited code repositories, making it ideal for larger projects
What are some common Azure DevOps tools?
Azure DevOps is a SaaS DevOps solution that can incorporate the below services. Any combination of these services can be accessed by the user through a web browser or IDE (integrated development environment).
Azure Pipeline is a CI/CD tool which automatically builds and tests code projects. Azure Pipelines is compatible with a wide variety of application types (.NET, Java, Node, Android, Xcode, and C++ applications) and can deploy to a wide variety of targets, including VMs, containers, on-premise environments and more.
Azure Boards is essentially a project management service geared specifically towards Agile and DevOps. It comes with integrated reporting to make tracking and fixing code issues easier.
Azure Test Plans
Azure Test Plans is a testing tool that allows users to easily begin manual testing, user acceptance testing, exploratory testing, and gathering feedback from stakeholders.
Google Cloud Platform – What’s Google Cloud Platform’s DevOps ‘flavour’?
- Google Cloud Platform boasts an unsurpassed global network
- The interfaces are user friendly
- Google Cloud Platforms also supports a full suite of cloud development tools including Visual Studio, Powershell and Eclipse
What are some common Google Cloud DevOps tools?
Cloud Code is an IDE that makes it easy to write and ship code for cloud-native apps.
Cloud build is a CI/CD platform, it can deploy to VMs, serverless environments, Kubernetes and more. It can import code from Cloud Storage, Cloud Source Repositories, GitHub, or Bitbucket. With Cloud Build, you can use supported build steps or write your own as code.
Cloud Deploy is a managed continuous delivery service with built-in security features which can be easily integrated into any GCP DevOps pipeline.
To sum up our brief foray into the cloud toolchain
- All of the major cloud providers offer comprehensive DevOps capabilities, but there are some points of difference
- If you opt for DIY DevOps, you’d be best off familiarizing yourself with the quirks, advantages and disadvantages of each provider – as well as how flexible you can be with integrating 3rd-party tools and/or hybrid setups like AWS DevOps Toolkit for Azure
- If you opt for DaaS, talk through the tools and services your DaaS partner’s going to use and how they work or don’t with whatever you’re rocking
So, what else should you look for in a DevOps as a service provider?
Now we’ve established what DaaS is, the pros and cons, and the nuts and bolts, it’s time to think about what to look for in a DevOps as a service partner (and before you ask, yes, we did think about what we’re good at and then write it down):
A broad set of skills
A DaaS provider should be able to fill your ‘DevOps gap.’ This means they should be comfortable being brought in to help out with any stage of the pipeline. They should also have skills and experience with a wide variety of tools and services – so they’re able to match your needs rather than going off their set menu.
24/7 support capability
A good DaaS provider should offer end-to-end support of your environment 24/7, 365. If you’re entrusting your entire pipeline to a third party, you don’t want a Johnny-come-lately.
Good security credentials and practices
As moving development to the cloud does come with a few security risks, ask your DaaS partner to talk you through their security credentials and how they go about meeting security best practices when delivering DevOps/DaaS.
How we can help
Ah, the inevitable self-plug: If you hadn’t guessed – we do DaaS.
You can read about our DaaS work for the leading global law firm DLA Piper here.
Our DaaS work with Volvo here.
And about our DaaS work with Vodafone here.