We already implemented NAT to reduce the IPv4 concern, but there is no way around running out of IPv4 addresses. We will have to migrate to IPv6 eventually.
2 approaches to IPv4 exhaustion were taken some years ago now. Firstly, as Mshen rightly mentions, NAT and secondly the widespread use and allocation of addresses using variable subnet length masks. The 2 approaches essentially bought us more time but ultimately IPv6 will have to replace IPv4 at some point very soon.
To assist in the migration to IPv6 several techniques have been put in place. One such technique is 6 to 4 tunnelling but I guess that answers a different question.