{"id":538,"date":"2016-04-27T15:25:48","date_gmt":"2016-04-27T13:25:48","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=538"},"modified":"2023-06-09T14:14:50","modified_gmt":"2023-06-09T12:14:50","slug":"an-emotinal-sneak-peak-into-continuous-integration","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/04\/27\/an-emotinal-sneak-peak-into-continuous-integration\/","title":{"rendered":"A sneak peak into Continuous Integration"},"content":{"rendered":"<p><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/stock-photo-25708797-software-development-concept-in-tag-cloud.jpg\" rel=\"attachment wp-att-539\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"539\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/04\/27\/an-emotinal-sneak-peak-into-continuous-integration\/software-development-concept-in-tag-cloud\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/stock-photo-25708797-software-development-concept-in-tag-cloud.jpg\" data-orig-size=\"1665,1153\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;Software development concept in tag cloud on white background&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;\\u00a9 Rafa\\u00b3 Olechowski&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;Software development concept in tag cloud&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Software development concept in tag cloud\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Software development concept in tag cloud&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/stock-photo-25708797-software-development-concept-in-tag-cloud-1024x709.jpg\" class=\"wp-image-539 aligncenter\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/stock-photo-25708797-software-development-concept-in-tag-cloud-1024x709.jpg\" alt=\"Software development concept in tag cloud\" width=\"543\" height=\"376\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/stock-photo-25708797-software-development-concept-in-tag-cloud-1024x709.jpg 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/stock-photo-25708797-software-development-concept-in-tag-cloud-300x208.jpg 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/stock-photo-25708797-software-development-concept-in-tag-cloud-768x532.jpg 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/stock-photo-25708797-software-development-concept-in-tag-cloud.jpg 1665w\" sizes=\"auto, (max-width: 543px) 100vw, 543px\" \/><\/a><\/p>\n<p>What does the development of a software product involves? Is there more than programmers coding at their PCs and managers telling them what they want? What is the real meaning of \u2018release\u2019?<\/p>\n<p>In the old age of software development, a development team would have to deal with incredible amounts of organization in order to establish a reliable development process. Tasks such as testing manually and doing semi-scripted deploys would be demanding chores. The development process in general would be described as a dread or wake to some degree rage.<\/p>\n<p><!--more--><\/p>\n<figure id=\"attachment_540\" aria-describedby=\"caption-attachment-540\" style=\"width: 656px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/manualdeliverycycle.png\" rel=\"attachment wp-att-540\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"540\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/04\/27\/an-emotinal-sneak-peak-into-continuous-integration\/manualdeliverycycle\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/manualdeliverycycle.png\" data-orig-size=\"1600,902\" data-comments-opened=\"1\" 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=\"manualdeliverycycle\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Emotional cycle of manual delivery&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/manualdeliverycycle-1024x577.png\" class=\"wp-image-540 size-large\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/manualdeliverycycle-1024x577.png\" alt=\"Emotional cycle of manual delivery\" width=\"656\" height=\"370\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/manualdeliverycycle-1024x577.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/manualdeliverycycle-300x169.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/manualdeliverycycle-768x433.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/04\/manualdeliverycycle.png 1600w\" sizes=\"auto, (max-width: 656px) 100vw, 656px\" \/><\/a><figcaption id=\"caption-attachment-540\" class=\"wp-caption-text\">Image from our friends at Atlassian, Inc<\/figcaption><\/figure>\n<p>This is the reason why software development is moving towards continuity. The recent emphasis on continuous integration, built-in testing, constant monitoring, and analytics feedback all point toward an overall trend in the software industry: increasing the ability to fine control but at the same time to make everything faster.<\/p>\n<p>Continuous Integration is the practice of testing each change done to your codebase automatically and as early as possible. Continuous Deployment follows the testing that happens during Continuous Integration and pushes changes to a staging or production system. This makes sure a version of your code is accessible at all times.<\/p>\n<p>The main goal of continuous integration is to reduce integration problems and allows a team to develop cohesive software more rapidly. Sound like a pretty good deal, doesn\u2019t it?<\/p>\n<p>To accomplish this you don\u2019t need a expensive and complex tool. The essence of it lies in the simple practice of everyone on the team integrating frequently, usually daily, against a controlled source code repository. Some things to keep in mind include:<\/p>\n<ul>\n<li>Although Continuous Integration is a practice that requires no particular tooling to deploy, we&#8217;ve found that it is useful to use a Continuous Integration server.<\/li>\n<li>The term &#8216;Continuous Integration&#8217; originated with the Extreme Programming development process, as one of its original twelve practices.<\/li>\n<li>Everybody develops off that shared stable base and never gets so far away from that base that it takes very long to integrate back with it. Less time is spent trying to find bugs because they show up quickly.<\/li>\n<\/ul>\n<p>So, let&#8217;s take a looks at the main principles of continuous integration according to our good friend Mr. Fowler:<\/p>\n<ol>\n<li>Maintain a Single Source Repository with everything inside including test scripts, properties files, database schema, install scripts, and third party libraries<\/li>\n<li>Automate the Build, you should be able to bring in a virgin machine, check the sources out of the repository, issue a single command, and have a running system on their machine. This gives you the confidence to experiment, implement new features, and ship updates quickly.<\/li>\n<li>Make Your Build Self-Testing by including automated tests in the build process.<\/li>\n<li>Everyone Commits To the Mainline Every Day. As with any commit cycle the developer first updates their working copy to match the mainline, resolves any conflicts with the mainline, then builds on their local machine. If the build passes, then they are free to commit to the mainline.<\/li>\n<li>Every Commit Should Build the Mainline on an Integration Machine, you should ensure that regular builds happen on an integration machine and only if this integration build succeeds should the commit be considered to be done.<\/li>\n<li>Fix Broken Builds Immediately. It does mean a conscious prioritization of a build fix as an urgent, high priority task.<\/li>\n<li>Keep the Build Fast. For most projects, however, the XP guideline of a ten minute build is perfectly within reason. Most of our modern projects achieve this.<\/li>\n<li>Test in a Clone of the Production Environment. A significant part of this is the environment within which the production system will run. If you test in a different environment, every difference results in a risk that what happens under test won&#8217;t happen in production.<\/li>\n<li>Make it Easy for Anyone to Get the Latest Executable<\/li>\n<li>Everyone can see what&#8217;s happening. Continuous Integration is all about communication, so you want to ensure that everyone can easily see the state of the system and the changes that have been made to it.<\/li>\n<li>Automate Deployment. To do Continuous Integration you need multiple environments, one to run commit tests, one or more to run secondary tests. Since you are moving executables between these environments multiple times a day, you&#8217;ll want to do this automatically.<\/li>\n<\/ol>\n<p>We already talked about the main benefit of taking continuous integration on board, while developing software. However, there are other benefits that include:<\/p>\n<ul>\n<li>Faster reaction times: the most obvious benefit of CD is that it allows quick reactions to stimuli, both external and internal.<\/li>\n<li>Reduced risk: under a continuous delivery model, software is &#8220;released&#8221; constantly (though not necessarily to customers). Therefore, the ceremony and the risk around releasing is reduced.<\/li>\n<li>Exposed inefficiencies and costs: when constructing a pipeline, it will become clear where humans are involved, what bottlenecks exist, and what low-hanging automation fruit there is to pick.<\/li>\n<li>Flexible release options: moving to a continuous delivery model requires the build-out of infrastructure, both in an operational context and a software architecture context. But once that&#8217;s done, it provides the business with more flexibility in how it delivers features and fixes.<\/li>\n<\/ul>\n<p>Generally speaking, that teams are as soon as ready to deploy, when they can. So even if it\u2019s midnight, if your feature is ready to go, you can check-in, deploy, and start talking to customers about it right away. No extra approvals, meetings, or coordination required. Just you, your code, and your customers. It\u2019s pretty satisfying.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What does the development of a software product involves? Is there more than programmers coding at their PCs and managers telling them what they want? What is the real meaning of \u2018release\u2019? In the old age of software development, a development team would have to deal with incredible amounts of organization in order to establish [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[659,650,651,2],"tags":[],"ppma_author":[684],"class_list":["post-538","post","type-post","status-publish","format-standard","hentry","category-devops","category-scalable-systems","category-system-designs","category-system-engineering"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":251,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/01\/25\/continuous-integration-marina-kettschik\/","url_meta":{"origin":538,"position":0},"title":"Continuous Integration (CI)","author":"Marina Kettschik","date":"25. January 2016","format":false,"excerpt":"Large software projects require a group of programmers. Everybody is focused on their own coding part and it may take quite a while to complete it. But what happens when the individual pieces are merged? The integration of the puzzle pieces in a system can be very time consuming and\u2026","rel":"","context":"In &quot;DevOps&quot;","block_context":{"text":"DevOps","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/devops\/"},"img":{"alt_text":"continuous integration system by Marina Kettschik","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/01\/ci-system-1-1.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/01\/ci-system-1-1.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/01\/ci-system-1-1.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":1711,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/11\/26\/snakes-exploring-pipelines-a-system-engineering-and-management-project\/","url_meta":{"origin":538,"position":1},"title":"Snakes exploring Pipelines &#8211; A \u201cSystem Engineering and Management\u201d Project","author":"Yann Loic Philippczyk","date":"26. November 2016","format":false,"excerpt":"Part 0: Introduction This series of blog entries describes a student project focused on developing an application by using methods like pair programming, test driven development and deployment pipelines. Once upon a time, which was about one and a half months ago, an illustrious group of three students found together,\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"A python. (Because snakes. Not the language.) Source: https:\/\/rashmanly.files.wordpress.com\/2008\/10\/1439659.jpg","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/11\/0_1-300x300.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3496,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2018\/03\/30\/ci-cd-with-gitlab-ci-for-a-web-application-part-1\/","url_meta":{"origin":538,"position":2},"title":"CI\/CD with GitLab CI for a web application &#8211; Part 1","author":"Nina Schaaf","date":"30. March 2018","format":false,"excerpt":"Introduction When it comes to software development, chances are high that you're not doing this on your own. The main reason for this is often that implementing components like UI, frontend, backend, servers and more is just too much to handle for a single person leading to a slow development\u2026","rel":"","context":"In &quot;DevOps&quot;","block_context":{"text":"DevOps","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/devops\/"},"img":{"alt_text":"Shaky architecture","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2018\/03\/01_shaky-architecture-300x106.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1729,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/12\/08\/snakes-exploring-pipelines-a-system-engineering-and-management-project-2\/","url_meta":{"origin":538,"position":3},"title":"Snakes exploring Pipelines &#8211; A \u201cSystem Engineering and Management\u201d Project","author":"Yann Loic Philippczyk","date":"8. December 2016","format":false,"excerpt":"Part 1: Tool Setup This series of blog entries describes a student project focused on developing an application by using methods like pair programming, test driven development and deployment pipelines. Welcome to the next part our project, on its way to become the Snake game with the very best underlying\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/12\/blue-krait.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/12\/blue-krait.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/12\/blue-krait.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":556,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/05\/27\/test-driven-development-with-node-js\/","url_meta":{"origin":538,"position":4},"title":"Test Driven Development with Node.js","author":"Roman Kollatschny","date":"27. May 2016","format":false,"excerpt":"Test-Driven Development with Mocha and Chai in Node.js","rel":"","context":"In &quot;Rich Media Systems&quot;","block_context":{"text":"Rich Media Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/interactive-media\/rich-media-systems\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":26378,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/07\/25\/secure-code-fast-delivery-the-power-of-devsecops\/","url_meta":{"origin":538,"position":5},"title":"Secure Code, Fast Delivery: The Power of DevSecOps","author":"Furkan Erdogan","date":"25. July 2024","format":false,"excerpt":"In today\u2019s fast-paced digital world, security breaches are more than just a risk; they\u2019re almost a guarantee if you don\u2019t stay ahead. Imagine being able to develop software at lightning speed without compromising on security. Sounds like a dream, right? Welcome to the world of DevSecOps! If you\u2019re curious about\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/07\/grafik.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/07\/grafik.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/07\/grafik.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/07\/grafik.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/07\/grafik.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/07\/grafik.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":684,"user_id":29,"is_guest":0,"slug":"me083","display_name":"Mario Erazo","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/0073577e41cafa4dfb6d94b3a8fbeb156decdfde755af62c0e40f88b9f9b4348?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/538","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=538"}],"version-history":[{"count":13,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/538\/revisions"}],"predecessor-version":[{"id":24665,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/538\/revisions\/24665"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=538"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}