Pulumi vs custom infra-as-code solutions
Many organizations start out by manually managing their infrastructure. This often begins by pointing and clicking in your cloud’s web console, and then evolve by encoding provisioning and logic in simple scripts (Bash, Python, etc).
This approach works in the early days, but this home-grown solution begins to break down over time
- Provisioning multiple copies of an app is difficult (or impossible)
- The logic in scripts grow non-linearly with respect to your infrastructure’s complexity
- Failure modes require manual intervention to repair environments, often leading to downtime
- As cloud providers evolve, it becomes hard to keep up and adopt the latest innovations
The maintenance cost of solutions like this often grows to consume multiple team members; it, in fact, usually ties up your best and brightest engineers. Many teams find that they spend more time managing their home-grown infrastructure scripts than they do writing business logic, and still can’t move as fast as they want to.
Pulumi was designed to address these problems out of the box. It offers a cloud programming model, with familiar languages, for expressing your cloud infrastructure and application needs. By expressing them using Pulumi, you get a robust and repeatable deployment model, that works in a team environment. Pulumi was also designed to make provisioning multiple copies of your infrastructure of application trivial, whether this is to bring up new regions for your existing system, new environments (staging, prod, and test), or to ease testing.
Finally, Pulumi is open source and community-driven. So, to the extent that there are custom needs, it is possible to make those customizations required, just like it would be with home-grown solutions. For most customers, Pulumi replaces their custom solutions without any customizations necessary, but knowing that this is an option should help know that Pulumi will be available in the long-term, and can evolve to meet your growing needs.