As developers, we work in a world of abstractions. Each piece of technology that we use is built upon layers and layers of other systems. This allows us to build software more efficiently. Why recreate what has already been created? Frameworks such as Ruby on Rails, Django, and Node.js were created to abstract away the painful parts of web development. They set up standards and best practices to build web applications. We have all of these amazing tools to build applications, but for a long time, we still struggled to easily deploy and scale them.
Then came Heroku. Heroku is the Platform as a Service that changed how we deploy web applications. Heroku automates the pain points of deploying code and has established best practices to build applications that need to scale. We no longer need to deal with the pain of setting up load balancers, patching servers, or scrambling to scale up our infrastructure in response to high traffic.
Heroku is easy to get started with and use. For developers who are new to the Heroku way, some of the conventions might go against the ones you use to deploy code. Building scalable and highly performant web applications requires us to think about the design of our applications differently.
In this book, we will learn how to set up our applications for success on Heroku. We'll learn about what is happening behind the scenes and use this knowledge to make our applications fast and reliable from the very beginning.
In this chapter, we will cover the very basics of deploying to Heroku. We will practice deploying three different open source projects, each using a different language and framework. Through this practice, we'll learn the essentials for deploying any application to Heroku and become more confident when it is time for us to deploy our own code.