Historically a lot of software has used incrementing numbers to represent the identifier of a particular piece of data. They can be auto-generated by many data stores, they are easy to read, efficient to store and naturally time ordered.
As time passes, applications become larger. They need more resources and usually distributed in different places. That may cause some errors generating concurrent numbers and coordination issues. Incremental numbers can also be the source of security problems and they may include implicit information about datasets volume. Modern software architectures also trend to decouple infrastructure layer and move ID generation logic to the domain core.