Intro to Heroku
Tags: heroku, beginners
Published: 2023-06-11 18:05:59

So, you want to build an app. 

In order to get your app up and running, you'll need to deploy it somehow. You might consider Heroku-- a popular deployment platform. 

What is Heroku? Should I use this deployment platform? What is a deployment platform? What is deployment? 

Let's take a look.

## A Brief History of Heroku


Heroku was founded in 2007 by James Lindenbaum, Adam Wiggins, and Orion Henry. 

Fun fact: the name “Heroku” was created by combining the words “hero” and “haiku.” This is an homage to Japanese programmer Yukihiro Matsumoto, creator of the Ruby programming language (and all-around cool guy). 

[Heroku name origin](https://news.ycombinator.com/item?id=815855)

![Yukihiro Matsumoto](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/la6t69dho7t11iajt4ar.jpeg)

[Matz image](https://www.azquotes.com/author/50906-Yukihiro_Matsumoto)


Originally, Ruby was the only programming language that Heroku supported. Since its origin as one of the first ever cloud platforms, Heroku has continually grown and adapted. It now supports many programming languages and has been used to create over 13 million apps. Wow! 

[13 million apps](https://www.heroku.com/about#:~:text=Developers%20have%20created%20over%2013,next%20wave%20of%20groundbreaking%20apps.)

## What is Heroku, anyway?


Heroku is a cloud platform that developers use to deploy applications. Deployment is the process of releasing an app and making it available to users on their devices. 

To make this possible, applications need infrastructure. There are many components that make up that infrastructure: web servers, application servers, storage servers, firewalls, and so on. Heroku streamlines this process for developers. It can help save time, and ensure that applications run smoothly across all systems.

[App infrastructure](https://www.atatus.com/glossary/application-infrastructure/#:~:text=The%20whole%20infrastructure%20that%20is,system%20management%20considerably%20more%20challenging)

![Application Infrastructure](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5uknsy4twwpp0fauxtke.jpeg)

[App infrastructure image](https://www.atatus.com/glossary/application-infrastructure/)


As was mentioned before, Heroku supports an array of programming languages. This includes Ruby, Java, Node.js, Python and Clojure-- just to name a few. 

[Supported languages](https://www.heroku.com/)

For any language not officially supported by Heroku, there are buildpacks. A buildpack can be created by any user to support any language or framework not already covered by Heroku. Most likely, for any given framework or language a developer may want to use, such a buildpack has already been created.

[Heroku buildpacks](https://www.heroku.com/elements/buildpacks)


## How does it work?

Developers can create their application by using the command “heroku create”, followed by the app name, in the terminal. At this time, Heroku creates an empty container in which the code can run. Heroku provides a link to a live, working version of the app that the developer can use to test out their code. 

To deploy, developers push code into Heroku with the command “git push heroku main.” Heroku then performs several actions on the code and packages it into a new release. Every push creates a new release, so all earlier versions of the app are preserved. Now the app is (in theory) production ready! 



![Heroku commands](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3dcmvgihxlb6jsckh8pq.png)

[Heroku commands](https://www.heroku.com/)

As developers delve deeper into Heroku, there are many other actions they may want to perform. Here is a useful cheat sheet of Heroku commands.


![Heroku cheat sheet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gf4uoj74v2r47q6tcldh.png)

[Heroku cheat sheet](https://twitter.com/TechParida/status/1289255773919272965)


(Note that this cheat sheet contains "git push heroku master" as the deployment command. As of 2020, Heroku also supports "main" in place of "master" as the primary branch.)

After deploying, developers can use the many tools and add-ons Heroku provides to keep the app running smoothly. Heroku is also known for its ease of scaling; as the app grows, and as does the number of it's users, developers can simply use a drag slider to increase scale. 



## So what's the scoop?


**Pros**

There are other options for cloud platforms. So why use Heroku? According to Stackshare, "https://stackshare.io/heroku", the following are the three most highly reported pros of Heroku: 

- Easy deployment 

- Time efficiency

- Simple scaling

**Cons**

Previously, one of the biggest advantages of Heroku was that it was free. However, as of 2022, Heroku no longer provides a free tier. In his blog post, "https://blog.heroku.com/next-chapter", general manager Bob Wise cited an “extraordinary amount of effort to manage fraud and abuse of the Heroku free product plans.” 

Thus, a noteworthy con of Heroku is the cost. The elimination of the free tier was not well received among many users. 

On his YouTube channel, "https://www.youtube.com/watch?v=prjMJtXCR-g", Theo Browne, CEO of Ping, put it bluntly: "Heroku is dead." He states that "Heroku is no longer viable, by their own decisions and definitions, as a way to get started on a new app."


![Heroku on a gravestone in "man poses over grave" meme format](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gopisiemmvkqpjcr99mb.jpeg)

[RIP Heroku image](https://ngxcoder.dev/heroku-se-nos-va-y-ahora-que/)


The takeaway form this change? In stark contrast to it's history, Heroku may no longer be ideal for small businesses or start-ups.


## Conclusion

In conclusion, Heroku is a long-standing platform known for it's ease of use. It can help developers get their apps off the ground and ready for users. It streamlines the process of deployment as well as maintenance. And, it can do this with mostly any favored programming language of the developer. 

Depending on your situation, Heroku may or may not be the right choice for you.

**Want to learn more about Heroku? Helpful links:**

- "Introduction to Heroku" video by Salesforce, with overview and live demo: https://www.youtube.com/watch?v=QTOkqzCTGxw


- "What is Heroku" episode of Dylan Israel's "Ask a Dev" Series: https://www.youtube.com/watch?v=r5ZUQvl9BtE


- About Heroku Buildpacks: https://www.heroku.com/elements/buildpacks


- About Heroku Add-ons: https://www.heroku.com/elements/addons

**Saying "No" to Heroku? Alternatives:**

- https://www.makeuseof.com/heroku-alternatives-free-full-stack-hosting/

- https://www.youtube.com/watch?v=prjMJtXCR-g

- https://blog.back4app.com/top-10-heroku-alternatives/