Need advice about which tool to choose?Ask the StackShare community!

Pulumi

254
285
+ 1
25
Serverless

1.3K
1.2K
+ 1
26
Add tool

Pulumi vs Serverless: What are the differences?

Introduction

In this article, we will compare Pulumi and Serverless, two popular tools used in the field of cloud computing and serverless architectures. Both Pulumi and Serverless help developers in deploying and managing cloud resources, but they have some key differences that set them apart.

  1. Language Support: Pulumi allows developers to use familiar programming languages such as JavaScript, Python, TypeScript, and Go to define infrastructure as code. On the other hand, Serverless primarily supports YAML or JSON syntax for defining serverless functions and resources.

  2. Deployment Targets: Pulumi supports multiple cloud providers including AWS, Azure, Google Cloud, and Kubernetes. It allows developers to deploy their infrastructure resources to a wide range of platforms. Serverless, on the other hand, is designed specifically for deploying serverless functions to cloud platforms like AWS Lambda.

  3. Resource Abstraction: Pulumi follows a resource-centric approach, where developers define cloud resources explicitly and have fine-grained control over them. Serverless, on the other hand, abstracts away most of the cloud resources and focuses on serverless functions and events.

  4. State Management: Pulumi uses a declarative model for infrastructure deployment and leverages a state file to manage the infrastructure's current status. This allows for easy updates and rollbacks. Serverless primarily relies on the cloud provider's native infrastructure management systems and does not maintain a state file.

  5. Development Workflow: With Pulumi, developers can use their preferred Integrated Development Environment (IDE) and coding practices. They have the flexibility to use version control systems and can develop infrastructure code just like they would develop any other software project. Serverless, being more focused on just serverless functions, doesn't provide the same level of development workflow flexibility.

  6. Community and Ecosystem: Pulumi has a growing community and an expanding ecosystem of libraries and packages for various cloud providers and programming languages. It offers support for a wide range of cloud services and integration options. Serverless, being more specialized, has a more established community focused on serverless architectures, with a variety of plugins and integrations specifically designed for serverless workflows.

In summary, Pulumi provides greater language support, supports multiple deployment targets, offers fine-grained control over resources, uses declarative state management, provides a flexible development workflow, and has a growing community and ecosystem. Serverless, on the other hand, is more specialized for serverless functions, relies on cloud provider infrastructure management, and has a more established community for serverless architectures.

Decisions about Pulumi and Serverless

Because Pulumi uses real programming languages, you can actually write abstractions for your infrastructure code, which is incredibly empowering. You still 'describe' your desired state, but by having a programming language at your fingers, you can factor out patterns, and package it up for easier consumption.

See more
Sergey Ivanov
Overview

We use Terraform to manage AWS cloud environment for the project. It is pretty complex, largely static, security-focused, and constantly evolving.

Terraform provides descriptive (declarative) way of defining the target configuration, where it can work out the dependencies between configuration elements and apply differences without re-provisioning the entire cloud stack.

Advantages

Terraform is vendor-neutral in a way that it is using a common configuration language (HCL) with plugins (providers) for multiple cloud and service providers.

Terraform keeps track of the previous state of the deployment and applies incremental changes, resulting in faster deployment times.

Terraform allows us to share reusable modules between projects. We have built an impressive library of modules internally, which makes it very easy to assemble a new project from pre-fabricated building blocks.

Disadvantages

Software is imperfect, and Terraform is no exception. Occasionally we hit annoying bugs that we have to work around. The interaction with any underlying APIs is encapsulated inside 3rd party Terraform providers, and any bug fixes or new features require a provider release. Some providers have very poor coverage of the underlying APIs.

Terraform is not great for managing highly dynamic parts of cloud environments. That part is better delegated to other tools or scripts.

Terraform state may go out of sync with the target environment or with the source configuration, which often results in painful reconciliation.

See more

When adding a new feature to Checkly rearchitecting some older piece, I tend to pick Heroku for rolling it out. But not always, because sometimes I pick AWS Lambda . The short story:

  • Developer Experience trumps everything.
  • AWS Lambda is cheap. Up to a limit though. This impact not only your wallet.
  • If you need geographic spread, AWS is lonely at the top.
The setup

Recently, I was doing a brainstorm at a startup here in Berlin on the future of their infrastructure. They were ready to move on from their initial, almost 100% Ec2 + Chef based setup. Everything was on the table. But we crossed out a lot quite quickly:

  • Pure, uncut, self hosted Kubernetes — way too much complexity
  • Managed Kubernetes in various flavors — still too much complexity
  • Zeit — Maybe, but no Docker support
  • Elastic Beanstalk — Maybe, bit old but does the job
  • Heroku
  • Lambda

It became clear a mix of PaaS and FaaS was the way to go. What a surprise! That is exactly what I use for Checkly! But when do you pick which model?

I chopped that question up into the following categories:

  • Developer Experience / DX 🤓
  • Ops Experience / OX 🐂 (?)
  • Cost 💵
  • Lock in 🔐

Read the full post linked below for all details

See more
Get Advice from developers at your company using StackShare Enterprise. Sign up for StackShare Enterprise.
Learn More
Pros of Pulumi
Pros of Serverless
  • 7
    Infrastructure as code with less pain
  • 4
    Best-in-class kubernetes support
  • 2
    Great CLI
  • 2
    Simple
  • 2
    Can use many languages
  • 1
    Built-in secret management
  • 1
    Can be self-hosted
  • 1
    Multi-cloud
  • 14
    API integration
  • 7
    Supports cloud functions for Google, Azure, and IBM
  • 3
    Lower cost
  • 1
    Auto scale
  • 1
    Openwhisk

Sign up to add or upvote prosMake informed product decisions

What is Pulumi?

Pulumi is a cloud development platform that makes creating cloud programs easy and productive. Skip the YAML and just write code. Pulumi is multi-language, multi-cloud and fully extensible in both its engine and ecosystem of packages.

What is Serverless?

Build applications comprised of microservices that run in response to events, auto-scale for you, and only charge you when they run. This lowers the total cost of maintaining your apps, enabling you to build more logic, faster. The Framework uses new event-driven compute services, like AWS Lambda, Google CloudFunctions, and more.

Need advice about which tool to choose?Ask the StackShare community!

What companies use Pulumi?
What companies use Serverless?
See which teams inside your own company are using Pulumi or Serverless.
Sign up for StackShare EnterpriseLearn More

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with Pulumi?
What tools integrate with Serverless?

Sign up to get full access to all the tool integrationsMake informed product decisions

What are some alternatives to Pulumi and Serverless?
Terraform
With Terraform, you describe your complete infrastructure as code, even as it spans multiple service providers. Your servers may come from AWS, your DNS may come from CloudFlare, and your database may come from Heroku. Terraform will build all these resources across all these providers in parallel.
Ansible
Ansible is an IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates. Ansible’s goals are foremost those of simplicity and maximum ease of use.
Helm
Helm is the best way to find, share, and use software built for Kubernetes.
AWS CloudFormation
You can use AWS CloudFormation’s sample templates or create your own templates to describe the AWS resources, and any associated dependencies or runtime parameters, required to run your application. You don’t need to figure out the order in which AWS services need to be provisioned or the subtleties of how to make those dependencies work.
Packer
Packer automates the creation of any type of machine image. It embraces modern configuration management by encouraging you to use automated scripts to install and configure the software within your Packer-made images.
See all alternatives