During the build process, developers check out the developer branch from the source code repository, pull prebuild artifacts like compilers or runtime environments, libraries from binary repositories, and compile source code to generate the binary or an executable.

 

The builds are of two types: user builds that developers run in their workspace, and continuous integration (CI) builds, where changes are merged in the main code base and compiled.

 

CI is an automated, iterative build and test process for identifying bugs at early stages of the development cycle. This process helps improve code, because repetitive testing leads to innovation and faster time to market.

 

In modern application development, Git is commonly used as the version control system (VCS) for the source code. Developers perform a git clone operation to get a copy of the source code along with the history of all the code changes to manage the source files in isolation. This process might be useful for teams of fewer than 10 developers, but it is stressful to the development process and challenging for organizations of more than 50 that scale up to hundreds and thousands of developers.

 

When many git clone operations are performed in parallel, the Git server constrains scaling and load balancing, creating long wait times for the clones to complete when developers create their workspaces. After the git clone operation, developers must download the prebuild artifacts and perform a full build before they can start writing or modifying code. Depending on code size, this process takes time.

 

For example, it might take 5 minutes to perform a git clone operation and 20 minutes to build the code every time a developer creates a workspace. At scale, then, the organization would lose hundreds of staff hours getting all the developers to start writing code. The results depend on the size of the code base, number of developers, and the number of source code repositories.

 

This distributed approach to code development using Git has its own challenges, too:

  • It poses a security challenge when source code is moving around in workspaces hosted in developers’ portable computers.
  • Delayed code submittals from developers increase the time spent merging the changes to the main code base during the CI process.
  • Data recovery from failures poses a challenge in a distributed development environment when code changes are not submitted in a timely manner.

In the next blog we will identify better and efficient ways to improve agile development process with ONTAP that saves time and reduces infrastructure costs to the business owners during the software development life cycle.

Bikash Roy Choudhury

Bikash Roy Choudhury is a Principal Architect at NetApp. He is responsible for designing and architecting solutions for DevOps workflows relevant across industry verticals including high tech, financial services, gaming, social media, and web-based development organizations that address customer business requirements in these markets. He also works on validating solutions with Red Hat (RHOSP-IaaS), Apprenda (PaaS), Docker Containers, CloudBees Jenkins, IBM Bleuemix PaaS and Perforce Helix using RESTful APIs and integrating them with NetApp ONTAP software in private, hybrid, and public clouds. In his current role, Bikash drives integrations with strategic DevOps partners, including Red Hat, CloudBees, Perforce, Apprenda,
JFrog Artifactory, IBM, and Iron.io.

Bikash has over 16 years of data management platform experience. Before joining NetApp, he worked for eight years at key accounts as a professional services engineer. For three years he was a systems administrator working on various UNIX platforms. Bikash received an MSCIS from the University of Phoenix, San Jose, and a BSc in computer science engineering from a distinguished engineering college in India.