WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi



Similar documents
Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Master Data Management as a Solution Using SAP MDM and Complementing Technologies

Infosys Business Process Management Offerings

Reduced Total Cost of Ownership (TCO) and Increased Scalability with a New Accounting Solution

DELIVERING AGILE QUALITY ASSURANCE THROUGH EXTREME AUTOMATION

Flexible and Agile Service Delivery Platform Elevates Customer Experience

Delivering Quality Software with Continuous Integration

Evaluation Framework: To Build or to Buy CRM Software?

<Insert Picture Here> Introducing Hudson. Winston Prakash. Click to edit Master subtitle style

perspective Progressive Organization

Mobilizing SAP Enterprise Applications

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

TALENT MANAGEMENT A KEY BUSINESS DRIVER

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

Building a Continuous Integration Pipeline with Docker

Jenkins: The Definitive Guide

Image Area. White Paper. Best Practices in Mobile Application Testing. - Mohan Kumar, Manish Chauhan.

ADVANTAGE YOU. Be more. Do more. With Infosys and Microsoft on your side!

WHITEPAPER. An ECM Journey. Abstract

Viewpoint. Choosing the right automation tool and framework is critical to project success. - Harsh Bajaj, Technical Test Lead ECSIVS, Infosys

Digital Transformation with Intelligent Solutions from Infosys and Pega

Product Complaints Management. Infosys Handbook for Life Sciences

Improved Efficiency and Significant Cost Savings through a Flexible Managed Services Model

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Continuous Integration: Put it at the heart of your development

perspective Customer Relationship Management Solutions for effective Customer & Dealer Management Abstract

VIEW POINT. Getting cloud management and sustenance right! It is not about cloud, it s about tomorrow s enterprise

Best Overall Use of Technology. Jaspersoft

White Paper. CCRM Services on Cloud Benefits of Private Cloud for CCRM Services. Abstract. - Krishna Vaddadi

BPM for Structural Integrity Management in Oil and Gas Industry

View Point. Overcoming Challenges associated with SaaS Testing. Abstract. - Vijayanathan Naganathan, Sreesankar Sankarayya

Releasing High Quality Applications More Quickly with vrealize Code Stream

Software infrastructure for Java development projects

Developing Plugins for Cloud Scale

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

Best Practices for Implementing High Availability for SAS 9.4

APPLICATION MANAGEMENT SUITE FOR ORACLE E-BUSINESS SUITE APPLICATIONS

Continuous Delivery: Automating the Deployment Pipeline. Solution Brief

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Agile Software Factory: Bringing the reliability of a manufacturing line to software development

SharePoint Composites. Do-It-Yourself SharePoint solutions

Integration in Practice

Five Commandments for Successful COTS Package Testing

Creating Business Value with Mature QA Practices

ACCELERATE DEVOPS USING OPENSHIFT PAAS

Software Continuous Integration & Delivery

DevOps for the Mainframe

MANAGEMENT AND ORCHESTRATION WORKFLOW AUTOMATION FOR VBLOCK INFRASTRUCTURE PLATFORMS

perspective Microservices A New Application Paradigm Abstract

WEBAPP PATTERN FOR APACHE TOMCAT - USER GUIDE

Mastering Continuous Integration with Jenkins

Realizing the Business Value of Master Data Management (MDM)

White Paper. The Importance of Automating the End to End Pipeline for Continuous Delivery

Wrap and Renew Digital SOA Catalog Offerings

agility made possible

My DevOps Journey by Billy Foss, Engineering Services Architect, CA Technologies

Java Software Quality Tools and techniques

WHITE PAPER. An Integrated Property & Guest Management System A hotel management software for the future delivered over the cloud

Windows Server 2008 R2 Hyper-V Live Migration

Virtualization and IaaS management

IDENTITY & ACCESS MANAGEMENT IN THE CLOUD

STeP-IN SUMMIT June 18 21, 2013 at Bangalore, INDIA. Performance Testing of an IAAS Cloud Software (A CloudStack Use Case)

Storage Options in the AWS Cloud: Use Cases

Digital Marketing. SiMplifieD.

How To Achieve Continuous Delivery

DEPLOYMENT ROADMAP March 2015

Continuous Integration

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

INFOSYS MOBILITY QA PRACTICE

EMC IT AUTOMATES ENTERPRISE PLATFORM AS A SERVICE

Parasoft and Skytap Deliver 24/7 Access to Complete Test Environments

9 June 2015 Michael Stroh BCS CMSG Conference. Service Maps. From Server to Service Management

Oracle Cloud Platform. For Application Development

GETTING STARTED WITH CONTINUOUS DELIVERY. Lana wcgp.co

Microsoft Private Cloud Fast Track

"Build and Test in the Cloud "

Business Assurance & Testing QEx Automation Platform

Holistic Performance Analysis of J2EE Applications

View Point. Image Area. Insurance Modernization New Demands, New Approaches. - Jeffrey Kupper, Lalit Kashyap, Siva Nandiwada, Srikanth Srinivasan

Enhanced Unified Communication QoE through Software-defined networking (SDN)

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

A central continuous integration platform

