At DabApps, we are enthusiastic customers of Heroku, a cloud-based platform-as-a-service company. If you commission us to build you a web application, or any system that includes a backend server component, we will offer a hosting package that will include Heroku-based infrastructure.
What is Heroku?
Founded way back in 2007 (and now owned by CRM mega-company Salesforce), Heroku is a platform for running software on the Web. In technical terms, Heroku takes the application code we write, performs a series of transformation steps to "build" it ready for deployment, packages it up inside an isolated container, and launches it in a managed runtime environment. It then routes Web traffic from your customers to the servers running the code.
If this all sounds complicated - it is! But the whole point of Heroku is that we don't have to worry about this complexity, and neither do you.
Here are five reasons why that's a good thing
DabApps' expertise lies in designing and building software, and that's what we like to focus on. Provisioning and managing secure and reliable servers can be fun, but it's a lot of work and needs very specialist skills. Our operations team at DabApps is second to none, but we like to let them spend their time supporting our developers as efficiently as they can.
Heroku's genius is that we never have to think about servers. Heroku hides all of the complexity of the servers themselves behind a friendly web-based user interface. Once your app is up and running on the platform, deployments are just a click away. Releasing a new version of your software is as simple as preparing a new "release branch" in our version control system, and then clicking a button to deploy that branch to each of your environments (first to staging, and eventually to production). We can just focus on the code and let Heroku worry about how to run it.
Heroku employs a team of systems administrators and operations experts who work day and night to ensure their platform (and therefore your app) is running and available at all times. If something does go wrong, you can rest assured that people are working to fix it straight away, even in the middle of the night.
Heroku's global platform is backed by Amazon Web Services, by far the largest cloud infrastructure provider. This means your application is running alongside the world's biggest and most successful software companies. If your app is down, their app is down - so it's in their interests to fix it as quickly as possible!
As well as problem-solving when things go wrong on a platform level, Heroku can help when there's a problem with your application code. If for any reason an application crashes or fails, Heroku's runtime platform instantly detects this and starts a new instance of the app, seamlessly routing traffic to the new instance and destroying the old one. Your customers won't even notice.
Keeping servers up-to-date with security patches can be a full time job, especially with multiple servers running multiple complex web applications, each with many components and dependencies. By abstracting away the servers, Heroku takes on the responsibility of making sure they are secure.
Of course, security doesn't end with servers - it's our job to make sure your application code is safe, but not having to worry about the servers is a big help.
Heroku's platform runs your code inside something it calls a *dyno*. A dyno is an isolated container that bundles up computing resources (CPU and memory allowance) with a copy of the application code and its dependencies.
Once your application is packaged up and ready to run in a dyno, Heroku's platform can create and run as many independent copies of it as it wants. This is called *horizontal scaling* and is the key to massive scalability in the cloud. If your app gets a sudden spike of traffic, we can click a button and immediately there are five, or ten, or a hundred instances of your app running and ready to handle it.
If needed, Heroku can also perform *autoscaling*, where it detects the traffic spike itself and automatically spins up more dynos to cope.
This final benefit might sound a little odd, but in an agency setting it's absolutely critical.
We support and host software we've built for dozens and dozens of clients over the years, right back to the origins of DabApps. The functionality of each app is, of course, very different. But it's vital for the sake of our team (and therefore our customers) that, from a structural and operational point of view, all these applications are as similar to each other as possible.
In an agency, uniformity provides efficiency. If a developer working on project A needs to switch to work on project B, the more similar A and B are (in terms of code structure, development environment, testing approach and so on), the quicker the developer can feel comfortable and ready to do productive work.
Exactly the same is true with operations and hosting. If project A is configured, hosted and deployed differently to project B, then whoever is responsible for deploying it would need to first spend time familiarising themselves with how it works before they can do anything useful.
By enforcing a rigid structure on how software is packaged and deployed, Heroku helps all our applications to work the same way. This means the operations team doesn't need to think too much about context - they know straight away what needs to be done to deploy a new release to production. We can move faster and be more efficient.
Running the software we build on Heroku is a great strategic decision for us as an agency. It allows us, as a relatively small team, to offer competitive hosting packages that are backed by the largest, most secure and most stable cloud platforms in the world. And it allows our customers to sleep well at night knowing that teams of infrastructure experts are on hand to keep a close eye on things.
If you'd like to talk to us about how we build and host software, please do get in touch.