Startups are often bootstrapped organizations, constantly chasing funding from investors and trying to make the most out of as little as possible. The pressure to get the most bang for your buck is most felt in the early stages of a startup. This means careful consideration of resources, skillsets, and of course, tools. What do you need when?
One of the more important decisions a startup can make is the cloud infrastructure that it will reside on and build from. When looking to build in the cloud, the big three are Amazon Web Services (AWS), Azure, and Google Cloud. Each of these platforms offers a dizzying array of services and capabilities, and in turn, there are many platforms as a service (PaaS) and software as a service (SaaS) solutions built upon each.
Knowing what you need from a given platform is a skill set in and of itself. To give you an idea, take a look at this list of available AWS services. Google Cloud and Azure both have similar lists of their own. Most of these services are not all likely to be used in any given architectural solution, but they can still be leveraged to create unique solutions by cobbling the right pieces together. However, to cobble these pieces together into an app delivery solution that fits your needs, you will most likely need to hire a DevOps engineer, ideally with an architect level of expertise. The DevOps engineer’s role is to drive the adoption of DevOps methodologies by introducing tools, processes, and methodologies to manage the needs of the organization throughout the software development lifecycle. As the world of cloud infrastructure progresses, DevOps continues to progress as a role that is separate from backend engineering. These days, with the advent of solutions like Docker and Kubernetes, understanding the different server solutions and the different ways to manage and orchestrate servers is a full-time job. Many startups simply cannot afford the expense of a resource dedicated to server management, at least not on a full-time basis.
AWS, Google Cloud and Azure platforms can all be considered infrastructure as a service, offering cloud computing services, network, and storage resources, and allowing organizations to scale or shrink resources on a daily basis. Rather than being tied to large up-front costs for in-house infrastructure (which must be based on the highest expected usage estimates), end users are charged on a pay-as-you-go basis, only paying for the resources actually used. While this is very appealing as a concept, it requires in-depth knowledge and experience to determine your needs and to architect a personalized approach for your startup taking into consideration the tools currently available on the market as well as the resource needs of your startup. Once again, we are back to the full-time services of a costly DevOps engineer, quite likely eliminating any savings a small startup might gain from direct purchase of AWS, Google, and Azure services.
A Platform as a Service is a bundled set of services that allows customers to provision, instantiate, run, and manage modular bundles consisting of services and a computing platform, without the hassle of managing the infrastructure underneath. Heroku is one of the most popular such platforms, built upon AWS. With the platform-as-a-service model, you pay a premium above the baseline cloud services for the use of the curated and managed services packaged by the platform. This can seem expensive to a startup, and an unnecessary expense, but in terms of value delivered, may be one of the better investments you can make. Particularly if you choose a platform designed to support startups. Heroku and other PaaS solutions enable backend and full-stack developers to manage servers because much of the orchestration and complicated concepts are abstracted from the developer when using these solutions.
As you might have guessed, one of the key reasons a cloud platform such as Heroku is valuable to a startup is that it saves the organization from needing a full-time DevOps Engineer or consultant. You may still want to consult with such a resource on processes and practices, but the platform handles the toolset and the integration of tools that otherwise the engineer would have to develop/curate. If the toolset gears itself towards startups by simplifying development lifecycle processes as well, all the better. Heroku does this very well. While Heroku is more expensive than, say, AWS, in most cases it will be cheaper for your startup than managing your own server infrastructure. Also, it lets you focus on your startup as opposed to server management, which most companies consider a necessary evil. The problem startups run into when using AWS, Google Cloud, or similar services is when their architecture has a problem. Heroku manages infrastructure for you, taking away 90% of the issues you can run into in terms of architecture. On the other hand, to effectively manage AWS, you need someone on hand that is very familiar with your AWS setup and the different services you use. Given the number of services that Amazon offers, it is increasingly unlikely that the average web developer or mobile app developer will have the technical expertise to manage infrastructure. There is a point at which a DevOps team and managing architecture yourself is worth it. That is typically not something that happens until later in a startup’s lifecycle.
Heroku also offers an ecosystem of over 200 fully managed Heroku Add-ons to support your development lifecycle, including monitoring, logging, searching, and more. This includes a range of free services to allow you to get your feet wet with the product. Heroku allows you to integrate your favorite tools, programming languages, databases, and services, often out of the box. The platform is opinionated about the technologies and tooling that it offers, which allows its team to provide great support and maintenance to that tooling behind the scenes.
Heroku also helps in another key area. Heroku Teams makes it easy to onboard new hires, and provision their access and requirements. But more than that, Heroku is a well-known platform, well-documented, and familiar to many resources. The more well-known a platform, the more resources you can find who are familiar with it. Nothing is better than being able to find a plug-and-play resource who already has an idea of what you are trying to accomplish. When your organization grows, and you need to revisit your processes and/or toolset with a full-time DevOps engineer you can now afford, you will not have to familiarize the new resource with a cobbled-together environment and the custom processes developed for it.
Startups have enough to worry about between fundraising, finding product market fit, hiring, and managing operations. DevOps engineers are not cheap, and without a stable framework, you are dependent on the knowledge and experience of your engineer, and the components or architecture that he selects or cobbles together. Should this resource leave, gaps in documentation, training, and general product knowledge can cripple a burgeoning development process. Most early-stage startups should not be in the business of maintaining architecture or taking on the burden of hiring a full-time DevOps developer, nor taking on the risk of their architecture going down or distracting them from achieving success. Heroku ensures that your startup is insulated from these risks.
At Flatirons Development, our preference is to focus on product development instead of architecture. Heroku helps us accomplish this by allowing us to work with numerous platforms and technologies while maintaining a stable and well-documented architecture. Because it is a well-known product, it is also easy to find developers familiar with the platform, and the learning curve is easy enough that developers not familiar with Heroku can pick it up rather easily. This offers an additional layer of protection to a startup, as there is little to no risk of a project stalling due to gaps in the development team. For us, Heroku helps to ensure that we can meet the needs of any startup due to Heroku’s flexibility while maintaining set processes and standards that can be extended across multiple projects. We firmly believe that if it can help us manage and maintain the numerous projects we undertake for our clients, it can help any startup to do the same.
You may also check the top free alternatives to Heroku.