DevOps can be simply defined as the practice of performing operations and development activities on a project. The use of developers technique for performing system administration tasks is also called as DevOps. Its meaning is really different from person to person as it covers a lot of arena. It is also a culture that emphasizes the collaboration and communication of software developers with the system administrators with prime focus on automating the process of software delivery and infrastructure changes. It is an environment where building, testing, monitoring, configuring, deploying and releasing of software can happen more frequently and rapidly. While performing the development and operations, we'll require tools to perform them which is known as DevOps methodology tools.
Here are some of the best well known DevOps Methodology tools available in the internet. These tools are used for their respective activities to accomplish the goal of DevOps.
Life Cycle Management
Jira is a proprietary software developed on JAVA which provides bug tracking, issue tracking and project management functions for a proper enterprise level of project management and bug tracking system. Some of the well known software projects like Fedora Commons, JBoss, Skype and The Apache Software Foundation make use of Jira for bug tracking and project management. It is developed and maintained by Atlassian, Inc. since 2002. It is also known as the #1 software development tool used by agile teams. With Jira, a software development project can be planned easily with a proper tracking of each activities by the team members. It makes the ability to release the product early and often with a beautiful visualization of the report for better performance of the team. Some of the awesome features of Jira is that, it has the support of Scrum, Kanban boards, agile reporting, portfolio planning, 1000+ plug and play addons, mobile apps and its robust sets of APIs.
Assembla is a project management cloud based application platform full of task and code management tools for software development life cycle. It is considered one of the best Project management tool made for a proper project management and transparency on the task. It consists of a beautiful centralized one home user interface with tools for agile project management, budgeting, collaboration, customization, reporting and issue tracking, learning and support, task management and resource management. It is developed and maintained by Assembla Inc whereas around 1 million people worldwide uses Assembla. It features unlimited svn, git or p4 repositories, wiki tools, file sharing, milestones management, backlog manager, custom reporting, SSH, FTP and Webhooks.
CollabNet TeamForge is one of the popular open platform for agile software development. TeamForge helps to boost productivity and development efficiency with Agile, Continuous Integration and Delivery, and DevOps. It has the ability to integrate with a variety of open source and commercial tools like JIRA, Git, Jenkins and Chef. It makes the advantage of open source code and version management with both Git and SVN. The interface consists of collaborative tools communities, wikis, discussion boards and advanced reporting, configuration management and issue tracking system.
4) Apache Subversion
Apache Subversion, aka SVN is a free and open source software versioning and revision control system distributed under the Apache License. Subversion is widely used by software developers to maintain current and historical versions of files such as source code, web pages, and documentation. The free software community widely uses SVN in projects like Apache Software Foundation, Free Pascal, FreeBSD, GCC, Mono and SourceForge. Google Code used to provide Subversion hosting for their free software projects but it has been shutdown in early 2016. Whereas CodePlex offers access to Subversion as well as to other types of clients. SVN is widely used all over the world with primary objective to make version management easy and efficient.
Git is a free and open source distributed version controlling system designed to handle every type of projects from small to big with speed and efficiency. Git was created by Linus Torvalds in 2005 for a proper version controlling in the development of Linux Kernel licensed under the GNU GPL v2. It surpasses several other SCM tools like Subversion, CVS, Perforce and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows. As its a distributed version controlling system, every git directory on every machine is a full-fledged repository with a complete history and full version-tracking capabilities, independent of network access or a central server. We can get free and enterprise hosting of git repository in internet through many Git repository hosting providers like Github, Gitlab, Bitbucket.
6) Stash (Bitbucket Server)
Stash which is now Bitbucket Server is a JAVA based commercial software product but Atlassian provides it for free to open source projects for a proper and featured git repository. It has a web based interface for easy and convenient use of git. Bitbucket makes development of both open source and closed source applications fast and more collaboratively with its private and public repositories. The web interface of Stash is beautiful and responsive which enables it to be mobile friendly. Some of its features like user authentication, repository security, Bamboo integration and JIRA integration are remarkable for easy tracking, continuous integration and realtime collaboration.
7) Apache Ant
8) Apache Maven
Apache Maven is a free and open source comprehension, software project management and automation build tool used primarily for Java projects. It is based on the Post Object Model (POM) concept which is stored in a pom.xml file. Maven is also an awesome dependency management tool with automatic updating and dependency closures. Its repositories are regularly maintained making it instantly available with new features. The Maven project repositories are hosted by Apache Software Foundation and is released under the Apache License 2.0.
Rake is a Make-like program that allows us to specify tasks, dependencies as well as to group tasks in a namespace. It is a software task management and build automation tool which is written in Ruby language for building Ruby projects. In Rake, the dependencies and tasks are specified in a standard Ruby syntax. It support parallel execution of tasks and can also synthesize tasks based on patterns. It is a part of the standard library since the Ruby version 1.9.
Continuous integration and deployment
Jenkins is an open source Java based continuous integration tool used for software development. The project was forked from Hudson after a dispute with Oracle. It provides hundreds of extensions or plugins for a proper building, deploying and automating of any software project. It runs a server based system running in a servlet container and has the ability to build from various means, including being triggered by commit in a version control system, scheduling via a cron-like mechanism, building when other builds have completed, and by requesting a specific build URL. It can easily distribute work across multiple machines, making the overall development to deployment faster across multiple platforms.
Cucumber is a free and open source Ruby based software which is widely used for the purpose of testing other softwares. It runs automated acceptance tests written in a behavior-driven development (BDD) style. Cucumber projects are available for other languages beyond Ruby. Cucumber understands Gherkin language and uses it to define test cases designed to be non-technical and human readable, and collectively describes use cases related to a software system.
Bamboo Server is a Continuous integration server hosted by Atlassian which is free for open source projects whereas commercialised for commercial projects. It is considered to be the choice of professional teams for easy continuous integration, deployment, and delivery of software. Bamboo supports builds in any programming language using any build tool. It has a beautiful and responsive web design and easy user interface. Integration of other tools like JIRA Software, Bitbucket, HipChat and other 150+ addons makes Bamboo an awesome extensible piece of platform for the overall continuous integration activity.
TeamCity is a commercial Java-based build management and continuous integration server developed by JetBrains and licensed under a proprietary license were as open source projects can request for free use of it. TeamCity allows us to perform multiple builds and tests under different platforms and environments simultaneously with its smart configurations. It can be integrated with many IDEs like Eclipse, IntelliJ IDEA and Visual Studio. TeamCity can be integrated with more platforms like Jira, Bugzilla, Bitbucket, Maven, NuGet and cloud integration like Amazon EC2, Microsoft Azure, VMware vSphere.
Chef is a free and open source configuration management platform best known for its automation to deploy and manage IT services which is primarily written on Ruby and Erlang. It can easily be integrated with cloud-based platforms such as Amazon EC2, Google Cloud Platform, OpenStack, SoftLayer, Microsoft Azure and Rackspace to automatically provision and configure new machines. It is suitable from small scaled project to large enterprise level. Chef works on the configurations called recipes and those groups of recipes are called as cookbook. Chef is one of the most popular tool used for automation and deployment in the DevOps methodology.
Ansible is a free and open source simple and powerful platform for managing and configuring computers which combines multi-node software deployment, ad hoc task execution, and configuration management. It is widely used for automation of application, server deployment and manging systems. It is easy to learn because of its simplicity to perform a task. Ansible performs its work by the help of playbook where all the configurations are defined. Ansible works on both Linux and Windows over SSH and PowerShell respectively making it more secure as it does not deploy vulnerable agents to nodes. It was developed by Michael DeHaan and is maintained by the Red Hat Inc. and released under the GNU GPL license.
Puppet is an open source configuration management software which is written in Ruby and developed by Puppet Labs and licensed under Apache License 2.0. Puppet is used from a small startup to a large enterprise companies and organisations like Intel, NASA, Verizon, Sony, Twitter, Dell, etc. Puppet is a well known tool for automation and configuring systems and servers. All the required configurations are defined in files called Puppet manifests. It is model-driven, requiring limited programming knowledge to use. It is built for cross platform operating systems making it able to be run in Linux, Unix and MS Windows.
Docker is a free and open source project that provides an open platform to pack, ship and run any application which automates the deployment of applications inside a lightweight container. It has no boundaries of language support, frameworks or packaging system and can be run anywhere, anytime from a small home computers to high-end servers. It makes them great building blocks for deploying and scaling web apps, databases, and back-end services without depending on a particular stack or provider. Docker can be integrated into various infrastructure tools, including AWS, Ansible, Chef, Google Cloud Platform, Vagrant and more.
Amazon Web Service (AWS) is a service by Amazon which provides a suite of cloud computing services operated from 13 geographical regions across the globe. The cloud computing platforms like EC2 and S3 are pretty popular services used worldwide for businesses from small to large enterprises. AWS now has more than 70 services that span a wide range including compute, storage, networking, database, analytics, application services, deployment, management, mobile, developer tools and tools for the Internet of things. Servers on AWS are secure, fast and reliable with high scalability and availability.
Heroku is an online cloud platform which is extremely popular for deploying and running apps on a managed container system. It initially supported Ruby programming language whereas currently many numbers of programming languages like NodeJS, Java, Go, Python are supported by it. Heroku is a wholly owned subsidiary of Salesforce.com since 2010. It is an app-centric approach for software delivery, integrated with today’s most popular developer tools and workflows. Heroku makes it easy for the developers to focus on the modern app development than the platforms and systems. Heroku makes the production line of the application pretty easy with its easy to use interface.
Vagrant is a free and open source software that is widely used for creating and configuring one or multiple virtual development environments on top of other virtualization technologies like VirtualBox, Linux Containers, VMware, AWS, etc. The Vagrant images also known as boxes can be imported, exported and run from one computer to another. These days, many softwares are pre-loaded in a Vagrant box making it easy for the deployment of the product. We can specify certain parameters to the environment like memory, port forwarding, hostname, etc and deploy/configure multiple environment with Vagrant. It is widely used with the provisioning tools like shell scripts, Chef, Puppet which can be used to automatically install and configure software on the machine.
CoreOS is a free and open source light weighted linux based operating system designed for clustered and automated deployments, reliability, security and scalability of our applications. It uses the common software development kit of Gentoo Linux, Chrome OS and Chromium OS as the base system and adds new functionality and support for hardware used in servers. It is actively developed and maintained primarily by Alex Polvi, Brandon Philips and Michael Marineau and is released under Apache License 2.0. It can be run in any platform whether its a baremetal, provisioned virtual environment, private/public cloud. Apps running on CoreOS are containerized, providing developer-friendly tools for deploying software.
Monitoring and Alerting Tool
Nagios is a free and open source application which is widely used for monitoring and alerting services for servers, switches, services systems, networks and applications. It is a cross platform application written in C programming language and is released under GNU GPL version 2. Nagios consists of Nagios XI for powerful IT infrastructure monitoring, Nagios Log Server for enterprise-class log monitoring, management and analysis whereas Nagios Network Analyzer is for commercial-grade network flow data analysis solution for providing organisations with a view into all network traffic. It offers a beautiful web based interface making the management and configuration of Nagios backend very fast and easy.
PagerDuty is an alarm aggregation and dispatching service for system administrators with powerful visibility, reliable alerting, and improved collaboration. It collects alerts from the monitoring tools like Nagios, Icinga, Server Density, Munin and gives an overall view of all of our monitoring alarms, and alerts an on duty engineer if there's a problem. PagerDuty has the ability to alert an engineer via phone, SMS or email, to multiple numbers, with retries if there is any problem in the proper functioning of the server. Reliable and distributed architecture of PagerDuty makes it fully replicable in multiple data centers, with fast failover when an issue arises. It also has an on-call duty scheduling system and also has the ability to push the notifications via mobile phone apps.
Graphite is a free and open source simple tool which monitors and graphs the real-time performance of computer systems. It consists of three main components called carbon for listening for time-series data, whisper database library for storing time-series data and graphite django webapp which renders graphs on-demand using Cairo. Graphite is used in production by famous companies such as GitHub, Electronic Arts, Booking.com and more. It is highly scalable, can easily be run in a Linux machine to graph all sorts of metrics. Graphite is an excellent tool for organizing and rendering visual representations of data gathered from your system. It is highly flexible and can be configured so that we can get a broad and detailed overview of the performance and health of the computer systems.
Icinga is a free and open source software services and network monitoring system which was initially created as a fork of Nagios in 2009 that notifies users of outages, and generates performance data for reporting. It is a modular application consisting of Icinga Core, Web UI and other required plugins making it extensible for more features. As it is released under GNU GPL version 2. It is completely free to use, distribute and modify making it cross platform so it can run in wide ranges of operating systems and also provides its vagrant image for quick deployment. It is highly extensible and scalable which can monitor large and complex systems and environments. It can be easily integrated with BigPanda, VictorOps, etc and many other useful modules. Icinga has a good documentation for easy to configure and use it in our system.
DevOps is not just a tool but is also a movement of a group of people who believe in the appropriate use of technology and attitudes for the betterment of software development and delivery. It is a paradigm shift in which both sysadmins and developers work together, helping each other to blur the boundary. The above listed are some of the most popular tools widely used for the DevOps methodologies for a proper development of applications and perform operation and monitoring of a system or platform. So, if you have any questions, suggestions, feedback please write them in the comment box below. Thank you ! Enjoy :-)