What Is DevOps as a Service?
DevOps as a service is an emerging philosophy in application development. DevOps as a service moves traditional collaboration to development and operations team to the cloud, where many of the processes can be automated using stackable virtual development tools.
As many organization adapt DevOps and migrate their apps to the cloud, so too will their tools used in build, test, and deployment processes, effectively making continuous delivery itself a managed cloud service. We’ll take a look at what such a move would entail, and what it means for the next generation of DevOps teams.
DevOps as a Managed Cloud Service
What is Devops in the cloud? Essentially it is the migration of your tools and processes for continuous delivery to a hosted virtual platform. The delivery pipeline collapses to a single sile where developers, testers, and operations professionals collaborate as one and as much of the deployment process as possible is automated. Here are some of the more popular commercial options for moving DevOps to the cloud.
AWS Tools and Services for DevOps
Amazon Web Services (AWS) has built a powerful global network for virtually hosting some of the world’s most complex IT environments. With fiber linked data centers arranged all over the world and a payment schedule that measures exactly the services you use down to the millisecond of compute time, AWS is a fast and relatively easy way to migrate your DevOps to the cloud.
Though AWS has scores of powerful interactive features, three particular services are the core of continuous cloud delivery.
AWS CodeBuild is a fully managed service for compiling code, running quality assurance testing through automated processes, and producing deployment ready software. CodeBuild is extremely secure, as all customers receive unique encryption keys to build into every artifact produced.
CodeBuild offers automatic scaling and grows on demand with your needs, even allowing the simultaneous deployment of two different build versions, which allows for comparison testing in the production environment.
Particularly important for many organizations is CodeBuild’s cost efficiency. It comes with no upfront costs and customers pay only for the milliseconds of compute time required to produce releases, and connects seamlessly with other Amazon services to add power and flexibility on demand without spending six figures on hardware to support development.
With a slick graphic interface, you set parameters and build the model for your perfect deployment scenario and CodePipeline takes it from there. With no servers to provision and deploy it let’s you hit the ground running, bringing continuous delivery in the truest sense by executing automated tasks to perform the complete delivery cycle every time a change is is made to the code.
CodePipeline comes with an extensive library of pre-built plugins to fine tune your control, but also works with popular third-party tools like GitHub. You can even design your own custom ones plugins to achieve full control over the pipeline process.
Once a new build makes it through CodePipeline, CodeDeploy delivers the working package to every instance outlined your preconfigured parameters. This makes it simple to synchronize builds and instantly patch or upgrade at once. CodeDeploy is code-agnostic and easily incorporates common legacy code. Every instance of your deployment is easily tracked in the AWS Management Console, and errors or problems can be easily rolled back through the GUI.
Combining these AWS tools with others in their extensive inventory provide all the building blocks needed to deploy a safe, scalable continuous delivery model in the cloud. Though the engineering adjustments are daunting, the long term stability and savings make it a move worth considering sooner rather than later.
3rd Party DevOps Tools in AWS
In addition to the DevOps tools native to AWS, there are numerous 3rd party options.
- Chef. Automate your cloud infrastructure automation with Chef 10 so you can scale reliably and on demand. Capture and instantly reproduce infrastructure across any environment so developers don’t have to recode for portability, saving time and money.
- Puppet. Puppet Enterprise lets you automate the entire lifecycle of your AWS and on-premises infrastructure, simply, scalably, and securely, from initial provisioning through application.
- Jenkins. An established name in performance and scalability, Jenkins is designed to rapidly handle all aspects of continuous delivery. This preconfigured package includes Ubuntu 14.04.3 LTS, the latest Jenkins software, Apache2, SendMail, and other critical tools.
- JFrog Artifactory. Heavy duty enterprise capabilities and fine-tuned permission management, woven into a stylish and accessible user interface. Cache remote artifacts and make them accessible with JFrog Artifactory so you can avoid repeated downloads of needed resources.
- Sumo Logic. Gain real-time, visual insights to your AWS infrastructure, security, logging, and compliance status with the industry leader in simplifying telemetry into actionable information.
Managed Services for DevOps
Of course, the DevOps as a managed service space isn’t limited to Amazon Web Services. Let’s examine the other major players and the tools they offer.
Google Cloud Platform Tools and Services for DevOps
The search giant has an unsurpassed global network, user-friendly interfaces, and an ever-growing list of capabilities that make the Google Cloud Platform’s (GCP) DevOps option worth seriously considering. Additionally, GCP supports full cloud development suites for a wide variety of platforms, including Visual Studio, Android Studio, Eclipse, Powershell and many others. Use the development tools you already know and love in a cloud environment.
Let’s have a look at some of Google’s powerful StackDriver development tools.
- Stackdriver Monitoring. Get a visual overview of the health and pain points in your environment.
- Stackdriver Debugger. Zoom in on any code location to learn how your software is reacting in a real-time production environment.
- Stackdriver Logging. Ingest, monitor, and react to critical events in log data.
- StackDriver Trace. Hunt down and inspect latencies and display them in the Google Cloud Console.
The Google cloud platform also integrates Jenkins on Container Engine, which lets you run jobs against multiple operating systems and launches new executables in just seconds. Jenkins lets you cluster and manage containers in Container Engine and only deploy resources when actively required, making your pipeline more efficient.
Native management tools for the Google Cloud environment include these easy-to-integrate modules:
GCP Deployment Manager
Pick and choose the resources and rules you want for deployment through easy templates compatible with the yaml, python, or jinja2 programming languages.
Remarkably, Deployment Manager templates offer declarative language options rather than an imperative one; this means that rather than painstakingly listing each step that will be required for a deployment, DevOps teams can tell Deployment Manager what a final deployment should look like and GCP will employ the necessary tools and processes for you. When a perfect deployment procedure is developed, it is saved to be repeatable and scalable on demand.
GCP Cloud Console
Master all things GCP from the desktop or on the fly with the Cloud Console, which gives you a satellite’s eye view of every detail of your DevOps in the cloud. Monitor and manage everything from virtual machines to release management and rollback on Google’s native Android iOS. GCP Cloud Console gives your collaborative DevOps teams one easy place to take charge of the cloud based continuous delivery cycle.
Microsoft Azure Tools and Services for DevOps
If Google is the 800-pound gorilla in the modern tech industry, that gorilla’s grandpa is Microsoft, which is bringing it’s potent punch to the DevOps as a managed service space with Azure, it’s cloud management platform. Like AWS (itself an 800-pound gorilla in the cloud app development space) and Google, Azure offers an impressive set of innovative and interoperable tools for DevOps.
With so many organizations having existing investment in Microsoft products and services, Azure may offer the easiest transition to hybrid or full cloud environments. Microsoft has had decades to build a secure global infrastructure and currently hosts about two-thirds of the world’s Fortune 500 companies. Some of Microsoft’s essential DevOps tools include:
Azure App Service
As a trusted platform around the world with partners in every aspect of the IT industry, Microsoft’s Azure App Service provides endless combinations of options for development. Whether apps are developed in the ubiquitous Visual Studio app or the cloud’s largest offering of program languages, DevOps teams can create secure, enterprise-quality apps with this service.
Azure DevTest Labs
Azure DevTest Labs makes it easy for your DevOps team to experiment. Quickly provision and build out your Azure DevOps environment using prebuilt and customizable templates and get to work in a viable sandbox immediately. Learn the ins and outs of Azure in repeatable, disposable environments, then move your lessons learn to production.
For shops that want to partially migrate to cloud-based DevOps, Azure Stack is a tool for integrating Azure services with your existing datacenter. Move current segments of your production pipeline like virtual machines, Docker containers and more from in-house to the cloud with straightforward migration paths. Azure lets you unify app development by mirroring resources locally and in the cloud, enabling easy collaboration for teams working in a hybrid cloud environment.
Like its competitors, Microsoft provides a wide array of tools for expanding your environment’s capabilities and keeping it secure.
Cloud Infrastructure as Code
Yesterday, Ops teams built and secured the infrastructure upon which Dev teams built code. Today in the cloud, the infrastructure is code. DevOps in the Cloud involves not just virtual servers, load balancers, and other infrastructure. But code can also be used to automatically provision and replace failed virtual hardware.
Though similar to hardware automation, which relies on scripts to perform routine deployment tasks, an infrastructure as code approach merges the knowledge of the Devs and Ops teams so that everyone on the production team can rapidly spin up and fine tune whole environments. Chris Riley of DevOps.com explains the difference.
Instead of manually configuring infrastructure you can write scripts to do it. But not just scripts, you can actually fully incorporate the configuration in your applications code. This has been possible for a long time, but it has been limited. You almost always hit a wall on the types of things you can do.
But new tools such as Vagrant, Ansible, Docker, Chef, and Puppet either independently or when combined together make it possible to do just about anything you could do manually, automatically with the infrastructure layer, and operating system layer.
Even once you have created the infrastructure you can use these tools to run yet more scripts, even your trusty old BAT and ps1 files on what you just built. It’s a kind of reflection for infrastructure orchestration.
The same processes used in the continuous software delivery pipeline–from development to automated testing through live deployment–are applied to infrastructure. This creates an intelligent, interactive symbiosis between the software and the environment that hosts it.
Using Telemetry to Gather Feedback
The Second of the Three Ways outlined in the DevOps Handbook discusses the Principles of Feedback, which cover the importance of developers getting frequent and accurate information about how their product is being received. Telemetry is the automated process of collecting, ingesting, and applying data (from logs, events, and other metrics). In a DevOps environment, proper telemetry is critical for accurate, continuous feedback in real-time.
Feedback during each stage of the build, test, and deploy cycle helps DevOps teams speed releases and push quality control closer to the source. All the major cloud service providers provide some tools for telemetry, but expand and visualize your feedback data with powerful tools to give your team actionable insights. Some common use cases for logging and monitoring include:
- Server and VM health and statistics
- Application health
- Automated testing results
- Network volume
- Security and access control list activity
- Database transactions
Knowledge is power, and the more your DevOps teams can see and understand about what’s happening behind the scenes, the more powerful they will be at providing solutions.
DevOps Didn’t Die, It Evolved
The continuing evolution and merger of DevOps and cloud-based architecture opens a world of possibilities. Some industry experts believe that DevOps itself was built around on-premise tools and practices, and that migrating to the cloud will bring the end of DevOps and mark the beginning of the ‘NoOps’ era, where developers will have all the knowledge and resources they need to provision their own environments on the fly without breaking form the task of development. In the industry there is concern that this may be the death knell for the operations aspect of DevOps.
But regardless of the tools and methods used, development has always been driven by human thinking and needs, and developers who can focus on creating and improving software will always benefit from teammates whose primary aim is keeping infrastructure operating.
Learn more today about the tools you need to migrate and manage your enterprise to the cloud and gain increased mastery over your continuous delivery process.