One of the main roadblocks that we find when developing digital products is the setup of the infrastructure where our product will be hosted to make it available to the public. This is not a minor matter since affects the cost, speed, security and availability of our product.
At Reboot we think that the minimum infrastructure of a digital product should cover 2 basic features:
- Automatic deployment from a code repository like GitHub
- Having both a test and production environments
As obvious as it might seem, it is surprising the number of projects starting today where this is not the standard. The main reason is because setting up these environments is complex -especially if we do it from scratch- and it consumes time and resources that are not available in the initial phases.
Can we build secure, reliable and scalable environments without having dedicated DevOps profiles on the team? Fortunately, currently there are platforms that facilitate the setup of our infrastructure to be able to focus on developing and iterating our product. These platforms are what we know as PaaS.
What is a PaaS (Platform As A Service)?
A PaaS is a service or set of services offered by infrastructure providers such as Amazon Web Services or Google Cloud, where we are provided with a platform on which we can develop, deploy and manage applications related to our product in an easy and intuitive way.
Unlike an IaaS or, as we all know it, a cloud server, PaaS greatly facilitates the deployment, security and administration of our infrastructure, being able to deploy a server from scratch with just a couple of clicks without exit the web interface.
The most descriptive way of looking at it is as an additional layer above the infrastructure services, which provides us with a set of tools and functionalities to facilitate their use.
Benefits of using a PaaS
Some of the advantages that we can obtain from using a PaaS for our product are the following:
- Reduce programming time. One of the main advantages is to reduce the development time of our project thanks to the components that are already provided by most of these platforms and that allow to establish flows, pipelines, integration, security, etc.
- No need for dedicated profiles. Another advantage is the abstraction layer provided by these services so that any developer can implement a secure, reliable and scalable infrastructure and environments without hiring a DevOps or dedicated profiles.
- Cross-platform development with ease. Most providers offer cross-platform development options, greatly streamlining this type of process.
- Affordable and scalable prices. Most of these platforms offer very affordable entry prices (even free), either in their fixed payment or pay-per-use mode, and allow scaling it according to the needs and growth of our project .
- Ease of managing it in remote or distributed teams. Thanks to the fact that it is cloud environments, using this type of service is especially useful for remote and distributed teams, as it makes it easier for them to collaborate on projects without worrying of other aspects. It also makes things a lot easier when we have to onboarding a new developer to our team.
- Manage application lifecycle effectively. PaaS provide all the tools necessary to span the entire application lifecycle - build, test, deploy, manage, and update - within the same integrated environment.
Best PaaS for our product in 2021
In today's market, almost all major service providers have a PaaS. In this article we are going to cover only those aimed at deploying web applications or services that we have used at some point.
Amazon Elastic Beanstalk
It is the solution provided by AWS and one of the main advantages is that it integrates with the entire AWS ecosystem, therefore if we already have experience and like the provider is a very good option. Of course, for people who have never used AWS or who are just starting, it is surely the most intimidating option of all that we are going to see.
Its price is based on platform usage and this can benefit us at first, but as we add resources we have to be careful not to be surprised at the end of the month.
Google App Engine
This is the solution offered by Google, it is quite similar to Beanstalk although somewhat more intuitive to use if we do not leave the standard execution environments. If we need something that goes beyond these environments we have to make some additional configurations. At the price level it also works with pay-per-use with an initial free tier, although this forces us to have to control our consumption very well as our project grows.
It is surely the most famous platform for this type of service and it certainly provide us a much friendlier experience than the previous ones. If you are starting, Heroku is one of the best options due to its ease of use and the big community behind it. Regarding prices, it has both free and paid servers with different price ranges starting from 7 dollars. As for the paid servers, unlike those of Google and Amazon, we can choose a monthly plan based on the specs we need for a fixed price.
If what you need is a service to deploy a landing page or a website, Vercel is one of the best, very easy to use and an exquisite interface. It has a very generous free tier and a PRO plan that costs 20$ per month per user. The main disadvantage compared to other platforms is that it is somewhat more limited since it is designed to deploy webs and microservices.
Digital Ocean App Platform
The solution offered by the provider Digital Ocean is very similar to the experience provided by Heroku but with a more tiered pricing model. However, here we do not have any free deployment unless it is a static website. So if we want to deploy a server we will have to pay 5$ a month for the most basic server. In addition, with the same account we have access to the rest of the services offered by the provider, this is one of the best ways to have all our infrastructure on the same platform while enjoying a simple and intuitive user experience.
Deployment with Digital Ocean App Platform
Now that we have seen what a PaaS is and which ones are best for our product, let's see how easy it is to deploy an API with the Digital Ocean App Platform.
First, we select the repository in our Github or Gitlab account with the API code that we want to deploy and choose the branch in which it is hosted. If we enable the autodeploy option, every time a push is made to the main branch, the deployment of our code will be executed. Yes, as easy as that.
Then we can add the necessary environment variables and modify the initialization commands and ports.
If necessary, we can add a database to the configuration by simply clicking on Add a Database.
Finally, we select the region where we want our server to be and we give it a name.
Once we have everything configured, we only have to select the type of machine we want and publish our API.
Once deployed we can manage it from a web interface where we can see usage statistics, make modifications or add more resources.
Obviously, this is a very simple example but it helps us to visualize the potential of these platforms. We may later do a full tutorial on how to create a production environment for our early stage product.
As we have seen, currently we have services that can help us to be more efficient when developing digital products and it is in our hands to know them and know when to use them. This is another example that you don't have to constantly reinvent the wheel or build everything from scratch to create a great product.
That is why PaaS can help us a lot not only in the initial phases of our product, but also in later stages by providing an infrastructure that works well at a technical level and that is productive for the development team that is working on the product.