What is Platform as a Service (PaaS)?
If you are a web developer then you would know that developing a web application does not only include coding but also building the infrastructure to run that application. Imagine you want to write code to build a website with VueJS as a frontend and Laravel as a backend. The basic things that you would require to set up in your local is
Setting up local environment
- Install the webserver (like nginx, apache)
- Install php-fpm, if using nginx, so that the web server can interpret php codes
- Install node to install npm packages for frontend
- Install a database server (like mysql, postgresql, sqlite) if you want to store data in your database
If you are running frontend and backend as two different services in the same machine then they would probably be running in different ports; like frontend would be running in port 3000 and backend in port 8000. You start writing code and then build an awesome website. It is now time to move it to production. There were times when webpages were written in mere html and the way of deployment was using an FTP file uploader like FileZilla and upload the html files to the production server. Gone are those days and now the deployment has become a bit more complex and you would also want some automated scripts for smooth deployment. Before doing that you would now need a server where you can host your files along with the following
Setting up production environment
- Identify the type of server specification required
- Install an operating system for the server
- Install all of those mentioned above for your local environment
- Configure your web server and/or also set up a reverse proxy if you want to run your web app in port 80 (http) or 443 (https) so that the end users have to remember only your domain and not the port
- Install ssl if you want the website to run with https
- Set up your app with production environment variables (like different credentials for production)
- Push your code changes to the server
- Ensure that there is no downtime when you push your changes
- If your website traffic increases then you might want to increase the server resources as well
This means that you would have to spend extra time for planning the deployment. This all looks very overwhelming and that is why there is a separate devops team who handle all of these deployment works. But there is a good news for developers. With advancement of cloud computing we can see that there are number of providers who have made this process much simpler so that developers can focus on coding and not worry too much about deployments and resources handling. They are called Platform as a service (PaaS) providers. Some of the PaaS providers are
If you are studing IT or web development this is something you must give a try. It'll give you idea on production deployments and when you get stuck, you'll research for a resolution and learn more. I have used Heroku in the past but now they have removed their free tier. I have used railway.app as well and found it very impressive. All you need to do is push your code to a github repo and all of the above deployment steps will happen automatically. Of course, you'll first need to set up an account, create few services with some clicks and link your github account. Further they also have a free tier which makes it awesome for deploying your personal project.
Below is the extract from Wikipedia if you want a more formal definition fro PaaS.
"Platform as a service (PaaS) or application platform as a service (aPaaS) or platform-based service is a category of cloud computing services that allows customers to provision, instantiate, run, and manage a modular bundle comprising a computing platform and one or more applications, without the complexity of building and maintaining the infrastructure typically associated with developing and launching the application(s); and to allow developers to create, develop, and package such software bundles."
Latest Post
Information retrieval – Searching of text using Elasticsearch
Information retrieval is the process of obtaining relevant information resources from the collection of resources relevant to information need.
Learn more