Configuring Spring Boot Application Properties in Containerized Environment

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. 

Backwards Compatibility in a Software System with Systematic Reference to Java

Backward compatibility 

Backward compatibility is a property of a system, product, or technology that allows for integration with an older legacy system or with an input designed for such a system. Modifying a system in a way that does not allow backward compatibility is called “Breaking Change.” While in the current era of agile software development demands fast-paced implementation of features to cater to rapidly changing requirements, it is extremely necessary to have backward compatibility in the software being developed.
This article depicts with an example how Java has achieved backward compatibility while developing new features, which will serve as a potential reference while updating existing code.
Let us understand the very important concept of 'widening' and how it is retained while developing new features like 'Autoboxing' in Java 5

Widening

In a class that has overloaded methods, one of the compiler's jobs is to determine which method to use whenever it finds an invocation for the overloaded method.