A dyno is a container on Heroku where your application or another process runs. The most common examples are web dynos for handling website requests and worker dynos to run background jobs, if your application requires them. You can also run other processes, such as a clock process to kick off background jobs at regular intervals.

Heroku runs on AWS servers. At the cheaper levels of the service, there are multiple dynos per server. This is similar to the idea of shared web hosting. At the more expensive levels, there is an entire AWS instance for each process, for applications that require higher performance and reliability.

An important difference between a dyno and a traditional hosting service is that you don't have the same type of access to the file system. Files are not shared between dynos. You can write temporary files to one dyno, but anything you want to persist long-term has to be stored on an outside storage service like Amazon S3. And dynos may be restarted or recreated without any action on your part, so I'd avoid using the local filesystem altogether.

Another thing that might be unexpected is that web requests only run for 30 seconds before they timeout. That's way too long for most web requests anyway, but anything that might run longer than that will have to be moved into a background job, even if you or the visitors to your site don't care about it running for a long time.

Go straight to the source for more information. Heroku's docs are also pretty good. Definitely worth checking out.