I was asked a question from management regarding Octopus scalability. From what I see the majority of the processing is done on the target machine and the server will be tasked with farming out packages and scripts. I also see that the steps can be run in parallel.
However is it possible to release different projects at the same time ? Also what options are there to scale if we hit capacity ? Or is it a case of having a server per project if we hit a certain size ?
Thanks for getting in touch. I guess you could say Octopus is a bit of a bottleneck “by design” (it’s supposed to centrally co-ordinate things), but the good news is that we still have a good scalability story. Here are some things that might help:
- You can run multiple deployments for separate projects/environments in parallel
- While normally Octopus server downloads and distributes packages, you can also tell your Tentacles to download packages directly from the NuGet feed. You could even set up multiple feeds for the Tentacles to fetch from, which moves the load away from the Octopus server (this requires using external NuGet feeds and not the built-in feeds).
- Octopus 3.0 introduces a High Availability option that lets you have multilple Octopus servers and scale them out. If you find one Octopus server is too busy, you can add a second or third.
As a real-world example, we have Octopus installations that do hundreds of deployments a day, and Octopus installations with over 1200 Tentacles managed from a single Octopus server. So it can certainly be made to scale.
I hope this helps!