TeamCompanion Solution Overview. Visual Studio

vsphere Upgrade vsphere 6.0 EN

Continuous Integration and Delivery at NSIDC

Software Development In the Cloud Cloud management and ALM

Alfresco Enterprise on AWS: Reference Architecture

Oracle Primavera P6 Enterprise Project Portfolio Management Performance and Sizing Guide. An Oracle White Paper October 2010

Enabling Continuous Delivery for Java Projects with Oracle Cloud Services (Oracle PaaS) Siva Rama Krishna Oracle India

EMA Radar for Application Discovery and Dependency Mapping (ADDM): Q AppEnsure Profile

Continuous Integration: A case study

Continuous Integration & Automated Testing in a multisite.net/cloud Project

Transcription:

WHITE PAPER Getting started with Continuous Integration in software development - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

Introduction DevOps culture is gaining rapid momentum in the IT industry as it enables business to adopt agile software delivery methodologies like Continuous Integration (henceforth referred to as CI) & Continuous Delivery (henceforth referred to as CD).These methodologies enable quicker issue resolution, instant feedback loops, improved software quality and cost saving to meet the everincreasing demand to deliver better software faster. It would not be wrong to say that CI-CD practices will soon become the defacto software delivery standards across the industry. Gartner says By 2016, DevOps will evolve from a niche to a mainstream strategy employed by 25 Percent of global 2000 organizations Though both these methodologies (CI and CD) complement each other, CI is the pre-requisite phase for enabling CD as the latter is built on top of the former. The primary goal of CI is not only to enable build automation through continuous test and quality checks but also to provide project insights through reports and dashboards. Since this phase is all about tools, it imposes various integration challenges. Having a good knowledge of the tools involved, their integration aspects and the best practices to follow, will definitely enable their smoother adoption and rollout across enterprises looking to adopt CI practices. This article compiles insights gained from our practical experiences across various CI enablement programs which we have been associated with. Some of these experiences might vary depending on the choice of tools, infrastructure setup, organization policies and project requirements. In spite of the differences, we hope, this article will act as a helping guide to all those planning for CI setup in their projects. This article is organized into different sections as below Section 1 shows the CI setup which we have been using. Section 2 talks about the various tools being used to achieve CI. Section 3 discusses the challenges faced and the solution approaches we used. Section 4 includes some of the best practices that can be adopted for CI Section 5 enumerates some of the benefits obtained from CI Section 6 shows the deployment topology for the CI setup And we finally summarize our findings in Section 7.

3 Build Source Control Server Continuous Integration Server 2 Fetch Changes Test 4 5 Failure or Success 6 Notify Success or Failure Check in Changes 1 Various stakeholders Developer 1 Developer 2 Continuous Integration Setup The below diagram illustrates the end to end Continuous Integration (CI) setup which we have been following across projects. As seen below, the main actors include the Development team, the Source Control Server and the Continuous Tools Adoption CI depends mostly on adopting the correct set of tools and their proper usage. The selection of tools is generally driven by various IT policies in the organization, existing technology landscape, current infrastructure setup, and other considerations. It is therefore Integration server. Developers check-in the code into source control server which is integrated with CI server. For each build, CI server is configured to run the JUnit test cases, Selenium based functional test cases, code quality checks and provide recommended that every organization must do proper due diligence in evaluating different toolsets and choosing the appropriate ones suitable for their requirements. The diagram below shows the toolsets (phase wise) which we have been using notifications for any failure scenario which enables the development team to take immediate action. This continuous automation chain helps in reducing the overall defect density and thereby improving the code quality. successfully across various projects for CI enablement. As seen, we have adopted Jenkins as the continuous integration platform but there are other CI platforms (Bamboo, TeamCity etc.) to choose from. The same case holds good for other toolsets also. Develop Build Test Deploy 01 Continuous Integration Open Source Widely used in industry Provides varied plugins Version Control Build Automation Code Quality Analysis Artifact Management Open Source Widely used in industry Jenkins integration Open Source Widely used in industry Jenkins compatible Integrated test cases Code quality dashboard Jenkins integration Widely used in industry Ease of configuration Jenkins integration

Challenges Faced We faced a few challenges during our CI journey and some of the major challenges encountered are explained below.

