Blossom Logo Blossom

Kamal vs Blossom: A Detailed Comparison

6 min read

There are significant differences between Kamal and Blossom.

Kamal is the successor to Capistrano and is popular because it is developed by the Rails team. Essentially, Kamal is “Capistrano with Containers”. While Blossom also deploys applications using containers, a key difference is that Blossom is a full-fledged SaaS product.

Kamal

How Kamal Works

Kamal works by SSHing into multiple servers to install Docker and deploy your app. You configure Kamal settings, such as servers, using a config/deploy.yml file. It typically looks something like this:

service: app
image: user/app
servers:
  web:
    - 1.1.1.1
proxy:
  ssl: true
  host: app.example.com
registry:
  username: user
  password:
    - KAMAL_REGISTRY_PASSWORD
env:
  secret:
    - RAILS_MASTER_KEY
    - DATABASE_URL

Build and Deployment Process

When you run kamal deploy, Kamal builds a Docker image using your local Dockerfile. This means your machine’s architecture must match your deployment servers — otherwise, the image won’t run. You can work around this by using a remote builder (build.remote = true) or running Kamal in CI/CD instead of locally. But both approaches add complexity like Docker layer caching not being used. It’s also one more thing to manage.

Infrastructure Management

Kamal does not provision or create servers for you, as this falls outside its scope. Similarly, it doesn’t manage load balancers. You’re also responsible for configuring this yourself. Kamal recommends using cloud provider managed load balancers and adding your servers manually.

Container Management and Limitations

Kamal uses vanilla docker run commands to start your containers. The specific options used are only visible during kamal deploy. This can make debugging challenging, as you might not know the exact options applied. While you can use docker inspect to reverse-engineer the options, it adds an extra step to the troubleshooting process.

Kamal’s support for multiple applications can feel like an afterthought. This might be due to the nature of having a config/deploy.yml in different repositories. This often leads to duplication in the deploy.yml, especially for configurations like servers.

Overall Assessment

To be clear, Kamal is a valuable tool for what it does: automating Docker image building and deployment to multiple servers. It allows deployment to any server accessible via SSH, offering flexibility to move between different cloud providers or on-premise environments. For many, its most significant advantage is that it’s free.

Key Features Summary

Here’s a summary of Kamal’s key features:

  • It’s “Capistrano with Containers”
  • It builds a Docker image on the deployment machine
  • It deploys your app to multiple servers via SSH
  • Does not manage load balancers
  • Requires manual server provisioning and maintenance
  • Configuration via YAML files for deployment targets
  • Only supports Dockerfile-based builds
  • Requires more DevOps knowledge and hands-on server management
  • Free to use

Blossom

Blossom is a SaaS platform that offers significantly more functionality.

Infrastructure Management

Blossom provisions and manages servers, allowing you to create a fully functional, highly available cluster with multiple servers and a load balancer with a single click. It also sets up VPCs and firewalls to harden infrastructure security.

Deployment Approach

Blossom deploys applications by SSHing into machines and running commands in parallel to install and deploy your app. Blossom enhances this process by clearly separating top-level deploy logs from child logs for improved clarity.

Build System and Container Technology

Blossom also builds Docker images on a remote server, leveraging Docker layer caching out of the box. Importantly, a Dockerfile is entirely optional for Blossom. Blossom employs heuristics to automatically build and deploy your application without requiring a Dockerfile, simplifying management. However, you can still use a Dockerfile if you need additional customizations. Blossom offers multiple ways to build your Docker image: automatic detection, Heroku Buildpacks, Railway Nixpacks, Blossom’s static site builder, or by using a pre-built Docker image.

Blossom utilizes Docker Compose, which simplifies understanding how containers are running. It also provides the ability to scale processes up and down, offering another layer of scalability.

Pricing Model

Blossom is pay-to-play — it’s not free. Its pricing structure can result in significant cost savings compared to other hosting providers.

Key Features Summary

Here’s a summary of Blossom’s key features:

  • Language & infrastructure agnostic — Deploy any language to any server
  • Fully managed PaaS — UI and git-based workflows with automated deployments
  • One-click infrastructure — Automated server provisioning, load balancers, and HA clusters
  • Flexible build system — Supports Auto Detection, Buildpacks, Nixpacks, Dockerfile, static sites, or pre-built images
  • Multi-cloud support — Works with AWS, Azure, GCP, DigitalOcean, Hetzner, Linode, Vultr, OVHCloud, and on-premises
  • Built-in DevOps tools — CI/CD, maintenance mode, Docker Compose scaling, SSH access, and GitHub/GitLab/Bitbucket integration
  • Multi-app architecture — Designed from the start for clean multiple app support on the same server
  • Affordable pricing — Commercial product with significant cost savings, 5-day free trial, and predictable per-server pricing

Quick Comparison

Feature Kamal Blossom
Deployment CLI and YAML-based UI and git-based
Infrastructure Self-managed Managed
Server Provisioning Manual setup required Automated with one click
Load Balancer Manual configuration Built-in and managed
Build Process Dockerfile only Multiple build options
Learning Curve Steep Gentle
CI/CD No One-Click Setup
Setup Time Hours to days Minutes
Pricing Free Simple and Predictable

Conclusion

As evident, Kamal and Blossom differ significantly. It’s really apples and oranges. People will inevitably compare the two.

Kamal is a command-line deployment tool and the spiritual successor to Capistrano. Developed by the Rails team, it’s designed for developers comfortable with investing some time in managing their own servers. Without DevOps experience, the tool might feel somewhat unpolished. It’s free, making it an attractive option.

Blossom, conversely, is a fully managed PaaS that streamlines the entire process from provisioning to deployment. It significantly saves time and resources by minimizing the need for extensive DevOps expertise. It’s an ideal solution for teams seeking to reduce DevOps overhead while achieving substantial cost savings. Blossom allows developers to concentrate on building their applications by abstracting away more of the infrastructure management.

See How Blossom Compares on Cost

Use the calculator to compare Blossom's predictable pricing against other platforms.

Compare Costs

Want a deeper dive? Read our comprehensive comparison of popular deployment platforms.