{"id":1089,"date":"2023-04-20T09:49:40","date_gmt":"2023-04-20T09:49:40","guid":{"rendered":"https:\/\/imalogic.com\/blog\/?p=1089"},"modified":"2024-07-03T11:03:02","modified_gmt":"2024-07-03T11:03:02","slug":"continous-delivery-devops","status":"publish","type":"post","link":"https:\/\/imalogic.com\/blog\/2023\/04\/20\/continous-delivery-devops\/","title":{"rendered":"Continous Delivery DevOps"},"content":{"rendered":"<body>\n<h1 class=\"wp-block-heading\">What Is DevOps?<\/h1>\n\n\n\n<p>The goal of DevOps is to build better, faster and more responsive software by bringing\u00a0Development and\u00a0Operations teams together. DevOps is not a methodology or a suite of tools but a cultural shift to remove the barriers between Dev and Ops in order to meet the need for shorter and more frequent software deliveries. This will allow your organization to respond in a more agile manner to changing business requirements. The DevOps cultural shift depends on continuously optimizing workflow, architecture, and infrastructure in order to deliver high-quality applications.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">From the Agile Model to the DevOps Model<\/h1>\n\n\n\n<p>Software developed with the Agile Model adheres to the following four basic priorities stated in The Agile Manifesto:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Individuals and interactions over processes and tools;<\/li>\n\n\n\n<li>Working software over comprehensive documentation;<\/li>\n\n\n\n<li>Customer collaboration over contract negotiation; and<\/li>\n\n\n\n<li>Responding to change over following a plan.<\/li>\n<\/ul>\n\n\n\n<p>Agile development takes a test-first approach, rather than the test-at-the-end approach of traditional development. In agile testing, code is developed and tested in small increments of functionality. Agile project management promotes frequent interaction between an IT department and business users and tries to regularly build and deliver software that meets business users\u2019 changing requirements. The flexible approach of the Agile Model helps to ensure a streamlined software development process that responds quickly to customer demand in a wide variety of use cases.<\/p>\n\n\n\n<p>Agile software development can be implemented with a number of methodologies, including Scrum, Kanban, Scrumban (a mix of Scrum and Kanban), extreme programming, and many more. In the Scrum methodology, the development effort is broken down into a series of short \u2018sprints,\u2019 or iterations, typically lasting 2 to 4 weeks. The goal of each sprint is to create potentially shippable software by adding new or enhancing existing application features.<\/p>\n\n\n\n<p>The DevOps Model is the \u2018Agile Model on steroids,\u2019 which extends the cross-functional Agile team made up of software designers, testers and developers to include support people from Operations. The focus of this expanded agile team is the overall service or software your company delivers to its customers, instead of just \u201cworking software\u201d (the 2nd of the 4 Agile principles listed above).<\/p>\n\n\n\n<p>Building a successful continuous, two-way DevOps software pipeline between your company and your customers means creating a DevOps culture of collaboration among the various teams involved in software delivery (developers, operations, quality assurance, business analysts, management, and so forth), as well as reducing the cost, time, and risk of delivering software changes by allowing for more incremental updates to applications in production. In practice, this means teams produce software in short cycles, ensuring that the software can be reliably released at any time. Where regular agile teams strive to deliver shippable software in 2 to 4 weeks, the ideal DevOps goal is to deliver code to production daily or every few hours.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Finding the Right DevOps Testing Strategy<\/h1>\n\n\n\n<p>The aim of most DevOps projects is to automate as many manual processes in their software delivery process as possible. Some roadblocks in a DevOps pipeline that lead to slow deployment include error-prone manual processes such as handoffs from a development group to a QA group, including ones that require signatures or bureaucratic approval. These kinds of handoffs mean there is a lack of shared ownership of the end product, which is contrary to the basic agile testing and development methodology that says all members of a cross-functional agile team are equally responsible for the quality of the product or the success of the project. Because of this, testing on an agile DevOps project is done by the whole team, including developers, testers and operations people. In the DevOps model, testing is done continuously\u2014early, often and even after applications are in production.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Continuous delivery vs. Continuous deployment vs. Continuous integration vs. Continuous Testing<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Pros and Cons of DevOps Continuous Testing<\/h2>\n\n\n\n<p>Continuous Testing\u00a0needs to be a key element your DevOps testing strategy if you want to\u00a0successfully implement a DevOps pipeline. Continuous Testing, which is often called\u00a0shift-left testing, is an approach to software and system testing in which testing is performed earlier in the software lifecycle, with the goal of increasing quality, shortening long test cycles and reducing the possibility of software defects making their way into production code.<\/p>\n\n\n\n<p>Continuous Testing is one of several continuous activities that should take place simultaneously in a DevOps pipeline, including<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Continuous Development;<\/li>\n\n\n\n<li>Continuous Integration (CI);<\/li>\n\n\n\n<li>Continuous Delivery\u00a0(CD) and \u00a0<\/li>\n\n\n\n<li>Continuous Monitoring<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops1.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"810\" height=\"510\" data-attachment-id=\"1090\" data-permalink=\"https:\/\/imalogic.com\/blog\/2023\/04\/20\/continous-delivery-devops\/devops1\/\" data-orig-file=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops1.png?fit=823%2C518&amp;ssl=1\" data-orig-size=\"823,518\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"devops1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops1.png?fit=810%2C510&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops1.png?resize=810%2C510&#038;ssl=1\" alt=\"\" class=\"wp-image-1090\" loading=\"lazy\" srcset=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops1.png?w=823&amp;ssl=1 823w, https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops1.png?resize=300%2C189&amp;ssl=1 300w, https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops1.png?resize=768%2C483&amp;ssl=1 768w\" sizes=\"auto, (max-width: 810px) 100vw, 810px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Continuous Development or build automation is the first stage in implementing a Continuous Delivery DevOps pipeline. If your developers are practicing\u00a0test-driven development\u00a0(TDD), they\u2019ll write unit tests for each piece of code they write, even before the code itself is written. An important part of the agile methodology, TDD helps developers think through the desired behavior of each unit of software they\u2019re building, including inputs, outputs, and error conditions. New features implemented by developers are then checked into a central code base prior to the software build, which compiles the source code into binary code.<\/p>\n\n\n\n<p>Continuous Integration is a practice where members of a software development team use a version control system and integrate their work frequently to the same location, such as a master branch. Each change is built and verified by means of tests and other verifications in order to detect any integration errors as quickly as possible. With build automation, the software build happens automatically, using tools such as Makefiles or Ant, rather than when a developer manually invokes the compiler.<\/p>\n\n\n\n<p>In the last stage of a Continuous Delivery pipeline, once an application passes all the required tests, it\u2019s then released into production. For all intents and purposes, this means releasing every good build to users. The upside of Continuous Delivery is that it allows delivery of new functionality to users within minutes whenever it\u2019s needed, as well as instant feedback to the DevOps testing team that, in turn, allows them to respond rapidly to customer demand. A big CD downside is a risk of releasing buggy software into production faster, which will alienate end-users and cause your company to lose customers. To mitigate the risk involved with continuous deployment, many DevOps teams also test in production, otherwise known as\u00a0shift-right testing, in order to obtain user feedback and incorporate it into successive builds. This last phase is often aided by Continuous Monitoring tools (more on this below).<\/p>\n\n\n\n<p>Multiple teams work together as a DevOps team, so DevOps has an impact on not only QA but also developers, operations, business analysts, production support, etc. Testing is a critical element in promoting cohesiveness and collaboration between the various teams, automation of everything possible. Testing also allows for continuous improvement in the test process delivered via iterations.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops2.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"298\" height=\"169\" data-attachment-id=\"1091\" data-permalink=\"https:\/\/imalogic.com\/blog\/2023\/04\/20\/continous-delivery-devops\/devops2\/\" data-orig-file=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops2.png?fit=298%2C169&amp;ssl=1\" data-orig-size=\"298,169\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"devops2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops2.png?fit=298%2C169&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops2.png?resize=298%2C169&#038;ssl=1\" alt=\"\" class=\"wp-image-1091\" loading=\"lazy\"><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Developing your devops testing strategy<\/h2>\n\n\n\n<p>A successful\u00a0DevOps testing strategy\u00a0is one aimed at building, testing and releasing software faster and more frequently. If you\u2019re lucky enough to start out in a \u201cgreenfield\u201d organization without an established coding culture, it\u2019s a good idea to try to create and\u00a0automate your software delivery pipeline\u00a0upfront. If you\u2019re successful out-of-the-gate in creating a Continuous Delivery DevOps pipeline, your business will be much more competitive since you\u2019ll be able to get higher-quality software into the hands of your users and customers faster than your competitors, and you\u2019ll be able to react to business demand and change much more rapidly.<\/p>\n\n\n\n<p>If you are adding a DevOps pipeline to an existing organization, where you start depends on your current development and testing practices and the bottlenecks in your software delivery process. These bottlenecks can include slow, error-prone manual processes as well as poor-quality, big-bang rollouts that fail in production, leading to unhappy users.<\/p>\n\n\n\n<p>There are several ways to get a handle on the current state of your deployment processes, including using workflow visualization tools like flowcharts and business process maps to breakdown and understand your current delivery processes. One of the simplest visual process management tools you can use to help make these kinds of decisions is a Kanban board.<\/p>\n\n\n\n<p>Kanban boards, like the one pictured below, are typically just sticky notes on a whiteboard that are used to communicate project status, progress, and other issues.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops3.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"605\" height=\"319\" data-attachment-id=\"1092\" data-permalink=\"https:\/\/imalogic.com\/blog\/2023\/04\/20\/continous-delivery-devops\/devops3\/\" data-orig-file=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops3.png?fit=605%2C319&amp;ssl=1\" data-orig-size=\"605,319\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"devops3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops3.png?fit=605%2C319&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops3.png?resize=605%2C319&#038;ssl=1\" alt=\"\" class=\"wp-image-1092\" loading=\"lazy\" srcset=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops3.png?w=605&amp;ssl=1 605w, https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops3.png?resize=300%2C158&amp;ssl=1 300w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>The main advantage of using Kanban in your DevOps roadmap is that it encourages your teams to focus on improving workflow. It does this by highlighting bottlenecks in the pipeline that cause work to slow work down or otherwise impact the performance indicators your entire DevOps team has mutually agreed on\u2013such as application time-to-market, systems uptime, code quality, customer satisfaction, and so on.<\/p>\n\n\n\n<p>Kanban also helps your Dev and Ops people to work in a collaborative manner, which they may not be used to doing. Once they start talking about how to eliminate duplicate work and how to optimize your company\u2019s release management processes, you\u2019ll likely see an evolution over a period of time into a single team and single workflow that includes all of Dev and Ops activities\u2013and a transformation to a DevOps culture.<\/p>\n\n\n\n<p>It\u2019s also likely that developers and testers on your DevOps teams will have some familiarity with Kanban if they\u2019ve been using Scrum or other\u00a0Agile methodologies, and they\u2019ll be able to help your Operations people get up to speed with the concept of flow, which basically is what Kanban is all about.<\/p>\n\n\n\n<p>[Atlassian offers the following tutorial that Zephyr for Jira tool users can use to better understand Kanban: \u201cLearn Kanban with Jira Software Tutorial\u201d:\u00a0https:\/\/www.atlassian.com\/agile\/tutorials\/how-to-do-kanban-with-jira-software\u00a0(Step-by-step instructions on how to drive a Kanban project with Jira Software)]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Best practices for continuous testing<\/h2>\n\n\n\n<p><strong>Automate as Many Tests as You Can<\/strong><\/p>\n\n\n\n<p>Continuous Testing means testing early and often. This is obviously a\u00a0major challenge for your DevOps team\u00a0if the applications in your pipeline are constantly being updated via Continuous Integration, where the code is integrated into a shared repository on a constant basis. A best practice is to use\u00a0test automation\u00a0to eliminate much of the risk that comes with CI and to get quick feedback on application quality. Pairing CI with automation enables teams to easily test every new code iteration and reduces the opportunity for team members to add errors. Use the Test Automation Pyramid below as a strategy guide to planning your DevOps testing strategy. As shown in the illustration, the base or largest section of the pyramid is made up of Unit Tests\u2013which will be the case if developers in your organization are integrating code into a shared repository several times a day. This involves running unit tests, component tests (unit tests that touch the filesystem or database), and a variety of acceptance and integration tests on every check-in.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops4.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"235\" height=\"215\" data-attachment-id=\"1093\" data-permalink=\"https:\/\/imalogic.com\/blog\/2023\/04\/20\/continous-delivery-devops\/devops4\/\" data-orig-file=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops4.png?fit=235%2C215&amp;ssl=1\" data-orig-size=\"235,215\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"devops4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops4.png?fit=235%2C215&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops4.png?resize=235%2C215&#038;ssl=1\" alt=\"\" class=\"wp-image-1093\" loading=\"lazy\"><\/a><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-center\">Figure 1: Test Automation Pyramid<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Use Pair Testing on Tests You Don\u2019t Automate<\/h2>\n\n\n\n<p>Knowledge transfer via pair testing is another best practice and one of the\u00a0most efficient ways\u00a0to train new members and maintain DevOps pipeline velocity, assuming your team has senior testers or developers who are willing to share their knowledge and time with new team members. Pair testing is similar to pair programming, which is an agile software development technique in which two programmers work together at one workstation. In pair testing, two team members work together at one keyboard to test the software application. One does the testing and the other analyzes or reviews the test results. This can be done between a tester and a developer or a business analyst or between two testers with both participants taking turns at driving the keyboard. Pair testing is useful in breaking down communication barriers between developers, QA testers and application\/platform operators and creating interdependency between people in functional silos\u2013 thus building strong workplace alliances.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><a>DevOps Tools<\/a><\/h1>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops5.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"497\" height=\"270\" data-attachment-id=\"1094\" data-permalink=\"https:\/\/imalogic.com\/blog\/2023\/04\/20\/continous-delivery-devops\/devops5\/\" data-orig-file=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops5.png?fit=497%2C270&amp;ssl=1\" data-orig-size=\"497,270\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"devops5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops5.png?fit=497%2C270&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops5.png?resize=497%2C270&#038;ssl=1\" alt=\"\" class=\"wp-image-1094\" loading=\"lazy\" srcset=\"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops5.png?w=497&amp;ssl=1 497w, https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops5.png?resize=300%2C163&amp;ssl=1 300w\" sizes=\"auto, (max-width: 497px) 100vw, 497px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>As mentioned earlier, software applications pass through five different stages when developed in a DevOps pipeline:<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"1\" style=\"list-style-type:1\">\n<li>Continuous Development<\/li>\n\n\n\n<li>Continuous Testing<\/li>\n\n\n\n<li>Continuous Integration<\/li>\n\n\n\n<li>Continuous Delivery<\/li>\n\n\n\n<li>Continuous Monitoring<\/li>\n<\/ol>\n\n\n\n<p>Because DevOps is a cultural shift that promotes collaboration between development, QA and operations, there is no one single product that can be considered the definitive DevOps tool. Often a collection of tools, from a variety of vendors, are used in one or more stages of the DevOps toolchain. The DevOps tools used in each stage will vary from organization to organization, based on tools already in place, the skill level of your developers and testers, and the types of applications you\u2019re deploying.<\/p>\n\n\n\n<p>Here is a short list of some the most common DevOps tools and an explanation of how they\u2019re used in each stage:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Continuous development with jira<\/h2>\n\n\n\n<p>The de facto standard for the agile DevOps software development and testing,\u00a0Jira Software\u00a0has powerful collaborative functionality that visually highlights issues as they move through the project workflow, which makes the Jira platform easy to use for planning development, tracking daily work and reporting on project progress.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Continuous testing with zephyr for jira<\/h2>\n\n\n\n<p>Although Jira Software is designed for issue, project and workflow tracking on IT projects, many DevOps teams are also using it for test case management so that development and testing teams can work together in one system. Test issues can be created, executed, tracked and reported on just like any other Jira issue in\u00a0Zephyr for Jira, which has the same look n\u2019 feel of Jira.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Continuous integration with Jenkins<\/h2>\n\n\n\n<p>Jenkins\u00a0is a\u00a0CI\/CD server\u00a0that runs tests automatically every time a developer pushes new code into the source repository. Because CI detects bugs early on in development, bugs are typically smaller, less complex and easier to resolve. Originally created to be a build automation tool for Java applications, Jenkins has since evolved into a multi-faceted platform with over a thousand plug-ins for other software tools. Because of the rich ecosystem of plug-ins, Jenkins can be used to build, deploy and automate almost any software project\u2013regardless of the computer language, database or version control system used.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Continuous delivery\/deployment with puppet or chef<\/h2>\n\n\n\n<p>Automated configuration tools such as\u00a0Puppet\u00a0or\u00a0Chef\u00a0allow you to avoid the problem of \u201csnowflake servers\u201d in your delivery\/deployment environment. \u201cSnowflake servers\u201d are long-running production servers that have been repeatedly reconfigured and modified over time with operating system upgrades, kernel patches, and\/or system updates to fix security vulnerabilities. This leads to a server that is unique and distinct, like a snowflake, which requires manual configuration above and beyond that covered by automated deployment scripts.<\/p>\n\n\n\n<p>Using definition files (called manifests in Puppet, or recipes in Chef) to describe the configuration of the elements of a server is a key best practice in\u00a0Infrastructure as Code, which allows environments (machines, network devices, operating systems, middleware, etc.) to be configured and specified in a fully automatable format rather than by physical hardware configuration or the use of interactive configuration tools.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Continuous monitoring with splunk or elk<\/h2>\n\n\n\n<p>Both\u00a0Spunk\u00a0and\u00a0Elk\u00a0are log monitoring tools that allow you to do data analysis on transactions that take place in your IT applications after they\u2019ve been deployed to ensure uniform performance, availability, security, and user experience. Both Splunk and ELK supply a scalable way to collect and index log files and provide a search interface for users to interact with the data in order to create visualizations such as reports, dashboards or alerts.<\/p>\n\n\n\n<p>Splunk is a paid service that bills according to the volume of your transactions. The ELK Stack is a set of three open-source products\u2014Elasticsearch, Logstash, and Kibana\u2014all developed and maintained by Elastic.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Devops testing tools<\/h2>\n\n\n\n<p>Using some or all of the following DevOps testing tools provides numerous benefits to DevOps teams\u2013 including improving your teams\u2019 code quality, accelerating the time-to-market of software in your DevOps pipeline and providing fast and continuous feedback that will increase collaboration among development, testing, and operations teams.<\/p>\n\n\n\n<p>The first tests that should be done in a DevOps pipeline are unit tests that developers write as part of the\u00a0test-driven development\u00a0(TDD) process. If your developers are practicing TDD, they\u2019ll write unit tests for each piece of code they write, even before the code itself is written. An important part of the agile methodology, TDD helps developers think through the desired behavior of each unit of software they\u2019re building, including inputs, outputs and error conditions.<\/p>\n\n\n\n<p>TDD tools include\u00a0JUnit, one of a family of open source unit testing frameworks that are collectively known as\u00a0xUnit. Used by Java developers to write repeatable cases that increase programming speed and improve code quality, JUnit provides features such as fixtures, test suites, JUnit classes, and test runners.\u00a0TestNG\u00a0is an enhanced version of JUnit that covers a wider range of test categories: unit, functional, end-to-end, integration, etc.<\/p>\n\n\n\n<p>In addition to doing unit and component testing, many agile DevOps teams also practice test-first approaches such as\u00a0acceptance test-driven development\u00a0(ATDD) and\u00a0behavior-driven development\u00a0(BDD) for tests higher up the Test Automation Pyramid (described above). This allows testing to be repeated in increments as software components are assembled upon each other.<\/p>\n\n\n\n<p>Cucumber\u00a0is a tool based on behavior-driven development that encourages a culture of collaboration between developers, QA and non-technical or business participants on DevOps and other software projects. BDD bridges the communication gap between business and IT by writing test cases in a natural language that non-programmers and domain experts can read. BDD features are usually defined in a GIVEN WHEN and THEN (GWT) format, which is a semi-structured way of writing test cases.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Devops test automation<\/h2>\n\n\n\n<p>Choosing the right\u00a0DevOps test automation tool\u00a0is vitally important for your organization since the right software testing tool in the right hands can foster team collaboration, drive down costs, shorten release cycles, and provide real-time visibility into the status and quality of applications in your DevOps pipeline.<\/p>\n\n\n\n<p>Test automation works by running a large number of tests repeatedly to make sure an application doesn\u2019t break whenever new changes are introduced\u2014at the different Unit-, API- and GUI-levels of the Test Automation Pyramid. In addition to\u00a0Continuous Integration\u00a0tools such as Jenkins described above, here are some other useful tools for building, testing and deploying applications automatically when requirements change in order to speed up the release velocity of your pipeline apps.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Transitioning from a traditional IT development structure<\/h2>\n\n\n\n<p>Transitioning from a traditional IT development structure using older technologies such as mainframes, Waterfall methodologies, and separate teams (developers, testers, project managers, analysts) to a DevOps-supporting structure involves significant changes in culture, processes, tools, and organization. Here are the key points to watch for during this transition:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Cultural and Mindset Change<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Collaboration and Communication<\/strong>: Promote a culture of open collaboration and communication between development, operations, and other stakeholders.<\/li>\n\n\n\n<li><strong>Shared Responsibility<\/strong>: Encourage shared responsibility for deliveries, quality, and application performance.<\/li>\n\n\n\n<li><strong>Adoption of Continuous Improvement<\/strong>: Establish a mindset of continuous improvement where experimentation and innovation are encouraged.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>Training and Education<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Training on DevOps Practices<\/strong>: Organize training for teams on DevOps principles and practices, including Continuous Integration (CI), Continuous Delivery (CD), and Infrastructure as Code (IaC).<\/li>\n\n\n\n<li><strong>Cross-Functional Skills<\/strong>: Develop cross-functional skills within teams so members can understand and contribute to different aspects of the DevOps pipeline.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. <strong>Modernizing Technologies and Tools<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Adopting New Technologies<\/strong>: Gradually migrate from older technologies like mainframes to modern architectures such as microservices and containers.<\/li>\n\n\n\n<li><strong>Automation Tools<\/strong>: Implement automation tools for CI\/CD (e.g., Jenkins, GitLab CI\/CD), configuration management (e.g., Ansible, Chef, Puppet), and monitoring (e.g., Prometheus, Grafana).<\/li>\n\n\n\n<li><strong>Infrastructure Management with IaC<\/strong>: Use tools like Terraform to manage infrastructure through code, enabling reproducible and versioned deployments.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. <strong>Reorganizing Teams<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cross-Functional Teams<\/strong>: Create cross-functional teams composed of developers, testers, analysts, and operations personnel working together throughout the product lifecycle.<\/li>\n\n\n\n<li><strong>Integrated Skills<\/strong>: Ensure each team has the necessary skills for development, deployment, and application management.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5. <strong>Transforming Processes<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Transition to Agile and Scrum<\/strong>: Adopt agile methodologies (e.g., Scrum, Kanban) to foster shorter, iterative development cycles.<\/li>\n\n\n\n<li><strong>CI\/CD Pipeline<\/strong>: Implement a CI\/CD pipeline to automate the build, test, and deployment process, ensuring continuous and high-quality deliveries.<\/li>\n\n\n\n<li><strong>Monitoring and Feedback<\/strong>: Implement continuous monitoring and feedback mechanisms to detect and fix issues quickly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6. <strong>Integrated Security (DevSecOps)<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Automated Security Testing<\/strong>: Integrate automated security tests into the CI\/CD pipeline to detect vulnerabilities early in the development process.<\/li>\n\n\n\n<li><strong>Security Training<\/strong>: Educate teams on security best practices to ensure security is considered at every stage of development.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7. <strong>Change Management<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Change Management Plan<\/strong>: Develop a change management plan to guide the transition, including clear steps, responsibilities, and milestones.<\/li>\n\n\n\n<li><strong>Communication and Transparency<\/strong>: Ensure regular and transparent communication with all stakeholders to manage expectations and resistance to change.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8. <strong>Continuous Evaluation and Adjustment<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Performance Metrics<\/strong>: Implement performance metrics (KPIs) to measure the effectiveness of DevOps processes and identify areas for improvement.<\/li>\n\n\n\n<li><strong>Feedback and Improvement<\/strong>: Use feedback from teams and users to continually improve DevOps practices and tools.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9. <strong>Executive Support<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Executive Buy-In<\/strong>: Secure active support from executives for DevOps initiatives, including investment in time, resources, and training.<\/li>\n\n\n\n<li><strong>Leadership and Vision<\/strong>: Provide strong leadership and a clear vision to guide the organization through the DevOps transformation.<\/li>\n<\/ul>\n\n\n\n<p>By following these key points, an organization can effectively transition from a traditional structure to a DevOps-supporting structure, improving the speed, quality, and reliability of software deliveries.<\/p>\n<\/body>","protected":false},"excerpt":{"rendered":"<p>What Is DevOps? The goal of DevOps is to build better, faster and more responsive software by bringing\u00a0Development and\u00a0Operations teams<\/p>\n","protected":false},"author":1,"featured_media":1096,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7,115,116,1],"tags":[121,122,117,87,119,120,118],"class_list":["post-1089","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coding","category-delivery-process","category-software-engineering","category-uncategorized","tag-agile","tag-continous-delivery","tag-dev","tag-devops","tag-jira","tag-jix","tag-ssofwtare-delivery"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/imalogic.com\/blog\/wp-content\/uploads\/2023\/04\/devops-1.jpeg?fit=1920%2C1080&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8J21V-hz","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/imalogic.com\/blog\/wp-json\/wp\/v2\/posts\/1089","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/imalogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/imalogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/imalogic.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/imalogic.com\/blog\/wp-json\/wp\/v2\/comments?post=1089"}],"version-history":[{"count":1,"href":"https:\/\/imalogic.com\/blog\/wp-json\/wp\/v2\/posts\/1089\/revisions"}],"predecessor-version":[{"id":1214,"href":"https:\/\/imalogic.com\/blog\/wp-json\/wp\/v2\/posts\/1089\/revisions\/1214"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imalogic.com\/blog\/wp-json\/wp\/v2\/media\/1096"}],"wp:attachment":[{"href":"https:\/\/imalogic.com\/blog\/wp-json\/wp\/v2\/media?parent=1089"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imalogic.com\/blog\/wp-json\/wp\/v2\/categories?post=1089"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imalogic.com\/blog\/wp-json\/wp\/v2\/tags?post=1089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}