Heroku Alternatives : AWS, Azure, and Google Cloud Platform

Michael Rockford
8 min readAug 23, 2017

Once you have made the “build vs. buy” decision and landed on “build” — where do you go from there? How do you decide which platform to build on or which strategy to employ? At RadialSpark, we often work with clients that know they need a new solution but are not sure how to take the next step. As Heroku experts, we understand the benefits of the platform and love helping our clients realize those benefits. However, Heroku is not always the best answer and it is important to understand when to employ another approach.

“In 2020… There will be a widespread belief that the World Wide Web is less important and useful than in the past and apps are the dominant factor in people’s lives” ~ Pew Research

The discussion boils down to three questions that define the long-term value of your investment:

  1. The Functionality Question How much access do you need to successfully run your application?
  2. The Uptime Question How much money are you losing for every second the application is down?
  3. The Money Question What is a reasonable investment to ensure the required amount of uptime?

After we step through each of the Heroku alternatives discussed in this post, we will revisit these questions to help you understand the trade-offs of each solution.

AWS, Azure, and Google Cloud Platform

These are three different flavors of the same solution, each offering similar functionality. These Infrastructure-as-a-Service (IaaS) products, provide computing resources, load balancing, operating system selection, servers, networks, storage, logging and monitoring of the server, and monitoring of the health of the application.

Moving these tasks off your IT team’s plate reduces schedule and budget, by a degree, while still providing a foundation on which your application can be built (Heroku can bring schedule and budget down even further — but we will get into that later).

Understanding the Nuances

AWS (Amazon Web Services) has been around the longest and has the most mature development platform, as a result, is the go-to platform for many teams. However, it offers few creature comforts and requires dedicated and experienced IT personnel just to get an application into the cloud, without building out any of the functionality.

“Price is what you pay. Value is what you get. ~ Warren Buffet

From a strictly budgetary standpoint, AWS does not offer the most customer-friendly pricing structure. With AWS you must guess at how much infrastructure you will need. How much processing power do you need? How much storage do you want? If you guess wrong, you will pay a premium rate for these services later. AWS offers a discounted rate when resources are purchased in a bundle –the more you buy, the cheaper the price. If you need to add a little more down the road, you will pay a higher fee for the same service.

Azure is a flexible platform on which you can host just about anything. It comes with some slick out-of-the-box creature comforts to streamline integration with Microsoft products, like Office 360. Azure is often chosen by companies with existing .NET applications and websites and those working within the larger Microsoft ecosystem.

Google’s Cloud Platform is the new kid on the block. Like AWS and Azure, it provides complex control over what is being used and how it is configured. Where it differs from AWS and Azure is in its pricing model and interface. The Cloud Platform interface is extremely intuitive and easy to use. For those just stepping into the development world and requiring low-level infrastructure access, it is the way to go. Its automated pricing model eliminates the guessing game by always ensuring that you are getting the best price on your purchase.

“Mobile is becoming not only the new digital hub, but also the bridge to the physical world. That’s why mobile will affect more than just your digital operations — it will transform your entire business.” ~ Thomas Husson, VP Forrester Research

Firebase works hand-in-hand with Google’s Cloud Platform and is used to build and connect applications across a variety of devices. If your application requires functionality that is partly native to the device and partly synching with the Cloud or if you need an application that will deploy to Apple, Android, the Web or even other devices that may be running C++ or Unity, Firebase is ideal. It also works for creating standalone applications and connecting many mobile applications together.

Google’s Cloud Platform and Firebase standout because of their cross-platform, cross-device support. While you cannot utilize the out-of-the-box integrations that may exist within rest of your enterprise software (built on AWS or Azure), it is a great option for budget- and user-friendly infrastructure access.

IaaS or Heroku?

Heroku is hosted on AWS, however building an application on Heroku does not provide root access to the hosting infrastructure. In most cases, enterprise applications do not need this level of control and managing the resource investment required to maintain the infrastructure unnecessarily eats into both the schedule and the budget of development projects.

On Heroku, applications are developed faster, are easier to maintain, and are successful with less expensive resources. Developing on Heroku does not require you to give up communication or security control and is ideal when you don’t need (or want) control over the infrastructure of the application.

Docker and OpenShift

