What is our primary use case?
My main use case for Spacelift is that I primarily use it for Terraform, focusing on module versioning and deployment. Recently, we started exploring the blueprints option, but the primary focus remains on getting my Terraform landing zones defined and versioned in Spacelift and then testing the modules increment. As we have a GitOps approach, we want every commit and every pull request in Git to run through the set of tests that we have defined in the module in Spacelift. In summary, it serves as the main infrastructure as code tool.
A specific example of how I use Spacelift in my workflow is that we have landing zones in Azure based on the Microsoft concept of landing zones, where we define what we have in an application landing zone or a management landing zone and so on. These landing zones are built using Terraform modules, and each of those modules I have defined in Spacelift. Spacelift is tied to our Git repo, and that's where we develop the modules. For example, we have a SQL module where we have a SQL database module, SQL server module, and so on. They have versioning, and they're all tied together. If we want to deploy that specific SQL as part of a landing zone because an application needs it, we go to the application zone and plug in that module, referencing it from Spacelift. Then we deploy it, and especially if we want to release new features or new versions, we can simply increment the module version and go to the landing zone and do a small increment of the version of the module, which will deploy the new features. This represents approximately 90% of my use cases.
My use case for Spacelift fits into my workflow in many aspects through useful features such as the environments that you can pass between modules, which is not something that comes native in Terraform. Spacelift helps when I have variables that I want to pass between modules, between landing zones in our case, which are the stacks in Spacelift. When I say landing zone, that equals a stack, a Spacelift stack. It's valuable that I can pass the variables between stacks when I have some references, which isn't easily achievable with Terraform. Building the stack dependencies is another feature I use. It is excellent because I can execute stack updates based on module changes, then run that in a dependency flow and execute the change on each stack as I do it, so that I don't forget or miss any of that if I would have been doing this manually. I mentioned earlier that I started exploring the blueprints as well, but I still don't have a strong use case yet for that one in my team at least.
What is most valuable?
The best features Spacelift offers for my team include module versioning and testing. Whenever I want to touch on a module, add new functionality, change something, or do bug fixes, I do it directly in my Git or in my code editor. As I push the code, I can see direct feedback from Spacelift on whether the changes I've made are passing or breaking something. That's one of the best features for me. Then there's drift detection, which is really powerful because I can set a certain schedule for drift detection, and it lets me know if someone touches anything in the Azure console, for example, and it's not reflected in my Terraform. The policies are quite nice as well because they use the Snowbell standard for doing the policy as code, and I can set certain permissions for which team can work with which part of my stacks. The centralized workflow for infrastructure as code goes without saying.
Spacelift has positively impacted my organization in significant ways in terms of building infrastructure as code. There are other tools as well, but if I would run Terraform without any orchestrator such as Spacelift, it tends to be very tedious. It is positive in that it speeds up development with the automated tests that I mentioned earlier, giving me confidence that I don't normally have if I would be developing locally without such a tool as Spacelift. It also gives confidence to the people who are doing PR reviews, so when an engineer in my team creates something, changes something, or adds or removes from an existing module or stack, the PR review gives confidence that there are no breaking changes being applied through it. It speeds up the development and also speeds up deployment. Going back from a disaster recovery solution where I had to use it a couple of times, when everything is set, it's fairly quick to have full infrastructure back and operational in a matter of 20 to 30 minutes, as opposed to not using such tools. It has definitely affected speed of delivery, cost of delivery, and collaboration between teams or with other teams where we can provide rights to Spacelift, allowing for more gradual rights.
What needs improvement?
Regarding improvements needed in Spacelift, it's difficult to say because I have been using it for a while now and haven't seen many areas where I would want to see something new because much of what I missed at the beginning has actually been added. The engineering team behind Spacelift is very responsive whenever I submit a feature request, and there's a very good chance I would see it within the next year, which has been the case a couple of times for me. Perhaps the learning curve could be a bit steep if someone is completely new to Spacelift and only has experience with plain Terraform. Apart from that, perhaps some cost visibility of the infrastructure would be interesting to have, unless it's already there and I haven't seen it.
I would add about the needed improvements that a reporting solution where I could click through my stacks and see the costs driving my stack, such as whether it's the database, the sizing, or the VM types being used, could be an interesting feature to have.
For how long have I used the solution?
I have used Spacelift for about three years.
What do I think about the stability of the solution?
What do I think about the scalability of the solution?
Spacelift's scalability is very good as it scales very well with the environment because I can add agents to it with more workload, so it's quite excellent.
How are customer service and support?
The customer support is fantastic as they reply over Slack immediately and get to work on a solution whenever I need them. It's one of the best customer supports I have seen from a company.
Which solution did I use previously and why did I switch?
I haven't switched from any other solution, though I have used Terraform Enterprise in a separate project.
What was our ROI?
I have definitely seen a return on investment since time saved equals money saved as well.
What's my experience with pricing, setup cost, and licensing?
I don't have much experience with pricing, setup cost, and licensing as that's handled by a different team. With pricing and setup costs, I don't have anything to compare it with regarding other tools, so I can't provide much information around the pricing.
Which other solutions did I evaluate?
Before choosing Spacelift, I evaluated only Terraform Enterprise as an option.
What other advice do I have?
My experience with the drift detection feature is that we rely on it more than I would prefer. It's not ideal to detect drifts in my code, but every now and then somebody can make a change in a console to test something quickly or fix something quickly, and then they can forget to apply that change in the code if it should be there on a permanent basis. Drift detection will be there to tell me that something is off and I need to have a look, so if it's something related to permissions that I change and forget about permissions for a certain resource, it comes in very handy there as well.
I don't think there are any improvements needed in Spacelift that we haven't discussed, and I believe that covers everything.
I would advise others looking into using Spacelift to evaluate and make sure it's the right tool for what they're planning to do, but I would definitely recommend it very highly. I gave this review a rating of 9.
Which deployment model are you using for this solution?
Public Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Microsoft Azure