At Octopus Deploy we have been working diligently to create an update that will put a smile on your face. In version 2.x we experienced some growing pains as our beloved users put Octopus through its paces. One of our goals for Octopus 3.0 was to provide a major performance improvement. In order to achieve this, we have:
- Re-written our persistence layer and replaced Raven with SQL Server
- Re-written our communication layer, swapping out Pipefish for Halibut
- Made vast improvements to logging and orchestration
- Started testing and measuring large scale deployments
Yesterday, as a part of our bug-bash, we performed a complex deployment on Octopus 2.6 and 3.0 to compare the performance. The deployment involved:
- 200 NuGet feeds
- 50 steps with 3 child package steps
- Packages ranging from 10MB to 1000MB
- 5 variable sets with 5000 variables each
We are pleased with the results and hope that you will be too. The 3.0 deployment finished in 2 hours 41 minutes compared to 4 hours 18 minutes for 2.6. You will notice in the charts below that 3.0 CPU and memory usage drops off much sooner than 2.6:
Octopus Server 2.6 hammers the CPU, remaining around 100% for over two hours. In comparison, Octopus Server 3.0 has a spike at the beginning of the deployment (50 minute mark) and then continues under 20% for the rest of the deployment.
What?! Yes, that is almost 3.5GB used by Octopus Server 2.6 compared to under 500MB for Octopus Server 3.0.
In Octopus 3.0 you can expect a marked performance improvement, especially for large and complicated deployment scenarios. We will continue to investigate ways we can improve Octopus and measure our improvements so that you can be confident Octopus Deploy can handle any deployment you throw at it. Also, lots of cool new features. Coming soon!