In software deployment, what is the difference between QUALIF, UAT, PREPROD and PROD?
These terms are meaningless on their own. They are probably terms that your company or team use. That said I will try to provide a general answer.
When deploying a "server app" (for example a web app) there are a lot of things that need testing, but that testing can really get in the way of development. For example (we will use this throughout the answer), take a store site. In development, we don't want to send receipts, process real credit cards, move items in the warehouse, or order new stock. But we need to test that those functions generally work.
So at a very high level we set up "Environments" which are just a set of settings that help isolate that environment.
- Generally disables caching
- may use a different database (I use SQLite locally and MySQL on production a lot)
- Is generally built with debug symbols, or verbose errors turned on
- Sacrifices speed of the app for the ability to "refresh" classes and code faster.
- Usually points at "test" versions of remote APIs or "mock" API calls in some cases.
- May use a different database (I like to use a Memcached DB for this)
- Used to run (usually) automated tests.
- Points at mock API calls (usually)
- Generally disables things like the ability to serve pages, in favor of faster testing (when automated)
- This is the first point for most human testing.
- Uses a different database then production but the same engine (allows you to catch Database/ORM issues)
- Runs in almost the environment as production, but usualy pointed at "test" API servers. So for example, you don't process real credit cards.
- Generally this is very close to production as it's basically the last step before production.
- The real deal
- Fully live
- No Debug symbols
- Full caching etc etc.
Some other common labels I see are:
Quality like staging but maybe behind production and ahead of staging, allowing quality teams to get a head start. Not generally used unless you have long deploy cycles, or really uptight QA people. Most of the time staging is enough.
UAT Again very near to production and for a specific type of testing. Generally used if you want to show end users and get their feedback. UAT (as part of QA) is usually done on staging.
Demo Very near to production, usually used as a "sales demo" for a next version style of release.
In the end every team and company will have a slightly different setup. Only looking at the environments can really tell you what the differences are, but in general they exist to give different sets of settings.