Best Practices Followed After having worked on multiple CI enablement projects we have condensed together the set of best practices which we have learnt/followed. Most of these practices have been standardized and published as CI guidelines for internal usage across teams. In this section we highlight some of the best practices which we follow and would like to share with others. Role Based Access Regular cleanup of workspace & artifacts Even distribution of workload across nodes ( Even Scheduler plugin) Template based commons configuration Providing individual level access is always a cumbersome task and therefore it is recommended to provide Role-Based access Cron scripts were created to clean up the job workspace and artifacts once a week, in order to,release the memory and thereby avoid memory leak issues To overcome the default behavior of Jenkins in terms of node picking job, Even Scheduling plugin was used which ensuresd even distribution of work load across nodes Template based configuration enabled centralization of common properties across projects Benefits Realized Following are some of the benefits which we have realized by CI enablement across projects. Build Automation Code Stability Analytics CD Enablement 100% 100% 100% 100% Builds were automated by using the Poll SCM feature of Jenkins. This not only enabled faster builds but also help to eliminate manual build effort Notification feature enabled development team to respond quickly to the build failure scenarios. This helped in quicker resolution of code issues and ultimately led to stable code base Sonar dashboard provided centralized view of code quality issues and dashboards created leveraging Jenkins APIs, provided complete build information. This enabled project teams to take timely corrective steps Workflow configuration on Jenkins enabled auto deployment of application artifacts (EAR/WAR files) on the required application server whenever a new snapshot version of the artifact was available Faster Reeases Cost Savings Improved Productivity Improved Code Quality 50% CI enabled faster release cycles with stable code 30% Many projects cut down on the cost to maintain separate build teams after build automation. This resulted into significant cost savings for them 30% CI-enablement helped increase development team productivity by relieving them from build related aspects with complete focus on their core development activities 25% CI-enablement helped increase development team productivity by relieving them from build related aspects with complete focus on their core development activities Note: The above mentioned quantitative improvements are the average % improvements which have been observed across various projects.

Topology and Deployment view Below is the high-level topology of the CI platform which we have been using. The key benefits of this topology are high availability and scalability. To achieve high scalability and distributed build system we have set up dedicated build nodes that run separately from the Jenkins master. This frees up resources for the master server to improve its scheduling performance. Moreover, executing jobs on the master s executors can introduce a security issue. Any Jenkins s user with full permissions can play havoc with the system as they will have direct access to private information whose integrity and privacy could not be, thus, guaranteed. We leveraged the Jenkins supported master/slave mode, where the workload of building projects is delegated to multiple slave nodes. If you notice we have enabled Jenkins master to only handle HTTP requests and manage the build environment. Actual execution of builds will be delegated to the slaves. With this configuration it is possible to horizontally scale the architecture. Fig 2. Continuous integration topology view

# Component Key Characteristics 1 Master and Backup Server To avoid a single point of failure and support high availability we have the master slave configuration setup. In case the master goes down, a slave node can provide the continuity 2 NAS Storage Responsible for sharing $JENKINS_HOME directory for all Jenkins Master VMs 3 Jenkins Slave Nodes 4 Jenkins Executors 5 Reverse Proxy Server A slave node is a machine set up to offload build projects from the master node. Actual execution of the build happens on the slave node. The method for scheduling builds depends on the configuration given to a specific project. Some projects may be configured to only use a specific slave node while others can freely pick up a slave nodes from among the pool of slave nodes assigned to the master Responsible for concurrent builds on slave nodes. If a slave node consists of 4 executors, concurrently 4 jobs can be built on that node Responsible to ping all nodes in the cluster via a health check URL and uses their return codes to determine which node is the primary/active master Conclusion We believe that Continuous Integration is at the core of DevOps and needs proper planning. Since it is all about tools and their integration aspects, making appropriate choices based on various considerations is very important. Building good expertise on the tools involved, their integration aspects and other best practices, helps, avoid common pitfalls and helps speed up CI adoption. In spite of knowing and following all the best practices, there will always be some or other challenges faced during CI adoption but the final benefits realized far outweigh these initial hiccups. We hope this article might have helped you in some way or the other and we would love to hear from you. References 1. Gartner Says By 2016, DevOps Will Evolve From a Niche to a Mainstream Strategy Employed by 25 Percent of Global 2000 Organizations- http://www.gartner.com/newsroom/id/2999017 2. Distributed builds using Jenkins : https://wiki.jenkins-ci.org/display/jenkins/distributed+builds

About the Team Amruta Kumbhar Technology Lead Amruta Kumbhar is a Product Technical Lead in Infosys. She has strong expertise on Java technologies and database technologies (Oracle, DB2, MongoDB ). She also has very good expertise related to various CI aspects - build management using Maven and SonarQube plugin creation. She can be reached at Amruta_ Kumbhar@infosys.com Madhavi Shailaja Technology Architect Madhavi is a Technology Architect in Infosys. She has strong expertise on Java technologies. She also has very good expertise related to various CI aspects - build management using Maven and Ant. She can be reached at Madhavi_Katakam@ infosys.com Ravi Shankar Anupindi Sr. Technology Architect Ravi is a Senior Technology Architect in Infosys. Ravi has strong expertise on Java technologies and leads the Performance Engineering COE in one of the business verticals. His areas of interest include exploring latest technologies and looking at ways to adopt them to derive significant business benefits. He has been actively involved in DevOps initiatives for various clients. He can be reached at Ravi_ Anupindi@infosys.com For more information, contact askus@infosys.com 2015 Infosys Limited, Bangalore, India. All Rights Reserved. Infosys believes the information in this document is accurate as of its publication date; such information is subject to change without notice. Infosys acknowledges the proprietary rights of other companies to the trademarks, product names and such other intellectual property rights mentioned in this document. Except as expressly permitted, neither this documentation nor any part of it may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, printing, photocopying, recording or otherwise, without the prior permission of Infosys Limited and/ or any named intellectual property rights holders under this document. Stay Connected