The internet’s come a really long way over the past few years, especially for webmasters and developers. In terms of web hosting in particular, it’s progressed from WYSIWYG website builders to shared hosting to fully-fledged dedicated servers being used and run by those creating the sites. In short, we’ve seen a massive progression in the way in which we web developers prepare our websites for the users.
Over the past couple of years, ‘the cloud’ has become a more commonplace term and developers are quickly migrating to these smart cloud hosting platforms (the stuff that the cloud really is) to ensure that their websites are protected against massive spikes in traffic and popularity of their websites. Apps like Heroku have meant that Rails developers have a way of ensuring that this isn’t a problem, but if you’re one of the many PHP developers looking to take advantage, you’ll find that the available providers of cloud hosting are limited and it’s incredibly hard to find one that manages everything in a user-friendly way.
In this review, I’ll be taking a look at Pagoda Box – an app that I believe does cloud hosting right. Packed with some incredible tools and a beautiful interface to boot, it can be a very interesting addition to any developer’s toolbelt. Interested? Read on to find out more about this rare gem.
Why Pagoda Box?
Why not? Pagoda Box describes itself as a “hosting framework” and as such, it’s very different to the traditional web hosts out there. Where traditional hosts provide each user with an allocated amount of storage and bandwidth per month depending on how much they’re willing to spend and the needs of their website, Pagoda Box does things a little bit differently. Exclusive to PHP apps, it allows developers to easily control their usage of different components (database, caching, etc.) to ensure that their website is always prepared for anything popularity can throw at it.
It’s priced based on monthly usage (no matter how big or small) so if your site’s fairly dormant for a while, you’re not shelling out loads, if anything at all – making it ideal for both small personal blogs or fully-fledged web apps. It also allows for deployment of apps through a Git-based system, meaning that should a code change cause any problems, the website can always be rolled back to a previous incarnation while the problem is sorted. In short, Pagoda Box could be the answer to any developer’s scalable hosting needs.
Once an account has been created within the app, users can then add their first application to the service. Pagoda Box gives the option of either beginning with an empty repository (useful for web apps that have already been developed), cloning an existing one (if the source is already hosted by another Git-powered service) or by using one of their quickstarts (useful for those who just want to perhaps try out the service or use a pre-configured existing script to run their website). For the purposes of this example, I will be using the empty repository as this is probably the direction that most serious developers will be looking into taking.
After the application has been added, you’ll then be prompted to choose the deployment method. Pagoda Box offers two – Git and ‘Vintage Mode’, I’ll be looking at the former. The Git option allows for changes in a local Git repository to be pushed to Pagoda Box when significant changes are made – easily allowing for the rolling back of versions should a faulty bit of code be accidentally included. The Vintage Mode uses SFTP as a means of uploading files to the server and though still supporting the rolling back to previous deployments, the overall process isn’t as automatic as Git. But hey, it’s there for those that need it.
Once a website has been deployed to Pagoda Box, you’ll then begin to take advantage of Pagoda Box’s web-based dashboard to ensure that everything within the app runs smoothly. From this dashboard, you’ll be able to easily visible the various components that make up your web app. These all comprise at least one web component and a combination of database and caching components amongst others dependent on whether the website needs or is using them.
For each of these components, a visual representation of the CPU and RAM of each of these is shown to ensure that when checking out the website within the dashboard, developers can easily see when one of these components is being placed under pressure from usage and scale these upwards by either increasing the instances (multiple virtual web component clones mean that traffic can be distributed easily under heavy traffic) or the amount of allocated RAM where necessary. New components can be deployed easily using the web interface (if allowed) or through Pagoda Box’s ‘Boxfile’ – a config file that can be optionally bundled with each app to inform Pagoda Box of the required components or dependencies needed for that application to run.
The app offers a few additional interesting features that most sites will be available to take advantage of, should you need them. It allows for cron jobs to easily be added within the dashboard and also it allows environment variables to be set through the interface that can then be accessed through PHP in the source code when required.
Pagoda Box also features fairly useful analytics and monitoring within the dashboard that allows developers to see interesting details about where scaling is required and also the details of the sort of time that certain files are taking to load. However, as of writing this, this feature is currently being revamped and therefore unavailable. Regardless, I have no doubt whatsoever that it will be just as useful as everything else within the app.
Overall, I found Pagoda Box to be an incredibly promising web app for the everyday PHP developer worried about their website running over-capacity. Though not strictly the usual thing we’d review, I believe that its very nice interface and extensive (and growing) feature list warrant it a review – not to mention that it has the potential to be incredibly useful to developers looking at launching their own web apps on the platform. It’s incredibly well-documented in every aspect, and it doesn’t use complicated codewords to refer to simple things like the different components that make up a web app, overall leaving the average user just as knowledgeable as one that perhaps has had extensive experience with other competing platforms.
If I ever have an interesting idea for a web app that needs realising, this will definitely be my first port of call for getting it out there. It’s that good.