What exactly determines if a software system is truly cloud native rather than simply a traditional application hosted on a remote server? Furthermore, this architectural approach leverages the scale and flexibility of the cloud by utilizing microservices, containers, and dynamic orchestration. Why does the principle of "designing for failure" remain the most fundamental requirement for modern cloud-native development?