Planning the DevOps strategy
A good DevOps strategy, discussed in this book, helps the user gain in-depth and wider understanding of its subject and its application to multiple technologies and interfaces, to an organization provides focus, creates a common (unbiased) view of the current problems, develops the future state, unveils opportunities for growth, and results in better business outputs.
A holistic DevOps strategy, at the most basic level, must answer the following questions:
- What are our business aims and goals?
- How do we plan the roadmap? Where do we begin?
- How should we channel our efforts?
- What are we trying to accomplish?
- What is the schedule for this?
- What is the impact to the business?
- How do our stakeholders see the value?
- What are the benefits and costs of doing it?
A good DevOps strategy for an organization will bring multiple benefits, channel energy to focus on high impact problems, produce clarity to develop the future state, identify growth opportunities, and pave the way for better business outputs.
A DevOps platform strategy will be a unique and extensive program, covering every aspect of the software life cycle, which integrates multiple technologies, platforms, and tools, and posing numerous challenges that need to be handled with skill, precision, and experience.
An organization can consider the introduction of DevOps to cater to specific purposes, such as the following:
- Automating infrastructure and workflow configuration management
- Automating code repositories, builds, testing, and workflows
- Continuous integration and deployment
- Virtualization, containerization, and load balancing
- Big data and social media projects
- Machine-learning projects
There are a wide variety of open source tools to select for adoption in specific segments of DevOps, such as the following:
- Docker: A Docker container consists of packaging the application and its dependencies all up in a box. It runs as an isolated process on the host operating system, sharing the kernel with another container. It enjoys resource isolation and allocation benefits like VMs, but is much more portable and efficient.
- Kubernetes: Kubernetes is an open source orchestration system for Docker containers. It groups containers into logical units for easy management and discovery, handles scheduling on nodes, and actively manages workloads to ensure their state matches users' declared intentions.
- Jenkins: Jenkins is a web-enabled tool used through application or a web server such as Tomcat, for continuous build, deployment, and testing, and is integrated with build tools such as Ant/Maven and the source code repository Git. It also has master and dump slaves.
- Ansible: Ansible automates software provisioning, configuration management, and application deployment with agentless, Secured Shell (SSH) mode, Playbooks, Towers, and Yum scripts are the mechanisms.
- Chef and Puppet: Chef and Puppet are agent-based pull mechanisms for the deployment automation of work units.
- GitHub: Git is a popular open source version control system. It's a web-based hosted service for Git repositories. GitHub allows you to host remote Git repositories, and has a wealth of community-based services that make it ideal for open source projects.
There are comprehensive frameworks readily available, such as RedHat Openshift, Microsoft Azure, and AWS container services, with pre-integrated and configured tools to implement.
A few popular open source tools are listed here:
- Source code management: Git, GitHub, Subversion, and Bitbucket
- Build management: Maven, Ant, Make, and MSBuild
- Testing tools: JUnit, Selenium, Cucumber, and QUnit
- Repository management: Nexus, Artifactory, and Docker hub
- Continuous integration: Jenkins, Bamboo, TeamCity, and Visual Studio
- Configuration provisioning: Chef, Puppet, Ansible, and Salt
- Release management: Visual Studio, Serena Release, and StackStorm
- Cloud: AWS, Azure, OpenShift, and Rackspace
- Deployment management: Rapid Deploy, Code Deploy, and Elastic box
- Collaboration: Jira, Team Foundation, and Slack
- BI/Monitoring: Kibana, Elasticsearch, and Nagios
- Logging: Splunk, Logentries, and Logstash
- Container: Linux, Docker, Kubernetes, Swam, AWS, and Azure