Modern Python Projects Transcripts
Chapter: Deployment
Lecture: Deploying to Heroku
Login or
purchase this course
to watch this video and the rest of the course contents.
0:00
Let's deploy our application to Heroku. As I said, Heroku is more expensive than other options in terms of how much you pay for a Web server.
0:11
But it's a platform as a service. So if you're not very familiar with Linux and setting up servers,
0:16
it's a perfect solution because it takes away all the difficult stuff.
0:21
They have a Web interface that you can use to connect your application from GitHub. They have a really good documentation.
0:27
And for advanced users, they have a command line interface app,that you can install and used to deploy or manage your application from the terminal.
0:39
And even though I said they're a bit more expensive than other solutions, they also offer a free tier that is perfect for a small project.
0:48
So let's dive in. Once you create an account with Heroku and you lock in you will see this interface or a similar one.
0:57
If you're watching this course in the future, if you scroll a bit down, you can see the documentation for your language. But if we go for Python,
1:08
you will see a getting started guide that explains how to basically prepare and deploy your application. If you go to the setup.
1:20
You can see that this guide is using the Heroku cli app and later on you can, for example, use the command line interface to,
1:28
build the logs to scale your application and so on. But for a much simple project, you can actually connect Heroku to,
1:36
GitHub and use the Web interface to deploy your application. So, let's do that. So here we have to click. Create new app. We can name it,
1:44
Somehow, we can choose the region. Since I'm based in Europe, I will go for Europe. Just make it a bit faster for me.
1:55
Here you can click this option add to Pipeline, and this pipeline is used for the continues delivery, so you can set up different steps
2:04
for different parts of your CD pipelines. The best example here would be to.
2:10
Have a staging server where you automatically deploy code for your application, and once you see that everything is working fine,
2:18
you will have a different production server where you manually deploy stuff. Since I don't have a CD pipeline, I'm going to skip this step and
2:27
I just click create app. Now we have to specify how we're going to deploy
2:32
our application. We have three main options first to use the Heroku cli app that I showed you a few moments ago. Then we can use the GitHub.
2:42
So this is what we are going to use. And also we could deploy a docker image also using the Heroku Cli. So, let's connect our GitHub account.
2:53
If this is the first time you're using Heroku, it will ask you for permission from GitHub.
2:57
So you have to give access and then you should be able to search for a
3:01
repositoy. I'm using a personal repositoy and I call this project Uptime your website. So here it is, I click connect. And now we have two options.
3:17
We can enable automatic deploys. So each time we push a new commit to a specified branch, it's going to automatically Deploy your application.
3:27
All right. We can do a manual deploy, so we will have to every time click this button if we want to deploy a new version.
3:35
But how does Heroku knows how to deploy our application? I mean, what kind of Web server use or whether to use the database or
3:43
not? Well, all that is specified in a file called procfile that you have to add to your repositoy. So let's do that now.
3:52
We create a new procfile, and as you can see, it even has the Heroku icon here, and here We specify that we want to have a Web worker,
4:02
and this Web worker will start a gunicorn server with three workers using the Uvicorn worker type of a worker.
4:12
And we're pointing it to the app from the main.py file. If you're curious, I basically copied this piece of code from the documentation.
4:21
So, now we can save it and commit this file to our repositoy. And then we go back to the Heroku, UI to deploy our application.
4:44
So, now we can click Deploy branch, and underneath you can see the progress. It will take a bit of time to install all the dependencies,
4:56
but we should be done soon. Cool. So, as you can see here we have our uptimer-website.heroku app and your app was successfully deployed.
5:09
We can click this view button and here it is. And as you can see, it's working cool. What if I break it?
5:27
Yep, they're working. So, that's how easily you can use Heroku to deploy your application. And just for the fun. Let's enable the automatic deploys and
5:37
let's make some changes to see how they automatically applied to the heroku app. So we click this and we go back to the code.
5:47
Let's change something in the template,
6:05
and if we go back to the interface, we should somewhere see that, it's building our application. Let's refresh if it's not here,
6:16
let's go to the activity. And here you can see the build automatically started. cool, we can click view build progress and we'll see the same output.
6:28
If something goes wrong and you're not using the Heroku cli app to view the logs you can click to view logs here to see the logs from your Web
6:36
server. As you can see, we have the same output as we had in the terminal, so our app should be up and running. Let's go back here, deployed cool.
6:48
We can click open app, and as you can see now, the online is upper case, so that's really cool.
6:55
So basically we are using our free tier to deploy our FastAPI to Heroku I didn't even have to put my credit card anywhere one last thing.
7:05
So, our application is pretty simple. We don't have a database or anything,
7:10
but as your application grows, you probably will have to add more things like, Well, first of all, a database.
7:16
But then maybe a ready server and stuff like that. So Heroku offers ah, lot of addons. You can go to this, find more addons Page,
7:26
and here you can see basically any kind of service that you might need for your application. You have, like different versions of redis,
7:35
different versions of databases. Here there is, like the postgres version offered by Heroku and most of those addons, They have, like a free tier.
7:46
If you go down here, you can see that for free. You get like database with 10,000 rows,
7:54
which is not really much, but well enough to test your application. But then, as you can see, the pricing goes up very fast.
8:08
So, that's basically how you would use Heroku to deploy your application. You can use the Web ui or you can use the command line tool and
8:16
then you can enable more addons as you go. In the next lessons will compare this to using a docker image.