Why Tsuru?

This document aims to show Tsuru’s most killing features. Additionally, provides a comparison of Tsuru with others PaaS’s on the market.

Easy Server Installation

It’s really easy to have a running PaaS with Tsuru. We provide a serie of scripts, each one built to install and configure the required components for each Tsuru provisioner, you can check our scripts on Tsuru repository, there are separeted scripts to install each component, so it’s easy to create your own script to configure a new provisioner or to change the configuration of an existing one.

But it’s okay if you want more control and do not want to use our scripts, or want to better understand the interaction between Tsuru components, we built a guide only for you.

Platforms Extensibility

One of Tsuru main goals is to be easily extensible. The platform is one great example of accomplishment on that. Tsuru platforms works slightly different for each provisioner. Juju use charms for platform provisioning you can find the scripts on our charms repository. The Docker provisioner is a bit different, it has an specific image for each platform, if one wants to create a new platform, just extend tsuru/base image and follow the directory tree structure, the scripts and Dockerfile for our existing platforms images can be found on our images repository

Services Creation and Extension

Most applications need a service to work properly, like a database service. Tsuru provides an interface API to communicate with services APIs, but it doesn’t manage services directly, this provides more control over the service and its management.

In order to create a new service you simply write an API implementing the predefined endpoints. Tsuru will call when a user performs an action using the client, read more on the building your service tutorial.

You can either create a new service or modify an existing one, if its source is open. All services APIs made by Tsuru team are open and contributions are very welcome. For example, the mongoDB api shares one database installation with everyone that is using it, if you don’t like it and want to change it, you can do it and create a new service on Tsuru with your own implementation.

IaaS’s and Provisioners

Tsuru provides an easy way to change the application unit provisioning system and it already has two working provisioners, Juju, Docker. But the main advantage is the ease of extending the provisioning system. One can simply implement the Provision interface Tsuru provides, configure it on your installation and start using it.


Tsuru also provides an abstraction for routing control and load balancing in application units. It provides a routing interface, that you can combine on many ways: you can plug any router with any provisioner, you can also create your own routing backend and plug it with any existing provisioner, this can be done only changing Tsuru’s configuration file.

Comparing Tsuru With Other PaaS’s

The following table compares Tsuru with OpenShift and Stackato PaaS’s.

If you have anything to consider, or want to ask us to add another PaaS on the list contact us in #tsuru @ freenode.net or at our mailing list

  Tsuru OpenShift Stackato
Built-in Platforms Node.js, PHP, HTML, Python, Ruby, Go, Java Java, PHP, Ruby, Node.js, Python Java, Node.Js, Perl, PHP, Python, Ruby
End-user web UI Yes (Abyss) Yes Yes
CLI Yes Yes Yes
Deployment hooks Yes No Yes
SSH Access Yes (management-only) Yes Yes
Run Commands Remotely Yes No No
Application Monitoring Yes Yes Yes
SQL Databases MySQL MySQL, PostgreSQL MySQL, PostgreSQL
NoSQL Databases MongoDB, Cassandra Memcached, Redis MongoDB MongoDB, Redis
Log Streaming Yes Yes (not built-in) Yes
Metering/Billing API No (issue 466) No Yes
Quota System Yes Yes Yes
Container Based Apps Yes Yes Yes
VMs Based Apps Yes No No
Open Source Yes Yes No
Free Yes Yes Yes
Paid/Closed Version No Yes Yes
PaaS Healing Yes No No
App Healing Yes No No
App Fault Tolerance Yes Yes (by cartridge) Yes
Auto Scaling No (issue 154) Yes Yes (for some IaaS’s)
Manual Scaling Yes No Yes