Introduction
Some might define it as a software development method, while others might think that it is a set of tools and technologies such as configuration management and continuous delivery(me).
Devops is a professional and cultural movement that stresses the iterative efforts to break down information silos, monitor relationships and repair when misunderstandings arise between teams in an organization. This enables an organization to deliver services faster, evolve and improve products at a faster pace than organizations using traditional software development and infrastructure management processes. It also enables organizations to compete more effectively in the market.
Devops is an acronym for developers and operations. I won’t get into detail about how it came about. This was initially a presentation I did during team calls we have at FrontlineSMS and just decided to convert it into a blog post. I am no expert
misconceptions about devops
- Devops only involves developers and system administrators - the name might inidicate that it involves only developers and operations. In real sense, the concepts and ideas of devops can and should be expanded to include others as necessary.
- Devops is a team - creating a team called devops, or renaming an existing team to devops as a way to check off an item on a checklist, is neither necessary nor sufficient for creating a devops culture.
- Devops is a job title - The job title has been described in various ways, including a system administrator who also knows how to write code, a developer who knows the basics of system administration, or some mythical 10X engineer (said to be ten times as pro‐ ductive as other engineers, though this is difficult to measure and often used figuratively) who can be a full-time system administrator and full-time developer for only the cost of one salary without any loss in the quality of their work. In addition to being totally unrealistic, the concept of a devops engineer doesn’t scale well.
- Devops is at its core a cultural and professional movement, and its ideas and principles need to be used by everyone in order to be effective.
- Devops is only relevant to web startups.
- Devops is about tools - While tools are valuable, devops does not mandate or require any particular tools. The tools make it possible to achieve devops
- Devops, being a cultural movement, is technology-agnostic.
- Devops doesn’t require a particular set of tools. ANd should be able to be applied in any stack.
- You need a devops certification - Devops is a cultural movement - how do you certify culture? There is no 60 minute exam that can certify how effectively you communicate with other people, how well teams in your company work together, how your organization learns, or anything else like that.
- Devops means doing all the work with half the people. - There are some people under the impression that devops is a way to get both a software developer and a system administrator in one person - and with one person’s salary. Not only is this perception incorrect, it is often harmful.
- Devops doesn’t save money by cutting the number of engineers your company needs in half. Rather, it allows organizations to increase the quality and efficiency of their work, reducing the number and duration of outages, shortening development times, and improving both individual and team effectiveness.
- It will take X weeks/months to implement devops. - this assumes that devops is a fixed or easily definable or measurable state, and once that state is reached then the work is done. In reality, devops is an ongoing state - it is the journey, not the destination. Some parts of it will have a fixed end point - such as setting up a configuration management system and making sure that all the company’s servers are being managed by it - but the ongoing maintenance and development of configura‐ tion management will continue. Because so much of devops is cultural, it is harder to predict how long some of those changes will take - how long will it take people to break old siloed habits and replace them with new collaborative ones?
- Devops is about automation - When it comes to devops most people focus on things like configuration management and continuous integration. Some people see devops as just a way to automate traditional system developers out of their jobs.
- Devops is a movement that wants to improve how people work together. If there are repetitive tasks that could be automated to free up a human from having to do them, that automation helps that person work more efficiently.
- Devops is a fad - Because devops is not a particular technology, tool, or methodology, it is unlikely to become obsoleted or replaced. Ultimately, time will tell if devops fades into obscurity a footnote in the historical recounting of workplace organization. A movement about improving organizational effectiveness as well as individual employee happiness seems very unlikely to be merely a passing trend.
Factors contributing to widesacale adoption of Devops
- Data explosion.
- Cloud computing.
- Big Data.
- Data Science and Machine learning.
- Computer Hardware advancements.
Benefits of devops
- Improved development speeds: Organization spend more time building features that their customers care about delivery is timely.
- Devops can be implemented as a stand-alone process or it can be incorporated with other processes.
- Improves the reliability of a platform through continuous integrations, automated tests, monitoring and logging.
- There’s consistency with updates/ the infrastructure is more stable.Automation and consistency help you manage complex or changing systems efficiently and with reduced risk
- Improved collaboration and communication between the Developer and operations teams since devops emphasizes on values such as ownership and accountability. Teams operate closely and share many responsibilities, and combine their workflows. this reduces efficiency and saves time. i.e reduced handover periods between developers and operations, writing code that takes into account the environment in which it is run.
- Devops makes it easy to scale your platform to handle business requirements. since the infrastructure is managed as code.
How to adopt devops
- Removing barriers between development and operations. but this can be expanded to include other teams as required
- Increasing inter-team collaborations
- Building effective communication between teams leading to increased efficiencies
- Teams should take full ownership of services,
- Teams need to take full ownership for the services, often beyond where their stated roles or titles have traditionally been.
Devops best practices
There are a few key practices that help organizations innovate faster through automating and streamlining the software development and infrastructure management processes. Most of these practices are accomplished with proper tooling.
The adoption of DevOps best practices will help to align people and progress towards organizational goals. DevOps offers multiple process frameworks at every stage of software development. Full-scale implementation of DevOps in an organization requires a cultural shift integrating departments, people, and the process of software life cycles
Here are some of the practices.
- Source code Management
- A source code management system enables multiple developers to develop code concurrently across multiple development centers spread across diverse geographies. some benefits include:
- Developers merge their code changes to the main or sub branch which can be tracked, audited, enquired for bug fixes, and rolled back if needed.
- Improved coordination of services btwn members of a software development team
- There’s a single source of truth for any version of the app
- Allows review of changes before implementing.
- Track co-authoring, collaboration and individual contribution.
- Continuous integration
- Continuous integration is a software development practice where developers regularly merge their code changes into a central repository, after which automated builds and tests are run. The key goals of continuous integration are to find and address bugs quicker, improve software quality, and reduce the time it takes to validate and release new software updates.
- Benefits include:
- Availability of latest code as we commit early and often
- Faster build cycles as build issues are exposed early.
- Transparency in the build process means better ownership and lesser defects.
- Automating the deployment process leads to a quick turnaround.
- Tools: Jenkins, TeamCity, Travis, GitLab CI, CircleCI, Codeship, Bamboo, Chef, Buddy, BitBucket
- Continuous delivery
- Continuous delivery is a software development practice where code changes are automatically built, tested, and prepared for a release to production.
- It is the next step of continuous integration. It expands upon continuous integration by deploying all code changes to a testing environment and/or a production environment after the build stage.
- When continuous delivery is implemented properly, developers will always have a deployment-ready build artifact that has passed through a standardized test process.
- Benefits:
- Developed code is continuously delivered.
- Code is constantly and regularly reviewed
- High quality software is deployed rapidly, reliably and repeatedly.
- Maximum automation and minimum manual overhead
- Frequent product releases deliver software as fas as possible.
- Most current version of the product is ready in shippable format.
- Effective collaboration between dev, qa and ops teams leads to higher output and satisfied customers.
- Consolidated access to all tools, process and resource data leads to quicker troubleshooting and time to market.
- Tools: Jenkins, TeamCity, Travis, GitLab CI, CircleCI, Codeship, Bamboo, Chef, Buddy, BitBucket
- Infrastructure as code
- Infrastructure as code is a practice in which infrastructure is provisioned and managed using code and software development techniques, such as version control and continuous integration, typically as configuration definitin files, such as shell scripts, Ansible playbooks, chef recipes or puppet manifests.
- The cloud’s API-driven model enables developers and system administrators to interact with infrastructure programmatically, and at scale, instead of needing to manually set up and configure resources. Benefits:
- Because they are defined by code, infrastructure and servers can easily be replicated and modified/updated.
- The version of all the code changes is less error prone and has reproducible results.
- System availability is high, with less downtime
- Multiple servers can be updated simultaneously
- Smaller regular changes are easy to manage.
- Tools:: Ansible tower, AWS cloudformation, Chef, puppet, Ansible, Terrafom, SaltStack.
- Monitoring and logging
- Organizations monitor metrics and logs to see how application and infrastructure performance impacts the experience of their product’s end user.
- Benefits:
- Monitoring sheds insights into the root causes of problems or unexpected changes.
- Capturing, categorizing, and then analyzing data and logs generated by applications and infrastructure, helps organizations understand how changes or updates impact users.
- Creating alerts or performing real-time analysis of this data also helps organizations more proactively monitor their services.
- Communication and Collaboration
- Increased communication and collaboration in an organization is one of the key cultural aspects of DevOps.
- The use of DevOps tooling and automation of the software delivery process establishes collaboration by physically bringing together the workflows and responsibilities of development and operations.
- teams set strong cultural norms around information sharing and facilitating communication through the use of chat applications, issue or project tracking systems, and wikis. This helps speed up communication across developers, operations, and even other teams like marketing or sales, allowing all parts of the organization to align more closely on goals and projects.
- Source:: https://aws.amazon.com/devops/what-is-devops/
Devops + agile
- Devops shares many common characteristics with the Agile movement, especially with the focus on individuals, interactions, and collaboration. You might wonder if devops is just “rebranded” Agile.
- Devops extends Agile ideas and applies them to an entire organization, not only the development process.