Week 6 of Flatiron School’s software engineer immersive program is here meaning new challenges and learning opportunities abound! Such as — how the heck will my group’s ruby on rails project get from Github to hosted on the internet to demo? The basic requirements are as follows:
- Create a Rails project of the group’s choice that has 5 models and 20 methods(at least)
- No APIs unless approved
- An analytics page
Examples of past Module 2 projects have utilized Heroku (a PaaS) or Firebase (a Baas) to showcase their projects. However, my base knowledge of such services was at a zero and I thought before we jump into the nitty gritty of our project that I would dive into a PaaS/BaaS fact finding mission for this blog post.
Terrible puns aside — what is a PaaS and how can it be incorporated into my growth as a student developer? PaaS stands for Platform as a Service or Application Platform as a Service. It is a cloud computing service that provide a platform for developers to develop, test and launch applications without having to worry about the back-end tasks of setting up servers, storage or backups. The focus of the developer can be directed towards the front-end design and user experience of the application due to the significant PaaS support provided.
A few advantages to consider:
- PaaS allows developers to test new languages, OS and databases without setting up the necessary infrastructure themselves
- Easier and faster to upgrade developing tools
- Built in analytic tools to identify business insights and patterns of behavior
- Can provide services such as setting up and maintaining client databases
- Uses a PostgreSQL database management system instead of SQLite
The goal of PaaS is take care of that underlying infrastructure and cover the operational aspects that are typically owned by an IT team. This allows developers to a faster development and delivery or applications — a huge plus for students such as us building out projects in a span of a week!
Cons to consider:
- Requires developers to build and setup the database
- Data security — information is stored off-site
Despite the cons listed above a PaaS allows developers flexibility to program on a platform without directly dealing with the platform maintenance.
Now that we have a definition of a PaaS squared away — how is that different from a BaaS? BaaS stands for Backend as a Service as is a cloud computing model that serves as the middleware for developers to connect their mobile or web applications to cloud services via an API and software developers’ kit. It is a bridge connecting the backend to the frontend of an application.
A few advantages to consider:
- Allows developers to focus solely on their front-end and user experience
- 5 step process to link your rails application to a Firebase Realtime Database
- perfect for getting applications up and running quickly
A few cons to consider:
- The key downside to BaaS services is that you are locked into a vendor
- Mostly geared towards mobile applications
- BaaS does not manage application runtime and execution (onus is on developer)
While there are quite a few advantages to a BaaS it appears to have a steeper learning curve with less flexibility should you wish to change a vendor in the future (such as to AWS).
Given that we now know what a PaaS and BaaS are it is clear we are dealing with apples and oranges. So how do I find which fruit analogy is ripe for our project? Below are my three most important points of consideration in my decision making process:
- Estimate the scope of the project
- Learning opportunities of both services
- Consider price
- Future flexibility
With the above in mind I went diving into ruby on rails developer forums and StackShare (a ranking site used for developers to evaluate SaaS and developer tools) looking for guidance.
The below was a helpful comparison between Heroku and Firebase available on StackShare.
Given the beginner nature of this project it appears that Heroku will offer the best price (free), lowest learning curve of the two as well as flexibility/relative ease to move the project to AWS in the future if desired for scaling.
After the above research I have landed on Heroku as the potentially best fit for the scope of my groups’ project. Although it will require a bit more investment of time it provides more fundamental control of backend processes. The signup process for Heroku is free and easy — now how will future project integration work?
Heroku offers the option to either use the Heroku CLI or connect your Github directly to your application.
Now that we have settled on a PaaS it is time to focus on the core of the project and trying to get a pass!