For deploying, hosting, and managing modern applications, platform as a service (PaaS) has recently grown very popular. Heroku led the revolution with its intuitive user experience and high scalability. However, it has quite a few shortcomings, specifically in areas such as pricing and performance (it has some issues due to multi-tenancy).
Porter is an open-source, fully managed PaaS solution that runs on your own cloud provider and brings you the best of both worlds — ease of use and affordability. In this guide, we’ll explain what Porter is and what it offers, so you can determine whether it’s the right choice for you!
How does Porter work?
Porter is a managed PaaS solution. However, it does not offer hosting or resources. You bring your own resources in the form of a GCP, AWS, or Digital Ocean service account. Porter provides you with a way to provision a Kubernetes cluster on these cloud providers and helps you manage it from a Heroku-like dashboard.
The idea is simple; cloud providers have a very complex and time-consuming experience for setting up and managing K8s resources. Tools like Heroku simplify it, but they are expensive and prone to performance issues (since multiple customers get provisioned resources on the same machines internally, a traffic spike can cause a lot of damage). Porter presents only a simplified, easy-to-use interface, and you get to plug in the cloud provider of your choice for your deployments. Sounds perfect, doesn’t it?
Let’s take a look at some of Porter’s prominent features now.
Porter makes Kubernetes DevOps easy in a lot of ways.
Simplified UI on top of your cloud provider
Porter’s biggest selling point is that it makes your DevOps life easy while allowing you to retain the cloud provider of your choice. For example, to create a new cluster, all you need to do is provide it with the details of a service account that has access to provision relevant resources in your cloud, such as compute engines and K8s clusters.
Once you do that, it will automatically provision a new cluster for you and then provide you with an overview of its health.
You can then click on your nodes to dive deeper and understand what’s happening in them. You’ll be presented with a list of “conditions” that your cluster has been through recently.
Quick deployments with templates
Deploying new apps into your cluster is simple. Porter provides you with a list of ready-to-use templates that include workflows for popular app types.
You also get a list of community-based templates that can help you get off the ground quickly.
Retain full flexibility over your K8s clusters
Unlike other tools like Heroku, which restrict you to their hypothetical compute units (like dynos) and do not give you access to the underlying infrastructure, Porter helps you maintain complete control over your Kubernetes clusters. Since the resources are provisioned in your own cloud provider instances, you can always use their native consoles or portals to tap into your nodes and figure out what’s going on.
Installation, interface, and support
As touched upon already, the installation experience is quite simple. You log into the tool, create a cluster on your cloud provider, and start deploying apps. Integrations with cloud providers are a little shaky, as you need to enable all necessary permissions in your service account for Porter to provision all resources. Even then, some issues such as “could not create subdomain” creep in sometimes, and you can’t do much, as there is no easily accessible and comprehensive list of possible errors.
Support is offered via in-app chat, and it pops up whenever you run into issues while using the tool. The reply time is quick, and most issues are easily resolved by the tech support team. All in all, installation, setup, and support are areas where Porter could do much more.
User interface and ease of use
Porter’s user interface is very clean and minimalistic. There’s no clutter, and you can access everything important quite easily. The basics of your K8s cluster are well presented, and using the tool to manage clusters requires little effort.
Porter also enables you to collaborate with your team to manage your K8s deployments. You can add multiple team members with various access levels to ensure that the right people can access your resources as needed.
Porter enables you to connect with and leverage the benefits of third-party services while building your cluster. You get to choose from a long line of community-backed plugins that help you set up things like databases and caching.
The tool also integrates seamlessly with Docker Registry to help you pull in Docker images and Slack and send out alerts to your team’s channels.
Porter is an open-source tool, and it enables you to get started for free with a limited number of clusters and users. However, you incur costs for the resources that your clusters use from your cloud provider, so you should keep that in mind when choosing Porter. In most cases, your cloud providers would charge you less than managed PaaS platforms like Heroku, so this shouldn’t be much of a problem.
If you wish to expand on Porter’s collaboration features and work with multiple clusters, you should consider taking a look at Porter’s pricing plans for small teams and enterprises. They seem affordable and will prove to be very helpful if you’ve gotten used to the tool and are looking for a more serious engagement. For example, Porter charges $200 per month to enable as many as three users to collaborate on as many as three clusters (if you host Porter on their cloud). For larger teams, you need to contact them for their enterprise pricing plans. If you self-host Porter, you need to contact them for enterprise pricing plans.
Why should you use Porter?
Now that you’ve seen the tool in detail, let’s summarize why you should use it:
- Infrastructure ownership: Porter gives you absolute ownership of the underlying infrastructure of your apps. You can tinker with the insides while maintaining access to an easy-to-use dashboard. You can also set up Porter on top of pre-existing K8s clusters in your cloud IaaS to take advantage of its features without having to migrate or modify your apps.
- Cost-effective: When compared with Heroku, Porter has proven to be as much as five times less expensive. Needless to say, you will save a ton if you adopt Porter for your K8s app.
- Ease of management: Even though your app runs on a native cloud IaaS and you are billed for VMs and K8s clusters (instead of dynos), you get access to an easy-to-use dashboard. You get features such as environment management and one-click deployments, which would otherwise be difficult to set up using the native dashboards of the cloud providers.
Alternatives to Porter
If you don’t feel that Porter is the best fit for you, there are a couple of other tools worth exploring.
Heroku offers a tight abstraction over the underlying infrastructure of your K8s apps. Instead of compute instances, you get to provision dynos that come with a fixed processing capacity and memory. Heroku takes care of deploying an app on its infrastructure using these dynos and provides you with a very simple but powerful interface to manage it.
Heroku is best suited to small and midsize companies that are looking to get off the ground easily with their new projects. In most cases, once you grow big enough, Heroku will become very expensive.
Caprover is a popular open-source PaaS offering. It markets itself as an “extremely easy-to-use app or database deployment & web server manager” for a variety of technologies, including NodeJS, Python, Ruby, and more. Instead of Kubernetes, Caprover relies on Docker Swarm under the hood. It offers a CLI for automation, a web GUI for easy access, and a fully customizable Nginx setup for load balancing.
Cap Rover seems like a great equivalent to Porter, but it’s important to note that it does not use Kubernetes. It is fully customizable and can be deployed on most cloud providers, which makes it a good replacement for traditional, managed PaaS offerings.
Unlike the other tools on this list, Linode is a cloud hosting provider that began by providing Linux-based VMs to its users. The name Linode is based on “Linux” and “Node”. Linux-based computing solutions are still one of their top offerings.
You might want to consider Linode for its affordable prices, powerful API (to integrate and automate resource management via your own apps), and award-winning customer support. If resource management still sounds very complicated to you, you can add a managed layer on top of it, such as Cloudways to ease the job.
As a competitor to Heroku, Porter does a great job at solving the core problem of complexity vs. pricing for managed K8s hosting. There are some hiccups along the way in the form of inadequate documentation, a lack of advanced features, and more, due to the ever-evolving nature of the tool. However, if you’re looking to build an application with scale in mind, Porter might be a good option to consider. If your project is young and you want to shift your focus to your product and not its management, Heroku might still be a better option for you.
If you're looking for a well-documented, easy-to-use platform that makes it easy to build custom dashboards for monitoring your applications, then consider Airplane. Airplane is the developer platform for building internal tools. You can build Tasks, which are functions anyone on your team can use, or Views, React-based custom UIs. Everything you build in Airplane is in code, which means it can be version controlled, integrated with your existing codebase, and extended using third-party libraries.