Docker is an industry leading platform for building, shipping, and running distributed applications. It is specifically utilized by applications built in scalable containers. Container-based development dictates the architecture of the application. In container-based development, the application is broken into small pieces (containers) that are replicated within the network. Each container is networked together so that if one is overloaded by a request, a copy of the container can step-in to handle the incoming requests while the overloaded container reboots and gets back online. This development strategy ensure downtime is minimal.

While it is possible to host an application built in Docker on AWS or Azure, doing so used to require the setup of Kubernetes to manage and run the containers and distribute them across the architecture. Container-based architecture has been made much more convenient on AWS and Azure (paid) with new container services for each platform, but without these services, applications developed in Docker are often hosted on OpenShift. OpenShift was built by Red Hat and specifically targets container architecture hosting. Docker and Kubernetes frameworks are built into OpenShift, making it easier to deploy and maintain the application.

Digital Ocean

An intentionally lightweight alternative to AWS, Azure, and Google Cloud Platform, DigitalOcean offers the simplest pricing structure and platform options. Infrastructure “droplets” are preconfigured with group features that determine memory, processing power, and network bandwidth. To deploy an application, simply define the raw environment by purchasing the right-sized droplet and set a hosting location — that’s it.

The trade-off for this simplicity is a lack of options. DigitalOcean droplets are not customizable and the application management service is not robust. Additionally, DigitalOcean only supports a small number of operating systems, most of which are Linux-based.

“The Linux philosophy is ‘Laugh in the face of danger.’ Oops. Wrong One. ‘Do it yourself’. Yes, that’s it.” ~ Linus Torvalds

DigitalOcean is ideally suited to proof-of-concept applications and for lightweight, non-mission critical applications.

The Functionality Question

IaaS solutions are ideal when you require low-level access to the resources that are running the application or root access to other devices. Often, this comes into play when users will access virtual machines through the application for DevOps considerations, QA testing, or building a developers kit. In these types of applications, the user is configuring additional infrastructure that the application will create and provision.

If you are creating an application that will scale or build on itself in a non-linear fashion — such as building a development environment — you will need low-level infrastructure access.

The Uptime Question

Everyone wants an application that is available all of time — but is the security and redundancy of your application mission critical? Container-based applications have astronomically low failure rates and are ideal for critical applications that will experience extremely high traffic volume. Utilizing a container-based development strategy requires additional technical expertise and architectural investment, much more so than when building on an IaaS provider or Heroku. Understanding how often the application will run, expected traffic volume, and criticality of the application to your business are essential to completing an effective cost/benefit analysis.

The Money Question

Where does your mix of infrastructure access, development resources, long-term maintenance, and uptime requirements meet with your budget? Managing your own infrastructure does provide additional flexibility; however, in many cases, the access is rarely used and only costs the project additional schedule and budget over the long run.

Maximizing uptime is great, but are you willing to pay for the additional resources needed to develop and maintain container-based development? If your application will experience PayPal or Groupon level traffic and is essential to the core of your business, the answer may be Yes. If not, the trade-off in redundancy for dollars may not be cost effective.

The Law of Diminishing Returns: a point at which the level of profits or benefits gained is less than the amount of money or energy invested.

The decision comes down to the law of diminishing returns. Do you need low-level infrastructure access? How much uptime do you really need? How much can you afford to invest in the maintenance of your application?

At RadialSpark, we often find that the answer to these questions leads our clients to develop on Heroku, especially when they are already utilizing Salesforce products. Because Heroku is built on AWS it is exceptionally reliable. The rich ecosystem of add-ons and elements within the Heroku Community enables robust development in a fraction of the time associated with creating new applications on other platforms.

“Great things in business are never done by one person. They’re done by a team of people.” ~ Steve Jobs

Heroku supports multiple languages allowing you the freedom to develop in whatever language you need to utilize your in-house technology team, integrate with existing systems, or ensure future portability and flexibility. As a high-performance, customizable platform for development, Heroku will continually scale to meet your changing business.

Still not sure which way to take your development, contact the expert consultants (who also happen to be developers) at RadialSpark. We have the expertise and experience to evaluate your current business processes, suggest improvements, and develop the technology that will best fit your needs.

Michael Rockford, CEO and Founder of Radialspark, a registered Salesforce partner and leader in custom software development and implementations.

Originally published on www.radialspark.com

--

--

Michael Rockford

CEO, Founder https://www.radialspark.com ~ a Salesforce partner and leader in custom software development and Salesforce implementations.