Environments in Software Development
When we deploy software, you will be told to put in on
Dev. What do these things mean, and why is it important?
Read the following article and find out!
Difficulty: Beginner | Easy | Normal | Challenging
Here are some of the definitions and what they can mean
Deployment: All the activities that make software available for use
Development Environment: The environment you use when you create software
Environment: The Operating System, API calls and databases used by software
Production Environment: The environment used by the end user of your software
Staging Environment: An environment somewhere between Development and Production
Why is there a need?
Why do we need different places to deploy our code to. Now imagine you work for a bank, and want to test a feature where a customer can withdraw £1000 from their account (or Mickey Dollars, whatever monetary or bartering system units you use).
You seriously don’t want your developers to withdraw money every time they load up the App. Actually, you don’t even want to do it once. What we want is to have some sort of development environment where you can (in this case) withdraw money without it changing the balance of real customers.
Many organisations overcome this by having a development and a production environment that uses different backing databases for the two.
The development of software entails that you will have an
Environment to run the software inside.
Please keep in mind that these can have different names in organisations depending on who works there and the context of any particular organisation.
Development / DEV
Here we generally would want some logging for developers to see what isn’t working correctly. You don’t (usually) want development environments to use the same database, logging or analytics systems as a production environment.
· Usually uses test databases
· API calls may be directed to a test backend
· Debug symbols may be turned on, which makes applications run slower than in production
· Analytics disabled
· Push actions from a server (websockets, mobile notifications, Forced updates) only apply to DEV software
QUALIF — Qualification / TEST / Staging / Pre-prod / UAT / Quality
Usually used for human testing (although dev may be used for this purpose).
The idea is that the environment is similar to Dev in that the system uses test databases, but is also similar to Prod in that the speed of the execution should be the same as the production version.
· Uses test databases
· Most of the environment is the same as Prod
Production / PROD
In production everything is “real”, or at least should be as this is the environment that your users are going to use. However, when you use a Prod app and (for example) charge a credit card, that credit card will be charged. That is, be careful.
· Uses real databases
· No debugging
A production App that may have certain features disabled, so the application may be demonstrated but (for example) the saving and use of credit cards can be disabled.
Your organisation may use different names for an
Environment to communicate to software developers and the business.
In a sense, it doesn’t matter. Broadly speaking you need a place to develop your software that doesn’t interact with your
Production Environment to avoid (say) debiting your credit card while you develop software.
I hope this rather short article gives you some idea of the meaning of
Environment and why this actually matters.
Thank you for reading!
Extend your knowledge
- Here is a good guide about software deployment: https://stackify.com/deployment-best-practices/
The Twitter contact:
Any questions? You can get in touch with me here