Introduction
The concept of DevOps is now commonplace within modern IT infrastructures and there are a wealth of DevOps tools available. Some of which are multi-faceted tools which cover more than one stage of a DevOps cycle, while some are more useful at doing individual stages much better.
As DevOps is a relatively modern concept, those who employ DevOps methodology and develop DevOps tools are likely to be champions of cloud technology. Today, cloud technologies and DevOps are seen as being entirely complimentary. The aim of this article is to provide an outline of DevOps tools and to introduce AWS DevOps tools and where these can be of great use.
Planning Tools
The planning of a project, which would entail a process to involve all contributors, set a timescale, present documentation and, perhaps, align costings. Jira and Asana are market leading tools of this functionality. They both also offer extensive issue tracking functionality. AWS has yet to produce a comprehensive planning and tracking tool. However, AWS CodeStar offers excellent integration with Jira.
Development – Coding / Repository Tools
Within a well thought out DevOps cycle, there is also a need to have a place to store source code, facilitate access control and apply version control. GitHub is a very popular cloud-based Git repository hosting service. Other third-party tools include Bitbucket and SourceForge.Â
AWS also offers tools within this sector of DevOps tooling, which may be of more benefit to those already familiar with AWS tooling. AWS CodeCommit provides a fully managed Git-based repository service which offers high availability without product tiering in a pay-as-you-use model. You are charged by the minute for the compute resource you use rather than higher tier usage and features being available on a per person/month cost basis.
AWS CodeBuild is a Platform as a Service Continuous Integration service which can compile and also test software packages leaving them ready to deploy. Again, users are charged by the minute for compute resources used.
Testing Tools
With respect to third-party tooling, Selenium remains the industry leading test tool. Selenium currently does not exist as a Platform as a Service, but its popularity makes it worthy of a mention. Other third-party testing tools include JUnit (core strength is testing Java), Cucumber and Appium (good for mobile device orientated) are also widely used.
AWS CodePipeline also provides integration with several testing tools which they have found to work well within its Source-Build-Test-Deploy framework which can be used on a pay-as-you-use basis. BlazeMeter, Ghost Inspector, Micro Focus StormRunner Load and Runscope cover a wide range of testing criteria. AWS CodePipeline is covered in more detail later in this article.
Release / Deployment Tools
There are several well-known tools which are used for releasing code. Docker (for containers), Puppet, Chef, Ansible and TravisCI are all third-party tools which have good market shares.
AWS CodeDeploy focuses on automated deployment to AWS compute services, such as EC2, and on-premises servers. AWS OpsWorks is a very useful configuration management tool which provides managed instances of Chef and Puppet to automate server configuration and deployment.
AWS Elastic Beanstalk is another of the tools which could be classified as spanning one or more stages of the DevOps cycle. Elastic Beanstalk is a web application deployment and orchestration service which runs in the normal pay-as-you-use principle. Packages can be deployed in minutes upon a number of platforms and from numerous source languages.
Maintenance / Monitoring Tools
Nagios, Opsgenie and Splunk offer a wealth of monitoring capabilities over numerous types of systems and metrics. However AWS has some fantastic offerings which cover a vast range of monitoring and maintenance needs.
AWS CloudWatch offers the ability to highly visualise logs and metrics for AWS and on-prem assets and to set alarms based on thresholds. AWS Config can help prevent configuration drift by assessing, auditing and evaluating AWS resources and matching against desired configurations. With EC2 Systems Manager, it’s possible to pull together monitoring metrics from numerous resources, such as EC2 instances, RDS instances and S3 buckets along with on-premises data into an aggregated view. The user journey through applications can be monitored through AWS X-Ray. This is especially suited to microservices where many elements may be drawn together. The abovementioned AWS OpsWorks, which provides Chef and Puppet instances, is also a useful maintenance tool.Â
Which tools are right for you?
There is no easy answer as to which toolset is best suited for your needs without first knowing which qualities you favour. If you prefer to use open source tools which require hosting, there are still savings to be had by deploying those tools to cloud instances.
However, there are advantages to be gained by using AWS-based tooling, such as metered usage, no need to maintain the tools nor the underlying hardware on which they reside, be it physical, virtual or cloud OS instances.
Orchestration
A DevOps framework works best with a continuous integration / continuous deployment (CI/CD) platform which brings elements together.
Jenkins is the most widely used CI/CD tool. The Jenkins community has created over 1000 plugins. One disadvantage of Jenkins is the need to deploy and maintain Jenkins. This can involve considerable maintenance if to be used with large numbers of developers.
The AWS CI/CD tool, AWS CodePipeline has some advantages over Jenkins and other CI/CD tools. As it is Software as a Service, there is no need for maintenance of the tool or the platform. It easily integrates with other AWS services and uses the familiar pay-as-you-use model. It can also deploy to non-cloud resources via an agent, making it a good option for where there are still on-premises assets to take into account. One disadvantage of AWS CodePipeline is that fewer third-party applications can be integrated, but this is improving.
In summary, AWS continues to develop their comprehensive range of DevOps tools which can be used in more of an out-of-the-box manner than other well-established third-party tools. AWS DevOps tools are designed to be interoperable with other AWS tools and the pricing model is pay-as-you-use. However, for those who already have a preference for existing third-party tools, the scalability and disposability of AWS EC2 instances makes AWS well-suited as a hosting solution as well as an ideal playground for trying out as many tools as you wish. It is a product range which is well worth keeping an eye on.
Why not get in touch with CirrusHQ to get the ball rolling on your DevOps journey.