I am learning the 12 factor rule. I cannot get my head around the difference between storing configuration into environment and Backing service. Also how would u store properties into Environment?Ex: I have a configuration for connection to orcale sql, with jdbc.Should I consider it as a config. or a backing service; when I provide the details and attach it to my cloud foundry application.
What is different from Config and Backing Service?
spring;properties
Backing service means your code should be agnostic to what Database, Binary Storage, etc service you're using:// BAD:let user = createNewUser();  // assuming it will create a new user to be saved to DBoracleDatabase.save(user);// GOOD:let user = createNewUser();  // assuming it will create a new user to be saved to DBdatabase.save(user);In other words, there should be a high level abstraction so that your app interact with an adapter (like a Database Adapter), rather than a low level component (such as an Oracle Database component).As far as configuration goes, it means you should store your configuration in a place where in order to change it, you don't need to recompile/redeploy/etc. For instance:Say you have a web app, and a class like this: class Constants {     const DB_HOST = 72.234.45.223;     const DB_USER = admin;     ...     const MAIL_DRIVER = smtp; }But your IT department move the database to a different server.  Or you want to run your app in your development machine. In both cases you'd have to recompile and redeploy the application.  In the development machine example, you'd have to change back the values before committing your changes to the version control system.Now, if you store it in a configuration file, or in the environment variables, you wouldn't have to recompile or redeploy. Instead, the app will read these values in runtime and you'd only need to modify the configuration file. Also, since the configuration file should not be in version control, you won't have to worry about committing a change to the main repository that would alter these values and break the whole production build.You might want to check out dotenv (ruby, php, python, and maybe there are for other languages) for an easy way to to this with environment variables.