Tech ONTAP Blogs
Tech ONTAP Blogs
By Sudhir Sonnad, DevOps Tools Engineer, NetApp
The following diagram shows the process on a traditional system. It has many pitfalls along the way that complicate and significantly slow down the process.
To test a traditional system, we ran an experimental build. For our build size of 500GB, we had a build time of 10 or 11 hours. This build time involved synchronization of the source from the repository, source compilation, code coverage, build optimization, build size calculation, locking the build after completion, and updating build results in the database.
In our experimental build on a legacy system, we encountered the following hurdles:
To compare with the traditional system, we then performed another build by using NetApp FlexClone cloning and Jenkins Pipeline. To start, we used NetApp FlexVol® volumes to replace directories that had acted as build workspaces in the legacy system.
FlexVol volumes give you the flexibility to clone workspaces instantly (called FlexClone volumes) without relying on manual copying. This feature is of great use to promote a build and to replicate a build workspace in your developer environment instantly. The following figure shows the relationship between the various NetApp components in a build system.
FlexVol volume: A FlexVol volume is loosely coupled to its containing aggregate. A FlexVol volume can share its containing aggregate with other FlexVol volumes.
Snapshot copy: A NetApp Snapshot™ copy is a read-only image of a traditional or FlexVol volume, or an aggregate, that captures the state of the file system at a point in time.
FlexClone volume: The FlexClone volume is created from the Snapshot copy. After it has been created, you can manage the FlexClone volume as a separate volume.
Aggregate: An aggregate is designed to provide storage space to one or more FlexVol volumes. It also offers security, backup, performance, and data sharing.
Jenkins Pipeline (or simply Pipeline, with a capital “P”) is a suite of plug-ins that supports implementation and integration of continuous delivery pipelines into Jenkins. For our comparison, we articulated and rearranged the steps in the Continuous integration stages in parallel to get the benefit of the Jenkins parallelism feature. The following diagram shows our CI process with FlexClone cloning and Jenkins Pipeline and parallelism.
The combination of NetApp FlexClone volumes and Jenkins parallelism in Pipeline reduced our completed end to end scratch CI pipeline from 10 or 11 hours to 5 or 6 hours. That’s an impressive 50% reduction!
In comparing the two builds, we found that FlexClone technology combined with Pipeline provided many benefits over the legacy system, including:
In our build, we deployed AFF A700s nodes to take advantage of the effective deduplication and compression. You can find two models of the NetApp AFF A700s system:
With the SnapMirror feature of NetApp ONTAP® software, you can replicate data from specified source volumes to specified destination (mirrored) volumes. The following figure shows the SnapMirror replication process. There are significant improvements to this feature in latest releases of ONTAP, make the data replication faster, consistent and reliable.
In this blog post, I talk about SnapMirror in the context of the build process. For more information about SnapMirror replication for other uses, check out our NetApp Tech OnTap® article.
Incremental SnapMirror mirroring is an easy way for you to replicate a build artifact at a second destination in real time with your primary build. You don’t have to re-create your build at the destination site for running the tests.
To showcase the benefits that you get with SnapMirror, I present the following use case:
Policy type: async-mirror
In asynchronous mode, Snapshot copies of the volume are created periodically on the source. Only blocks that have changed or that have been newly created since the last replication cycle are transferred to the target, making this method very efficient in terms of storage system overhead and network bandwidth.
Transfer priority: Normal
If there is a dedicated bandwidth for SnapMirror mirroring, the priority can be set to high.
Schedule: 5 minutes
The schedule determines how often Snapshot copies must be created for SnapMirror mirroring.
The following diagram shows the SnapMirror mirroring process from RTP to SVL.
The following steps and their respective commands correspond to the steps that are shown in the preceding figure.
Note that all the commands must be executed at destination site SVL except Step 7.
Step 1. Create a mirrored volume at the destination site
vol create -vserver svlnightly -volume rtpbuild_devN_180515_0746_1805150748 -aggregate cbr10sas2 -size 600GB -space-guarantee none -type DP
Step 2. Establish a SnapMirror relationship at the destination site
snapmirror create -vserver svlnightly -source-cluster rtpcbr -source-vserver nightly -source-volume rtpbuild_devN_180515_0746_1805150748 -destination-path svlnightly:rtpbuild_devN_180515_0746_1805150748 -schedule 5min -policy svlnightly_policy -type XDP
Step 3. Initialize scheduled SnapMirror mirroring
snapmirror initialize -destination-path svlnightly:rtpbuild_devN_180515_0746_1805150748
Then post build completion.
Step 4. Modify the schedule to NULL
snapmirror modify -destination-path svlnightly:rtpbuild_devN_180515_0746_1805150748 -schedule ""
Step 5. Abort the current SnapMirror mirroring
snapmirror abort -destination-path svlnightly:rtpbuild_devN_180515_0746_1805150748
Step 6. Final push to post build completion: Run a SnapMirror update
snapmirror update -destination-path svlnightly:rtpbuild_devN_180515_0746_1805150748
Step 7. Release the SnapMirror relationship at the source location
snapmirror release -destination-path svlnightly:rtpbuild_devN_180515_0746_1805150748
Step 8. Delete the relationship at the destination site
snapmirror delete -destination-path svlnightly:rtpbuild_devN_180515_0746_1805150748
Step 9. Mount the volume at the destination site
vol mount -vserver svlnightly -volume rtpbuild_devN_180515_0746_1805150748 -junction-path /share/bammbamm/svl/builds/DOT/devNightly/devN_180515_0746
One of the goals of DevOps is to establish an environment that enables developers like you to release reliable applications faster and more frequently. NetApp FlexClone technology promotes such productivity by making your build system easier to use and by speeding up the build process itself.
And with NetApp SnapMirror technology, you get an important DR and general-purpose replication tool. You can use SnapMirror to establish a centralized build farm and to replicate builds in another location across WAN, without the bottleneck of long transfer times.
Start building better, smarter, and faster today. Learn more about how NetApp FlexClone and SnapMirror technologies can help transform your build environment to increase innovation and business.