The author of the article linked below, without mentioning NAT at all, comes to an important conclusion about IPv4 scarcity. He senses that there is a distinction between the absolute number of devices connected to the Internet and the number of devices which require a dedicated public IPv4 address. He senses that the historical predilection towards the assignment of a public IPv4 address to every connected device is profligate, and that there exists a huge pool of allocated, but not utilized IPv4 address space.
Now we do know that Cisco believes there are already over ten billion connected devices, more than one device per person and more devices than IPv4 addresses. And we do know that the Internet continues to function well every day despite this condition due to the existence of NAT. But the author has come to the understanding that very few connected devices require a dedicated IPv4 addresses. In cases where devices behind NAT need to accessed from the outside, rendezvous servers, who use a single IPv4 address, can hold a database with the IPv4+TCP port combinations for acess to thousands of devices behind NATs, with the right passwords of course.
The Internet organism has changed in response to evolutionary pressures. When initial exhaust pressure was applied early on, the Internet turned to variable subnet masks. When it became clear that every desktop should not have a public IPv4 address assigned to it, the Internet turned to NAT despite the scorn of the technorati. When it became clear that local NAT could not prevent IPv4 exhaust, the Internet turned to multi-level NAT. Development at higher OSI levels ensured that VoIP could be deployed through NAT, that online gaming would work through NAT, and that NAT could be penetrated from outside through the use of rendezvous servers.
It will be interesting to watch the further evolution of the Internet as we move to a dual-stack mode which includes a completely flat IPv6 network and a multi-level IPv4 network. Will there be benefits associated with that flatness like end-to-end connectivity which will favor IPv6, or will IPv6 adopt NAT as IPv4 did? In either case it is likely that further Internet evolution will be occurring at higher OSI levels and that ip addresses of either flavor will become almost ephemera, with DNS names being the foundational identifiers of the Internet.