It's thrilling to click The Button and watch Craft update itself. I take advantage of multi-site configurations with every deploy, and my practice thus far is to...
- Upgrade Craft in production.
- Commit production file system changes via git.
- Choose Settings → Backup Database and download the backup file.
- Load the remote changes to my local environment via git.
- Clear out and locally import the .sql backup I downloaded in step #3.
I specifically update in production because I like thrills, and because I had previously done the opposite (upgrade locally, push live) and ran into problems.
This has been working for me pretty reliably and Craft upgrades always go smoothly, but I doubt that system updates on the production server are the best idea.
Is there a better way?