Originally published at: http://www.sitepoint.com/first-look-platform-sh-development-deployment-saas/
Not so long ago, many of us were satisfied handling deployment of our projects by uploading files via FTP to a web server. I was doing it myself until relatively recently and still do on occasion (don’t tell anyone!). At some point in the past few years, demand for the services and features offered by web applications rose, team sizes grew and rapid iteration became the norm. The old methods for deploying became unstable, unreliable and (generally) untrusted.
So was born a new wave of tools, services and workflows designed to simplify the process of deploying complex web applications, along with a plethora of accompanying commercial services. Generally, they offer an integrated toolset for version control, hosting, performance and security at a competitive price.
Platform.sh is a newer player on the market, built by the team at Commerce Guys, who are better known for their Drupal eCommerce solutions. Initially, the service only supported Drupal based hosting and deployment, but it has rapidly added support for Symfony, WordPress, Zend and ‘pure’ PHP, with node.js, Python and Ruby coming soon.
It follows the microservice architecture concept and offers an increasing amount of server, performance and profiling options to add and remove from your application stack with ease.
I tend to find these services make far more sense with a simple example. I will use a Drupal platform as it’s what I’m most familiar with.
Platform.sh has a couple of requirements that vary for each platform. In Drupal’s case they are:
- An id_rsa public/private key pair
- Git
- Composer
- The Platform.sh CLI
- Drush
I won’t cover installing these here; more details can be found in the Platform.sh documentation section.
I had a couple of test platforms created for me by the Platform.sh team, and for the sake of this example, we can treat these as my workplace adding me to some new projects I need to work on. I can see these listed by issuing the platform project:list
command inside my preferred working directory.