FAQ
DevOps is a clipped compound term which combines “Development” and “Operations” practices of IT software development, having originated in the mid 2000s among IT professionals looking for efficient and innovative ways to automate and speed up the process of software delivery. As a change agent, DevOps promotes a culture of collaboration and information sharing across the organization, a radical departure from the ‘silos’ of the past.
Nowadays, the DevOps cultural movement has spread far and wide among the technical community and can no longer be confined to software development alone. Its scope of adoption has pervaded product engineering services, various devices of ‘Internet of Things’ and Cloud-enabled services, with CloudOps as a resulting metonym.
While the Developer community performs software development which is all about coding; writing the code, implementing, testing and re-writing the code, operations team looks after the systems that run that code. They work on things like how much processing power the software will need to run, how to make the software secure, how to make it run efficiently, and how to keep it running.
DevOps is needed when these two teams work for the same system, but operate with relatively different thought processes. DevOps helps these developer and operations communities to learn how to work in a new way that facilitates the complete cooperation with each other.
With DevOps, operations staff uses many of the techniques used by developers in their systems. DevOps provide a way for operations and development people with common methodologies and processes to work together in a mutual cooperation.
The biggest difference is that compared to pure play IT where you have to deal with software codes alone, when applying DevOps to IoT developments, you also need to take physical components, devices and existing legacy systems into account which together build in an extra layer of complexity in the overall automation process.
Then, there are specific challenges during each and every stage of the project, including a fragmented development pipeline comprising very small teams, automated Build-Verification-Test (BVT) plans, greater usage of legacy systems, non-unified release cadence and conversion of the entire production environment to a singular code (“environment as a code”).
For more information on this subject, we highly recommend that you check out this white paper written by eInfochips subject matter experts, titled “DevOps in the Age of Connected Devices”.
The electronic and industrial devices and intelligent gadgets commonly seen in IoT era operate based on the software running inside them producing advanced business intelligence (BI). This software has to be managed, tested and updated frequently, and in real time. Also, there are physically devices connected to each other, which may include GPS, cameras, accelerometers, energy meters, medical devices, machine sensors and so much more. DevOps is the only methodology available right now which can help prepare for real time failure scenarios with the use of simulators, virtual machines and remote monitoring and updates of firmware.
No, agile is not same as DevOps. However, agile can be used as a part of DevOps. Here are the ways in which they are different.
Agile is a software development methodology. Once the software is developed and released, the agile team doesn’t care about how the software is doing, instead, they move to next sprint.
DevOps is all about developing software, making it ready for release and deploying it in the safest, most reliable way. In DevOps, the software development doesn’t need to be using agile discipline. It may use waterfall development process as well.
The list below outlines continuous integration benefits:
- Fixing the bugs early
- Reducing risks greatly
- Reducing manual tests for successful continuous delivery
- Increasing transparency between QA and developer teams
Development teams adopting DevOps have to overcome challenges mainly due to their existing business environments comprising organizational silos which are a major impediment to the success of DevOps. The biggest problem lies in prioritizing the importance of the products, projects and applications for which monitoring and deployment has to be performed at multiple ends. In order to tackle these issues, DevOps streamlines automation processes to achieve business agility. This helps in delivering a product with total commitment and achieve better quality standards.
DevOps can be measured according to the following mentioned categories:
- Deployment frequency: Direct and indirect measure of response time, team efficiency and capabilities, and DevOps tools evaluation and effectiveness.
- Mean time to recover (MTTR): It is a metric which stands for time to recover from a given failure. It measures both team capability and the rate of failures.
- Change lead time: The time elapsed from first code sent to operational teams to its deployment at customer end which defines the complexity of the code and the team capabilities of developers.
- Change failure rate: The rate of frequent deployments across multiple endpoints on everyday basis to a benchmarked value.
It is possible to achieve continuous delivery with zero downtime for DevOps using any of the following techniques:
- A/B switch
- Software load balancers
- Delaying the port binding
TOSCA stands for Topology and Orchestration Specification for Cloud Applications. It deals with a missing piece in continuous testing hosted on cloud applications and services. The aims of TOSCA include a reduction in escaped bugs, reducing the cost of rework and gaining faster feedback cycle.
DevOps scrum methodology is a method of scrum which uses standard DevOps techniques to improve overall agility in a given business. It’s a more thoughtful approach which focuses on monitoring operational teams, QA and product teams in a cycle. It’s an agile development framework which includes multiple scrum features like product owner, web, mobile and QA which forming a scrum of scrum to deliver a product feature to customer.
Complex and fragmented development pipeline: Unlike pure-play IT, it is very challenging to streamline the team composition and workflow across multiple application delivery end points, including web, mobile, and devices.
Treating the “Environment” as a code: Product Development would require virtualization of multiple associated devices along with server infrastructure. The concept of ‘Infrastructure as code’ in IT needs to be extended towards offering complete ‘Environment as code’.
Ensuring product pipeline: With variety of devices and applications, it is very challenging to ensure product delivery to multiple customers (customization & enhancement) and varied market segments (Low, mid, & high). It requires multiple custom production environment that is difficult to reproduce and maintain at development stage.
Support to Legacy devices and solutions: Product along with cloud infrastructure brings in requirement for managing, updating, and maintaining existing devices on field, along with newly added devices, resulting in increased variations and complexity for Devops.
Release Cadence: Developing a unified release plan becomes a challenge with multiple solution components, including firmware, web app, mobile app, and pc app.
A typical DevOps workflow will include:
- Continuous integration:
- Integration of multiple pipelines (Device, Web and mobile) and prepare main and customized builds.
- Configuration and Automation of the environment setup
- Auto triggering of alerts and reports
- Continuous testing:
- Virtualization/Simulation
- Developing and triggering test script automation with simulation and physical devices
- Continuous delivery:
- Auto Build Deployment on devices and sensors
- Rollback management on the live environment, and generating automated alerts and reports on failure scenarios and performance issues.
- Continuous monitoring:
- It includes monitoring and automated troubleshooting of production and test environment, including device health.
- An automated alert mechanism
Key benefits for an organization moving to DevOps are:
- Reduced time-to-value / Faster time-to-market: Improved agility in product development
- Collaboration: Overcoming from Silos culture and opting for more collaboration and efficiency with different working departments.
- Customer Delight: Faster releases, improved agility & quality, and customized builds enables quicker resolution of customer requests.
- Operational Efficiency: The ability to scale faster helps in Opex/Capex optimization
- Cost Savings: High-scale automation enables to control remotely, reduce the outages, and eliminates product recalls.
Automated Build Verification Test (BVT) – BVT is focused on delivering the highest quality products, on time. BVT in agile-DevOps methodologies plays an important role in which QA team runs a set of pre-defined test cases for each new build to ensure that they are a stable build for further testing. These pre-defined test cases are for core functionality so that the product’s core functionality is not broken, with further eligibility to release this build to QA team for a thorough testing.
- Supports execution of repeated test cases
- Aids in testing a large test matrix
- Enables parallel execution
- Encourages unattended execution
- Improves accuracy by reducing human errors
DevOps scrum methodology is a method of scrum which uses standard DevOps techniques to improve overall agility in a given business. It’s a more thoughtful approach which focuses on monitoring operational teams, QA and product teams in a cycle. It’s an agile development framework which includes multiple scrum features like product owner, web, mobile and QA which forming a scrum of scrum to deliver a product feature to customer.