New streamlit app: football data!

Service Hosting

When looking for options to host this app, I mainly considered two factors

  • Service hosting cost
  • Data transfer cost (mostly S3 egress costs)

For a demo app like this with almost no traffic, it wouldn’t have been reasonable for the costs to be more than a few cents per month.

Streamlit Cloud

Being specifically designed to host streamlit projects, Streamlit Cloud was the first option I considered. By simply connecting the project’s github repo to streamlit cloud I was able to quickly deploy my app in there. There were, however, a couple of drawbacks that eventually made me consider other options

  • The level of customization for the build, deploy and run process was limited
  • It is GCP hosted, which meant that I would’ve eventually incurred in noticeable egress costs

AWS App Runner

App Runner seemed like an interesting alternative, considering the app uses S3 as its storage service. However it proved to be a dead end for me, mainly because of two reasons

Heroku (winner)

Finally, I looked at Heroku and realised that it seemed quite a fit

What was even better was that Heroku is hosted in AWS, so provided I was able to deploy the app to the right AWS region I could cut off most of those egress costs. Luckily for me, the generic Heroku eu region maps to eu-west-1, which was exactly what I needed

curl -n -X GET https://api.heroku.com/regions/eu -H "Accept: application/vnd.heroku+json; version=3"
{
  "country": "Ireland",
  "created_at": "2013-09-19T01:29:12Z",
  "description": "Europe",
  "id": "ed30241c-ed8c-4bb6-9714-61953675d0b4",
  "locale": "Dublin",
  "name": "eu",
  "private_capable": false,
  "provider": {
    "name": "amazon-web-services",
    "region": "eu-west-1"
  },
  "updated_at": "2016-08-09T22:03:28Z"
}

In the end I was able to deploy the app by doing some little adjustments to the project’s Dockerfile and conveniently using Herkou CLI to build and release the image.

docker build --tag registry.heroku.com/transfermarkt-datasets/web
docker push registry.heroku.com/transfermarkt-datasets/web
heroku container:release web
1 Like