Wal-E has been used for a number of years to provide disaster recovery for Heroku Postgres, for over a million databases. It enables their follow and fork functionality, and we're using it at Citus as well for Citus Cloud given we have the person that authored it.
As for exact differences I'm less familiar as I've not seriously run barman in production so perhaps someone that's run both can chime in.
Doesn't WAL replication only let you restore a full cluster, not a single DB? How do they get around that?
(Read: a new 10MB file to S3 every 10sec, even when the DB is 100% idle).
Apparently PG 10 will improve your use case, though: http://paquier.xyz/postgresql-2/postgres-10-checkpoint-skip/
EDIT: Also, wal-e compresses by default, so even those regular WAL files should be much smaller than 10MB. Are you sure the DB is really idle?
Compression is enabled indeed. Surprisingly, the compression ratio for "nothing going on" is terrible. (still multiple MBytes).
The next version of postgre will redo the transaction log to have dynamic adaptive sizing, with new settings to control it. Not there yet.
Or is this something else you're talking about?
That's the maximum age of a WAL segment before rotation, and Postgres will force the log rotation even if there's no data in the WAL segment.
If you're worried about keeping the last n seconds of data in replication, streaming replication is a far better tactic than log-shipping. (Though log shipping is useful for longer term storage)
barman stores data on a filesystem.
I'm using wal-e, for me a no brainer since I don't have elastic filesystems available but do have scalable object storage. Other sites will have the opposite problem.