A Beginner’s Guide to Heroku

Laptop with code

By Danny Kirschner

Heroku is a platform as a service (PaaS) that enables developers to deploy, scale, and manage their applications without the need to set up and administer their own servers. It’s used at small startups and large-scale companies alike to get applications running on a server. Heroku supports many different languages and types of applications, from mobile apps to APIs and web apps.

Heroku manages many aspects of server administration, infrastructure, and development operations (DevOps), so that application developers can focus on what matters most to them: building their apps. Heroku handles many of the difficult parts of building and running your own web server, such as patching and upgrading systems, 24/7 operations and security, deploying applications, and scaling to meet demand.

A Brief History of Heroku and Its Rise in Popularity

Created in 2007, Heroku was one of the very first cloud applications, which means the entire service was available on its website, heroku.com, as opposed to the end-user having to access the service locally on one's own company servers. Heroku provides a suite of tools for developers or companies of any size to quickly build and deploy their applications to the web, in a variety of languages. This leads to a faster feedback loop and time to market for applications.

Let’s say a developer has an application they want to publish to the web, like a two-player tic-tac-toe game or a shopping-list app. Before Heroku, developers had to configure a server from the ground up, which could take a few hours to a few days just to set up a basic webserver. This usually involved creating and managing many different pieces of software in a Unix operating system environment, deciding on hosting, software, and hardware. A developer also needed to manually increase or decrease application processes based on the demand for the application's resources. This crucial DevOps role is inherently risky, time-consuming, and usually requires expertise across multiple domains, including scripting, code deployment, and a wide variety of open source tools and technologies. Heroku relieves much of this stress and workload.

Heroku’s cloud-based deployment platform allows application code to be bundled together with the necessary configuration settings, dependency description, and build requirements, and deployed to a virtual Unix machine called a slug. Scaling up or down — increasing or decreasing the capacity for the server to handle requests — is as easy as increasing the amount of running processes, called “dynos,” for your server. Heroku’s platform supports many of today’s most popular programming languages, including Ruby, Node.js, Java, Python, Clojure, Scala, Go, and PHP.

Recognizing that developers are critical to application and company success, Heroku optimizes for developer happiness. It focuses relentlessly on providing an outstanding experience for everyone involved in the development workflow. The Heroku dashboard and suite of tools allow developers whose main focus is usually on application development to manage the broad and complex responsibilities of DevOps. Today Heroku processes more than 13 billion requests a day and has more than 6 million apps on its platform, deployed by companies like IFTTT, Macy’s, teespring, and more.

Heroku also provides an ecosystem of more than 150 integrated applications for add-on features, some of the most popular being logging with Papertrail, caching with MemCachier, monitoring with New Relic, and database provisioning and management with Postgresql.

Heroku at General Assembly

General Assembly takes advantage of the Heroku platform to host Ruby, Ruby on Rails, and Node.js applications so that our Web Development Immersive and Web Development Immersive Remote developers can quickly build and deploy their work to the web. Throughout the course, developers learn how to deploy their applications to Heroku by setting up the Heroku toolbelt on their computers, integrating Heroku commands into their workflow, and managing deployed applications in the Heroku dashboard. By not requiring specialized DevOps experience to get a web app up and running, developers can get timely feedback on their apps and focus on learning what’s most important: how to develop software.

Meet Our Expert

Danny Kirschner is a lead instructor for General Assembly's Web Development Immersive course in Providence, where he teaches students how to be job-ready full-stack developers. Danny has been writing web apps using Ruby on Rails and JavaScript for more than eight years. When not coding, he enjoys cooking vegetarian food and biking around Rhode Island.

“Writing code is a craft as well as a creative outlet, and it’s not limited by industry. The discipline of creating software is useful to anyone, as it’s a way to think about problems and know how to technically solve them.”

Danny Kirschner, Web Development Immersive Instructor, General Assembly Providence