Until a few years ago, monolithic applications were common. With numerous functions knitted into the fabric of the codebase and interdependencies running through them, it was difficult — or even impossible — to work on individual functions in isolation. To add to the complexity, managing multiple environment-specific configuration was a nightmare. That is when Spring introduced the interesting feature of creation of multiple environment profiles with application.properties /application.yml. Creating a bunch of application-[profile].properties files like application-local.yml, application-test.yml, application-dev.yml was very common in those days to create different environment-specific configurations.
Fast Forward to Today
As the technology progressed, soon organizations started adapting modern ways of not only developing the application, but also deploying them. With introduction of microservices architecture and containerization technologies like Kubernetes and Docker, there came the inherent need of managing and deploying it in a cleaner way.