Hey friends, I recently joined Platform.sh as a Developer Relations Engineer, and I’ve been playing with the platform for a few weeks now. In this blog post, I’ll share some things I’ve learned about Platform.sh, how I was able to deploy my first Node.js application, and a few features that I think could be improved.Documentation Index
Fetch the complete documentation index at: https://developer.upsun.com/llms.txt
Use this file to discover all available pages before exploring further.
What is Platform.sh?

The Swiss Army Knife of platforms
Platform.sh was built to tackle the problems development teams face in managing and scaling their apps and sites. These problems can range from figuring out the right infrastructure in which to build them on to managing a larger fleet of sites more effectively. Platform.sh solves these problems by providing a single platform for teams to perform all their infrastructure-related tasks simply and seamlessly. I like to think of Platform.sh as a Swiss Army Knife. Like a Swiss Army Knife, Platform.sh provides all the tools you need in one convenient package. When you use Platform.sh, you’ll see why Platform.sh is called the “the alternative to Kubernetes.”Notable features of Platform.sh
Here are a few of the interesting features that Platform.sh has to offer:Continuous Integration and Development

Multi-language and multi-databases:

Global cloud hosting

Security

The Platform.sh developer experience
Developer experience is a key part of any developer-centred product. The quality of developer experience of a product is highly responsible for whether a product ends up winning the loyalty of developers. After using Platform.sh to deploy an application for the first time, I’ve noticed a few things that demonstrate how Platform.sh always keeps the developer experience in mind.Git-driven architecture
Platform.sh uses a Git-based architecture for managing changes and deployment. This is very useful because you don’t need to learn a new set of commands to deploy your application. Just set your project remote, add, commit, and push your application like you’d do for Github, Bitbucket, or Gitlab.
Templates
Platform.sh provides developers with a wide range of templates to kickstart their projects. These templates are already configured with everything needed to get your application from your local machine to the cloud. With these templates, developers don’t need to configure anything themselves from scratch. They can focus on just building their application instead of configuring their infrastructure. When you create a new project on the Platform.sh console, a modal with Use a template or Create from scratch is displayed on your browser window. If you just want to see your application live without worrying about configuration, using a template will solve this issue for you. Templates also help newbies understand how to configure a project on Platform.sh. For example, the Node.js template gave me a better understanding of how to deploy a Node.js application. I didn’t use the template, but looking at the way it was structured was enough for me to get my Node.js app running on Platform.sh. A few things, such as the README, can be improved in the template. That will be one of the items on my task list as I work to provide a better developer experience for everyone.
Setup wizard


The Platform.sh CLI
The CLI is the official tool for managing your Platform.sh projects directly from your terminal. Anything you can do within the management console can be done with the CLI. The CLI caters to developers who don’t want to leave their terminal to perform tasks on Platform.sh. It contains a list of commands that you can use to deploy and manage your applications. To use it, all you need to do is install the CLI and authenticate with your Platform.sh account in your browser.
The Management console
The management console lets you scale, run, and deploy your applications right from the browser. It has support for displaying multiple environments; you can monitor application deployment logs, delete projects, create integrations, add custom certificates, etc. The Git-based infrastructure is also built-in, so you can see your commits and all the pushes you’ve made.
Deploying my first application on Platform.sh
I created a Node.js application for a deployment demo on Cloud Foundry. The application displays a virtual library where a user can add, delete, and update books. The user can also create a new genre for books or update one. Now let’s use the application to test the deployment experience on Platform.sh.Prerequisites
Before we can deploy my application on Platform.sh, we need to have the following:- The Platform.sh CLI
- A Platform.sh account
- The Node/Express application
Creating your project
After installing the Platform.sh CLI and creating an account, our next step is to create a new project by selecting the Create project button on the top right section of the page.

Connecting to my Platform.sh account from the CLI
After we create our project, we’ll see a management console displaying various details about the project. The next thing we’ll do is connect my Platform.sh account with the CLI by running the following command in my terminal:
Setting up the application for deployment
To deploy the application, we need to create the following:.platformfolder, which will contain theroutes.yamlandservices.yamlfiles.platform.app.yamlfile, which will contain all our application-specific configurations
.platform folder
This folder contains two files:routes.yaml and services.yaml. The routes.yaml file contains all the necessary URL configurations our application needs, from redirects to a domain name to external services.
In the routes.yaml file, we’ll specify the following based on the official documentation:
services.yaml file contains a specification of whatever service our application will need to work properly; it could be a database service or a cache service like Redis. Since the node application doesn’t need any service at the moment, let’s leave it empty.
(You can read more about services here.)
.platform.app.yaml file
This file consists of all the configurations for our application. In the.platform.app.yaml file, we’ll write the following:
routes.yaml file.
Pushing the Application
To push our application to Platform.sh, we need to set the project remote by running the following command:
What is going on here?
We can see a few things happening during the deployment process:-
Platform.sh scans through the application folder to look for the
.platform.app.yamlfile. The file will help it understand how the deployment process is supposed to happen. -
After discovering the configuration file, It begins to build the application based on the language
typewe’ve specified in the.platform.app.yamlfile and installs all the applications dependencies. This process is similar to using a Buildpack in Heroku and Cloud Foundry. Buildpacks help provide a runtime environment for your application. - It also checks if any command that should be part of the build process has been specified in the build hook.
- After the build is finished, it proceeds to provision a certificate for the application cluster. It’s similar to using certificates in Kubernetes, but you don’t have to do it yourself or use any external service.
-
After the certificates have been created, it starts the application environment with all the required services and relationships specified in the
services.yamland.platform.app.yamlfiles. -
Lastly, it generates a bunch of routes or the application according to what has been specified in the
routes.yamlfile.
Viewing the application live in the Browser
After the deployment process is completed, we can view the application live in the browser. In order to view the application, we run the following command to get the application URL.