There are two types of "backups" to consider: metadata and data.
As pointed out by others here, metadata backups are pretty easily accomplished using free tools such as Ant and the Force CLI. I personally use Ant scripts with BitBucket to periodically download metadata and commit into a snapshot/production branch. I also have to keep the package.xml file up to date to specify what to backup, and there are other limitations such as with reports, dashboards, etc. There are certainly other solutions - free and paid - that can handle this as well.
Data backups get a bit more complicated. The Weekly Data Export does work, however it's (a) weekly and (b) nothing more than a CSV export of raw data. Take this example: An Account is created on a Monday, Opportunities created on Tuesday, Opps closed on Thursday and then the Account deleted on Friday. If the Weekly Data Export takes place on Saturday, that deleted day may not be in the export. I say may because I've never been able to find this information documented. Either way though, if someone were to empty the recycle bin or use the API Hard Delete option, deleted data would never be recoverable. It's also a lot of zip files to download (if you have a lot of data) each week, and you only have 48 hours to download those zip files before Salesforce removes them.
That's where the commercial solutions come in. Products like the previously mentioned Backupify (http://www.datto.com/backupify/salesforce-backup) and OwnBackup (https://www.ownbackup.com/products/backup-for-salesforce) are capable of backing up both metadata and actual data. That's really handy if there is concern about understanding the configuration changes made directly in a Production org (proper governance policies should reduce the probability of these types of issues).
Where the commercial solutions really start to make a difference is in data recovery. I once had to restore data from a two month old Weekly Data Export (25+ ZIP files per backup). It's not easy, and dealing with lookup/master-detail fields to restore data relationships as tedious as it is complex. I've been told that restoring data with OwnBackup is significantly easier than with Backupify, but I have no personal experience to corroborate that statement. See https://www.ownbackup.com/restoring-lost-data-using-weekly-export
Finally, there are data replications services to make a complete copy of your Salesforce data to an external database. This is an attractive solution if you've got the resources to handle this already. Four key considerations here:
- This won't include metadata
- Sync policies need to be in place to ensure deleted records in Saleforce are not deleted (immediately) in the target database
- Restoring data into Salesforce is not straight forward and could require exporting data out of the target database before re-importing
- Associated costs for the external database (license, storage, api's, bandwidth)